OceanLotus: kemas kini perisian hasad untuk macOS

Pada Mac 2019, sampel baharu perisian hasad macOS daripada kumpulan siber OceanLotus telah dimuat naik ke VirusTotal, perkhidmatan pengimbasan dalam talian yang popular. Fail boleh laku pintu belakang mempunyai keupayaan yang sama seperti versi perisian hasad macOS sebelumnya yang kami pelajari, tetapi strukturnya telah berubah dan ia menjadi lebih sukar untuk dikesan. Malangnya, kami tidak dapat mencari penitis yang dikaitkan dengan sampel ini, jadi kami belum mengetahui vektor jangkitan.

Kami baru-baru ini menerbitkan siaran tentang OceanLotus dan cara pengendali cuba memberikan ketekunan, mempercepatkan pelaksanaan kod dan meminimumkan jejak pada sistem Windows. Juga diketahui bahawa kumpulan siber ini juga mempunyai komponen untuk macOS. Siaran ini memperincikan perubahan dalam versi terbaru perisian hasad untuk macOS berbanding dengan versi sebelumnya (diterangkan oleh Trend Micro), dan juga menerangkan cara anda boleh mengautomasikan penyahsulitan rentetan semasa analisis menggunakan API Hex-Rays IDA.

OceanLotus: kemas kini perisian hasad untuk macOS

Analisis

Tiga bahagian seterusnya menerangkan analisis sampel dengan cincang SHA-1 E615632C9998E4D3E5ACD8851864ED09B02C77D2. Fail dipanggil lampu suluh, produk antivirus ESET mengesannya sebagai OSX/OceanLotus.D.

Perlindungan anti-debug dan kotak pasir

Seperti semua binari macOS OceanLotus, sampel dibungkus dengan UPX, tetapi kebanyakan alat pengenalan pembungkus tidak mengenalinya seperti itu. Ini mungkin kerana ia kebanyakannya mengandungi tandatangan yang bergantung pada kehadiran rentetan "UPX", di samping itu, tandatangan Mach-O adalah kurang biasa dan tidak dikemas kini dengan kerap. Ciri ini menyukarkan pengesanan statik. Menariknya, selepas membongkar, pintu masuk adalah pada permulaan bahagian __cfstring dalam segmen .TEXT. Bahagian ini mempunyai atribut bendera seperti yang ditunjukkan dalam imej di bawah.

OceanLotus: kemas kini perisian hasad untuk macOS
Rajah 1. Atribut bahagian MACH-O __cfstring

Seperti yang ditunjukkan dalam Rajah 2, lokasi kod dalam bahagian __cfstring membolehkan anda menipu beberapa alat pembongkaran dengan memaparkan kod sebagai rentetan.

OceanLotus: kemas kini perisian hasad untuk macOS
Rajah 2. Kod pintu belakang dikesan oleh IDA sebagai data

Setelah dilaksanakan, binari mencipta benang sebagai anti-debugger yang tujuan utamanya adalah untuk terus menyemak kehadiran debugger. Untuk aliran ini:

— Cuba mencabut sebarang penyahpepijat, memanggil ptrace с PT_DENY_ATTACH sebagai parameter permintaan
- Semak sama ada beberapa port eksklusif dibuka dengan memanggil fungsi task_get_exception_ports
- Semak sama ada penyahpepijat disambungkan, seperti yang ditunjukkan dalam rajah di bawah, dengan menyemak kehadiran bendera P_TRACED dalam proses semasa

OceanLotus: kemas kini perisian hasad untuk macOS
Rajah 3. Menyemak sambungan penyahpepijat menggunakan fungsi sysctl

Jika anjing pemerhati mengesan kehadiran penyahpepijat, fungsi itu dipanggil exit. Selain itu, sampel kemudian menyemak persekitaran dengan menjalankan dua arahan:

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

Sampel kemudian menyemak nilai pulangan terhadap senarai rentetan berkod keras daripada sistem virtualisasi yang diketahui: acle, VMware, VirtualBox atau persamaan. Akhir sekali, arahan seterusnya menyemak sama ada mesin adalah salah satu daripada "MBP", "MBA", "MB", "MM", "IM", "MP" dan "XS". Ini ialah kod model sistem, contohnya, “MBP” bermaksud MacBook Pro, “MBA” bermaksud MacBook Air, dsb.

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

Tambahan utama

Walaupun arahan pintu belakang tidak berubah sejak penyelidikan Trend Micro, kami mendapati beberapa pengubahsuaian lain. Pelayan C&C yang digunakan dalam sampel ini agak baharu dan telah dibuat pada 22.10.2018/XNUMX/XNUMX.

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

URL sumber telah bertukar kepada /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
Paket pertama yang dihantar ke pelayan C&C mengandungi lebih banyak maklumat tentang mesin hos, termasuk semua data yang dikumpul oleh arahan dalam jadual di bawah.

OceanLotus: kemas kini perisian hasad untuk macOS

