Bawo ni Android Trojan Gustuff ṣe yọ ipara naa (fiat ati crypto) lati awọn akọọlẹ rẹ

Bawo ni Android Trojan Gustuff ṣe yọ ipara naa (fiat ati crypto) lati awọn akọọlẹ rẹ

O kan awọn miiran ọjọ Ẹgbẹ-IB alaye nipa iṣẹ ṣiṣe ti alagbeka Android Trojan Gustuff. O ṣiṣẹ ni iyasọtọ ni awọn ọja kariaye, ikọlu awọn alabara ti awọn banki ajeji 100 ti o tobi julọ, awọn olumulo ti awọn apamọwọ crypto 32 alagbeka, ati awọn orisun e-commerce nla. Ṣugbọn Olùgbéejáde ti Gustuff jẹ ọdaràn cybercriminal ti o sọ Russian labẹ orukọ apeso Bestoffer. Titi di aipẹ, o yìn Tirojanu rẹ gẹgẹbi “ọja to ṣe pataki fun awọn eniyan ti o ni imọ ati iriri.”

Alamọja itupalẹ koodu irira ni Ẹgbẹ-IB Ivan Pisarev ninu iwadi rẹ, o sọrọ ni alaye nipa bi Gustuff ṣe n ṣiṣẹ ati kini awọn ewu rẹ jẹ.

Tani Gustuff n ṣọdẹ?

Gustuff jẹ ti iran tuntun ti malware pẹlu awọn iṣẹ adaṣe ni kikun. Gẹgẹbi olupilẹṣẹ naa, Tirojanu ti di ẹya tuntun ati ilọsiwaju ti AndyBot malware, eyiti lati Oṣu kọkanla ọdun 2017 ti kọlu awọn foonu Android ati jija owo nipasẹ awọn fọọmu oju opo wẹẹbu aṣiri ti o masquerading bi awọn ohun elo alagbeka ti awọn ile-ifowopamọ agbaye ti o mọ daradara ati awọn eto isanwo. Bestoffer royin pe idiyele yiyalo Gustuff Bot jẹ $800 fun oṣu kan.

Onínọmbà ti awọn ayẹwo Gustuff fihan pe Tirojanu ti wa ni idojukọ awọn onibara nipa lilo awọn ohun elo alagbeka ti awọn ile-ifowopamọ ti o tobi julo, gẹgẹbi Bank of America, Bank of Scotland, JP Morgan, Wells Fargo, Capital One, TD Bank, PNC Bank, bakanna bi Bitcoin. Awọn apamọwọ crypto Apamọwọ. BitPay, Cryptopay, Coinbase, ati bẹbẹ lọ.

Ni akọkọ ti a ṣẹda bi Tirojanu ile-ifowopamọ Ayebaye, ninu ẹya lọwọlọwọ Gustuff ti gbooro pupọ atokọ ti awọn ibi-afẹde ti o pọju fun ikọlu. Ni afikun si awọn ohun elo Android fun awọn banki, awọn ile-iṣẹ fintech ati awọn iṣẹ crypto, Gustuff jẹ ifọkansi si awọn olumulo ti awọn ohun elo ọjà, awọn ile itaja ori ayelujara, awọn eto isanwo ati awọn ojiṣẹ lẹsẹkẹsẹ. Ni pato, PayPal, Western Union, eBay, Walmart, Skype, WhatsApp, Gett Taxi, Revolut ati awọn miiran.

Aaye titẹ sii: iṣiro fun ikolu pupọ

Gustuff jẹ ẹya nipasẹ “Ayebaye” fekito ti ilaluja sinu awọn fonutologbolori Android nipasẹ awọn ifiweranṣẹ SMS pẹlu awọn ọna asopọ si awọn apks. Nigbati ẹrọ Android kan ba ni arun pẹlu Tirojanu kan ni aṣẹ olupin naa, Gustuff le tun tan kaakiri nipasẹ ibi ipamọ data olubasọrọ ti foonu ti o ni arun tabi nipasẹ ibi ipamọ data olupin naa. Iṣẹ ṣiṣe Gustuff jẹ apẹrẹ fun akoran pupọ ati iwọn nla ti iṣowo ti awọn oniṣẹ rẹ - o ni iṣẹ “ifọwọyi-ifọwọyi” alailẹgbẹ si awọn ohun elo ile-ifowopamọ alagbeka ti o tọ ati awọn apamọwọ crypto, eyiti o fun ọ laaye lati yara ati iwọn ole ti owo.

Iwadi kan ti Tirojanu fihan pe iṣẹ-ṣiṣe autofill ti wa ni imuse ninu rẹ nipa lilo Iṣẹ Wiwọle, iṣẹ kan fun awọn eniyan ti o ni ailera. Gustuff kii ṣe Tirojanu akọkọ lati ṣaṣeyọri aabo aabo lodi si ibaraenisepo pẹlu awọn eroja window ti awọn ohun elo miiran nipa lilo iṣẹ Android yii. Bibẹẹkọ, lilo Iṣẹ Wiwọle ni apapọ pẹlu kikun ọkọ ayọkẹlẹ kan tun ṣọwọn pupọ.

