OceanLotus: Ažuriranje za zlonamjerni softver za macOS

U martu 2019. godine, novi uzorak zlonamjernog softvera postavljen je na VirusTotal, popularnu online uslugu skeniranja, macOS Sajber grupa OceanLotus. Izvršna datoteka sa backdoor-om ima iste mogućnosti kao i prethodna verzija zlonamjernog softvera koju smo proučavali. macOS, ali se njegova struktura promijenila i postalo ga 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 osigurati perzistentnost, ubrzati izvršavanje koda i minimizirati tragove prisustva u sistemima WindowsTakođer je poznato da ova sajber grupa ima i komponentu za macOSOvaj post detaljno opisuje promjene u najnovijoj verziji zlonamjernog softvera za macOS u poređenju sa prethodnom verzijom (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 za zlonamjerni softver 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 svi macOS- Binarne datoteke OceanLotusa, uzorak je spakovan s UPX-om, ali većina alata za identifikaciju pakera ga ne prepoznaje kao takvog. To je vjerovatno zato što uglavnom sadrže potpis koji zavisi od prisustva niza "UPX". Nadalje, Mach-O potpisi su rjeđi i rjeđe se ažuriraju. Ova karakteristika otežava statičku detekciju. Zanimljivo je da se nakon raspakiranja ulazna tačka nalazi na početku sekcije. __cfstring u segmentu .TEXT. Ovaj odjeljak ima atribute zastavice kao što je prikazano na slici ispod.

OceanLotus: Ažuriranje za zlonamjerni softver 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 za zlonamjerni softver 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 za zlonamjerni softver 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 za zlonamjerni softver 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 za zlonamjerni softver 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 za zlonamjerni softver 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 za zlonamjerni softver 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

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster