Dalam siaran ini, kami akan memberitahu anda bagaimana kumpulan siber OceanLotus (APT32 dan APT-C-00) baru-baru ini menggunakan salah satu eksploitasi yang tersedia secara terbuka untuk
OceanLotus pakar dalam pengintipan siber, dengan sasaran keutamaan adalah negara di Asia Tenggara. Penyerang memalsukan dokumen yang menarik perhatian bakal mangsa untuk meyakinkan mereka untuk melaksanakan pintu belakang, dan juga sedang berusaha membangunkan alatan. Kaedah yang digunakan untuk mencipta honeypot berbeza-beza merentas serangan, daripada fail "sambungan berganda", arkib pengekstrakan sendiri, dokumen dengan makro, kepada eksploitasi yang diketahui.
Menggunakan eksploitasi dalam Microsoft Equation Editor
Pada pertengahan 2018, OceanLotus menjalankan kempen yang mengeksploitasi kerentanan CVE-2017-11882. Salah satu dokumen berniat jahat kumpulan siber telah dianalisis oleh pakar dari 360 Threat Intelligence Center (
Peringkat pertama
dokumen FW Report on demonstration of former CNRP in Republic of Korea.doc
(SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3
) adalah serupa dengan yang dinyatakan dalam kajian di atas. Ia menarik kerana ia ditujukan kepada pengguna yang berminat dengan politik Kemboja (CNRP - Cambodia National Rescue Party, dibubarkan pada akhir 2017). Walaupun sambungan .doc, dokumen itu dalam format RTF (lihat gambar di bawah), mengandungi kod sampah dan juga diherotkan.
Rajah 1. "Sampah" dalam RTF
Walaupun terdapat unsur bercelaru, Word berjaya membuka fail RTF ini. Seperti yang anda lihat dalam Rajah 2, terdapat struktur EQNOLEFILEHDR pada offset 0xC00, diikuti dengan pengepala MTEF, dan kemudian entri MTEF (Rajah 3) untuk fon.
Rajah 2. Nilai masukan FONT
Rajah 3.
Kemungkinan limpahan di lapangan nama, kerana saiznya tidak diperiksa sebelum menyalin. Nama yang terlalu panjang mencetuskan kelemahan. Seperti yang anda lihat daripada kandungan fail RTF (mengimbangi 0xC26 dalam Rajah 2), penimbal diisi dengan kod shell diikuti dengan arahan tiruan (0x90
) dan alamat pemulangan 0x402114
. Alamat ialah elemen dialog dalam EQNEDT32.exe
, menunjukkan arahan RET
. Ini menyebabkan EIP menunjuk ke permulaan medan namamengandungi shellcode.
Rajah 4. Permulaan kod shell eksploitasi
alamat 0x45BD3C
menyimpan pembolehubah yang dinyahrujuk sehingga mencapai penunjuk kepada struktur yang sedang dimuatkan MTEFData
. Selebihnya shellcode ada di sini.
Tujuan shellcode adalah untuk melaksanakan sekeping kedua shellcode yang dibenamkan dalam dokumen terbuka. Kod shell asal mula-mula cuba mencari deskriptor fail bagi dokumen terbuka dengan mengulangi semua deskriptor sistem (NtQuerySystemInformation
dengan hujah SystemExtendedHandleInformation
) dan menyemak sama ada ia sepadan PID deskriptor dan PID proses WinWord
dan sama ada dokumen itu dibuka dengan topeng akses - 0x12019F
.
Untuk mengesahkan bahawa pemegang yang betul telah ditemui (dan bukan pemegang kepada dokumen terbuka lain), kandungan fail dipaparkan menggunakan fungsi CreateFileMapping
, dan shellcode menyemak sama ada empat bait terakhir dokumen sepadan "yyyy
“(Kaedah Memburu Telur). Setelah padanan ditemui, dokumen itu disalin ke folder sementara (GetTempPath
) Bagaimana ole.dll
. Kemudian 12 bait terakhir dokumen dibaca.
Rajah 5. Penanda Akhir Dokumen
Nilai 32-bit antara penanda AABBCCDD
и yyyy
ialah offset bagi shellcode seterusnya. Ia dipanggil menggunakan fungsi CreateThread
. Mengeluarkan shellcode yang sama yang digunakan oleh kumpulan OceanLotus sebelum ini.
Peringkat kedua
Mengeluarkan Komponen
Nama fail dan direktori dipilih secara dinamik. Kod secara rawak memilih nama fail boleh laku atau DLL dalam C:Windowssystem32
. Ia kemudian membuat permintaan kepada sumbernya dan mendapatkan semula medan tersebut FileDescription
untuk digunakan sebagai nama folder. Jika ini tidak berfungsi, kod secara rawak memilih nama folder daripada direktori %ProgramFiles%
atau C:Windows
(dari GetWindowsDirectoryW). Ia mengelak daripada menggunakan nama yang mungkin bercanggah dengan fail sedia ada dan memastikan ia tidak mengandungi perkataan berikut: windows
, Microsoft
, desktop
, system
, system32
atau syswow64
. Jika direktori sudah wujud, "NLS_{6 aksara}" dilampirkan pada nama.
sumber 0x102
dianalisis dan fail dibuang ke dalam %ProgramFiles%
atau %AppData%
, ke folder yang dipilih secara rawak. Mengubah masa penciptaan untuk mempunyai nilai yang sama seperti kernel32.dll
.
Sebagai contoh, berikut ialah folder dan senarai fail yang dibuat dengan memilih boleh laku C:Windowssystem32TCPSVCS.exe
sebagai sumber data.
Rajah 6. Mengekstrak pelbagai komponen
Struktur sumber 0x102
dalam penitis agak kompleks. Secara ringkasnya, ia mengandungi:
— Nama fail
— Saiz fail dan kandungan
— Format mampatan (COMPRESSION_FORMAT_LZNT1
, digunakan oleh fungsi RtlDecompressBuffer
)
Fail pertama ditetapkan semula sebagai TCPSVCS.exe
, yang sah AcroTranscoder.exe
(mengikut FileDescription
, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3
).
Anda mungkin perasan bahawa sesetengah fail DLL lebih besar daripada 11 MB. Ini kerana penimbal data rawak bersebelahan yang besar diletakkan di dalam fail boleh laku. Ada kemungkinan bahawa ini adalah cara untuk mengelakkan pengesanan oleh beberapa produk keselamatan.
Memastikan kegigihan
sumber 0x101
dalam penitis mengandungi dua integer 32-bit yang menentukan cara kegigihan harus disediakan. Nilai yang pertama menentukan cara perisian hasad akan berterusan tanpa hak pentadbir.
Jadual 1. Mekanisme kegigihan tanpa hak pentadbir
Nilai integer kedua menentukan cara perisian hasad harus mencapai kegigihan apabila berjalan dengan hak pentadbir.
Jadual 2. Mekanisme kegigihan dengan hak pentadbir
Nama perkhidmatan ialah nama fail tanpa sambungan; nama paparan ialah nama folder, tetapi jika ia sudah wujud, rentetan “ dilampirkan padanyaRevision 1
” (bilangan bertambah sehingga nama yang tidak digunakan ditemui). Pengendali memastikan bahawa kegigihan melalui perkhidmatan adalah teguh - sekiranya berlaku kegagalan, perkhidmatan harus dimulakan semula selepas 1 saat. Kemudian nilai WOW64
Kunci pendaftaran perkhidmatan baharu ditetapkan kepada 4, menunjukkan bahawa ia adalah perkhidmatan 32-bit.
Tugas berjadual dibuat melalui beberapa antara muka COM: ITaskScheduler
, ITask
, ITaskTrigger
, IPersistFile
и ITaskScheduler
. Pada asasnya, perisian hasad mencipta tugas tersembunyi, menetapkan maklumat akaun bersama-sama dengan pengguna semasa atau maklumat pentadbir, dan kemudian menetapkan pencetus.
Ini adalah tugas harian dengan tempoh 24 jam dan selang antara dua pelaksanaan selama 10 minit, yang bermaksud bahawa ia akan berjalan secara berterusan.
Sedikit berniat jahat
Dalam contoh kami, fail boleh laku TCPSVCS.exe
(AcroTranscoder.exe
) ialah perisian sah yang memuatkan DLL yang ditetapkan semula bersama-sama dengannya. Dalam kes ini, ia adalah menarik Flash Video Extension.dll
.
Fungsinya DLLMain
hanya memanggil fungsi lain. Beberapa predikat kabur hadir:
Rajah 7. Predikat kabur
Selepas semakan mengelirukan ini, kod mendapat bahagian .text
fail TCPSVCS.exe
, menukar pertahanannya kepada PAGE_EXECUTE_READWRITE
dan menulis semula dengan menambah arahan tiruan:
Rajah 8. Urutan arahan
Di penghujung alamat fungsi FLVCore::Uninitialize(void)
, dieksport Flash Video Extension.dll
, arahan ditambah CALL
. Ini bermakna selepas DLL berniat jahat dimuatkan, apabila masa jalan memanggil WinMain
в TCPSVCS.exe
, penunjuk arahan akan menunjuk kepada NOP, menyebabkan FLVCore::Uninitialize(void)
, tahap seterusnya.
Fungsi ini hanya mencipta mutex bermula dengan {181C8480-A975-411C-AB0A-630DB8B0A221}
diikuti dengan nama pengguna semasa. Ia kemudian membaca fail *.db3 yang dibuang, yang mengandungi kod bebas kedudukan dan kegunaan CreateThread
untuk melaksanakan kandungan.
Kandungan fail *.db3 ialah kod shell yang biasanya digunakan oleh kumpulan OceanLotus. Kami sekali lagi berjaya membongkar muatannya menggunakan skrip emulator yang kami terbitkan
Skrip mengekstrak peringkat akhir. Komponen ini ialah pintu belakang, yang telah kami analisis {A96B020F-0000-466F-A96D-A91BBF8EAC96}
fail binari. Konfigurasi perisian hasad masih disulitkan dalam sumber PE. Ia mempunyai kira-kira konfigurasi yang sama, tetapi pelayan C&C berbeza daripada yang sebelumnya:
- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz
Pasukan OceanLotus sekali lagi menunjukkan gabungan teknik yang berbeza untuk mengelakkan pengesanan. Mereka kembali dengan gambar rajah "diperhalusi" proses jangkitan. Dengan memilih nama rawak dan mengisi boleh laku dengan data rawak, mereka mengurangkan bilangan IoC yang boleh dipercayai (berdasarkan cincangan dan nama fail). Selain itu, terima kasih kepada penggunaan pemuatan DLL pihak ketiga, penyerang hanya perlu mengalih keluar binari yang sah AcroTranscoder
.
Pengekstrakan sendiri arkib
Selepas fail RTF, kumpulan itu berpindah ke arkib mengekstrak sendiri (SFX) dengan ikon dokumen biasa untuk mengelirukan lagi pengguna. Threatbook menulis tentang ini ({A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
. Sejak pertengahan Januari 2019, OceanLotus telah menggunakan semula teknik ini, tetapi mengubah beberapa konfigurasi dari semasa ke semasa. Dalam bahagian ini kita akan bercakap tentang teknik dan perubahan.
Mencipta Gewang
dokumen THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE
(SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB
) pertama kali ditemui pada 2018. Fail SFX ini dicipta dengan bijak - dalam keterangan (Maklumat Versi) ia mengatakan ini adalah imej JPEG. Skrip SFX kelihatan seperti ini:
Rajah 9. Perintah SFX
Perisian hasad ditetapkan semula {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx
(SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC
), serta gambar 2018 thich thong lac.jpg.
Imej umpan kelihatan seperti ini:
Rajah 10. Imej umpan
Anda mungkin perasan bahawa dua baris pertama dalam skrip SFX memanggil fail OCX dua kali, tetapi ini bukan ralat.
{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)
Aliran kawalan fail OCX sangat serupa dengan komponen OceanLotus yang lain - banyak urutan arahan JZ/JNZ
и PUSH/RET
, berselang seli dengan kod sampah.
Rajah 11. Kod yang dikelirukan
Selepas menapis kod sampah, eksport DllRegisterServer
, dipanggil regsvr32.exe
, seperti berikut:
Rajah 12. Kod pemasang asas
Pada asasnya, pada panggilan pertama DllRegisterServer
eksport menetapkan nilai pendaftaran HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model
untuk offset disulitkan dalam DLL (0x10001DE0
).
Apabila fungsi dipanggil kali kedua, ia membaca nilai yang sama dan dilaksanakan pada alamat tersebut. Dari sini sumber dan banyak tindakan dalam RAM dibaca dan dilaksanakan.
Shellcode ialah pemuat PE yang sama yang digunakan dalam kempen OceanLotus yang lalu. Ia boleh dicontohi menggunakan db293b825dcc419ba7dc2c49fa2757ee.dll
, memuatkannya ke dalam memori dan melaksanakannya DllEntry
.
DLL mengekstrak kandungan sumbernya, menyahsulit (AES-256-CBC) dan menyahmampatnya (LZMA). Sumber mempunyai format khusus yang mudah untuk dikompilasi.
Rajah 13. Struktur konfigurasi pemasang (KaitaiStruct Visualizer)
Konfigurasi dinyatakan secara eksplisit - bergantung pada tahap keistimewaan, data binari akan ditulis kepada %appdata%IntellogsBackgroundUploadTask.cpl
atau %windir%System32BackgroundUploadTask.cpl
(Atau SysWOW64
untuk sistem 64-bit).
Kegigihan selanjutnya dipastikan dengan mencipta tugasan dengan nama BackgroundUploadTask[junk].job
Jika [junk]
mewakili satu set bait 0x9D
и 0xA0
.
Nama Permohonan Tugas %windir%System32control.exe
, dan nilai parameter ialah laluan ke fail binari yang dimuat turun. Tugas tersembunyi berjalan setiap hari.
Secara struktur, fail CPL ialah DLL dengan nama dalaman ac8e06de0a6c4483af9837d96504127e.dll
, yang mengeksport fungsi CPlApplet
. Fail ini menyahsulit satu-satunya sumbernya {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
, kemudian memuatkan DLL ini dan memanggil satu-satunya eksportnya DllEntry
.
Fail konfigurasi pintu belakang
Konfigurasi pintu belakang disulitkan dan dibenamkan dalam sumbernya. Struktur fail konfigurasi sangat serupa dengan yang sebelumnya.
Rajah 14. Struktur konfigurasi pintu belakang (KaitaiStruct Visualizer)
Walaupun strukturnya serupa, banyak nilai medan telah dikemas kini daripada yang ditunjukkan dalam
Elemen pertama tatasusunan binari mengandungi DLL (HttpProv.dll
MD5: 2559738D1BD4A999126F900C7357B759
),
Penyelidikan Tambahan
Semasa mengumpul sampel, kami melihat beberapa ciri. Spesimen yang baru diterangkan muncul sekitar Julai 2018, dan yang lain sepertinya muncul baru-baru ini pada pertengahan Januari hingga awal Februari 2019. Arkib SFX telah digunakan sebagai vektor jangkitan, menjatuhkan dokumen penipuan yang sah dan fail OSX yang berniat jahat.
Walaupun OceanLotus menggunakan cap masa palsu, kami mendapati bahawa cap masa fail SFX dan OCX sentiasa sama (0x57B0C36A
(08/14/2016 @ 7:15pm UTC) dan 0x498BE80F
(02/06/2009 @ 7:34 pagi UTC) masing-masing). Ini mungkin menunjukkan bahawa pengarang mempunyai sejenis "pereka" yang menggunakan templat yang sama dan hanya mengubah beberapa ciri.
Antara dokumen yang telah kami kaji sejak awal 2018, terdapat pelbagai nama yang menunjukkan negara yang diminati penyerang:
— Maklumat Hubungan Baharu Media Kemboja(Baru).xls.exe
— 李建香 (个人简历).exe (dokumen pdf palsu CV)
— maklum balas, Rali di AS dari 28-29 Julai 2018.exe
Sejak pintu belakang ditemui {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
dan penerbitan analisisnya oleh beberapa penyelidik, kami melihat beberapa perubahan dalam data konfigurasi perisian hasad.
Mula-mula, pengarang mula mengalih keluar nama daripada DLL pembantu (DNSprov.dll
dan dua versi HttpProv.dll
). Operator kemudiannya menghentikan pembungkusan DLL ketiga (versi kedua HttpProv.dll
), memilih untuk membenamkan satu sahaja.
Kedua, banyak medan konfigurasi pintu belakang telah ditukar, mungkin mengelak pengesanan apabila banyak IoC tersedia. Medan penting yang diubah suai oleh pengarang termasuk:
- Kunci pendaftaran AppX ditukar (lihat IoC)
- rentetan pengekodan mutex ("def", "abc", "ghi")
- nombor port
Akhir sekali, semua versi baharu yang dianalisis mempunyai C&C baharu yang disenaraikan dalam bahagian IoC.
Penemuan
OceanLotus terus berkembang. Kumpulan siber memberi tumpuan kepada memperhalusi dan mengembangkan alat dan umpan. Pengarang menyamarkan muatan berniat jahat menggunakan dokumen yang menarik perhatian yang topiknya berkaitan dengan mangsa yang dimaksudkan. Mereka membangunkan skim baharu dan juga menggunakan alatan yang tersedia secara umum, seperti eksploitasi Editor Persamaan. Selain itu, mereka menambah baik alat untuk mengurangkan bilangan artifak yang tinggal pada mesin mangsa, sekali gus mengurangkan peluang pengesanan oleh perisian antivirus.
Petunjuk kompromi
Penunjuk kompromi serta atribut MITRE ATT&CK tersedia
Sumber: www.habr.com