Lẹhin igbasilẹ si foonu olufaragba, Gustuff, ni lilo Iṣẹ Wiwọle, ni anfani lati ṣe ajọṣepọ pẹlu awọn eroja window ti awọn ohun elo miiran (ifowopamọ, cryptocurrency, ati awọn ohun elo fun rira ori ayelujara, fifiranṣẹ, ati bẹbẹ lọ), ṣiṣe awọn iṣe pataki fun awọn ikọlu. . Fun apẹẹrẹ, ni aṣẹ olupin, Tirojanu le tẹ awọn bọtini ati yi awọn iye ti awọn aaye ọrọ pada ni awọn ohun elo ile-ifowopamọ. Lilo siseto Iṣẹ Wiwọle gba Tirojanu laaye lati fori awọn ọna aabo ti awọn banki lo lati koju awọn Trojans alagbeka ti iran iṣaaju, bakanna bi awọn ayipada ninu eto imulo aabo ti Google ṣe imuse ni awọn ẹya tuntun ti Android OS. Nitorinaa, Gustuff “mọ bii” lati mu aabo aabo Google ṣiṣẹ: ni ibamu si onkọwe, iṣẹ yii ṣiṣẹ ni 70% awọn ọran.

Bawo ni Android Trojan Gustuff ṣe yọ ipara naa (fiat ati crypto) lati awọn akọọlẹ rẹ

Gustuff tun le ṣafihan awọn iwifunni PUSH iro pẹlu awọn aami ti awọn ohun elo alagbeka to tọ. Olumulo naa tẹ lori ifitonileti PUSH ati ki o wo ferese aṣiwadi ti a gba lati ayelujara lati olupin naa, nibiti o ti wọ kaadi banki ti o beere tabi data apamọwọ crypto. Ninu oju iṣẹlẹ Gustuff miiran, ohun elo ni ipo eyiti eyiti ifitonileti PUSH han ti ṣii. Ni ọran yii, malware, lori aṣẹ lati ọdọ olupin nipasẹ Iṣẹ Wiwọle, le fọwọsi awọn aaye fọọmu ti ohun elo ile-ifowopamọ fun iṣowo arekereke.

Iṣẹ ṣiṣe Gustuff tun pẹlu fifiranṣẹ alaye nipa ẹrọ ti o ni akoran si olupin naa, agbara lati ka/firanṣẹ awọn ifiranṣẹ SMS, fifiranṣẹ awọn ibeere USSD, ifilọlẹ Aṣoju SOCKS5, tẹle ọna asopọ kan, fifiranṣẹ awọn faili (pẹlu awọn ọlọjẹ fọto ti awọn iwe aṣẹ, awọn sikirinisoti, awọn fọto) si olupin, tun ẹrọ naa pada si awọn eto ile-iṣẹ.

Malware onínọmbà

Ṣaaju ki o to fi ohun elo irira sori ẹrọ, Android OS fihan olumulo ni window ti o ni atokọ awọn ẹtọ ti Gustuff beere lọwọ:

Bawo ni Android Trojan Gustuff ṣe yọ ipara naa (fiat ati crypto) lati awọn akọọlẹ rẹ
Ohun elo naa yoo fi sori ẹrọ nikan lẹhin gbigba ifọwọsi olumulo. Lẹhin ifilọlẹ ohun elo naa, Tirojanu yoo ṣafihan window olumulo kan:

Bawo ni Android Trojan Gustuff ṣe yọ ipara naa (fiat ati crypto) lati awọn akọọlẹ rẹ
Lẹhin eyi o yoo yọ aami rẹ kuro.

Gustuff ti wa ni aba ti, ni ibamu si onkowe, nipa a packer lati FTT. Lẹhin ibẹrẹ, ohun elo naa nigbagbogbo kan si olupin CnC lati gba awọn aṣẹ. Awọn faili pupọ ti a ṣe ayẹwo lo adiresi IP kan gẹgẹbi olupin iṣakoso 88.99.171[.]105 (lẹhinna a yoo tọka si bi ).

Lẹhin ifilọlẹ, eto naa bẹrẹ fifiranṣẹ awọn ifiranṣẹ si olupin naa http://<%CnC%>/api/v1/get.php.

Idahun naa ni a nireti lati jẹ JSON ni ọna kika atẹle:

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

Nigbakugba ti ohun elo naa ba wọle, o firanṣẹ alaye nipa ẹrọ ti o ni akoran. Ọna kika ifiranṣẹ ti han ni isalẹ. O ti wa ni ye ki a kiyesi wipe awọn aaye full, afikun, apps и fun aiye - iyan ati pe yoo firanṣẹ nikan ni ọran ti aṣẹ ibeere lati 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%>
} 

Titoju data iṣeto ni

Gustuff tọju alaye pataki iṣẹ ṣiṣe ni faili ayanfẹ kan. Orukọ faili naa, bakanna bi awọn orukọ ti awọn paramita inu rẹ, jẹ abajade ti iṣiro MD5 apao lati okun. 15413090667214.6.1nibo - ibẹrẹ orukọ-iye. Itumọ Python ti iṣẹ iran orukọ:

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

Ninu ohun ti o tẹle a yoo tọka si bi Olupilẹṣẹ orukọ (igbewọle).
Nitorina orukọ faili akọkọ ni: Oruko Generator("API_SERVER_LIST"), o ni awọn iye pẹlu awọn orukọ wọnyi:

