OceanLotus: kenkėjiškų programų naujinimas, skirtas MacOS

2019 m. kovo mėn. į populiarią internetinę nuskaitymo paslaugą „VirusTotal“ buvo įkeltas naujas „macOS“ kenkėjiškų programų pavyzdys iš kibernetinės grupės „OceanLotus“. Užpakalinių durų vykdomasis failas turi tas pačias galimybes kaip ir ankstesnė mūsų tirtos „MacOS“ kenkėjiškos programos versija, tačiau pasikeitė jo struktūra ir tapo sunkiau aptikti. Deja, mums nepavyko rasti lašintuvo, susieto su šiuo mėginiu, todėl infekcijos vektoriaus dar nežinome.

Neseniai paskelbėme įrašas apie OceanLotus ir kaip operatoriai stengiasi užtikrinti atkaklumą, pagreitinti kodo vykdymą ir sumažinti „Windows“ sistemų pėdsaką. Taip pat žinoma, kad ši kibernetinė grupė taip pat turi „macOS“ komponentą. Šiame įraše išsamiai aprašomi naujausios „MacOS“ kenkėjiškos programos versijos pakeitimai, palyginti su ankstesne versija (aprašė Trend Micro), taip pat aprašoma, kaip galite automatizuoti eilučių iššifravimą analizės metu naudojant IDA Hex-Rays API.

OceanLotus: kenkėjiškų programų naujinimas, skirtas MacOS

Analizė

Kitose trijose dalyse aprašoma mėginio analizė su SHA-1 maiša E615632C9998E4D3E5ACD8851864ED09B02C77D2. Failas vadinamas žibintuvėlis, ESET antivirusiniai produktai aptinka jį kaip OSX/OceanLotus.D.

Apsauga nuo derinimo ir smėlio dėžės apsauga

Kaip ir visi „macOS OceanLotus“ dvejetainiai failai, pavyzdys yra supakuotas su UPX, tačiau dauguma pakuotojo identifikavimo įrankių jo kaip tokio neatpažįsta. Taip yra tikriausiai todėl, kad juose dažniausiai yra parašas, priklausantis nuo „UPX“ eilutės buvimo, be to, Mach-O parašai yra mažiau paplitę ir ne taip dažnai atnaujinami. Ši funkcija apsunkina statinio aptikimą. Įdomu tai, kad išpakavus įėjimo taškas yra sekcijos pradžioje __cfstring segmente .TEXT. Šiame skyriuje yra vėliavos atributai, kaip parodyta paveikslėlyje žemiau.

OceanLotus: kenkėjiškų programų naujinimas, skirtas MacOS
1 pav. MACH-O __cfstring sekcijos atributai

Kaip parodyta 2 paveiksle, kodo vietos skyriuje __cfstring leidžia apgauti kai kuriuos išmontavimo įrankius rodant kodą kaip eilutes.

OceanLotus: kenkėjiškų programų naujinimas, skirtas MacOS
2 pav. Užpakalinių durų kodas, kurį IDA aptiko kaip duomenis

Vykdytas dvejetainis failas sukuria giją kaip antiderintuvą, kurio vienintelis tikslas yra nuolat tikrinti, ar nėra derinimo priemonės. Šiam srautui:

— Bando atkabinti bet kokį derintuvą, skambina ptrace с PT_DENY_ATTACH kaip užklausos parametras
- Iškviečiant funkciją patikrinama, ar kai kurie išskirtiniai prievadai yra atidaryti task_get_exception_ports
- Patikrina, ar derinimo priemonė yra prijungta, kaip parodyta paveikslėlyje žemiau, patikrinant, ar yra vėliavėlė P_TRACED dabartiniame procese

OceanLotus: kenkėjiškų programų naujinimas, skirtas MacOS
3 pav. Derinimo priemonės ryšio tikrinimas naudojant sysctl funkciją

Jei sergėtojas aptinka, kad yra derinimo priemonė, funkcija iškviečiama exit. Be to, pavyzdys patikrina aplinką vykdydamas dvi komandas:

ioreg -l | grep -e "Manufacturer" и sysctl hw.model

Tada mėginys patikrina grąžinamąją reikšmę pagal įprastą eilučių sąrašą iš žinomų virtualizacijos sistemų: acle, vmware, VirtualBox arba paralelės. Galiausiai kita komanda patikrina, ar įrenginys yra vienas iš šių „MBP“, „MBA“, „MB“, „MM“, „IM“, „MP“ ir „XS“. Tai yra sistemos modelio kodai, pavyzdžiui, „MBP“ reiškia „MacBook Pro“, „MBA“ reiškia „MacBook Air“ ir kt.

system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}

Pagrindiniai papildymai

Nors užpakalinių durų komandos nepasikeitė nuo „Trend Micro“ tyrimo, pastebėjome keletą kitų modifikacijų. Šiame pavyzdyje naudojami C&C serveriai yra gana nauji ir sukurti 22.10.2018-XNUMX-XNUMX.

- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkeston[.]com

Ištekliaus URL pakeistas į /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
Pirmame pakete, išsiųstame į C&C serverį, yra daugiau informacijos apie pagrindinį kompiuterį, įskaitant visus duomenis, surinktus komandomis toliau esančioje lentelėje.

OceanLotus: kenkėjiškų programų naujinimas, skirtas MacOS

