Quomodo Gustuffus tros Android volat cremor (fiat et crypto) ex rationibus tuis

Quomodo Gustuffus tros Android volat cremor (fiat et crypto) ex rationibus tuis

Sicut alter dies Group-IB informatus de actione mobilis Android Gustuffi Trojani. Solum in mercatis internationalibus operatur, clientes maximae centum riparum externarum oppugnantes, utentes mobiles 100 cryptarum cryptarum, ac magnarum opum e-commercium. Sed elit Gustuffi loquens cybercriminalis est sub cognomento Bestoffer. Donec nuper Troianum suum laudavit "a scientia et experientia hominibus gravi productum."

Malicious codice analysis specialist apud Group-IB Ioannes Pisarev in investigatione sua singillatim loquitur quomodo Gustuffus opera et quae pericula sint.

Quis est Gustuff venatio?

Gustuff ad novam malware generationem pertinet cum functionibus plene automatis. Secundum elit, Troiana nova et emendata versio malware AndyBotae facta est, quae post Novembrem 2017 telephona Android oppugnavit et pecuniam per phishing interretiales formas surripuit ut mobiles applicationes notarum ripis et solutionis systematum internationalium facta est. Bestoffer rettulit Gustuffum Bot pretium rentalis $ 800 per mensem fuisse.

Analysis specimen Gustuffis ostendit Troianos potentia oppugnare clientes utentes applicationes mobiles maximarum riparum, ut Bank of America, Bank Scotiae, JPMorgan, Wells Fargo, Capital One, TD Bank, PNC Bank, necnon crypto crumenae. BitCoin Wallet, BitPay, Cryptopay, Coinbase, etc.

Primitus creatus ut classicus argentarius Troianus, in versione hodierna Gustuffus indicem scutorum potentialium oppugnationis signanter dilatavit. Praeter applicationes MASCULINUS ad ripas, societates fintech et officia crypto, Gustuffus spectat ad utentes applicationes mercatus, commeatus online, systemata solvendi et nuntii instant. Praesertim, PayPal, Western Unionis, eBay, Walmart, Skype, whatsapp, Gett Taxi, Revolut et alii.

Ingressus punctum: calculum pro massa infectio

Gustuff denotatur per "classicam" vectorem penetrationis in Android smartphones per SMS mailings cum nexus ad APKs. Cum MAS fabrica inficitur Troiano iubente servo Gustuff per contactum datorum telephonicii infecti vel per datorum datorum divulgare potest. Gustuff's functionalitas destinatur ad infectionem massae et maximam capitalizationem negotii operatorium eius - unicum munus "auto-fill" habet in applicationibus argentariis legitimis et crypto- ris mobilibus, quae te ad furtum pecuniae accelerare et ascendere permittit.

Studium Troianorum ostendit munus autofill impletum esse in eo utens Accessibility Muneris, servitium pro defectibus. Gustuffus primus Troianus non est ut tutelam contra commercium feliciter praetermittas cum elementis fenestrarum aliarum applicationum utendi hoc Android servitium. Usus autem servitii accessibilitatis in compositione cum fillore autocineti adhuc satis rarus est.

Post demptionem in telephonum gestabile, Gustuff, adhibito Service accessibilitate, potest mutuari cum elementis fenestrarum aliarum applicationum (fretus, cryptocurrency, necnon applicationes pro shopping online, messaging, etc.), actiones oppugnatoribus necessarias faciendo . Eg, iubente servo, Troianus globulis premere potest ac bona textuum agrorum in applicationibus argentariis mutare. Accessibility Service mechanismus permittit Troianis uti machinas securitatis praeterire, quibus usus est ripis ad resistendum generationi Troiae mobiles, necnon mutationes in consilio securitatis a Google perficiendo in novis versionibus Android OS. Ita Gustuff "novit quomodo" tutelam Google inactivandi: secundum auctoris munus hoc in 70% casuum operatur.

Quomodo Gustuffus tros Android volat cremor (fiat et crypto) ex rationibus tuis

Gustuff etiam fictus CONATUS notificationes cum iconibus applicationum mobilium legitimarum ostendere potest. Usor clicks in PULSUS notificationis et fenestram hamatam a servo receptam videt, ubi rogatae card vel cryptae pera data ingreditur. In alio missione Gustuff, aperitur applicatio pro qua notificatio PULSO manifestata est. In hoc casu, malware, iussu a servo per accessibilitatem servitii, formas implere potest agros applicationis argentariis pro fraudem transactionis.

Gustuff's functionality etiam informationes de artificio infectis servo mittens includit, nuntios SMS legendi/mittendi facultatem, petitiones USSD mittendas, SOCKS5 proxy immittens, sequens nexum, tabellas mittens (including scans photographicas documentorum, screenshots, imagines) ad server, reset in fabrica ad officinas occasus.

Malware analysis

Priusquam maliciam applicationem inaugurari, Android OS fenestram usorem ostendit continens indicem iurium a Gustuffo petitum:

Quomodo Gustuffus tros Android volat cremor (fiat et crypto) ex rationibus tuis
Applicatio instituetur tantum post acceptum consensum usoris. Postquam applicatione deductis, Troianus fenestram utentem ostendet;

Quomodo Gustuffus tros Android volat cremor (fiat et crypto) ex rationibus tuis
Post quem iconem ejus subtrahet.

Gustuff referto, secundum authorem, a packente ex FTT. Post startup, application periodice contactus CnC servo mandati accipiendi. Plures files exploravimus usus est an IP oratio pro servo potestate 88.99.171[.]105 (In sequentibus designamus ut <%CnC%>).

Postquam launch, progressio nuntiis ad servo incipit mittere http://<%CnC%>/api/v1/get.php.

Responsio expectatur in forma sequenti JSON esse.

{
    "results" : "OK",
    "command":{
        "id": "<%id%>",
        "command":"<%command%>",
        "timestamp":"<%Server Timestamp%>",
        "params":{
		<%Command parameters as JSON%>
        },
    },
}

Quoties applicatio accessit, informationes de fabrica infecta mittit. Forma nuntium infra ostendetur. Notatu dignum est quod in agris plenus, extra, Apps ΠΈ permission - ad libitum mittetur et in casu tantum mandati petitionis Cn.

{
    "info":
    {
        "info":
        {
            "cell":<%Sim operator name%>,
            "country":<%Country ISO%>,
            "imei":<%IMEI%>,
            "number":<%Phone number%>,
            "line1Number":<%Phone number%>,
            "advertisementId":<%ID%>
        },
        "state":
        {
            "admin":<%Has admin rights%>,
            "source":<%String%>,
            "needPermissions":<%Application needs permissions%>,
            "accesByName":<%Boolean%>,
            "accesByService":<%Boolean%>,
            "safetyNet":<%String%>,
            "defaultSmsApp":<%Default Sms Application%>,
            "isDefaultSmsApp":<%Current application is Default Sms Application%>,
            "dateTime":<%Current date time%>,
            "batteryLevel":<%Battery level%>
        },
        "socks":
        {
            "id":<%Proxy module ID%>,
            "enabled":<%Is enabled%>,
            "active":<%Is active%>
        },
        "version":
        {
            "versionName":<%Package Version Name%>,
            "versionCode":<%Package Version Code%>,
            "lastUpdateTime":<%Package Last Update Time%>,
            "tag":<%Tag, default value: "TAG"%>,
            "targetSdkVersion":<%Target Sdk Version%>,
            "buildConfigTimestamp":1541309066721
        },
    },
    "full":
    {
        "model":<%Device Model%>,
        "localeCountry":<%Country%>,
        "localeLang":<%Locale language%>,
        "accounts":<%JSON array, contains from "name" and "type" of accounts%>,
        "lockType":<%Type of lockscreen password%>
    },
    "extra":
    {
        "serial":<%Build serial number%>,
        "board":<%Build Board%>,
        "brand":<%Build Brand%>,
        "user":<%Build User%>,
        "device":<%Build Device%>,
        "display":<%Build Display%>,
        "id":<%Build ID%>,
        "manufacturer":<%Build manufacturer%>,
        "model":<%Build model%>,
        "product":<%Build product%>,
        "tags":<%Build tags%>,
        "type":<%Build type%>,
        "imei":<%imei%>,
        "imsi":<%imsi%>,
        "line1number":<%phonenumber%>,
        "iccid":<%Sim serial number%>,
        "mcc":<%Mobile country code of operator%>,
        "mnc":<%Mobile network codeof operator%>,
        "cellid":<%GSM-data%>,
        "lac":<%GSM-data%>,
        "androidid":<%Android Id%>,
        "ssid":<%Wi-Fi SSID%>
    },
    "apps":{<%List of installed applications%>},
    "permission":<%List of granted permissions%>
} 

Configuratione notitia repono