Orukọ oniyipada Itumo
Oruko Generator("API_SERVER_LIST") Ni atokọ ti awọn adirẹsi CnC ni irisi akojọpọ.
Oruko Generator("API_SERVER_URL") Ni adirẹsi CnC ninu.
Orukọ Generator("SMS_UPLOAD") Asia ti ṣeto nipasẹ aiyipada. Ti o ba ṣeto asia, fi awọn ifiranṣẹ SMS ranṣẹ si CnC.
Oruko Generator("SMS_ROOT_NUMBER") Nọmba foonu eyiti awọn ifiranṣẹ SMS ti o gba nipasẹ ẹrọ ti o ni arun yoo firanṣẹ. Aiyipada jẹ asan.
Oruko Generator("SMS_ROOT_NUMBER_RESEND") Awọn asia ti wa ni nso nipa aiyipada. Ti o ba fi sii, nigbati ẹrọ ti o ni arun ba gba SMS, yoo firanṣẹ si nọmba root.
Oruko Generator("DEFAULT_APP_SMS") Awọn asia ti wa ni nso nipa aiyipada. Ti a ba ṣeto asia yii, ohun elo naa yoo ṣe ilana awọn ifiranṣẹ SMS ti nwọle.
Oruko Generator("DEFAULT_ADMIN") Awọn asia ti wa ni nso nipa aiyipada. Ti a ba ṣeto asia, ohun elo naa ni awọn ẹtọ alabojuto.
Oruko Generator("DEFAULT_ACCESSIBILITY") Awọn asia ti wa ni nso nipa aiyipada. Ti a ba ṣeto asia, iṣẹ kan ti nlo Iṣẹ Wiwọle n ṣiṣẹ.
Oruko Generator("APPS_CONFIG") Nkan JSON kan ti o ni atokọ awọn iṣe ninu ti o gbọdọ ṣe nigbati iṣẹlẹ Wiwọle ti o ni nkan ṣe pẹlu ohun elo kan pato ti wa ni mafa.
Oruko Generator("APPS_INSTALLED") Tọju akojọ awọn ohun elo ti a fi sori ẹrọ sori ẹrọ.
Oruko Generator("IS_FIST_RUN") Awọn asia ti wa ni tunto ni akọkọ ibere.
Oruko Generator("UNIQUE_ID") Ni idamo alailẹgbẹ kan ninu. Ti ipilẹṣẹ nigbati bot ti ṣe ifilọlẹ fun igba akọkọ.

Module fun sisẹ awọn aṣẹ lati olupin

Ohun elo naa tọju awọn adirẹsi ti awọn olupin CnC ni irisi titobi ti koodu nipasẹ Ipilẹ85 awọn ila. Atokọ awọn olupin CnC le yipada nigbati o ba gba aṣẹ ti o yẹ, ninu eyiti awọn adirẹsi yoo wa ni fipamọ sinu faili ayanfẹ.

Ni idahun si ibeere naa, olupin naa fi aṣẹ ranṣẹ si ohun elo naa. O tọ lati ṣe akiyesi pe awọn aṣẹ ati awọn paramita ti gbekalẹ ni ọna kika JSON. Ohun elo naa le ṣe ilana awọn aṣẹ wọnyi:

Egbe Apejuwe
forwardStart Bẹrẹ fifiranṣẹ awọn ifiranṣẹ SMS ti o gba nipasẹ ẹrọ ti o ni ikolu si olupin CnC.
Iduro siwaju Duro fifiranṣẹ awọn ifiranṣẹ SMS ti o gba nipasẹ ẹrọ ti o ni arun si olupin CnC.
ussdRun Ṣiṣe ibeere USSD. Nọmba ti o nilo lati ṣe ibeere USSD wa ni aaye JSON "nọmba".
firanṣẹSms Firanṣẹ SMS kan (ti o ba jẹ dandan, ifiranṣẹ naa “pin” si awọn apakan). Gẹgẹbi paramita, aṣẹ naa gba nkan JSON kan ti o ni awọn aaye “si” - nọmba opin irin ajo ati “ara” - ara ti ifiranṣẹ naa.
firanṣẹSmsAb Firanṣẹ awọn ifiranṣẹ SMS (ti o ba jẹ dandan, ifiranṣẹ naa “pin” si awọn apakan) si gbogbo eniyan ti o wa ninu atokọ olubasọrọ ti ẹrọ ti o ni akoran. Aarin laarin fifiranṣẹ awọn ifiranṣẹ jẹ iṣẹju-aaya 10. Ara ti ifiranṣẹ naa wa ni aaye JSON "ara"
firanṣẹSmsMass Firanṣẹ awọn ifiranṣẹ SMS (ti o ba jẹ dandan, ifiranṣẹ naa “pipin” si awọn apakan) si awọn olubasọrọ ti o wa ni pato ninu awọn paramita aṣẹ. Aarin laarin fifiranṣẹ awọn ifiranṣẹ jẹ iṣẹju-aaya 10. Gẹgẹbi paramita, aṣẹ naa gba ọna JSON kan (aaye “sms”), awọn eroja eyiti o ni awọn aaye “si” - nọmba opin irin ajo ati “ara” - ara ti ifiranṣẹ naa.
changeServer Aṣẹ yii le gba iye kan pẹlu bọtini “url” bi paramita kan - lẹhinna bot yoo yi iye orukọ Generator (“SERVER_URL”), tabi “orun” - lẹhinna bot yoo kọ orun si orukọ Generator (“API_SERVER_LIST”) Nitorinaa, ohun elo naa yipada adirẹsi ti awọn olupin CnC.
Nọmba abojuto Ilana naa jẹ apẹrẹ lati ṣiṣẹ pẹlu nọmba root kan. Ilana naa gba nkan JSON kan pẹlu awọn aye atẹle wọnyi: “nọmba” — yi orukọ Generator pada (“ROOT_NUMBER”) si iye ti o gba, “firanṣẹ” — yi orukọ Generator pada (“SMS_ROOT_NUMBER_RESEND”), “sendId” — firanṣẹ si nameGenerator (“ROOT_NUMBER”) ) alailẹgbẹ ID.
imudojuiwọnInfo Fi alaye ranṣẹ nipa ẹrọ ti o ni akoran si olupin naa.
wipeData Ilana naa jẹ ipinnu lati pa data olumulo rẹ. Da lori iru orukọ wo ni a ṣe ifilọlẹ ohun elo naa, boya data ti paarẹ patapata pẹlu atunbere ẹrọ kan (olumulo akọkọ), tabi data olumulo nikan ti paarẹ (olumulo keji).
ibọsẹ Bẹrẹ Lọlẹ awọn aṣoju module. Awọn isẹ ti awọn module ti wa ni apejuwe ninu lọtọ apakan.
ibọsẹ Duro Duro aṣoju module.
OpenLink Tẹle ọna asopọ naa. Ọna asopọ wa ni paramita JSON labẹ bọtini “url”. “android.intent.action.VIEW” ni a lo lati ṣii ọna asopọ naa.
gbejadeGbogboSms Firanṣẹ gbogbo awọn ifiranṣẹ SMS ti ẹrọ ti gba wọle si olupin naa.
gbejadeGbogboPhotos Fi awọn aworan ranṣẹ lati ẹrọ ti o ni akoran si URL kan. URL naa wa bi paramita kan.
ikojọpọFile Fi faili ranṣẹ si URL lati ẹrọ ti o ni akoran. URL naa wa bi paramita kan.
ikojọpọ Awọn nọmba foonu Fi awọn nọmba foonu ranṣẹ lati inu akojọ olubasọrọ rẹ si olupin naa. Ti iye ohun JSON kan pẹlu bọtini “ab” ti gba bi paramita kan, ohun elo naa gba atokọ awọn olubasọrọ lati inu iwe foonu naa. Ti ohun elo JSON kan pẹlu bọtini “sms” ti gba bi paramita kan, ohun elo naa ka atokọ awọn olubasọrọ lati ọdọ awọn olufiranṣẹ ti awọn ifiranṣẹ SMS.
changeArchive Ohun elo naa ṣe igbasilẹ faili lati adirẹsi ti o wa bi paramita nipa lilo bọtini “url”. Faili ti o gba lati ayelujara ti wa ni ipamọ pẹlu orukọ "archive.zip". Ohun elo naa yoo ṣii faili naa, ni yiyan nipa lilo ọrọ igbaniwọle pamosi “b5jXh37gxgHBrZhQ4j3D”. Awọn faili ṣiṣi silẹ ti wa ni ipamọ ni [ibi ipamọ ita]/hgps itọsọna. Ninu itọsọna yii, ohun elo naa tọju awọn iro wẹẹbu (ti ṣe apejuwe ni isalẹ).
awọn sise A ṣe apẹrẹ aṣẹ naa lati ṣiṣẹ pẹlu Iṣẹ Iṣẹ, eyiti o ṣe apejuwe ni apakan lọtọ.
igbeyewo Nse nkankan.
download Ilana naa jẹ ipinnu lati ṣe igbasilẹ faili lati ọdọ olupin latọna jijin ki o fi pamọ si “Awọn igbasilẹ” ilana. URL ati orukọ faili wa bi paramita kan, awọn aaye ninu nkan paramita JSON, lẹsẹsẹ: “url” ati “NameFaili”.
yọ Yọ faili kuro lati inu ilana "Awọn igbasilẹ". Orukọ faili naa wa ninu paramita JSON pẹlu bọtini “Name faili”. Orukọ faili boṣewa jẹ “tmp.apk”.
iwifunni Ṣe afihan ifitonileti kan pẹlu apejuwe ati awọn ọrọ akọle asọye nipasẹ olupin iṣakoso.

Ilana aṣẹ iwifunni:

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

Ifitonileti ti ipilẹṣẹ nipasẹ faili ti o wa labẹ iwadii dabi aami si awọn iwifunni ti ipilẹṣẹ nipasẹ ohun elo ti a sọ pato ninu aaye app. Ti o ba ti aaye iye ìmọApp - Otitọ, nigbati ifitonileti kan ba ṣii, ohun elo ti a sọ ni aaye ti ṣe ifilọlẹ app. Ti o ba ti aaye iye ìmọApp - Eke, lẹhinna:

  • Ferese aṣiwa-ararẹ kan ṣii, awọn akoonu inu eyiti o ti ṣe igbasilẹ lati inu ilana /hgps/
  • Ferese aṣiwa-ararẹ yoo ṣii, awọn akoonu inu eyiti a ṣe igbasilẹ lati olupin naa ?id=&app=
  • Ferese aṣiwa-ararẹ kan ṣii, ti o para bi Kaadi Play Google kan, pẹlu aye lati tẹ awọn alaye kaadi sii.

Ohun elo naa firanṣẹ abajade ti aṣẹ eyikeyi si set_state.php bi ohun JSON ni ọna kika atẹle:

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

Iṣẹ Iṣẹ
Atokọ awọn aṣẹ ti awọn ilana ohun elo pẹlu igbese. Nigbati a ba gba aṣẹ kan, module processing pipaṣẹ wọle si iṣẹ yii lati ṣiṣẹ pipaṣẹ ti o gbooro sii. Iṣẹ naa gba ohun JSON kan gẹgẹbi paramita kan. Iṣẹ naa le ṣe awọn aṣẹ wọnyi:

1. PARAMS_ACTION - nigba gbigba iru aṣẹ bẹ, iṣẹ naa gba akọkọ lati paramita JSON iye ti bọtini Iru, eyiti o le jẹ bi atẹle:

  • Alaye iṣẹ - Aṣẹ abẹ naa gba iye nipasẹ bọtini lati paramita JSON pẹlu Ko ṣe pataki. Ti asia ba jẹ Otitọ, ohun elo naa ṣeto asia naa FLAG_ISOLATED_PROCESS si iṣẹ kan nipa lilo Iṣẹ Wiwọle. Ni ọna yii iṣẹ naa yoo ṣe ifilọlẹ ni ilana lọtọ.
  • root - gba ati firanṣẹ si alaye olupin nipa window ti o wa ni idojukọ lọwọlọwọ. Ohun elo naa gba alaye nipa lilo kilasi AccessibilityNodeInfo.
  • admin - beere awọn ẹtọ alakoso.
  • idaduro - da iṣẹ iṣẹ duro fun nọmba milliseconds ti a pato ninu paramita fun bọtini “data”.
  • windows - firanṣẹ atokọ ti awọn window ti o han si olumulo.
  • fi sori ẹrọ - fi ohun elo sori ẹrọ ti o ni ikolu. Orukọ idii ipamọ wa ninu bọtini “Orukọ faili”. Ile-ipamọ funrararẹ wa ninu ilana Awọn igbasilẹ.
  • agbaye - aṣẹ abẹlẹ naa jẹ ipinnu lati lilö kiri ni window lọwọlọwọ:
    • lori Awọn ọna Eto akojọ
    • pada
    • ile
    • si awọn iwifunni
    • si ferese ohun elo ti o ṣii laipe

  • Ifilole - ifilọlẹ ohun elo. Orukọ ohun elo naa wa bi paramita nipasẹ bọtini data.
  • ohun - yi ipo ohun pada si ipalọlọ.
  • šii - tan-an ina ẹhin iboju ati keyboard si imọlẹ kikun. Ohun elo naa ṣe iṣe yii nipa lilo WakeLock, ni pato okun [Lable Ohun elo]: INFO bi tag
  • igbanilaaye Overlay - iṣẹ naa ko ṣe imuse (idahun si pipaṣẹ pipaṣẹ jẹ {"ifiranṣẹ":"Ko ṣe atilẹyin"} tabi {"ifiranṣẹ":"sdk kekere")
  • idari - iṣẹ naa ko ṣe imuse (idahun si pipaṣẹ pipaṣẹ jẹ {"ifiranṣẹ":"Ko ṣe atilẹyin"} tabi {"ifiranṣẹ":" API kekere"})
  • awọn igbanilaaye - aṣẹ yii jẹ pataki lati beere awọn igbanilaaye fun ohun elo naa. Sibẹsibẹ, iṣẹ ibeere ko ṣe imuse, nitorinaa aṣẹ ko ni itumọ. Atokọ awọn ẹtọ ti o beere wa bi eto JSON pẹlu bọtini “awọn igbanilaaye”. Akojọ boṣewa:
    • igbanilaaye android.READ_PHONE_STATE
    • android.permission.READ_CONTACTS
    • android.permission.CALL_PHONE
    • android.iyọọda.Gbà_SMS
    • android.iyọọda.SEND_SMS
    • android.permission.KA_SMS
    • igbesoke android.READ_EXTERNAL_STORAGE
    • android.permission.WRITE_EXTERNAL_STORAGE

  • ìmọ - ṣe afihan ferese ararẹ kan. Da lori paramita ti nbọ lati ọdọ olupin naa, ohun elo naa le ṣafihan awọn ferese aṣiri wọnyi:
    • Ṣe afihan ferese aṣiri kan ti akoonu rẹ jẹ kikọ sinu faili kan ninu itọsọna kan /hgps/. Abajade ibaraenisepo olumulo pẹlu window yoo firanṣẹ si /records.php
    • Ṣe afihan ferese ararẹ kan ti akoonu rẹ ti kojọpọ tẹlẹ lati adirẹsi naa ?id=&app=. Abajade ibaraenisepo olumulo pẹlu window yoo firanṣẹ si /records.php
    • Ṣe afihan ferese ararẹ kan ti o para bi Kaadi Play Google kan.

  • ibanisọrọ - A ṣe apẹrẹ aṣẹ lati ṣe ajọṣepọ pẹlu awọn eroja window ti awọn ohun elo miiran nipa lilo Iṣẹ Acessibility. Iṣẹ pataki kan ti ni imuse ninu eto fun ibaraenisepo. Ohun elo ti o wa labẹ iwadii le ṣe ajọṣepọ pẹlu awọn window:
    • Lọwọlọwọ lọwọ. Ni ọran yii, paramita naa ni id tabi ọrọ (orukọ) ohun ti o nilo lati ṣe ajọṣepọ.
    • O han si olumulo ni akoko ti aṣẹ naa ti ṣiṣẹ. Ohun elo naa yan awọn window nipasẹ id.

    Ti gba awọn nkan AccessibilityNodeInfo Fun awọn eroja window ti iwulo, ohun elo naa, da lori awọn paramita, le ṣe awọn iṣe wọnyi:

    • idojukọ - ṣeto idojukọ si ohun naa.
    • tẹ - tẹ lori ohun kan.
    • actionId - ṣe iṣe nipasẹ ID.
    • setText - yi ọrọ ti ohun kan pada. Yiyipada ọrọ naa ṣee ṣe ni awọn ọna meji: ṣe iṣe kan ACTION_SET_TEXT (ti ẹya Android ti ẹrọ ti o ni arun ba kere ju tabi dọgba si LOLLIPOP), tabi nipa gbigbe okun kan sori agekuru agekuru ati ki o lẹẹmọ sinu ohun kan (fun awọn ẹya agbalagba). Aṣẹ yii le ṣee lo lati yi data pada ninu ohun elo ile-ifowopamọ.

2. PARAMS_ACTIONS - Bakan naa PARAMS_ACTION, nikan JSON orun ti ase de.

O dabi pe ọpọlọpọ eniyan yoo nifẹ si kini iṣẹ ti ibaraenisepo pẹlu awọn eroja window ti ohun elo miiran dabi. Eyi ni bii iṣẹ ṣiṣe yii ṣe ṣe imuse ni 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));
}

