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
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.
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.
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
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.
Poleg te spremembe konfiguracije vzorec ne uporablja knjižnice za filtriranje omrežja 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
, 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 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
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).
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.
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.
Slika 6. Funkcija Xrefs za f_decrypt
Končni scenarij lahko najdete na
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
Vir: www.habr.com