ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus

Dalam postingan ini kami akan memberi tahu Anda bagaimana grup cyber OceanLotus (APT32 dan APT-C-00) baru-baru ini menggunakan salah satu eksploitasi yang tersedia untuk umum untuk CVE-2017-11882, kerentanan kerusakan memori di Microsoft Office, dan bagaimana malware grup tersebut bertahan pada sistem yang disusupi tanpa meninggalkan jejak. Selanjutnya, kami akan menjelaskan bagaimana, sejak awal tahun 2019, grup ini telah menggunakan arsip self-extracting untuk menjalankan kode.

OceanLotus berspesialisasi dalam spionase dunia maya, dengan target prioritasnya adalah negara-negara di Asia Tenggara. Penyerang memalsukan dokumen yang menarik perhatian calon korban untuk meyakinkan mereka agar mengeksekusi pintu belakang, dan juga sedang mengembangkan alat. Metode yang digunakan untuk membuat honeypot bervariasi berdasarkan serangan, mulai dari file “ekstensi ganda”, arsip self-extracting, dokumen dengan makro, hingga eksploitasi yang diketahui.

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus

Menggunakan eksploitasi di Microsoft Equation Editor

Pada pertengahan tahun 2018, OceanLotus melakukan kampanye yang mengeksploitasi kerentanan CVE-2017-11882. Salah satu dokumen berbahaya dari kelompok cyber dianalisis oleh spesialis dari 360 Threat Intelligence Center (penelitian dalam bahasa Cina), termasuk penjelasan rinci tentang eksploitasi tersebut. Postingan di bawah ini berisi ikhtisar dokumen berbahaya tersebut.

Tahap pertama

Dokumen FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) serupa dengan yang disebutkan dalam penelitian di atas. Menarik karena ditujukan untuk pengguna yang tertarik dengan politik Kamboja (CNRP - Partai Penyelamatan Nasional Kamboja, dibubarkan pada akhir tahun 2017). Meskipun berekstensi .doc, dokumen tersebut dalam format RTF (lihat gambar di bawah), berisi kode sampah, dan juga terdistorsi.

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 1. "Sampah" di RTF

Meskipun ada elemen yang kacau, Word berhasil membuka file RTF ini. Seperti yang Anda lihat pada Gambar 2, terdapat struktur EQNOLEFILEHDR pada offset 0xC00, diikuti oleh header MTEF, dan kemudian entri MTEF (Gambar 3) untuk font.

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 2. Nilai entri FONT

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 3. Format perekaman FONT

Kemungkinan meluap di lapangan nama, karena ukurannya tidak diperiksa sebelum disalin. Nama yang terlalu panjang memicu kerentanan. Seperti yang Anda lihat dari isi file RTF (offset 0xC26 pada Gambar 2), buffer diisi dengan shellcode diikuti dengan perintah dummy (0x90) dan alamat pengirim 0x402114. Alamatnya adalah elemen dialog di EQNEDT32.exe, menunjukkan instruksi RET. Hal ini menyebabkan EIP menunjuk ke awal lapangan namaberisi kode shell.

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 4. Awal dari eksploitasi shellcode

alamat 0x45BD3C menyimpan variabel yang didereferensi hingga mencapai penunjuk ke struktur yang sedang dimuat MTEFData. Kode shell lainnya ada di sini.

Tujuan dari shellcode adalah untuk mengeksekusi bagian kedua dari shellcode yang tertanam dalam dokumen terbuka. Shellcode asli pertama-tama mencoba menemukan deskriptor file dari dokumen yang terbuka dengan mengulangi semua deskriptor sistem (NtQuerySystemInformation dengan argumen SystemExtendedHandleInformation) dan memeriksa apakah cocok PID deskriptor dan PID prosesnya WinWord dan apakah dokumen dibuka dengan masker akses - 0x12019F.

Untuk mengonfirmasi bahwa pegangan yang benar telah ditemukan (dan bukan pegangan untuk dokumen terbuka lainnya), konten file ditampilkan menggunakan fungsi CreateFileMapping, dan shellcode memeriksa apakah empat byte terakhir dokumen cocok dengan "yyyy"(Metode Berburu Telur). Setelah kecocokan ditemukan, dokumen disalin ke folder sementara (GetTempPath) sebagai ole.dll. Kemudian 12 byte terakhir dokumen dibaca.

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 5. Penanda Akhir Dokumen

