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
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.
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.
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
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.
Be šio konfigūracijos pakeitimo, pavyzdys nenaudoja bibliotekos tinklo filtravimui gFjMXBgyXWULmVVVzyxy
, paminkštintas nuliais. Kiekvienas failas iššifruojamas ir išsaugomas kaip /tmp/store
, ir bandoma įkelti ją kaip biblioteką naudojant funkciją 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ą 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ą
Ž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.).
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.
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.
6 pav. Xrefs to f_decrypt funkcijai
Galutinį scenarijų galite rasti adresu
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
Šaltinis: www.habr.com