ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus

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 CVE-2017 11882-, kelemahan rasuah memori dalam Microsoft Office, dan cara perisian hasad kumpulan mencapai kegigihan pada sistem yang terjejas tanpa meninggalkan kesan. Seterusnya, kami akan menerangkan bagaimana, sejak awal tahun 2019, kumpulan itu telah menggunakan arkib pengekstrakan sendiri untuk menjalankan kod.

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.

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus

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 (penyelidikan dalam bahasa Cina), termasuk penerangan terperinci tentang eksploitasi. Siaran di bawah mengandungi gambaran keseluruhan dokumen berniat jahat tersebut.

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.

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
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.

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
Rajah 2. Nilai masukan FONT

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
Rajah 3. Format rakaman FONT

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.

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
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.

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
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. Skrip emulasi Python, yang kami keluarkan pada Mac 2018, masih berfungsi untuk pembuangan peringkat kedua.

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.

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
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.

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
Jadual 1. Mekanisme kegigihan tanpa hak pentadbir

Nilai integer kedua menentukan cara perisian hasad harus mencapai kegigihan apabila berjalan dengan hak pentadbir.

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
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:

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
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:

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
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 pada GitHub.

Skrip mengekstrak peringkat akhir. Komponen ini ialah pintu belakang, yang telah kami analisis kajian OceanLotus sebelumnya. Ini boleh ditentukan oleh GUID {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 (pautan dalam bahasa Cina). Selepas pelancaran, fail RAR yang mengekstrak sendiri digugurkan dan DLL dengan sambungan .ocx dilaksanakan, muatan akhir yang telah didokumenkan sebelum 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:

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
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:

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
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.

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
Rajah 11. Kod yang dikelirukan

Selepas menapis kod sampah, eksport DllRegisterServer, dipanggil regsvr32.exe, seperti berikut:

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
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 skrip kami. Pada akhirnya dia menetapkan semula 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.

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
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].jobJika [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.

ESET: skim penghantaran pintu belakang baharu untuk kumpulan siber OceanLotus
Rajah 14. Struktur konfigurasi pintu belakang (KaitaiStruct Visualizer)

Walaupun strukturnya serupa, banyak nilai medan telah dikemas kini daripada yang ditunjukkan dalam laporan lama kami.

Elemen pertama tatasusunan binari mengandungi DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), dikenal pasti oleh Tencent. Tetapi memandangkan nama eksport telah dialih keluar daripada binari, cincangan tidak sepadan.

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 pada Welivesecurity и pada GitHub.

Sumber: www.habr.com

Tambah komen