Gustuffus magni momenti notitias in praecedente tabella reponit operationally. Nomen fasciculi, sicut nomina parametri in eo, proveniunt computationem summam e filo MD5. 15413090667214.6.1<%name%>quibus <%nomen%> - initialis nomen valorem. Nominis pythonis interpretatio generationis munus est;

 nameGenerator(input):
    output = md5("15413090667214.6.1" + input) 

In sequentibus denotabimus nameGenerator (input).
Primum igitur nomen fasciculi est: Nomen Generator("API_SERVER_LIST")valores continet cum sequentibus nominibus;

Nomen variabile valorem
Nomen Generator("API_SERVER_LIST") Indicem inscriptionum CnC in forma ordinata continet.
Nomen Generator("API_SERVER_URL") Oratio CnC continet.
nameGenerator("SMS_UPLOAD") Vexillum per defaltam statuitur. Si signum vexillum est, nuntios SMS ad CnC mittit.
Nomen Generator("SMS_ROOT_NUMBER") Numerus telephonicus ad quem nuntii SMS nuntii ab machinatione infecta mittentur. Ornare nulla sit.
Nomen Generatoris ("SMS_ROOT_NUMBER_RESEND") Vexillum per defaltam purgatur. Si inauguratus est, cum fabrica infecta sms acceperit, ad numerum radicum mittetur.
Nomen Generator("DEFAULT_APP_SMS") Vexillum per defaltam purgatur. Si hoc vexillum positum est, applicatio nuntiis SMS advenientis procedet.
Nomen Generator("DEFAULT_ADMIN") Vexillum per defaltam purgatur. Si vexillum statutum est, applicatio iura administratoris habet.
nameGenerator("DEFAULT_ACCESSIBILITY") Vexillum per defaltam purgatur. Si vexillum positum est, officium servitii Accessibility usus currit.
nameGenerator("APPS_CONFIG") A JSON objectum quod continet indicem actionum quae faciendae sunt cum accessibilitas eventus cum peculiari applicatione utitur.
nameGenerator("APPS_INSTALLED") Indicem applicationum in fabrica installed.
Nomen Generator("IS_FIST_RUN") Vexillum ad primum initium est reset.
Nomen Generator("UNIQUE_ID") Unicum identifier continet. Generatum bot cum primum excussum est.

Modulus processus imperium a servo

Applicatio addit inscriptiones CnC ministrantium in forma ordinatae a encoded Base85 munimenta. Elenchus CnC ministrantium mutari potest in acceptis mandatorum opportunis, quo in casu inscriptiones in tabula praecedente condientur.

Ad petitionem respondet servo mandatum mittit applicationi. Notatu dignum est mandata et parametri in forma JSON sistuntur. Applicatio potest procedere ad sequentia mandata:

