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
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.
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 (
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.
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.
Gambar 2. Nilai entri FONT
Gambar 3.
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.
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.
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.
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.
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.
Tabel 1. Mekanisme persistensi tanpa hak administrator
Nilai bilangan bulat kedua menentukan bagaimana malware harus mencapai persistensi ketika dijalankan dengan hak administrator.
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:
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:
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
Script mengekstrak tahap akhir. Komponen ini adalah pintu belakang, yang telah kita analisis {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 ({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:
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:
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.
Gambar 11. Kode yang dikaburkan
Setelah memfilter kode sampah, ekspor DllRegisterServer
, ditelepon regsvr32.exe
, sebagai berikut:
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 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.
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].job
Dimana [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.
Gambar 14. Struktur konfigurasi pintu belakang (KaitaiStruct Visualizer)
Meskipun strukturnya serupa, banyak nilai bidang yang telah diperbarui dari yang ditampilkan di
Elemen pertama dari array biner berisi DLL (HttpProv.dll
MD5: 2559738D1BD4A999126F900C7357B759
),
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
Sumber: www.habr.com