Nilai 32-bit antar penanda AABBCCDD и yyyy adalah offset dari shellcode berikutnya. Itu disebut menggunakan fungsi CreateThread. Mengekstraksi kode shell yang sama yang digunakan oleh grup OceanLotus sebelumnya. Skrip emulasi Python, yang kami rilis pada Maret 2018, masih berfungsi untuk dump tahap kedua.

Tahap kedua

Menghapus Komponen

Nama file dan direktori dipilih secara dinamis. Kode secara acak memilih nama file yang dapat dieksekusi atau DLL C:Windowssystem32. Ia kemudian membuat permintaan ke sumber dayanya dan mengambil bidang tersebut FileDescription untuk digunakan sebagai nama folder. Jika ini tidak berhasil, kode akan memilih nama folder secara acak dari direktori %ProgramFiles% или C:Windows (dari GetWindowsDirectoryW). Ini menghindari penggunaan nama yang mungkin bertentangan dengan file yang ada dan memastikan bahwa nama tersebut tidak mengandung kata-kata berikut: windows, Microsoft, desktop, system, system32 или syswow64. Jika direktori sudah ada, "NLS_{6 karakter}" ditambahkan ke namanya.

sumber 0x102 dianalisis dan file dibuang ke dalamnya %ProgramFiles% или %AppData%, ke folder yang dipilih secara acak. Mengubah waktu pembuatan agar memiliki nilai yang sama dengan kernel32.dll.

Misalnya, berikut adalah folder dan daftar file yang dibuat dengan memilih file yang dapat dieksekusi C:Windowssystem32TCPSVCS.exe sebagai sumber data.

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 6. Mengekstraksi berbagai komponen

Struktur sumber daya 0x102 dalam pipet cukup rumit. Singkatnya, ini berisi:
— Nama file
— Ukuran dan konten file
— Format kompresi (COMPRESSION_FORMAT_LZNT1, digunakan oleh fungsi tersebut RtlDecompressBuffer)

File pertama direset sebagai TCPSVCS.exe, yang sah AcroTranscoder.exe (berdasarkan FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Anda mungkin memperhatikan bahwa beberapa file DLL berukuran lebih dari 11 MB. Hal ini karena buffer data acak yang besar dan berdekatan ditempatkan di dalam file yang dapat dieksekusi. Ada kemungkinan bahwa ini adalah cara untuk menghindari deteksi oleh beberapa produk keamanan.

Memastikan ketekunan

sumber 0x101 di dropper berisi dua bilangan bulat 32-bit yang menentukan bagaimana persistensi harus disediakan. Nilai yang pertama menentukan bagaimana malware akan bertahan tanpa hak administrator.

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Tabel 1. Mekanisme persistensi tanpa hak administrator

Nilai bilangan bulat kedua menentukan bagaimana malware harus mencapai persistensi ketika dijalankan dengan hak administrator.

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Tabel 2. Mekanisme persistensi dengan hak administrator

Nama layanan adalah nama file tanpa ekstensi; nama tampilan adalah nama folder, tetapi jika sudah ada, string “ ditambahkan ke dalamnyaRevision 1” (jumlahnya bertambah hingga ditemukan nama yang tidak terpakai). Operator memastikan bahwa persistensi melalui layanan kuat - jika terjadi kegagalan, layanan harus dimulai ulang setelah 1 detik. Lalu nilainya WOW64 Kunci registri layanan baru diatur ke 4, menunjukkan bahwa ini adalah layanan 32-bit.

Tugas terjadwal dibuat melalui beberapa antarmuka COM: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. Pada dasarnya, malware menciptakan tugas tersembunyi, mengatur informasi akun bersama dengan informasi pengguna atau administrator saat ini, dan kemudian mengatur pemicunya.

Ini adalah tugas harian dengan durasi 24 jam dan interval antara dua eksekusi 10 menit, yang berarti akan berjalan terus menerus.

Sedikit berbahaya

Dalam contoh kita, file yang dapat dieksekusi TCPSVCS.exe (AcroTranscoder.exe) adalah perangkat lunak sah yang memuat DLL yang direset bersamanya. Dalam hal ini, ini menarik Flash Video Extension.dll.

Fungsinya DLLMain hanya memanggil fungsi lain. Beberapa predikat fuzzy hadir:

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 7. Predikat fuzzy

Setelah pemeriksaan yang menyesatkan ini, kode tersebut mendapat bagian .text mengajukan TCPSVCS.exe, mengubah pertahanannya menjadi PAGE_EXECUTE_READWRITE dan menulis ulang dengan menambahkan instruksi tiruan:

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 8. Urutan instruksi

Di akhir alamat fungsi FLVCore::Uninitialize(void), diekspor Flash Video Extension.dll, instruksi ditambahkan CALL. Ini berarti bahwa setelah DLL berbahaya dimuat, saat runtime memanggil WinMain в TCPSVCS.exe, penunjuk instruksi akan menunjuk ke NOP, menyebabkan FLVCore::Uninitialize(void), tahap selanjutnya.

Fungsinya hanya membuat mutex yang dimulai dengan {181C8480-A975-411C-AB0A-630DB8B0A221}diikuti dengan nama pengguna saat ini. Ia kemudian membaca file *.db3 yang dibuang, yang berisi kode posisi-independen, dan menggunakannya CreateThread untuk mengeksekusi konten.

Isi file *.db3 adalah shellcode yang biasanya digunakan oleh grup OceanLotus. Kami kembali berhasil membongkar muatannya menggunakan skrip emulator yang kami terbitkan di GitHub.

Script mengekstrak tahap akhir. Komponen ini adalah pintu belakang, yang telah kita analisis studi OceanLotus sebelumnya. Ini dapat ditentukan oleh GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} file biner. Konfigurasi malware masih dienkripsi di sumber daya PE. Konfigurasinya kurang lebih sama, tetapi server C&C berbeda dari yang sebelumnya:

- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz

Tim OceanLotus kembali mendemonstrasikan kombinasi teknik berbeda untuk menghindari deteksi. Mereka kembali dengan diagram proses infeksi yang “disempurnakan”. Dengan memilih nama acak dan mengisi executable dengan data acak, mereka mengurangi jumlah IoC yang dapat diandalkan (berdasarkan hash dan nama file). Selain itu, berkat penggunaan pemuatan DLL pihak ketiga, penyerang hanya perlu menghapus biner yang sah AcroTranscoder.

Arsip yang mengekstraksi sendiri

Setelah file RTF, grup tersebut berpindah ke arsip self-extracting (SFX) dengan ikon dokumen umum untuk semakin membingungkan pengguna. Threatbook menulis tentang ini (tautan dalam bahasa Cina). Saat peluncuran, file RAR yang mengekstraksi sendiri akan dihapus dan DLL dengan ekstensi .ocx dijalankan, muatan terakhirnya telah didokumentasikan sebelumnya {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Sejak pertengahan Januari 2019, OceanLotus telah menggunakan kembali teknik ini, namun mengubah beberapa konfigurasi seiring waktu. Pada bagian ini kita akan membahas tentang teknik dan perubahannya.

Membuat Umpan

Dokumen THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) pertama kali ditemukan pada tahun 2018. File SFX ini dibuat dengan bijak - dalam deskripsi (Informasi versi) dikatakan ini adalah gambar JPEG. Skrip SFX terlihat seperti ini:

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 9. Perintah SFX

Malware disetel ulang {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), serta gambar 2018 thich thong lac.jpg.

Gambar umpannya terlihat seperti ini:

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 10. Gambar umpan

Anda mungkin telah memperhatikan bahwa dua baris pertama dalam skrip SFX memanggil file OCX dua kali, tapi ini bukan kesalahan.

{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)

Aliran kontrol file OCX sangat mirip dengan komponen OceanLotus lainnya - banyak urutan perintah JZ/JNZ и PUSH/RET, bergantian dengan kode sampah.

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 11. Kode yang dikaburkan

Setelah memfilter kode sampah, ekspor DllRegisterServer, ditelepon regsvr32.exe, sebagai berikut:

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 12. Kode dasar installer

Pada dasarnya, pada panggilan pertama DllRegisterServer ekspor menetapkan nilai registri HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model untuk offset terenkripsi di DLL (0x10001DE0).

Ketika fungsi tersebut dipanggil untuk kedua kalinya, ia membaca nilai yang sama dan mengeksekusi pada alamat tersebut. Dari sini sumber daya dan banyak tindakan dalam RAM dibaca dan dijalankan.

Shellcode adalah pemuat PE yang sama yang digunakan dalam kampanye OceanLotus sebelumnya. Itu dapat ditiru menggunakan naskah kita. Pada akhirnya dia mengatur ulang db293b825dcc419ba7dc2c49fa2757ee.dll, memuatnya ke dalam memori dan mengeksekusi DllEntry.

DLL mengekstrak konten sumber dayanya, mendekripsi (AES-256-CBC) dan mendekompresi (LZMA). Sumber daya memiliki format tertentu yang mudah didekompilasi.

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 13. Struktur konfigurasi penginstal (KaitaiStruct Visualizer)