Be šio konfigūracijos pakeitimo, pavyzdys nenaudoja bibliotekos tinklo filtravimui libcurl, bet išorinė biblioteka. Kad jį surastų, užpakalinės durys bando iššifruoti kiekvieną failą dabartiniame kataloge naudodami AES-256-CBC su raktu gFjMXBgyXWULmVVVzyxy, paminkštintas nuliais. Kiekvienas failas iššifruojamas ir išsaugomas kaip /tmp/store, ir bandoma įkelti ją kaip biblioteką naudojant funkciją dlopen. Kai iššifravimo bandymas baigiasi sėkmingu skambučiu dlopen, užpakalinės durys ištraukia eksportuotas funkcijas Boriry и ChadylonV, kurios, matyt, yra atsakingos už tinklo ryšį su serveriu. Neturime lašintuvo ar kitų failų iš pradinės pavyzdžio vietos, todėl negalime išanalizuoti šios bibliotekos. Be to, kadangi komponentas yra užšifruotas, YARA taisyklė, pagrįsta šiomis eilutėmis, neatitiks failo, esančio diske.

Kaip aprašyta aukščiau esančiame straipsnyje, jis sukuria kliento ID. Šis ID yra vienos iš šių komandų grąžinamos vertės MD5 maiša:

- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformSerialNumber/ { split($0, line, """); printf("%s", line[4]); }'
- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { split($0, line, """); printf("%s", line[4]); }'
- ifconfig en0 | awk '/ether /{print $2}' (gauti MAC adresą)
- nežinoma komanda ("x1ex72x0a“), kuris buvo naudojamas ankstesniuose pavyzdžiuose

Prieš maišant, prie grąžinamos vertės pridedamas „0“ arba „1“, kad būtų nurodytos pagrindinės teisės. Tai kliento ID saugomi /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, jei kodas paleistas kaip root arba ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML visais kitais atvejais. Failas paprastai paslėptas naudojant funkciją _chflags, jo laiko žyma pakeičiama naudojant komandą touch –t su atsitiktine verte.

Stygų dekodavimas

Kaip ir ankstesnėse parinktyse, eilutės yra užšifruotos naudojant AES-256-CBC (šešioliktainis raktas: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 paminkštintas nuliais, o IV užpildytas nuliais) per funkciją CCCcrypt. Raktas pasikeitė nuo ankstesnių versijų, bet kadangi grupė vis dar naudoja tą patį eilučių šifravimo algoritmą, iššifravimas gali būti automatizuotas. Be šio įrašo, išleidžiame IDA scenarijų, kuris naudoja „Hex-Rays“ API, kad iššifruotų dvejetainiame faile esančias eilutes. Šis scenarijus gali padėti ateityje analizuoti OceanLotus ir esamus pavyzdžius, kurių mums dar nepavyko gauti. Scenarijus yra pagrįstas universaliu argumentų, perduodamų funkcijai, gavimo metodu. Be to, jis ieško parametrų priskyrimų. Metodą galima pakartotinai naudoti norint gauti funkcijos argumentų sąrašą ir perduoti jį atgaliniam skambučiui.

Žinant funkcijos prototipą iššifruoti, scenarijus suranda visas kryžmines nuorodas į šią funkciją, visus argumentus, tada iššifruoja duomenis ir įdeda paprastą tekstą į komentarą kryžminės nuorodos adresu. Kad scenarijus veiktų tinkamai, jis turi būti nustatytas pagal pasirinktinę abėcėlę, kurią naudoja base64 dekodavimo funkcija, ir turi būti apibrėžtas visuotinis kintamasis, kuriame yra rakto ilgis (šiuo atveju DWORD, žr. 4 pav.).

OceanLotus: kenkėjiškų programų naujinimas, skirtas MacOS
4 pav. Visuotinio kintamojo key_len apibrėžimas

Funkcijų lange galite dešiniuoju pelės mygtuku spustelėti iššifravimo funkciją ir spustelėti „Išskleisti ir iššifruoti argumentus“. Scenarijus turėtų įdėti iššifruotas eilutes į komentarus, kaip parodyta 5 pav.

OceanLotus: kenkėjiškų programų naujinimas, skirtas MacOS
5 pav. Iššifruotas tekstas dedamas į komentarus

Tokiu būdu iššifruotos eilutės patogiai dedamos kartu IDA lange xrefs šiai funkcijai, kaip parodyta 6 pav.

OceanLotus: kenkėjiškų programų naujinimas, skirtas MacOS
6 pav. Xrefs to f_decrypt funkcijai

Galutinį scenarijų galite rasti adresu „Github“ saugykla.

Produkcija

Kaip jau minėta, OceanLotus nuolat tobulina ir atnaujina savo įrankių rinkinį. Šį kartą kibernetinė grupė patobulino kenkėjišką programą, kad ji veiktų su „Mac“ vartotojais. Kodas beveik nepasikeitė, tačiau kadangi daugelis „Mac“ vartotojų ignoruoja saugos produktus, kenkėjiškų programų apsauga nuo aptikimo yra antraeilė.

ESET produktai jau aptiko šį failą tyrimo metu. Kadangi tinklo biblioteka, naudojama C&C ryšiui, dabar yra užšifruota diske, tikslus užpuolikų naudojamas tinklo protokolas dar nėra žinomas.

Kompromiso rodikliai

Kompromiso indikatoriai ir MITER ATT&CK atributai taip pat yra prieinami GitHub.

Šaltinis: www.habr.com

Добавить комментарий