OceanLotus: Ažuriranje zlonamjernog softvera za macOS

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 post o OceanLotusu i kako operateri pokušavaju da obezbede postojanost, ubrzaju izvršavanje koda i minimiziraju otisak na Windows sistemima. Također je poznato da ova cyber grupa ima i komponentu za macOS. Ovaj post opisuje promjene u najnovijoj verziji zlonamjernog softvera za macOS u odnosu na prethodnu verziju (opisao Trend Micro), a također opisuje kako možete automatizirati dešifriranje nizova tokom analize koristeći IDA Hex-Rays API.

OceanLotus: Ažuriranje zlonamjernog softvera za macOS

Анализ

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.

OceanLotus: Ažuriranje zlonamjernog softvera za macOS
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.

OceanLotus: Ažuriranje zlonamjernog softvera za macOS
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

OceanLotus: Ažuriranje zlonamjernog softvera za macOS
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.

OceanLotus: Ažuriranje zlonamjernog softvera za macOS

Uz ovu promjenu konfiguracije, uzorak ne koristi biblioteku za mrežno filtriranje libcurl, ali eksterna biblioteka. Da bi ga pronašao, backdoor pokušava dešifrirati svaki fajl u trenutnom direktoriju koristeći AES-256-CBC s ključem 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. Kada pokušaj dešifriranja rezultira uspješnim pozivom 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 _chflags, njegova vremenska oznaka se mijenja pomoću naredbe 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 CCCrypt. Ključ se promijenio u odnosu na prethodne verzije, ali budući da grupa i dalje koristi isti algoritam za šifriranje nizova, dešifriranje se može automatizirati. Kao dodatak ovom postu, objavljujemo IDA skriptu koja koristi Hex-Rays API za dešifriranje nizova prisutnih u binarnoj datoteci. Ova skripta može pomoći u budućoj analizi OceanLotusa i analizi postojećih uzoraka koje još nismo uspjeli dobiti. Skripta je zasnovana na univerzalnoj metodi za primanje argumenata prosleđenih funkciji. Dodatno, traži dodjela parametara. Metoda se može ponovo koristiti za dobivanje liste argumenata funkcije i zatim je proslijediti povratnom pozivu.

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).

OceanLotus: Ažuriranje zlonamjernog softvera za macOS
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.

OceanLotus: Ažuriranje zlonamjernog softvera za macOS
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.

OceanLotus: Ažuriranje zlonamjernog softvera za macOS
Slika 6. Xrefs na funkciju f_decrypt

Konačan scenario možete pronaći na Gitub spremište.

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 GitHub.

izvor: www.habr.com

Dodajte komentar