Selain perubahan konfigurasi ini, sampel tidak menggunakan perpustakaan untuk penapisan rangkaian libcurl, tetapi perpustakaan luaran. Untuk mencarinya, pintu belakang cuba menyahsulit setiap fail dalam direktori semasa menggunakan AES-256-CBC dengan kunci gFjMXBgyXWULmVVVzyxy, berlapik dengan sifar. Setiap fail dinyahsulit dan disimpan sebagai /tmp/store, dan percubaan untuk memuatkannya sebagai perpustakaan dibuat menggunakan fungsi tersebut dlopen. Apabila percubaan penyahsulitan menghasilkan panggilan yang berjaya dlopen, pintu belakang mengekstrak fungsi yang dieksport Boriry и ChadylonV, yang nampaknya bertanggungjawab untuk komunikasi rangkaian dengan pelayan. Kami tidak mempunyai penitis atau fail lain dari lokasi asal sampel, jadi kami tidak dapat menghuraikan pustaka ini. Selain itu, memandangkan komponen itu disulitkan, peraturan YARA berdasarkan rentetan ini tidak akan sepadan dengan fail yang terdapat pada cakera.

Seperti yang diterangkan dalam artikel di atas, ia mencipta ID pelanggan. ID ini ialah cincangan MD5 bagi nilai pulangan salah satu daripada arahan berikut:

- 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}' (dapatkan alamat MAC)
- pasukan tidak dikenali ("x1ex72x0a"), yang digunakan dalam sampel sebelumnya

Sebelum pencincangan, "0" atau "1" ditambahkan pada nilai pulangan untuk menunjukkan keistimewaan akar. ini clientID disimpan dalam /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, jika kod dijalankan sebagai root atau dalam ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML dalam semua kes lain. Fail biasanya disembunyikan menggunakan fungsi _chflags, cap masanya ditukar menggunakan arahan touch –t dengan nilai rawak.

Menyahkod rentetan

Seperti pilihan sebelumnya, rentetan disulitkan menggunakan AES-256-CBC (kunci heksadesimal: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 berlapik dengan sifar, dan IV diisi dengan sifar) melalui fungsi CCCrypt. Kunci telah berubah daripada versi sebelumnya, tetapi memandangkan kumpulan masih menggunakan algoritma penyulitan rentetan yang sama, penyahsulitan boleh diautomasikan. Sebagai tambahan kepada siaran ini, kami mengeluarkan skrip IDA yang menggunakan API Hex-Rays untuk menyahsulit rentetan yang terdapat dalam fail binari. Skrip ini boleh membantu dengan analisis masa depan OceanLotus dan analisis sampel sedia ada yang belum dapat kami perolehi. Skrip adalah berdasarkan kaedah universal untuk menerima hujah yang dihantar ke fungsi. Selain itu, ia mencari tugasan parameter. Kaedah ini boleh digunakan semula untuk mendapatkan senarai argumen fungsi dan kemudian menyerahkannya kepada panggilan balik.

Mengetahui prototaip fungsi menyahsulit, skrip mencari semua rujukan silang kepada fungsi ini, semua hujah, kemudian menyahsulit data dan meletakkan teks biasa di dalam ulasan di alamat rujukan silang. Untuk skrip berfungsi dengan betul, ia mesti ditetapkan kepada abjad tersuai yang digunakan oleh fungsi penyahkodan base64 dan pembolehubah global mesti ditakrifkan yang mengandungi panjang kunci (dalam kes ini DWORD, lihat Rajah 4).

OceanLotus: kemas kini perisian hasad untuk macOS
Rajah 4. Takrif pembolehubah global key_len

Dalam tetingkap Fungsi, anda boleh klik kanan pada fungsi penyahsulitan dan klik "Ekstrak dan menyahsulit hujah." Skrip harus meletakkan baris yang dinyahsulit dalam ulasan, seperti yang ditunjukkan dalam Rajah 5.

OceanLotus: kemas kini perisian hasad untuk macOS
Rajah 5. Teks yang dinyahsulit diletakkan dalam ulasan

Dengan cara ini rentetan yang dinyahsulit diletakkan bersama-sama dengan mudah dalam tetingkap IDA xrefs untuk fungsi ini seperti yang ditunjukkan dalam Rajah 6.

OceanLotus: kemas kini perisian hasad untuk macOS
Rajah 6. Xrefs kepada fungsi f_decrypt

Skrip akhir boleh didapati di Repositori Github.

Output

Seperti yang telah disebutkan, OceanLotus sentiasa menambah baik dan mengemas kini kit alatnya. Kali ini, kumpulan siber telah menambah baik perisian hasad untuk berfungsi dengan pengguna Mac. Kod itu tidak banyak berubah, tetapi memandangkan ramai pengguna Mac mengabaikan produk keselamatan, melindungi perisian hasad daripada pengesanan adalah kepentingan kedua.

Produk ESET sudah pun mengesan fail ini pada masa penyelidikan. Oleh kerana pustaka rangkaian yang digunakan untuk komunikasi C&C kini disulitkan pada cakera, protokol rangkaian yang tepat yang digunakan oleh penyerang belum diketahui.

Petunjuk kompromi

Penunjuk kompromi serta atribut MITRE ATT&CK juga tersedia pada GitHub.

Sumber: www.habr.com

Tambah komen