OceanLotus: posodobitev zlonamerne programske opreme za macOS

Marca 2019 je bil nov vzorec zlonamerne programske opreme macOS iz kibernetske skupine OceanLotus naložen v VirusTotal, priljubljeno spletno storitev skeniranja. Backdoor izvršljiva datoteka ima enake zmogljivosti kot prejšnja različica zlonamerne programske opreme macOS, ki smo jo preučevali, vendar se je njena struktura spremenila in postalo jo je težje zaznati. Na žalost nam ni uspelo najti kapalke, povezane s tem vzorcem, tako da vektorja okužbe še ne poznamo.

Pred kratkim smo objavili objava o OceanLotusu in kako operaterji poskušajo zagotoviti obstojnost, pospešiti izvajanje kode in zmanjšati odtis v sistemih Windows. Znano je tudi, da ima ta kibernetska skupina tudi komponento za macOS. Ta objava podrobno opisuje spremembe v najnovejši različici zlonamerne programske opreme za macOS v primerjavi s prejšnjo različico (opisal Trend Micro), opisuje pa tudi, kako lahko avtomatizirate dešifriranje nizov med analizo z uporabo API-ja IDA Hex-Rays.

OceanLotus: posodobitev zlonamerne programske opreme za macOS

Analiza

Naslednji trije deli opisujejo analizo vzorca z zgoščevanjem SHA-1 E615632C9998E4D3E5ACD8851864ED09B02C77D2. Datoteka se imenuje svetilka, ga protivirusni izdelki ESET zaznajo kot OSX/OceanLotus.D.

Zaščita proti odpravljanju napak in peskovniku

Kot vse binarne datoteke macOS OceanLotus je vzorec zapakiran z UPX, vendar ga večina orodij za identifikacijo paketov ne prepozna kot takega. Verjetno zato, ker večinoma vsebujejo podpis, odvisen od prisotnosti niza "UPX", in tudi zato, ker so podpisi Mach-O manj pogosti in se ne posodabljajo tako pogosto. Ta funkcija oteži statično zaznavanje. Zanimivo, po razpakiranju je vstopna točka na začetku odseka __cfstring v segmentu .TEXT. Ta razdelek ima atribute zastavic, kot je prikazano na spodnji sliki.

OceanLotus: posodobitev zlonamerne programske opreme za macOS
Slika 1. Atributi razdelka MACH-O __cfstring

Kot je prikazano na sliki 2, so kodne lokacije v razdelku __cfstring vam omogoča, da pretentate nekatera orodja za razstavljanje s prikazom kode kot nizov.

OceanLotus: posodobitev zlonamerne programske opreme za macOS
Slika 2. Koda stranskih vrat, ki jo IDA zazna kot podatke

Ko se izvede, binarna datoteka ustvari nit kot anti-razhroščevalnik, katerega edini namen je nenehno preverjanje prisotnosti razhroščevalnika. Za ta tok:

— Poskuša odklopiti kateri koli razhroščevalnik, kliče ptrace с PT_DENY_ATTACH kot parameter zahteve
- S klicem funkcije preveri, ali so nekatera ekskluzivna vrata odprta task_get_exception_ports
- Preveri, ali je razhroščevalnik povezan, kot je prikazano na spodnji sliki, s preverjanjem prisotnosti zastavice P_TRACED v trenutnem procesu

OceanLotus: posodobitev zlonamerne programske opreme za macOS
Slika 3. Preverjanje povezave razhroščevalnika s funkcijo sysctl

Če nadzorni pes zazna prisotnost razhroščevalnika, se funkcija pokliče exit. Poleg tega vzorec nato preveri okolje z izvajanjem dveh ukazov:

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

Vzorec nato preveri vrnjeno vrednost glede na trdo kodiran seznam nizov iz znanih virtualizacijskih sistemov: acle, VMware, VirtualBox ali vzporednice. Nazadnje naslednji ukaz preveri, ali je stroj eden od naslednjih »MBP«, »MBA«, »MB«, »MM«, »IM«, »MP« in »XS«. To so kode sistemskih modelov, na primer »MBP« pomeni MacBook Pro, »MBA« pomeni MacBook Air itd.

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

Osnovni dodatki

Čeprav se ukazi za zadnja vrata niso spremenili od raziskav Trend Micro, smo opazili nekaj drugih sprememb. Strežniki C&C, uporabljeni v tem vzorcu, so dokaj novi in ​​ustvarjeni 22.10.2018. XNUMX. XNUMX.

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

URL vira se je spremenil v /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
Prvi paket, poslan strežniku C&C, vsebuje več informacij o gostiteljskem računalniku, vključno z vsemi podatki, zbranimi z ukazi v spodnji tabeli.

OceanLotus: posodobitev zlonamerne programske opreme za macOS

