OceanLotus: Nganyari malware kanggo macOS

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 kirim babagan OceanLotus lan carane operator nyoba kanggo nyedhiyani terus-terusan, nyepetake eksekusi kode, lan nyilikake jejak ing sistem Windows. Uga dingerteni manawa klompok cyber iki uga duwe komponen kanggo macOS. Kiriman iki rinci babagan owah-owahan ing versi malware paling anyar kanggo macOS dibandhingake karo versi sadurunge (diterangake dening Trend Micro), lan uga nerangake carane sampeyan bisa ngotomatisasi dekripsi strings sajrone analisis nggunakake IDA Hex-Rays API.

OceanLotus: Nganyari malware kanggo macOS

Анализ

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.

OceanLotus: Nganyari malware kanggo macOS
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.

OceanLotus: Nganyari malware kanggo macOS
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

OceanLotus: Nganyari malware kanggo macOS
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.

OceanLotus: Nganyari malware kanggo macOS

Saliyane owah-owahan konfigurasi iki, sampel ora nggunakake perpustakaan kanggo nyaring jaringan libcurl, nanging perpustakaan eksternal. Kanggo nemokake, backdoor nyoba dekripsi saben file ing direktori saiki nggunakake AES-256-CBC kanthi tombol gFjMXBgyXWULmVVVzyxy, berlapis nol. Saben file decrypted lan disimpen minangka /tmp/store, lan nyoba kanggo mbukak minangka perpustakaan digawe nggunakake fungsi dlopen. Nalika nyoba decryption asil ing telpon sukses 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 _chflags, stempel wektu diganti nggunakake printah 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 CCCrypt. Tombol wis diganti saka versi sadurungé, nanging amarga grup isih nggunakake algoritma enkripsi senar padha, dekripsi bisa otomatis. Saliyane kiriman iki, kita ngeculake skrip IDA sing nggunakake Hex-Rays API kanggo dekripsi senar sing ana ing file binar. Skrip iki bisa mbantu analisis OceanLotus ing mangsa ngarep lan analisis conto sing ana sing durung bisa diduweni. Skrip adhedhasar cara universal kanggo nampa argumen sing diterusake menyang fungsi. Kajaba iku, iku katon munggah assignments parameter. Cara kasebut bisa digunakake maneh kanggo entuk dhaptar argumen fungsi banjur diterusake menyang callback.

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

OceanLotus: Nganyari malware kanggo macOS
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.

OceanLotus: Nganyari malware kanggo macOS
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.

OceanLotus: Nganyari malware kanggo macOS
Gambar 6. Xrefs kanggo fungsi f_decrypt

Skrip pungkasan bisa ditemokake ing Github gudang.

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

Source: www.habr.com

Add a comment