Iṣẹ rirọpo ọrọ:

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

Nitorinaa, pẹlu iṣeto deede ti olupin iṣakoso, Gustuff ni anfani lati kun awọn aaye ọrọ ninu ohun elo ile-ifowopamọ ati tẹ awọn bọtini pataki lati pari idunadura naa. Tirojanu ko paapaa nilo lati wọle si ohun elo naa-o to lati fi aṣẹ ranṣẹ lati ṣafihan ifitonileti PUSH kan ati lẹhinna ṣii ohun elo ile-ifowopamọ ti a fi sii tẹlẹ. Olumulo yoo jẹri funrararẹ, lẹhinna Gustuff yoo ni anfani lati kun ọkọ ayọkẹlẹ naa.

SMS processing module

Ohun elo naa nfi oluṣakoso iṣẹlẹ sori ẹrọ fun ẹrọ ti o ni akoran lati gba awọn ifiranṣẹ SMS. Ohun elo ti o wa labẹ ikẹkọ le gba awọn aṣẹ lati ọdọ oniṣẹ, eyiti o wa ninu ara ti ifiranṣẹ SMS. Awọn aṣẹ wa ni ọna kika:

7!5=

Ohun elo naa n wa okun ni gbogbo awọn ifiranṣẹ SMS ti nwọle 7!5 =, Nigbati a ba rii okun kan, yoo ṣe ipinnu okun lati Base64 ni aiṣedeede 4 ati ṣiṣe aṣẹ naa. Awọn aṣẹ jẹ iru awọn ti o ni CnC. Abajade ipaniyan naa ni a firanṣẹ si nọmba kanna lati eyiti aṣẹ ti wa. Ọna idahun:

7*5=

Optionally, awọn ohun elo le fi gbogbo awọn ti gba awọn ifiranṣẹ si awọn Gbongbo nọmba. Lati ṣe eyi, nọmba Gbongbo gbọdọ wa ni pato ninu faili ti o fẹ ati asia atunṣe ifiranṣẹ gbọdọ ṣeto. Ifiranṣẹ SMS kan ranṣẹ si nọmba ikọlu ni ọna kika:

-

Paapaa, ni iyan, ohun elo le firanṣẹ awọn ifiranṣẹ si CnC. Ifiranṣẹ SMS naa ni a fi ranṣẹ si olupin ni ọna kika JSON:

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

Ti o ba ti ṣeto asia Oruko Generator("DEFAULT_APP_SMS") - Ohun elo naa duro ṣiṣiṣẹ ifiranṣẹ SMS ati nu atokọ ti awọn ifiranṣẹ ti nwọle kuro.

Aṣoju module

Ohun elo ti o wa labẹ ikẹkọ ni module Aṣoju Afẹyinti (lẹhinna tọka si module Aṣoju), eyiti o ni kilasi lọtọ ti o pẹlu awọn aaye aimi pẹlu iṣeto ni. Awọn data atunto ti wa ni ipamọ ninu apẹẹrẹ ni fọọmu ti o han gbangba:

Bawo ni Android Trojan Gustuff ṣe yọ ipara naa (fiat ati crypto) lati awọn akọọlẹ rẹ

Gbogbo awọn iṣe ti a ṣe nipasẹ module Aṣoju ti wa ni ibuwolu wọle sinu awọn faili. Lati ṣe eyi, ohun elo ti o wa ninu Ibi ipamọ ita ṣẹda itọsọna kan ti a pe ni "awọn logs" (aaye ProxyConfigClass.logsDir ninu kilasi iṣeto), ninu eyiti awọn faili log ti wa ni ipamọ. Wọle waye ni awọn faili pẹlu awọn orukọ:

  1. akọkọ.txt - iṣẹ ti kilasi ti a pe ni CommandServer ti wọle sinu faili yii. Ninu ohun ti o tẹle, wíwọlé okun str sinu faili yii yoo jẹ itọkasi bi mainLog(str).
  2. igba-.txt - faili yii ṣafipamọ data log ti o ni nkan ṣe pẹlu igba aṣoju kan pato. Ninu ohun ti o tẹle, wíwọlé okun str si faili yii yoo jẹ itọkasi bi sessionLog (str).
  3. olupin.txt – Faili yii ni a lo lati wọle gbogbo data ti a kọ si awọn faili ti a ṣalaye loke.

Wọle ọna kika data:

[Oro[], id[]]: log-string