Poleg te spremembe konfiguracije vzorec ne uporablja knjižnice za filtriranje omrežja libcurl, ampak zunanja knjižnica. Da bi ga našli, poskusi stranska vrata dešifrirati vsako datoteko v trenutnem imeniku z uporabo AES-256-CBC s ključem gFjMXBgyXWULmVVVzyxy, obložen z ničlami. Vsaka datoteka je dešifrirana in shranjena kot /tmp/store, in poskus nalaganja kot knjižnice se izvede s funkcijo dlopen. Ko poskus dešifriranja povzroči uspešen klic dlopen, backdoor ekstrahira izvožene funkcije Boriry и ChadylonV, ki so očitno odgovorni za omrežno komunikacijo s strežnikom. Nimamo kapalke ali drugih datotek z izvirne lokacije vzorca, zato te knjižnice ne moremo razčleniti. Ker je komponenta šifrirana, se pravilo YARA, ki temelji na teh nizih, ne bo ujemalo z datoteko, najdeno na disku.

Kot je opisano v zgornjem članku, ustvarja clientID. Ta ID je zgoščena vrednost MD5 vrnjene vrednosti enega od naslednjih ukazov:

- 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}' (pridobite naslov MAC)
- neznana ekipa ("x1ex72x0a«), ki se uporablja v prejšnjih vzorcih

Pred zgoščevanjem se vrnjeni vrednosti doda "0" ali "1", ki označuje korenske pravice. to clientID shranjeno v /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, če se koda izvaja kot root ali v ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML v vseh drugih primerih. Datoteka je običajno skrita s funkcijo _chflags, se njegov časovni žig spremeni z ukazom touch –t z naključno vrednostjo.

Dekodiranje nizov

Kot pri prejšnjih možnostih so nizi šifrirani z uporabo AES-256-CBC (šestnajstiški ključ: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 obložen z ničlami ​​in IV napolnjen z ničlami) skozi funkcijo CCCrypt. Ključ se je spremenil glede na prejšnje različice, a ker skupina še vedno uporablja isti algoritem šifriranja nizov, je dešifriranje mogoče avtomatizirati. Poleg te objave izdajamo skript IDA, ki uporablja API Hex-Rays za dešifriranje nizov v binarni datoteki. Ta skript lahko pomaga pri prihodnji analizi OceanLotusa in analizi obstoječih vzorcev, ki nam jih še ni uspelo pridobiti. Skript temelji na univerzalni metodi za sprejemanje argumentov, posredovanih funkciji. Poleg tega poišče dodelitve parametrov. Metodo je mogoče znova uporabiti za pridobitev seznama funkcijskih argumentov in jo nato posredovati povratnemu klicu.

Poznavanje prototipa funkcije dešifrirati, skript najde vse navzkrižne sklice na to funkcijo, vse argumente, nato dešifrira podatke in postavi golo besedilo v komentar na naslov navzkrižnega sklica. Da skript deluje pravilno, mora biti nastavljen na abecedo po meri, ki jo uporablja funkcija dekodiranja base64, in mora biti definirana globalna spremenljivka, ki vsebuje dolžino ključa (v tem primeru DWORD, glejte sliko 4).

OceanLotus: posodobitev zlonamerne programske opreme za macOS
Slika 4. Definicija globalne spremenljivke key_len

V oknu Funkcija lahko z desno miškino tipko kliknete funkcijo dešifriranja in kliknete »Izvleči in dešifriraj argumente«. Skript mora dešifrirane vrstice postaviti v komentarje, kot je prikazano na sliki 5.

OceanLotus: posodobitev zlonamerne programske opreme za macOS
Slika 5. Dešifrirano besedilo je postavljeno med komentarje

Na ta način so dešifrirani nizi priročno nameščeni skupaj v oknu IDA xrefs za to funkcijo, kot je prikazano na sliki 6.

OceanLotus: posodobitev zlonamerne programske opreme za macOS
Slika 6. Funkcija Xrefs za f_decrypt

Končni scenarij lahko najdete na Skladišče Github.

Izhod

Kot že omenjeno, OceanLotus nenehno izboljšuje in posodablja svoj komplet orodij. Tokrat je kibernetska skupina izboljšala zlonamerno programsko opremo za delo z uporabniki Mac. Koda se ni veliko spremenila, a ker mnogi uporabniki Maca ignorirajo varnostne izdelke, je zaščita zlonamerne programske opreme pred odkrivanjem drugotnega pomena.

Izdelki ESET so že zaznavali to datoteko v času raziskave. Ker je omrežna knjižnica, ki se uporablja za komunikacijo C&C, zdaj šifrirana na disku, natančen omrežni protokol, ki ga uporabljajo napadalci, še ni znan.

Kazalniki kompromisa

Na voljo so tudi indikatorji kompromisa in atributi MITER ATT&CK GitHub.

Vir: www.habr.com

Dodaj komentar