Shinigami adalah alat eksperimental yang dirancang untuk mendeteksi dan membongkar implan malware yang disuntikkan melalui proses pengosongan atau rutinitas pengepakan umum.
Alat ini beroperasi dengan mengaitkan fungsi NT yang terkait dengan Proses Hollowing dan menandai halaman memori yang baru dapat dieksekusi dengan bit penjaga halaman. Teknik ini memungkinkan Shinigami mendeteksi perubahan aliran tidak langsung, biasanya disebabkan oleh shellcode atau kode yang belum dibongkar, yang sering kali merupakan indikasi malware. Shinigami membuat target yang dapat dieksekusi dalam keadaan ditangguhkan dan menyuntikkan perpustakaan DLL yang disebut "Ichigo". Perpustakaan ini secara otomatis menghubungkan setiap fungsi yang diperlukan untuk mendeteksi dan mengekstrak implan. Setelah artefak diekstraksi sepenuhnya, alat akan menghentikan prosesnya.
Efektivitas Shinigami dapat bervariasi tergantung pada malware spesifik yang ditargetkan. Namun, ini merupakan tambahan yang berharga untuk perangkat analisis malware apa pun dan mungkin terbukti berguna dalam mendeteksi dan menganalisis malware yang menggunakan proses pengosongan atau rutinitas pengepakan umum.
Penting: Ini adalah alat pembongkaran dinamis dan tidak boleh dijalankan di mesin pribadi Anda atau di laboratorium analisis statis
Metode inti Shinigami untuk mengekstraksi implan yang disuntikkan menggunakan proses pengosongan melibatkan pengaitan dua fungsi NT: NtResumeThread dan NtWriteVirtualMemory. Begini cara kerjanya:
Kait Utas NtResumeThread
Kait NtWriteVirtualMemory
--stop-at-write
diteruskan. Modul unpacker generik Shinigami menandai area memori yang baru dialokasikan dengan bit PAGE_GUARD, modul ini juga menerapkan bit ini jika area memori yang ada memiliki perlindungan yang digantikan oleh sesuatu yang dapat dieksekusi. Dengan menggunakan halaman penjaga, ia dapat melacak area memori mana yang akan digunakan untuk mengalokasikan beberapa gambar shellcode atau PE.
Untuk setiap kode shell yang terdeteksi, Shinigami menyimpan kode shell mentah itu sendiri ke dalam disk. Ini juga memindai wilayah memori tersebut untuk menemukan file PE dan menyimpannya juga. Shinigami memperlakukan setiap eksekusi kode shell yang berbeda sebagai tahap baru, jadi pada akhirnya, Anda akan memiliki direktori kerja dengan file bernama filename_shellcode_STAGENUM.bin or .exe
.
Alat ini memiliki beberapa opsi:
Usage: Shinigami [--help] [--version] [--output VAR] [--stop-at-write] [--verbose] [--only-executables] [--exported VAR] program_name
Positional arguments:
program_name Name of the program to execute
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
-o, --output Directory to dump artefacts
--stop-at-write Unhollow: Stop the execution when the PE file is being to be written
--verbose Display a verbose output
-p, --only-executables Only extract PE artefacts
-e, --exported Exported Function: Choose a exported function to execute if the target is a DLL (rundll will be used)
Beberapa opsi penting adalah:
-o, --output : Menentukan direktori untuk membuang artefak yang diekstraksi. Secara default, artefak yang diekstraksi akan disimpan ke direktori bernama output di direktori kerja saat ini. Anda dapat menentukan direktori lain dengan meneruskan jalurnya sebagai argumen.
--stop-at-write : Argumen ini digunakan selama pembongkaran proses yang berlubang. Ketika Shinigami mendeteksi bahwa file PE sedang ditulis ke proses berlubang, ia akan menghentikan eksekusi dan menyimpan file PE yang diekstraksi. Opsi ini dapat berguna jika Anda ingin menghindari eksekusi seluruh proses berlubang dan hanya perlu mengekstrak kode yang belum dibongkar.
--verbose : Menampilkan keluaran verbose. Ini bisa berguna untuk men-debug atau memahami cara kerja Shinigami.
Menguji melawan Dridex |
Setelah ekstraksi selesai, prosesnya dihentikan dan Anda akan mendapatkan (saya harap begitu) PE yang diekstraksi:
Implan yang dibuang |
Implan yang terdeteksi akan dibuang mengikuti format yang dijelaskan di bagian metode deteksi
Membongkar pemuat acak dijelaskan di sini |
Dalam contoh di atas, Shinigami secara otomatis mendeteksi perilaku loader generik dan mengekstrak semua kode shell dan gambar yang dieksekusi di dalamnya, tanpa memerlukan saklar khusus untuk mengaktifkan atau menonaktifkan rutin pembongkaran. Hal ini dimungkinkan karena Shinigami berbagi beberapa fungsi dengan modul unhollow, menggunakan kait bersama yang disediakan oleh perpustakaan Gancho.
Membongkar Emotet DLL |
Shinigami juga memiliki dukungan DLL dan kemampuan untuk membangun kembali biner yang disuntikkan menggunakan header DOS yang terpisah. Khususnya, sampel malware seperti Emotet menggunakan teknik ini untuk menghindari pemindai PE dalam memori. Shinigami mendeteksi bagian yang hilang (header DOS) dan menggunakan heuristik untuk merekonstruksinya.
Raih selera Anda di halaman Rilis.
Akan luar biasa jika Anda membantu proyek ini, jadi jika Anda mau, berikut adalah dependensi dan langkah-langkahnya
Silakan buka masalah atau tarik permintaan untuk perubahan apa pun yang ingin Anda lakukan.
Gambar maskot keren ini terinspirasi dari Bleach dan dihasilkan oleh Dall-E.