bigas Description
forwardStart Satus mittens nuntios SMS acceptos ab infecta fabrica ad CnC server.
forwardStop Desine mittere nuntios SMS ab infecta fabrica ad CnC servo acceptos esse.
ussdRun Supplicium USSD petitionem. Numerus ad quem petitionem USSD facere debes in agro JSON "numerus" sita est.
sendSms Unum nuntium SMS mitte (si opus est, nuntius "disciditur" in partes). Pro modulo, mandatum JSON obiectum capit continens agros "ad" - numerum destinatum et "corpus" - corpus nuntii.
sendSmsAb Mitte nuntios SMS (si opus est, nuntius "scinditur" in partes) omnibus in indice notorum machinae infectae. Inter mittens nuntios est 10 secundis. Corpus nuntii in agro JSON "corpus" est.
sendSmsMass Mitte nuntios SMS (si opus est, nuntius "scinditur" in partes) ad contactus in ambitu mandatorum determinatos. Inter missis nuntiis 10 secundis est. Pro modulo, praeceptum JSON ordinatum (ad "sms" campum accipit), elementa quorum agros "ad" - numerum destinatum et "corpus" - destinatum continet.
changeServer Hoc mandatum potest valorem capere cum clave "url" pro modulo - tunc automati valorem nominis Generis ("SERVER_URL"), vel "ormatus" - tum bot ordinatim scribet ut nomen Generatoris ("API_SERVER_LIST") Ita applicatio electronica servientium CnC mutat.
adminNumber Praeceptum ordinatur ad operari cum radice numero. Mandatum admittit obiectum JSON cum sequentibus parametris: "numerus" - mutatio nominis Generator ("ROOT_NUMBER") ad valorem receptum, "resend" - mutatio nominis Generator ("SMS_ROOT_NUMBER_RESEND"), "mitte" - mitte ad nomen Generatoris ("ROOT_NUMBER" ) uniqueID.
updateInfo Informationes de fabrica infecta servo mittere.
wipeData Quod mandatum user notitia delere in animo est. Secundum quo nomine applicatio immissa est, aut notitia omnino deletur cum reboot fabrica (primario usore), vel tantum usoris usoris notitia deleta est (usor secundarius).
socksStart Modulus proxy launch. Operatio moduli in sectione separata describitur.
socksStop Siste moduli proxy.
openLink Sequi vinculum. Nexum in JSON parametro sub "url" sita est. "Android.intent.action.VIEW" ligamen aperire adhibetur.
uploadAllSms Omnes nuntios SMS mitte in machinam receptam in calculonis servi.
uploadAllPhotos Imagines ex infecta fabrica ad domicilium mitte. Domicilium pro modulo venit.
uploadFile Fasciculum ad URL mitte ex fabrica infecta. Domicilium pro modulo venit.
uploadPhoneNumbers Numeros telephonicos mitte ex indice notorum servo tuo. Si valorem obiecti JSON cum clave "ab" pro modulo accipitur, applicatio indicem notorum ex libro telephonico accipit. Si obiectum JSON cum clave "sms" pro modulo recipitur, applicatio indicem notorum ex nuntiis SMS nuntiis legit.
changeArchive Applicatio tabellam ex inscriptione quae pro modulo "URL" clavem utens incidit. Scapus receptae cum nomine "archive.zip" servatur. Applicatio tabellam tunc solvet, optione utens tesseram archivi "b5jXh37gxgHBrZhQ4j3D". Fasciculi unzipped in indice [externa repono]/hgps presul salvantur. In hoc indice, applicationes instrumentorum interretialium fakerum (de quo infra).
actus Praeceptum destinatur ad operandum cum Actione servitii, quod in sectione separatum describitur.
Test Nihil.
download Mandatum destinatur ex servo remoto limam deponere et eam ad presul "download" servare. Domicilium et lima nomen ut modulus, agri in objecto JSON parametri, respective: "url" et "name".
remove Fasciculum ex "download" removet. Nomen tabella venit in parametro JSON cum clavis "nameName". Nomen fasciculi vexillum est "tmp.apk".
notitiam Monstrare notitiam cum descriptionibus et titulis textuum ab administratione servo definitorum.

Forma Imperii notitiam:

{
    "results" : "OK",
    "command":{
    "id": <%id%>,
    "command":"notification",
    "timestamp":<%Server Timestamp%>,
    "params":{
        "openApp":<%Open original app or not%>,
        "array":[
                      {"title":<%Title text%>,
                      "desc":<%Description text%>,
                      "app":<%Application name%>}
                   ]
                   },
        },
}

Notificatio generata ex tabella inquisitionis idem spectat ad notificationes generatae per applicationem specificatarum in agro App. Si ager valorem openApp - Verum, cum notificatio aperitur, applicatio quae in campo deducitur App. Si ager valorem openApp β€” Falsus ergo;

  • Fenestra hamatae aperit, quarum contenta ex indicem recepta sunt <%externae tabulae%>/hgps/<% filename%>
  • Fenestella hamatae aperit, quarum contenta a servo recepta sunt <%url%>?id=<%Bot id%>&app=<%Application name%>
  • Fenestra hamatae aperit, simulata Google Play Card, cum opportunitate ad singula schedula ingrediendi.

Applicatio mittit ex aliquo imperio <%CnC%>set_state.php as a JSON object in the following format :

{
    "command":
    {
        "command":<%command%>,
        "id":<%command_id%>,
        "state":<%command_state%>
    }
    "id":<%bot_id%>
}

ActionsService
Enumeratio mandatorum applicationes processus includit actionis. Cum mandatum recipitur, mandatum processus moduli accessiones huius officii ad mandatum extensum exequendum. Ministerium accipit JSON obiectum ut modulus. Ministerium exsequi potest quae sequuntur;