Awọn imukuro ti o waye lakoko iṣẹ ti module Aṣoju tun wọle si faili kan. Lati ṣe eyi, ohun elo naa ṣe agbejade nkan JSON ni ọna kika atẹle:

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

Lẹhinna o yi pada si aṣoju okun ati ṣe igbasilẹ rẹ.

Aṣoju module ti wa ni ifilọlẹ lẹhin gbigba aṣẹ ti o baamu. Nigbati aṣẹ kan lati ṣe ifilọlẹ module Aṣoju ti gba, ohun elo naa bẹrẹ iṣẹ kan ti a pe Iṣẹ akọkọ, eyi ti o jẹ lodidi fun ìṣàkóso awọn isẹ ti awọn aṣoju module - ti o bere ati idekun o.

Awọn ipele ti ibẹrẹ iṣẹ:

1. Bẹrẹ aago kan ti o nṣiṣẹ lẹẹkan ni iṣẹju kan ati ṣayẹwo iṣẹ ṣiṣe ti module Aṣoju. Ti module ko ba ṣiṣẹ, o bẹrẹ.
Tun nigbati awọn iṣẹlẹ ti wa ni jeki android.net.conn.CONNECTIVITY_CHANGE Aṣoju module ti wa ni se igbekale.

2. Ohun elo naa ṣẹda titiipa-ji pẹlu paramita PARTIAL_WAKE_LOCK ó sì mú un. Eyi ṣe idiwọ Sipiyu ẹrọ lati lọ si ipo oorun.

3. Ṣe ifilọlẹ kilasi processing aṣẹ ti module Aṣoju, wọle akọkọ laini mainLog ("olupin ibẹrẹ") и

Olupin :: bẹrẹ () agbalejo[], aṣẹPort[], proxyPort[]

nibi ti proxy_cnc, command_port ati proxy_port - awọn paramita ti a gba lati iṣeto olupin aṣoju.

Kilasi processing aṣẹ ni a npe ni Asopọmọra Command. Lẹsẹkẹsẹ lẹhin ibẹrẹ, ṣe awọn iṣe wọnyi:

4. Sopọ si ProxyConfigClass.host: ProxyConfigClass.commandPort o si fi data ranṣẹ nipa ẹrọ ti o ni akoran nibẹ ni ọna kika 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%>
}

Nibo ni:

  • id – idamo, gbìyànjú lati gba iye kan pẹlu aaye “id” lati inu faili Iyanfẹ Pipin ti a npè ni “x”. Ti iye yii ko ba le gba, o ṣe agbejade tuntun kan. Nitorinaa, module Aṣoju ni idanimọ tirẹ, eyiti o jẹ ipilẹṣẹ bakanna si ID Bot.
  • imei - IMEI ti ẹrọ naa. Ti aṣiṣe ba waye lakoko ilana gbigba iye, ifọrọranṣẹ aṣiṣe yoo kọ dipo aaye yii.
  • imsi — International Mobile Subscriber Identity of the device. Ti aṣiṣe ba waye lakoko ilana gbigba iye, ifọrọranṣẹ aṣiṣe yoo kọ dipo aaye yii.
  • awoṣe - Orukọ olumulo-igbẹhin-ipari fun ọja ipari.
  • olupese - Olupese ọja / hardware (Build.MANUFACTURER).
  • androidVersion - okun kan ni ọna kika " (),"
  • orilẹ-ede - lọwọlọwọ ipo ti ẹrọ.
  • partnerId jẹ okun sofo.
  • package Name – package orukọ.
  • networkTpe — Iru asopọ nẹtiwọki lọwọlọwọ (apẹẹrẹ: “WIFI”, “MOBILE”). Ni irú ti aṣiṣe, pada asan.
  • hasGsmSupport – ooto – ti foonu ba ṣe atilẹyin GSM, bibẹẹkọ eke.
  • SIMReady – SIM kaadi ipinle.
  • SIMCountry - ISO koodu orilẹ-ede (da lori olupese kaadi SIM).
  • Oniṣẹ nẹtiwọki — orukọ oniṣẹ. Ti aṣiṣe ba waye lakoko ilana gbigba iye, ifọrọranṣẹ aṣiṣe yoo kọ dipo aaye yii.
  • simOperator - Orukọ Olupese Iṣẹ (SPN). Ti aṣiṣe ba waye lakoko ilana gbigba iye, ifọrọranṣẹ aṣiṣe yoo kọ dipo aaye yii.
  • Ẹya - aaye yii ti wa ni ipamọ ninu kilasi atunto; fun awọn ẹya idanwo ti bot o dọgba si “1.6”.

5. Yipada si ipo idaduro fun awọn aṣẹ lati ọdọ olupin naa. Awọn aṣẹ lati ọdọ olupin wa ni ọna kika:

  • 0 aiṣedeede – pipaṣẹ
  • 1 aiṣedeede – sessionId
  • 2 aiṣedeede - ipari
  • 4 aiṣedeede - data

