U martu 2019., novi uzorak macOS zlonamjernog softvera iz sajber grupe OceanLotus postavljen je na VirusTotal, popularnu uslugu skeniranja na mreži. Backdoor izvršna datoteka ima iste mogućnosti kao i prethodna verzija macOS malvera koji smo proučavali, ali se njegova struktura promijenila i postalo je teže otkriti. Nažalost, nismo uspjeli pronaći kapaljku povezanu s ovim uzorkom, tako da još ne znamo vektor infekcije.
Nedavno smo objavili
Анализ
Sljedeća tri dijela opisuju analizu uzorka sa SHA-1 hešom E615632C9998E4D3E5ACD8851864ED09B02C77D2
. Fajl je pozvan flashlightd, ESET antivirusni proizvodi ga otkrivaju kao OSX/OceanLotus.D.
Anti-debugging i sandbox zaštita
Kao i sve binarne datoteke macOS OceanLotus, uzorak je upakovan sa UPX-om, ali ga većina alata za identifikaciju paketera ne prepoznaje kao takvog. To je vjerovatno zato što uglavnom sadrže potpis koji ovisi o prisutnosti stringa “UPX”, osim toga, Mach-O potpisi su manje uobičajeni i ne ažuriraju se tako često. Ova karakteristika otežava detekciju statike. Zanimljivo, nakon raspakivanja, ulazna tačka je na početku sekcije __cfstring
u segmentu .TEXT
. Ovaj odjeljak ima atribute zastavice kao što je prikazano na slici ispod.
Slika 1. Atributi sekcije MACH-O __cfstring
Kao što je prikazano na slici 2, lokacije koda u odjeljku __cfstring
omogućava vam da prevarite neke alate za rastavljanje tako što ćete prikazati kod kao nizove.
Slika 2. Backdoor kod kojeg je IDA otkrila kao podatke
Jednom izvršena, binarni program kreira nit kao anti-debugger čija je jedina svrha da kontinuirano provjerava prisutnost debuggera. Za ovaj tok:
— Pokušava otkačiti bilo koji debuger, poziva ptrace
с PT_DENY_ATTACH
kao parametar zahtjeva
- Provjerava da li su neki ekskluzivni portovi otvoreni pozivanjem funkcije task_get_exception_ports
- Provjerava da li je debuger povezan, kao što je prikazano na slici ispod, provjeravanjem prisutnosti zastavice P_TRACED
u trenutnom procesu
Slika 3. Provjera veze debagera pomoću sysctl funkcije
Ako watchdog otkrije prisustvo debuggera, funkcija se poziva exit
. Dodatno, uzorak zatim provjerava okruženje pokretanjem dvije naredbe:
ioreg -l | grep -e "Manufacturer" и sysctl hw.model
Uzorak zatim provjerava povratnu vrijednost u odnosu na tvrdo kodiranu listu nizova iz poznatih virtualizacijskih sistema: acle, vmware, virtualbox ili paralele. Konačno, sljedeća komanda provjerava da li je mašina jedna od sljedećih “MBP”, “MBA”, “MB”, “MM”, “IM”, “MP” i “XS”. Ovo su kodovi modela sistema, na primjer, “MBP” znači MacBook Pro, “MBA” znači MacBook Air, itd.
system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}
Osnovni dodaci
Iako se backdoor komande nisu promijenile od istraživanja Trend Micro-a, primijetili smo još nekoliko modifikacija. C&C serveri koji se koriste u ovom uzorku su prilično novi i kreirani su 22.10.2018.
- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com
URL resursa je promijenjen u /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35
.
Prvi paket poslan C&C serveru sadrži više informacija o glavnoj mašini, uključujući sve podatke prikupljene naredbama u tabeli ispod.
Uz ovu promjenu konfiguracije, uzorak ne koristi biblioteku za mrežno filtriranje gFjMXBgyXWULmVVVzyxy
, ispunjeno nulama. Svaki fajl se dešifruje i pohranjuje kao /tmp/store
, i pokušaj da se učita kao biblioteka je napravljen pomoću funkcije dlopen
, backdoor izdvaja izvezene funkcije Boriry
и ChadylonV
, koji su očigledno odgovorni za mrežnu komunikaciju sa serverom. Nemamo dropper ili druge datoteke sa originalne lokacije uzorka, tako da ne možemo raščlaniti ovu biblioteku. Štaviše, pošto je komponenta šifrovana, YARA pravilo zasnovano na ovim stringovima neće odgovarati fajlu koji se nalazi na disku.
Kao što je opisano u gornjem članku, stvara clientID. Ovaj ID je MD5 hash povratne vrijednosti jedne od sljedećih naredbi:
- 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}'
(preuzmi MAC adresu)
- nepoznati tim ("x1ex72x0a
"), koji je korišten u prethodnim uzorcima
Prije heširanja, vraćanoj vrijednosti se dodaje "0" ili "1" kako bi se naznačile root privilegije. Ovo clientID pohranjen u /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex
, ako se kod izvodi kao root ili u ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML u svim ostalim slučajevima. Datoteka je obično skrivena pomoću funkcije touch –t
sa slučajnom vrijednošću.
Dekodiranje nizova
Kao i kod prethodnih opcija, nizovi su šifrirani pomoću AES-256-CBC (heksadecimalni ključ: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92
dopunjeno nulama, a IV ispunjeno nulama) kroz funkciju
Poznavanje prototipa funkcije dešifriranje, skripta pronalazi sve unakrsne reference na ovu funkciju, sve argumente, zatim dešifruje podatke i postavlja običan tekst unutar komentara na adresi unakrsnog referenciranja. Da bi skripta ispravno radila, mora biti postavljena na prilagođeni alfabet koji koristi base64 funkcija dekodiranja, a globalna varijabla mora biti definirana koja sadrži dužinu ključa (u ovom slučaju DWORD, pogledajte sliku 4).
Slika 4. Definicija globalne varijable key_len
U prozoru Funkcija možete desnom tipkom miša kliknuti funkciju dešifriranja i kliknuti na "Izdvoji i dešifriraj argumente". Skripta treba da dešifrovane redove stavi u komentare, kao što je prikazano na slici 5.
Slika 5. Dešifrovani tekst se stavlja u komentare
Na ovaj način dešifrovani nizovi se prikladno postavljaju zajedno u IDA prozor xrefs za ovu funkciju kao što je prikazano na slici 6.
Slika 6. Xrefs na funkciju f_decrypt
Konačan scenario možete pronaći na
zaključak
Kao što je već spomenuto, OceanLotus stalno poboljšava i ažurira svoj komplet alata. Ovaj put, sajber grupa je poboljšala malver za rad sa Mac korisnicima. Kod se nije mnogo promijenio, ali pošto mnogi korisnici Maca zanemaruju sigurnosne proizvode, zaštita zlonamjernog softvera od otkrivanja je od sekundarnog značaja.
ESET proizvodi su već otkrivali ovu datoteku u vrijeme istraživanja. Budući da je mrežna biblioteka koja se koristi za C&C komunikaciju sada šifrirana na disku, tačan mrežni protokol koji koriste napadači još nije poznat.
Indikatori kompromisa
Indikatori kompromisa kao i MITER ATT&CK atributi su također dostupni na
izvor: www.habr.com