1. PARAMS_ACTION β€” Cum tale mandatum recipiendum, ministerium primum ab JSON parametri valorem clavem Typus accipit, qui talis esse potest:

  • serviceInfo - subcommand valorem a key accipit a parametro JSON includeNotImportant. Si vexillum verum est, applicatio vexillum ponit FLAG_ISOLATED_PROCESS Accessibility Service utens ad servitium. Hoc modo ministerium in processu separato deducetur.
  • radix - Accipe et mitte informationes servo de fenestra quae in umbilico est. Applicatio informationem obtinet utendi AccessibilityNodeInfo genere.
  • admin - petitio administrator ius.
  • mora β€” Actiones servitutis suspendere pro numero millisecondorum descriptorum in parametro pro clavis "data".
  • Fenestra β€” Indicem fenestrarum usori visibiles mitte.
  • install - applicationes install in fabrica infecta. Nomen fasciculi in tabula "namename" est clavis. Ipsum archivum situm est in indice Download.
  • global - sub praecepto destinatur a fenestra currenti navigare:
    • Velox in menu Occasus
    • ante
    • home
    • ad notificationes
    • ad nuper aperuit applications fenestra

  • Lorem β€” Deducunt applicationem. Nomen application est ut modulus a key Data.
  • sonos, - sonum mutare modus ad silentium.
  • recludam - vertit in backlight screen et tincidunt ad plenam claritatem. Applicatio hanc actionem praestat WakeLock utens, chorda specificans: INFO ut tag
  • permissionOverlay - munus non impletur (responsio ad executionem mandandi est {"nuntius": "non support"} vel {"nuntius": "low sdk"})
  • motus - munus non impletur (responsio ad executionem mandandi est {"nuntius": "non support"} vel {"nuntius":" Minimum API"})
  • permissiones - Hoc mandatum necessarium est postulare permissiones pro applicatione. Attamen munus interrogationis non impletur, mandatum ergo vanum est. Elenchus iurium rogatorum venit ut JSON ordinata cum clavis "permissionibus". Index Latin:
    • android.permission.READ_PHONE_STATE
    • android.permission.READ_CONTACTS
    • android.permission.CALL_PHONE
    • android.permission.RECEIVE_SMS
    • android.permission.SEND_SMS
    • android.permission.READ_SMS
    • android.permission.READ_EXTERNAL_STORAGE
    • android.permission.WRITE_EXTERNAL_STORAGE

  • apertus β€” hamatam fenestram ostendunt. Secundum modulum, quod a servo provenit, applicatio fenestras hamatas sequentes ostendere potest;
    • Ostende fenestram hamatam cuius contenta in tabella in indicem scripta sunt <%externum presul%>/hgps/<%param_filename%>. Effectus user commercium cum fenestra mittetur <%cnC%>/records.php
    • Monstrare fenestram hamatae cuius contenta sunt prae-onusta ab inscriptione <%url_param%>?id=<%bot_id%>&app=<%packagename%>. Effectus user commercium cum fenestra mittetur <%cnC%>/records.php
    • Ostendam fenestrae hamatae habitu Google Play Card.

  • Interactive - mandatum ordinatur ad mutuam cum elementis fenestrarum aliarum applicationum utendi AcessibilityService. Ministerium singulare in programmate ad commercium effectum est. Applicatio per inquisitionem cum fenestris mutuam esse potest:
    • Currently active. In hoc casu, modulus id vel textum (nomen) continet rei cum qua debes inter se cohaerere.
    • Visibilis utentis tempore mandatum est. Applicatio fenestras eligit per id.

    Acceptis obiecti AccessibilityNodeInfo Pro fenestra elementorum usurarum, applicatio, secundum parametris, actiones sequentes fungi potest;

    • focus - focus in objectum paro.
    • click - preme in obiecto.
    • actionId - actum per ID.
    • setText - textum mutare obiecti. Textus commutans duobus modis potest: actio ACTION_SET_TEXT (Si Android versio infectae fabrica minor est quam vel aequalis LOLLIPOP) vel chorda in clipboard ponendo et in objectum transvehendo (pro vetustioribus codicibus). Hoc mandatum adhiberi potest ad notitias mutandas in applicatione fretus.

2. PARAMS_ACTIONS - eadem PARAMS_ACTIONduntaxat JSon advenit ordo imperat.

Multis interesse videtur quid munus mutuae cum fenestrae elementis alterius applicationis speciem similem esse debebunt. Hoc modo in Gustuffo haec functionis impletur:

boolean interactiveAction(List aiList, JSONObject action, JsonObject res) {
    int count = action.optInt("repeat", 1);
    Iterator aiListIterator = ((Iterable)aiList).iterator();
    int count = 0;
    while(aiListIterator.hasNext()) {
        Object ani = aiListIterator.next();
        if(1 <= count) {
            int index;
            for(index = 1; true; ++index) {
                if(action.has("focus")) {
                    if(((AccessibilityNodeInfo)ani).performAction(1)) {
                        ++count;
                    }
                }
                else if(action.has("click")) {
                    if(((AccessibilityNodeInfo)ani).performAction(16)) {
                        ++count;
                    }
                }
                else if(action.has("actionId")) {
                    if(((AccessibilityNodeInfo)ani).performAction(action.optInt("actionId"))) {
                        ++count;
                    }
                }
                else if(action.has("setText")) {
                    customHeader ch = CustomAccessibilityService.a;
                    Context context = this.getApplicationContext();
                    String text = action.optString("setText");
                    if(performSetTextAction(ch, context, ((AccessibilityNodeInfo)ani), text)) {
                        ++count;
                    }
                }
                if(index == count) {
                    break;
                }
            }
        }
        ((AccessibilityNodeInfo)ani).recycle();
    }
    res.addPropertyNumber("res", Integer.valueOf(count));
}

Munus illud postea:

boolean performSetTextAction(Context context, AccessibilityNodeInfo ani, String text) {
    boolean result;
    if(Build$VERSION.SDK_INT >= 21) {
        Bundle b = new Bundle();
        b.putCharSequence("ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE", ((CharSequence)text));
        result = ani.performAction(0x200000, b);  // ACTION_SET_TEXT
    }
    else {
        Object clipboard = context.getSystemService("clipboard");
        if(clipboard != null) {
        ((ClipboardManager)clipboard).setPrimaryClip(ClipData.newPlainText("autofill_pm", ((CharSequence)text)));
        result = ani.performAction(0x8000);  // ACTION_PASTE
        }
        else {
            result = false;
        }
    }
    return result;
}

Ita, cum recta configuratione moderantis servo, Gustuffus textum agri in applicatione argentariis explere potest et strepita in globulis necessariis ad rem perficiendam. Trojanus ne in applicatione quidem opus est ut aperias - satis est mandatum mittere ut notificationem PULSUS exhibeat ac deinde applicationem argentarii ante inauguratam aperiret. Usor authentice se comprobabit, postquam Gustuffus autocinetum implere poterit.

SMS nuntius processus moduli

Applicatio rem tracto installat pro fabrica infecta ad nuntios SMS accipiendos. Applicatio sub studio mandata accipere potest ab operante, quae in corpore nuntii SMS nuntius est. Mandata in forma venient;

7!5=<%Base64 encoded command%>

Applicatio perquirit filum in omnibus nuntiis SMS advenientis 7!5=dum chorda deprehenditur, filum a base64 ad 4 cinguli decoquit et mandatum exequitur. Similia sunt mandata iis quae cum Cn. Executio mittitur ad totidem, ex quibus mandatum est. Forma responsionis:

7*5=<%Base64 encode of "result_code imperium"%>

Optione applicatio omnes nuntios receptas ad numerum Radix mittere potest. Ad hoc faciendum, numerus radicis in lima potiore definiendus est et nuntius redirectionis vexillum apponendum est. Nuntius SMS mittitur numerus oppugnatoris in forma:

<%e numero%> - <%Tempus, forma: dd/MM/aaaa HH:mm:ss%> <%SMS body%>

Etiam, optio, applicatio nuntios ad CnC mittere potest. Nuntius SMS mittitur cum servo in forma JSON:

{
    "id":<%BotID%>,
    "sms":
    {
        "text":<%SMS body%>,
        "number":<%From number%>,
        "date":<%Timestamp%>
    }
}

Si vexillum est profectus Nomen Generator("DEFAULT_APP_SMS") - application sistit nuntios SMS dispensando et album epistularum advenientis purgat.

Proxy

Applicatio sub studio continet modulum proxy Backconnect (infra postea ad modulum proxy relatum), quod habet genus separatum, quod static agros cum configuratione includit. Configurationis notitia reponitur in sample in clara forma;

Quomodo Gustuffus tros Android volat cremor (fiat et crypto) ex rationibus tuis