Nigbati aṣẹ ba de, ohun elo naa yoo wọle:
mainLog("Akọsori { sessionId], tẹ[], ipari[] })

Awọn aṣẹ wọnyi lati ọdọ olupin ṣee ṣe:

Name pipaṣẹ data Apejuwe
asopọId 0 ID Asopọmọra Ṣẹda asopọ tuntun kan
SLEEP 3 Time Duro aṣoju module
BALUU AFIÓWÓ GBA ​​LO RI TABILI 4 - Firanṣẹ PONG ifiranṣẹ

Ifiranṣẹ PONG kan ni awọn baiti 4 ati pe o dabi eyi: 0x04000000.

Nigbati pipaṣẹ asopọId ti gba (lati ṣẹda asopọ tuntun) Asopọmọra Command ṣẹda apẹẹrẹ ti kilasi Asopọmọra aṣoju.

  • Awọn kilasi meji kopa ninu aṣoju aṣoju: Asopọmọra aṣoju и opin. Nigbati ṣiṣẹda a kilasi Asopọmọra aṣoju sopọ si adirẹsi ProxyConfigClass.host: ProxyConfigClass.proxyPort ati gbigbe nkan JSON lọ:

 {
    "id":<%connectionId%>
}

Ni idahun, olupin naa fi ifiranṣẹ SOCKS5 ranṣẹ ti o ni adirẹsi ti olupin latọna jijin pẹlu eyiti asopọ gbọdọ wa ni idasilẹ. Ibaraṣepọ pẹlu olupin yii waye nipasẹ kilasi naa opin. Iṣeto asopọ le jẹ aṣoju sikematiki gẹgẹbi atẹle:

Bawo ni Android Trojan Gustuff ṣe yọ ipara naa (fiat ati crypto) lati awọn akọọlẹ rẹ

Awọn ibaraẹnisọrọ nẹtiwọki

Lati ṣe idiwọ itupalẹ ijabọ nipasẹ awọn apanirun nẹtiwọọki, ibaraenisepo laarin olupin CnC ati ohun elo le ni aabo ni lilo ilana SSL. Gbogbo data ti a gbejade mejeeji lati ati si olupin ni a gbekalẹ ni ọna kika JSON. Ohun elo naa ṣe awọn ibeere wọnyi lakoko iṣẹ:

  • http://<%CnC%>/api/v1/set_state.php - abajade ti pipaṣẹ pipaṣẹ.
  • http://<%CnC%>/api/v1/get.php - gbigba aṣẹ.
  • http://<%CnC%>/api/v1/load_sms.php - gbigba awọn ifiranṣẹ SMS lati ẹrọ ti o ni akoran.
  • http://<%CnC%>/api/v1/load_ab.php - ikojọpọ atokọ ti awọn olubasọrọ lati ẹrọ ti o ni akoran.
  • http://<%CnC%>/api/v1/aevents.php - A ṣe ibeere naa nigbati o ba n ṣe imudojuiwọn awọn paramita ti o wa ninu faili ayanfẹ.
  • http://<%CnC%>/api/v1/set_card.php - ikojọpọ data ti o gba ni lilo ferese aṣiwa-ararẹ bi Ọja Google Play.
  • http://<%CnC%>/api/v1/logs.php - ikojọpọ data log.
  • http://<%CnC%>/api/v1/records.php - ikojọpọ data ti o gba nipasẹ awọn ferese aṣiri-ararẹ.
  • http://<%CnC%>/api/v1/set_error.php - ifitonileti ti aṣiṣe ti o ṣẹlẹ.

Awọn iṣeduro

Lati le daabobo awọn alabara wọn lati ewu ti awọn Trojans alagbeka, awọn ile-iṣẹ gbọdọ lo awọn solusan okeerẹ ti o gba wọn laaye lati ṣe atẹle ati dena iṣẹ irira laisi fifi sọfitiwia afikun sori awọn ẹrọ olumulo.

Lati ṣe eyi, awọn ọna ibuwọlu fun wiwa Trojans alagbeka nilo lati ni okun pẹlu awọn imọ-ẹrọ fun itupalẹ ihuwasi ti alabara mejeeji ati ohun elo funrararẹ. Idabobo yẹ ki o tun pẹlu iṣẹ idanimọ ẹrọ kan nipa lilo imọ-ẹrọ itẹka oni-nọmba, eyiti yoo jẹ ki o ṣee ṣe lati loye nigbati akọọlẹ kan ba nlo lati ẹrọ alaiṣedeede ati pe o ti ṣubu tẹlẹ si ọwọ oniwajẹ.

Ojuami pataki pataki ni wiwa ti itupalẹ ikanni agbelebu, eyiti ngbanilaaye awọn ile-iṣẹ lati ṣakoso awọn ewu ti o dide kii ṣe lori Intanẹẹti nikan, ṣugbọn tun lori ikanni alagbeka, fun apẹẹrẹ, ninu awọn ohun elo fun ifowopamọ alagbeka, fun awọn iṣowo pẹlu awọn owo-iworo ati awọn miiran nibiti awọn iṣowo le ṣee ṣe.

Awọn ofin aabo fun awọn olumulo:

  • maṣe fi awọn ohun elo sori ẹrọ fun ẹrọ alagbeka pẹlu Android OS lati awọn orisun miiran yatọ si Google Play, san ifojusi pataki si awọn ẹtọ ti ohun elo naa beere;
  • fi sori ẹrọ awọn imudojuiwọn Android OS nigbagbogbo;
  • san ifojusi si awọn amugbooro ti awọn faili ti a gba lati ayelujara;
  • maṣe ṣabẹwo si awọn orisun ifura;
  • Maṣe tẹ awọn ọna asopọ ti o gba ni awọn ifiranṣẹ SMS.

Kikopa Semyon Rogacheva, alamọja junior ni iwadii malware ni Ẹgbẹ-IB Kọmputa Forensics Laboratory.

orisun: www.habr.com

Fi ọrọìwòye kun