Ing Maret 2019, conto anyar malware macOS saka grup cyber OceanLotus diunggah menyang VirusTotal, layanan scanning online sing populer. File eksekusi backdoor nduweni kemampuan sing padha karo versi malware macOS sadurunge sing kita sinau, nanging strukture wis diganti lan dadi luwih angel dideteksi. Sayange, kita ora bisa nemokake dropper sing ana gandhengane karo sampel iki, mula kita durung ngerti vektor infeksi kasebut.
We bubar diterbitake
Анализ
Telung bagean sabanjure nggambarake analisis sampel kanthi hash SHA-1 E615632C9998E4D3E5ACD8851864ED09B02C77D2
. File kasebut diarani senter, produk antivirus ESET ndeteksi minangka OSX/OceanLotus.D.
Anti-debugging lan perlindungan kothak wedhi
Kaya kabeh binari macOS OceanLotus, conto kasebut dikemas nganggo UPX, nanging umume alat identifikasi paket ora ngerteni kaya ngono. Iki mbokmenawa amarga padha biasane ngemot teken gumantung ing ngarsane senar "UPX", Kajaba iku, teken Mach-O kurang umum lan ora dianyari minangka asring. Fitur iki ndadekake deteksi statis angel. Sing nggumunake, sawise mbongkar, titik mlebu ana ing wiwitan bagean __cfstring
ing segmen .TEXT
. Bagean iki nduweni atribut gendera kaya sing ditampilake ing gambar ing ngisor iki.
Gambar 1. atribut bagean MACH-O __cfstring
Minangka ditampilake ing Figure 2, lokasi kode ing bagean __cfstring
ngidini sampeyan ngapusi sawetara alat disassembly kanthi nampilake kode minangka senar.
Gambar 2. Kode backdoor dideteksi dening IDA minangka data
Sawise dieksekusi, binar nggawe thread minangka anti-debugger sing tujuane mung kanggo mriksa anane debugger. Kanggo aliran iki:
- Nyoba kanggo unhook debugger sembarang, nelpon ptrace
с PT_DENY_ATTACH
minangka parameter request
- Priksa manawa sawetara port eksklusif mbukak kanthi nelpon fungsi task_get_exception_ports
- Priksa manawa debugger disambungake, kaya sing ditampilake ing gambar ing ngisor iki, kanthi mriksa anane gendera P_TRACED
ing proses saiki
Gambar 3. Priksa sambungan debugger nggunakake fungsi sysctl
Yen watchdog ndeteksi ngarsane debugger, fungsi kasebut diarani exit
. Kajaba iku, sampel banjur mriksa lingkungan kanthi nglakokake rong perintah:
ioreg -l | grep -e "Manufacturer" и sysctl hw.model
Sampel banjur mriksa nilai bali marang dhaptar string sing dikode saka sistem virtualisasi sing dikenal: acle, vmware, virtualbox utawa sajajar. Pungkasan, printah sabanjure mriksa yen mesin kasebut minangka salah sawijining "MBP", "MBA", "MB", "MM", "IM", "MP" lan "XS". Iki minangka kode model sistem, contone, "MBP" tegese MacBook Pro, "MBA" tegese MacBook Air, lsp.
system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}
Tambahan utama
Nalika printah backdoor durung diganti wiwit riset Trend Micro, kita weruh sawetara modifikasi liyane. Server C&C sing digunakake ing sampel iki cukup anyar lan digawe ing 22.10.2018/XNUMX/XNUMX.
- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com
URL sumber wis diganti dadi /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35
.
Paket pisanan sing dikirim menyang server C & C ngemot informasi luwih lengkap babagan mesin inang, kalebu kabeh data sing diklumpukake dening printah ing tabel ing ngisor iki.
Saliyane owah-owahan konfigurasi iki, sampel ora nggunakake perpustakaan kanggo nyaring jaringan gFjMXBgyXWULmVVVzyxy
, berlapis nol. Saben file decrypted lan disimpen minangka /tmp/store
, lan nyoba kanggo mbukak minangka perpustakaan digawe nggunakake fungsi dlopen
, lawang mburi ngekstrak fungsi sing diekspor Boriry
и ChadylonV
, sing ketoke tanggung jawab kanggo komunikasi jaringan karo server. Kita ora duwe dropper utawa file liyane saka lokasi asli sampel, supaya kita ora bisa parse perpustakaan iki. Kajaba iku, amarga komponen kasebut dienkripsi, aturan YARA adhedhasar senar kasebut ora cocog karo file sing ditemokake ing disk.
Kaya sing diterangake ing artikel ing ndhuwur, nggawe ID klien. ID iki minangka hash MD5 saka nilai bali saka salah siji saka printah ing ngisor iki:
- 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}'
(entuk alamat MAC)
- tim sing ora dingerteni ("x1ex72x0a
"), sing digunakake ing conto sadurunge
Sadurunge hashing, "0" utawa "1" ditambahake menyang nilai bali kanggo nunjukaké hak istimewa ROOT. Iki ID klien disimpen ing /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex
, yen kode mbukak minangka ROOT utawa ing ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML ing kabeh kasus liyane. File kasebut biasane didhelikake nggunakake fungsi kasebut touch –t
kanthi nilai acak.
Decoding strings
Kaya pilihan sadurunge, senar kasebut dienkripsi nggunakake AES-256-CBC (kunci heksadesimal: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92
empuk karo nul, lan IV kapenuhan nul) liwat fungsi
Ngerti prototipe fungsi decrypt, skrip nemokake kabeh referensi silang kanggo fungsi iki, kabeh argumen, banjur dekripsi data lan nyelehake teks kosong ing komentar ing alamat referensi silang. Kanggo skrip bisa digunakake kanthi bener, kudu disetel menyang aksara khusus sing digunakake dening fungsi dekoding base64, lan variabel global kudu ditetepake ngemot dawa tombol (ing kasus iki DWORD, ndeleng Figure 4).
Gambar 4. Definition saka key_len variabel global
Ing jendhela Fungsi, sampeyan bisa ngeklik tengen fungsi dekripsi banjur klik "Ekstrak lan dekripsi argumen." Skrip kudu nyelehake garis dekripsi ing komentar, kaya sing ditampilake ing Gambar 5.
Gambar 5. Teks dekripsi diselehake ing komentar
Kanthi cara iki, senar sing didekripsi kanthi gampang diselehake ing jendela IDA xrefs kanggo fungsi iki minangka ditampilake ing Gambar 6.
Gambar 6. Xrefs kanggo fungsi f_decrypt
Skrip pungkasan bisa ditemokake ing
kesimpulan
Kaya sing wis kasebut, OceanLotus terus nambah lan nganyari toolkit. Wektu iki, grup cyber wis nambah malware kanggo nggarap pangguna Mac. Kode kasebut ora owah akeh, nanging amarga akeh pangguna Mac ora nglirwakake produk keamanan, nglindhungi malware saka deteksi penting banget.
Produk ESET wis ndeteksi file iki nalika riset. Amarga perpustakaan jaringan sing digunakake kanggo komunikasi C&C saiki dienkripsi ing disk, protokol jaringan sing tepat sing digunakake para panyerang durung dingerteni.
Indikator kompromi
Indikator kompromi uga atribut MITRE ATT&CK uga kasedhiya ing
Source: www.habr.com