Omnes actiones per proxy moduli factae sunt initium in lima. Ad hoc faciendum, applicatio in Repono Externo creat directorium vocatum "tigna" (ProxyConfigClass.logsDir agri in configurationis classe), in quo reposita sunt tabulae iniuriarum. Logging occurs in files with names:

  1. main.txt - opus ordinis, qui Servo Servo vocatur, in hunc fasciculum initium est. In sequentibus, chorda str in hunc fasciculum colligans ut mainLog(str).
  2. session-<%id%>.txt - Hic fasciculus salvat stipes notitias cum certo procuratore sessione associatas. In sequentibus, chorda str ad hunc fasciculum colligatio ut sessionLog (str).
  3. server.txt – Hic fasciculus ad omnia indicia scribenda ad fasciculos superius descriptos adhibetur.

Forma Log data:

<%Date%> [Stella[<%thread id%>], id[]]: log-string

Exceptiones quae in operatione proxy moduli occurrunt, etiam ad fasciculi initium sunt. Ad hoc applicatio objectum JSON generat in forma sequenti;

{
    "uncaughtException":<%short description of throwable%>
    "thread":<%thread%>
    "message":<%detail message of throwable%>
    "trace":        //Stack trace info
        [
            {
                "ClassName":
                "FileName":
                "LineNumber":
                "MethodName":
            },
            {
                "ClassName":
                "FileName":
                "LineNumber":
                "MethodName":
            }
        ]
}

Deinde vertit ad repraesentationem chordae et tigna eam.

Modulus proxy emissus est, accepto mandato respondente. Cum mandatum proxumum moduli immittendi recipitur, applicatio incipit officium quod vocatur MainServicequae est curandi operationem moduli proxy - incipiendi et impediendi.

Gradus officii incipiens:

1. Timor incipit semel minutum qui decurrit et actionem moduli procuratoris cohibet. Si modulus non est activus, incipit.
Etiam cum res est Urguet android.net.conn.CONNECTIVITY_CHANGE Proxy excussum est.

2. Applicatio creat uigiliarum cincinno cum modulo PARTIAL_WAKE_LOCK et prehendit eum. Hoc modus prohibet fabrica CPU in somnum proficisci.

3. Inducit mandatum processus classis proxy moduli, primum lineam colligationem mainLog ( "incipere servo") ΠΈ

Servo::initium() exercitus [<%proxy_cnc%>], commandPort [<% command_port%>], proxyPort [<%proxy_port%>]

quibus proxy_cnc, command_port et proxy_port - parametri ex configuratione servo Proxy.

Mandatum processus genus dicitur CommandConnection. Satus statim post actus sequens fungitur:

4. Coniungit to ProxyConfigClass.host: ProxyConfigClass.commandPort et mittit notitias de fabrica infecta in forma JSON ibi:

{
    "id":<%id%>,
    "imei":<%imei%>,
    "imsi":<%imsi%>,
    "model":<%model%>,
    "manufacturer":<%manufacturer%>,
    "androidVersion":<%androidVersion%>,
    "country":<%country%>,
    "partnerId":<%partnerId%>,
    "packageName":<%packageName%>,
    "networkType":<%networkType%>,
    "hasGsmSupport":<%hasGsmSupport%>,
    "simReady":<%simReady%>,
    "simCountry":<%simCountry%>,
    "networkOperator":<%networkOperator%>,
    "simOperator":<%simOperator%>,
    "version":<%version%>
}

ubi:

  • id - identifier, valorem obtinere conatur cum "id" agri a Praeferentiae Shared file nomine "x". Si haec valor obtineri non potuit, novam generat. Ita proxy modulus suum identificatorem habet, qui similiter Bot ID generatur.
  • imei β€” IMEI de fabrica. Si error occurrit in processu obtinendi pretii, nuntius error textus pro hoc agro scribetur.
  • imsi β€” Internationalis Mobilis subscriptores Identity of the device. Si error occurrit in processu obtinendi pretii, nuntius error textus pro hoc agro scribetur.
  • exemplar β€” Finis-usoris nomen visibile pro fine producti.
  • manufacturer β€” Fabrica producti/hardware (Build.MANUFACTURER).
  • androidVersion - chorda in forma "<%release_version%> (<%os_version%>),<%sdk_version%>"
  • terra - locus de fabrica.
  • partnerId filum inane est.
  • packageName - sarcina nomen.
  • networkType - genus retis nexus currentis (exemplum: "WIFI", "MOBILIS"). In casu erroris nullum redit.
  • hasGsmSupport - verum - si telephonum sustinet GSM, secus falsum.
  • simReady - SIM card state.
  • simCountry - ISO code patriae (secundum provisor Sim card).
  • networkOperator - operator nomen. Si error occurrit in processu obtinendi pretii, nuntius error textus pro hoc agro scribetur.
  • simOperator β€” Officium Providentis Nominis (SPN). Si error occurrit in processu obtinendi pretii, nuntius error textus pro hoc agro scribetur.
  • versio - hic campus in classe config reponitur, nam probata versiones automati par erat "1.6".