Konfigurasi ditentukan secara eksplisit - bergantung pada tingkat hak istimewa, data biner akan ditulis %appdata%IntellogsBackgroundUploadTask.cpl или %windir%System32BackgroundUploadTask.cpl (Atau SysWOW64 untuk sistem 64-bit).

Kegigihan lebih lanjut dipastikan dengan membuat tugas dengan nama tersebut BackgroundUploadTask[junk].jobDimana [junk] mewakili satu set byte 0x9D и 0xA0.

Nama Aplikasi Tugas %windir%System32control.exe, dan nilai parameternya adalah jalur ke file biner yang diunduh. Tugas tersembunyi berjalan setiap hari.

Secara struktural, file CPL adalah DLL dengan nama internal ac8e06de0a6c4483af9837d96504127e.dll, yang mengekspor suatu fungsi CPlApplet. File ini mendekripsi satu-satunya sumber dayanya {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, lalu memuat DLL ini dan memanggil satu-satunya ekspornya DllEntry.

File konfigurasi pintu belakang

Konfigurasi pintu belakang dienkripsi dan tertanam dalam sumber dayanya. Struktur file konfigurasi sangat mirip dengan yang sebelumnya.

ESET: skema pengiriman pintu belakang baru untuk grup cyber OceanLotus
Gambar 14. Struktur konfigurasi pintu belakang (KaitaiStruct Visualizer)

Meskipun strukturnya serupa, banyak nilai bidang yang telah diperbarui dari yang ditampilkan di laporan lama kami.

Elemen pertama dari array biner berisi DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), diidentifikasi oleh Tencent. Namun karena nama ekspor telah dihapus dari biner, hashnya tidak cocok.

Penelitian tambahan

Saat mengumpulkan sampel, kami memperhatikan beberapa karakteristik. Spesimen yang baru dijelaskan muncul sekitar Juli 2018, dan spesimen serupa muncul baru-baru ini pada pertengahan Januari hingga awal Februari 2019. Arsip SFX digunakan sebagai vektor infeksi, menjatuhkan dokumen umpan yang sah dan file OSX yang berbahaya.

Meskipun OceanLotus menggunakan stempel waktu palsu, kami memperhatikan bahwa stempel waktu file SFX dan OCX selalu sama (0x57B0C36A (08/14/2016 @ 7:15 UTC) dan 0x498BE80F (02/06/2009 @ 7:34 pagi UTC) masing-masing). Hal ini mungkin menunjukkan bahwa penulis memiliki semacam “desainer” yang menggunakan template yang sama dan hanya mengubah beberapa karakteristik.

Di antara dokumen yang kami pelajari sejak awal tahun 2018, terdapat berbagai nama yang menunjukkan negara yang menjadi target penyerang:

— Informasi Kontak Baru Media Kamboja (Baru).xls.exe
— 李建香 (个人简历).exe (dokumen pdf palsu dari CV)
— umpan balik, Reli di AS mulai 28-29 Juli 2018.exe

Sejak pintu belakang ditemukan {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll dan publikasi analisisnya oleh beberapa peneliti, kami mengamati beberapa perubahan pada data konfigurasi malware.

Pertama, penulis mulai menghapus nama dari DLL pembantu (DNSprov.dll dan dua versi HttpProv.dll). Operator kemudian berhenti mengemas DLL ketiga (versi kedua HttpProv.dll), memilih untuk menyematkan satu saja.

Kedua, banyak bidang konfigurasi pintu belakang diubah, kemungkinan besar untuk menghindari deteksi karena banyak IoC tersedia. Bidang penting yang dimodifikasi oleh penulis meliputi:

  • Kunci registri AppX diubah (lihat IoCs)
  • string pengkodean mutex ("def", "abc", "ghi")
  • nomor port

Terakhir, semua versi baru yang dianalisis memiliki K&K baru yang tercantum di bagian IoC.

Temuan

OceanLotus terus berkembang. Kelompok siber fokus pada penyempurnaan dan perluasan alat dan umpan. Penulis menyamarkan muatan berbahaya menggunakan dokumen menarik perhatian yang topiknya relevan dengan korban yang dituju. Mereka mengembangkan skema baru dan juga menggunakan alat yang tersedia untuk umum, seperti eksploitasi Equation Editor. Selain itu, mereka juga meningkatkan alat untuk mengurangi jumlah artefak yang tersisa di mesin korban, sehingga mengurangi kemungkinan deteksi oleh perangkat lunak antivirus.

Indikator kompromi

Indikator kompromi serta atribut MITRE ATT&CK tersedia tentang Keamanan Kesejahteraan и di GitHub.

Sumber: www.habr.com

Tambah komentar