Rumah > Artikel > Operasi dan penyelenggaraan > Cara menjalankan analisis mendalam terhadap sampel serangan APT Vietnam
APT telah menjadi topik hangat dalam bidang keselamatan.
Innovación y laboratorio, anak syarikat Eleven Paths, menerbitkan laporan "Docless Vietnam APT" pada bulan April:
Maklumat di atas menyatakan bahawa kami telah mengesan beberapa yang berniat jahat E-mel telah dihantar ke peti mel milik kerajaan Vietnam Tarikh e-mel Vietnam ini ialah 13 Mac 2019. Terdapat unsur-unsur yang mencurigakan dalam e-mel ini, yang mungkin datang dari dalam kerajaan Vietnam, tetapi tidak boleh diketepikan bahawa seseorang menghantar e-mel itu kepada jabatan keselamatan.
TKCT quy I nama 2019.doc.lnk.malw maklumat sampel adalah seperti berikut:
Gambar 1: TKCT quy I nam 2019.doc.lnk .malw
1. Selepas TKCT quy I nama 2019.doc.lnk.malw sampel dimuat turun secara tempatan, ia dengan bijak menyamar sebagai pintasan Word, menipu mangsa untuk menjalankan atau lazimnya mengklik dua kali padanya. Lihatnya seperti berikut:
Gambar 2: Menyamar pintasan dokumen
Pertama sekali, dokumen perkataan biasanya tidak Pautan .lnk, dan saiz pautan itu adalah kira-kira 1kb, tetapi pintasan sampel APT ialah 126kb Jelas sekali bahawa ada sesuatu yang tersembunyi Banyak virus menyamar nama fail sebagai .dat, .docx, dll. Dalam hakikatnya, akhiran ialah .exe Anda boleh melihatnya dengan menghidupkan sambungan nama fail.
2. Ekstrak kod hasad yang terkandung dalam sasaran dalam atribut sampel dan dapatkan bahawa ia adalah perintah cmd yang dikaburkan dan disulitkan, dan laksanakan powershell, seperti yang ditunjukkan di bawah:
Oleh itu, virus dan perisian hasad pada masa lalu mempunyai persamaan ini Contohnya, Man Linghua, Xbash dan perisian tebusan semuanya suka melaksanakan powershell sebagai "muatan" pertama dan memberikannya kepada komputer sebagai kejutan.
3. Selepas menghuraikan arahan yang dikelirukan, kami mendapati bahawa pintasan TKCT quy I nam 2019.doc.lnk telah diubah hala ke fail s.sp1, sebenarnya, pintasan desktop ialah fail skrip powershell pembolehubah yang dikelirukan diisih seperti berikut:
Akhirnya ubah hala TKCT quy I nama 2019.doc.lnk ke folder temp, namakannya s.ps1 dan laksanakan powershell, sebagai ditunjukkan di bawah:Gambar 4: Nyahkeliruan
4 Ia juga boleh mengalih keluar pengeliruan iex secara manual ". Powershell menjalankan format arahan: Nama fail (asal) >> s.sp1 (nama fail baharu). Fail ubah hala adalah seperti berikut:
Gambar 5: Kod berniat jahat Powershell
5 Seperti yang ditunjukkan dalam Rajah 5, dua keping data berkod Base64 telah ditemui untuk melaksanakan data berniat jahat yang dikodkan, dan laksanakan penciptaan setiap 9 minit Gunakan Perkhidmatan InstallUtil menyedari permulaan dan kegigihan adalah menarik untuk menggunakan Wscript.Shell untuk melaksanakan, dan semakin tidak dijangka, semakin tidak dijangka kesannya, seperti yang ditunjukkan di bawah:
Gambar 6: s.sp1
6 Selepas menghuraikan data yang dikodkan Base64, sebenarnya terdapat dua fail boleh laku iaitu malicious .net dan .doc. Kaedah pelaksanaan ditunjukkan dalam rajah di bawah:
Gambar 7: Rutin biasa7. Analisis tmp_pFWwjd.dat.exe dan nyahhimpunkannya melalui alat dnSpy Akhirnya, kod itu kelihatan dengan jelas walaupun terdapat sedikit kekeliruan (anda boleh menggunakan de4dot.exe untuk mengelirukannya), ia tidak menjejaskan tahap kod.
Cari fungsi utama Exec() dan cari data yang dikodkan Base64String Menurut proses pelaksanaan, .NET mewakilkan untuk memanggil fungsi Panggilan, dan ia boleh dibaca dan boleh ditulis Kemudian anda perlu memohon memori VirtualAlloc (), dan Salin kod shell Base64 ke memori yang diminta, dapatkan penuding CreateThread() dan amanahkan penuding panggil balik pelaksanaan untuk melaksanakan kod shell berniat jahat, seperti ditunjukkan di bawah:
Gambar 8: .net disassembly
Bagaimana untuk memahami shellcode atau muatan? Pada asasnya, ia boleh dikatakan sebagai sekumpulan data heksadesimal Untuk fail boleh laku, ia adalah data yang boleh ditafsir dan dilaksanakan oleh enjin pemasangan.
Oleh kerana perkara berikut akan melibatkan pengekstrakan data binari dan analisis pemasangan, berikut ialah rajah ringkas untuk memperkenalkan konsep asas kod shell atau muatan (untuk kod berniat jahat), seperti yang ditunjukkan dalam rajah berikut:
Gambar 9: muatan
Seperti yang ditunjukkan dalam Rajah 9, untuk virus, terutamanya serangan yang bermula sendiri dan berterusan, sukar untuk dilaksanakan tanpa pintu belakang (kelemahan berterusan ( kecuali untuk menarik sedikit trafik setiap kali untuk kecurian data).
Sebagai contoh, alamat asas rawak alamat ASLR akan berubah setiap kali sistem dimulakan semula, atau ia akan disuntik ke dalam ruang proses baharu Alamat asas fungsi kod itu sendiri adalah salah mendapatkan alamat fungsi? Untuk mencapai operasi yang sempurna, beberapa operasi tambahan diperlukan Sudah tentu, ini bukan masalah, dan teknologinya agak matang.
Dengan mengandaikan bahawa pembaca mempunyai pengetahuan tertentu tentang format Windows PE, pemasangan dan kernel, penjelasan pengetahuan berikut akan lebih mudah difahami. Saya tidak akan mempopularkan pengetahuan asas Saya akan menganalisis cara melakukan kod shell ini dari format PE dan tahap pemasangan, bagaimana untuk mendapatkan alamat pangkalan modul secara dinamik seperti kernel32.dll, cara menggunakan nilai hash atau Hash untuk melintasi eksport jadual, dan elakkan membunuh rentetan sensitif dan API fungsi sensitif, dsb.
Mengambil kod hasad di atas sebagai contoh, kerana .net menghadapi banyak masalah semasa penyahpepijatan kod shell, c/c++ telah digunakan untuk memulihkan tmp_pFWwjd.dat.exe sampel.
Sekali lagi, OD digunakan untuk penyahpepijatan dinamik Sudah tentu, anda boleh membuangnya untuk analisis Mengikut pilihan peribadi anda, anda boleh terus mengganggu apabila melaksanakan kod shell, seperti yang ditunjukkan di bawah:
Gambar Sepuluh: Penunjuk1 Masukkan titik masuk, diikuti dengan penyahsulitan XOR data dan pulihkan kod hasad yang perlu dilaksanakan, seperti yang ditunjukkan di bawah. : Gambar 11: Penyahsulitan XOR2. Nilai cincang menyulitkan rentetan Ini mempunyai kelebihan untuk mengurangkan saiz kod shell dan menyembunyikan sensitif aksara, menyukarkan perisian anti-virus untuk memintas, seperti yang ditunjukkan di bawah: Gambar 12: Alamat fungsi pemerolehan nilai cincang3 fungsi 1E0A42 dan cari sekumpulan operasi penugasan yang kelihatan biasa, seperti Paparan berikut: Gambar 13: fs:[0x30]Fs ialah daftar, mod kernel ialah fs = 0x30, mod pengguna fs = 0x3B, fs Tuding ke _KPCR dalam mod kernel dan tuding ke _TEB dalam mod pengguna. TEB (Blok Persekitaran Benang), blok persekitaran benang, iaitu setiap benang akan mempunyai TEB, yang digunakan untuk menyimpan data antara sistem dan benang untuk memudahkan kawalan operasi. Kemudian Fs:[0x30] ialah blok persekitaran proses PEB. 4. PEB ialah persekitaran proses semasa dengan mudah. Ia memperoleh _PEB_LDR_DATA melalui offset 0xc. Struktur ini mengandungi maklumat tentang modul yang dimuatkan senarai terpaut diperolehi melalui offset 0x1c Setiap senarai terpaut menghala ke struktur LDR_DATA_TABLE_ENTRY Mari kita lihat data yang terkandung dalam struktur iniGambar 14: Dapatkan pangkalan modul
Gambar 15: Langkah-langkah untuk mendapatkan alamat pangkalan modul persekitaran semasa
5. Lulus Proses di atas akan berjaya mendapatkan ntdll.dll, seperti yang ditunjukkan di bawah:
Gambar 16: Dapatkan Alamat modul
6 fungsi 1E0B2A, dua parameter Menurut konvensyen panggilan fungsi, parameter 1 ialah alamat pangkalan kernel32, parameter 2 ialah nilai cincang nama fungsi, dan fungsi ini ialah fungsi GetProcAddress() yang dilaksanakan sendiri, seperti yang ditunjukkan di bawah:
Gambar 17: GetProcAddress
Tujuan fungsi ini adalah untuk menyemak sama ada ia mematuhi format standard PE dan mendapatkan pengepala NT dan jadual eksport. Jadual eksport menyimpan alamat tiga jadual Mari kita lihat struktur jadual eksport, seperti yang ditunjukkan di bawah:
Kod hasad perlu mencari alamat ketiga-tiga jadual ini, melintasi jadual nama fungsi AddressOfName, dapatkan nama fungsi dan mengira nilai cincangan jika nilai cincang adalah sama parameter 2, ia bermakna adalah fungsi yang sama.
Kembalikan subskrip yang sedang dilalui, gunakan subskrip untuk pergi ke jadual nombor jujukan fungsi AddressOfNameOrdinals untuk mencari nombor jujukan yang sepadan, dapatkan nilai yang disimpan dalam jadual nombor jujukan dan dapatkan AddressOfFunctions dalam jadual alamat fungsi . Jadual nombor siri dan jadual nama sepadan dengan satu dengan satu, dan subskrip dan subskrip berada dalam Nilai yang disimpan adalah berkaitan.
Perlu diingatkan bahawa nombor siri tidak teratur dan akan ada jurang. Sesetengah fungsi dalam jadual alamat tidak mempunyai nama fungsi, iaitu jadual alamat mempunyai alamat tetapi tidak boleh dikaitkan dengan jadual nama Pada masa ini, nombor siri digunakan untuk memanggil kandungan nombor siri ditambah nombor siri Pangkalan alamat asas ialah nombor panggilan sebenar.
8. Dengan pengetahuan ini, jika anda melihat kod berniat jahat dalam sampel, anda akan mendapati ia betul-betul sama dengan penerangan di atas, seperti berikut: Gambar 19: GetProcAddress()9 Keputusan pengesahan akhir berjaya, seperti yang ditunjukkan di bawah:
Gambar 20: Pengesahan
11 Urutan baharu dibuat , seperti yang ditunjukkan di bawah:
Gambar 21: Cipta direktori
Buat fail dan laluan nama direktori c:User...AppDataRoaming
11 Pelayan membalas dan memuat turun kod hasad, yang akan memulakan perjalanan baharu, seperti yang ditunjukkan di bawah:
Gambar 22: DownLoader
4. Analisis modul vkT2
1 Selepas mengikuti fungsi, kami menemui sejumlah besar nilai cincang, secara dinamik memperoleh alamat fungsi, dan fungsi di atas Panggilan adalah konsisten, dan nama fungsi sikat adalah seperti berikut:
2. Operasi prapemanasan dilakukan , sebenarnya, berdasarkan nama fungsi, anda harus meneka apa yang akan berlaku seterusnya, seperti yang ditunjukkan dalam rajah berikut:
Gambar 23: InternetOpenA
Gambar 24: InternetConnectA
Gambar 25: HttpOpenRequestA
Gambar 26: Status permintaan Kami terus mengakses halaman web berdasarkan IP yang diketahui dan format permintaan, seperti ditunjukkan di bawah:Gambar 27: vkT2 Mendapati bahawa penghuraian web semuanya bercelaru? Muat turun secara tempatan dan ikuti proses pelaksanaan kod asal Ini adalah sekeping data binari, tulis program untuk menyahpepijat kod berniat jahat ini.
4. Analisis vkT2, mula-mula menyahsulit data, dan kemudian secara dinamik mendapatkan alamat fungsi, yang merupakan rutin lama yang digunakan oleh sampel.
Data setiap bahagian (jadual bahagian) disambung secara kitaran Di sini, menurut VirtualAddress, alamat setiap bahagian selepas dimuatkan ke dalam memori disambung secara kitaran Kod ciri pengepala DOS dipadamkan untuk membentuk fail Format PE, seperti yang ditunjukkan di bawah:
Gambar 28: Pengembangan memori
5. Memandangkan ia adalah format PE Dikembangkan ke dalam memori, langkah seterusnya adalah untuk membaiki jadual IAT dan penempatan semula Terdapat banyak aspek yang terlibat di sini, dan ia juga merupakan kandungan format PE Panduan", seperti yang ditunjukkan dalam rajah di bawah:
Gambar 29: Membaiki IAT
6. Seterusnya, analisa perkara utama, dapatkan pembolehubah sistem, dan tentukan sama ada ia berjalan pada sistem 64bit, seperti yang ditunjukkan di bawah:
Gambar 30 : Menentukan persekitaran operasi
8 Data sistem, IP hos, Nama hos dan maklumat lain dikumpul seperti berikut:
Gambar 31: Pengumpulan data
9 Pusingan baharu komunikasi C&C bermula, seperti yang ditunjukkan dalam rajah berikut:
<.>
Gambar 32: Mewujudkan komunikasi Untuk analisis lanjut, fail boleh dibuka menggunakan fungsi HttpOpenRequest dan HttpSendRequest. HttpOpenRequest mencipta pemegang permintaan dan menyimpan parameter dalam pemegang HttpSendRequest menghantar parameter permintaan ke pelayan HTTP, seperti yang ditunjukkan di bawah: Gambar 33: HttpOpenRequest Gambar 34: HttpSendRequestA11 Malangnya, HttpSendRequeS respon tidak wujud lagi. menganalisis kod yang tinggal secara statik (pelaksanaan simulasi), membaca kod hasad yang dikembalikan oleh pelayan dan menggunakan konteks keselamatan benang. Analisis perisikan tidak menemui data yang lebih berharga, tetapi kaedah permintaan ini sangat unik, dan paket data yang dibina juga sangat istimewa Kekhususan ini akan dibincangkan di bawah. Menghubungkan proses sampel, carta alir pelaksanaan combing adalah seperti berikut: Gambar 35: TKCT quy I nam 2019.doc proses pelaksanaanSeperti yang ditunjukkan dalam Rajah 35, pelayan untuk komunikasi pelanggan semuanya harus menjadi pelayan proksi Sebenarnya, persekitaran sebenar jauh lebih rumit daripada proses di atas, yang juga merupakan kesukaran untuk mengesan sumber. Seperti yang ditunjukkan dalam Rajah 33, maklumat data utama diekstrak daripada memori tindanan, yang berbeza daripada data permintaan biasa yang kita lihat adalah seperti berikut:
Kaedah komunikasi APT menjadi lebih berhati-hati Jika analisis sampel terperinci, operasi simulasi kotak pasir, forensik memori dan alat penangkapan paket tidak digunakan untuk menganalisis tahap rangkaian, hasilnya mungkin berbeza daripada data yang dikehendaki sampel berkomunikasi, ia sebenarnya menggunakan teknologi serangan rangkaian bahagian hadapan domain.
Apakah itu teknologi serangan rangkaian bahagian hadapan domain? Ringkasnya, pasukan seperti msf dan cs (Cobalt Strike) boleh mengawal trafik pelayan untuk memintas tahap tembok api dan pengesan tertentu Beberapa pengeluar yang lebih besar akan menyediakan perkhidmatan, jadi alatan seperti msf atau cs boleh digunakan untuk memintas firewall dan pengesan pada tahap tertentu Ia boleh dicapai.
Kami menggunakan Cobalt Strike sebagai contoh, yang menyepadukan penghantaran port, mengimbas port multi-mod Listener, penjanaan program Windows exe, penjanaan perpustakaan pautan dinamik Windows dll, penjanaan program java, penjanaan kod makro pejabat, termasuk pengklonan tapak untuk mendapatkan maklumat berkaitan pelayar, dsb.
Salah satu fungsi yang lebih berguna ialah gelagat muatan Beacon, mengubah suai nilai atribut lalai rangka kerja, menukar kekerapan daftar masuk dan mengubah suai trafik rangkaian Beacon berada dalam fail Mudah Tempa C2.
Fungsi Malleable-C2-Profiles boleh membina trafik menyamar Web biasa, dan akhirnya mencapai kesan penyembunyian komunikasi Kami mengambil amazon.profile sebagai contoh, seperti yang ditunjukkan di bawah:
set useragent "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";http-get {Seturi"/s/ref=nb_sb_noss_1/167-3294888-0262949/field-keywords=books";client {header "Accept" "*/*";header "Host" " www.amazon.com ";metadata {base64;prepend "session-token=";prepend "skin=noskin;";append "csm-hit=s-24KU11BB82RZSYGJ3BDK|1419899012996";header "Cookie";}http-post {set uri "/N4215/adj/amzn.us.sr.aps";client {header "Accept" "*/*";header "Content-Type" "text/xml";header "X-Requested-With" "XMLHttpRequest";header "Host" " www.amazon.com ";parameter "sz" "160x600";parameter "oe" "oe=ISO-8859-1;";id {parameter "sn";}parameter "s" "3717";parameter "dc_ref" "http%3A%2F%2F www.amazon.com ";}
The. kod di atas sepadan sepenuhnya dengan ciri komunikasi sampel vkT2.shellcode Dengan memuatkan fail profil yang sepadan, ciri trafik hos sasaran dan pelayan ditukar untuk menyembunyikan trafik dan akhirnya mencapai tujuan menyembunyikan komunikasi.
Atas ialah kandungan terperinci Cara menjalankan analisis mendalam terhadap sampel serangan APT Vietnam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!