5. SWITCH ad modum imperandi exspectandi a servo. Mandata a servo in forma venient;

  • 0 offset - imperium
  • I offset - sessionId
  • II offset - longitudo
  • 4 offset - data

Cum mandatum advenit, acta applicatio;
mainLog("Header {sessionId<%id%>], typus[<% imperium%>], longitudo [<% longitudo%>] }")

Mandata quae sequuntur a servo possibilia sunt;

nomine Mandatum Data Description
connectionId 0 Connection ID Novam connexionem
SOMNIUM 3 Tempus Declina proxy
PING_PONG 4 - Mitte PONG nuntium

PUTEO nuntius ex 4 bytes et huius modi similis: 0x04000000.

Cum autem nexuId mandatum non accepit (novam connexionem creare) CommandConnection exempli gratia de genere gignit ProxyConnection.

  • Duo genera intersint in procurando: ProxyConnection ΠΈ finis. Cum creando genus ProxyConnection connectens in inscriptione ProxyConfigClass.host: ProxyConfigClass.proxyPort et transeat JSon object;

 {
    "id":<%connectionId%>
}

In responsione SOCKS5 nuntium mittit, qui electronicam de remotis servis continet, cum quo nexus institui debet. Commercium cum hoc servo occurs per classium finis. Connexio setup schematically repraesentari potest ut sequitur:

Quomodo Gustuffus tros Android volat cremor (fiat et crypto) ex rationibus tuis

Network interactiones

Ad analysin mercaturam ne sniffers retis, commercium inter CnC servitorem et applicationem SSL protocollo utens protegi potest. Omnia transmissa notitia tam ab ipso quam servo in forma JSON sistitur. Applicatio sequentes petitiones exequitur in operatione;

  • http://<%CnC%>/api/v1/set_state.php - effectus mandati supplicium.
  • http://<%CnC%>/api/v1/get.php - accepto imperio.
  • http://<%CnC%>/api/v1/load_sms.php - nuntios SMS ex infecta fabrica downloading.
  • http://<%CnC%>/api/v1/load_ab.php - Index notorum ex fabrica infecta.
  • http://<%CnC%>/api/v1/aevents.php - petitio fit cum parametri adaequationis in tabella potissimum positam.
  • http://<%CnC%>/api/v1/set_card.php - Notationes uploading nactus per fenestram hamatae erroris in Google Play Market.
  • http://<%CnC%>/api/v1/logs.php - imposuisti iniuriarum notitia.
  • http://<%CnC%>/api/v1/records.php - Data imposuisti per phishing fenestras nactus.
  • http://<%CnC%>/api/v1/set_error.php - notitia erroris quae inciderunt.

suasiones

Ut clientes suos ab terrore Troianorum mobilium defendant, societates solutionibus comprehensivis uti debent, quae monitorem permittunt et ne actio malitiosa neve additis programmatibus usorum inauguratur.

Ad hoc faciendum, subscriptio methodi ad detegendas mobiles Troianos confirmandi necessitates sunt technologiae ad mores utriusque clientis et applicationis ipsam resolvendam. Tutela etiam includere debet identitatis functionem technologiam digitalem fingerprints utentem, quae intellegi potest cum ratio ab atypico artificio adhibetur et iam in manus fraudistarum incidit.

Pondus fundamentalis momenti est disponibilitas analyseos crucis, quae permittit societates ad moderandas pericula non solum in interreti orta, sed etiam in canali mobili, exempli gratia, in applicationibus ad argentaria mobilia, ad transactiones cum cryptocurrencies et quibusvis aliis ubi. transactions perfici potest. financial transaction.

Salus praecepta pro users:

  • applicationes ad mobilem fabricam cum Android OS aliunde quam Google Play ne instituas, sedulo cura iuribus applicationis petitis;
  • regulariter install MAS OS updates;
  • intende extensiones imaginum receptarum;
  • suspiciones non visitas;
  • Noli deprimere nexus in SMS nuntiis acceptis.

Starring Semyon Rogacheva, junior specialist in inquisitione malware apud Group-IB Computer Laboratorium Forensicum.

Source: www.habr.com