
Stringsifter adalah alat pembelajaran mesin yang secara otomatis memberi peringkat string berdasarkan relevansinya untuk analisis malware.
Stringsifter membutuhkan Python Versi 3.9 atau yang lebih baru. Jalankan perintah berikut untuk mendapatkan kode, jalankan tes unit, dan gunakan alat:
pip install stringsifterUntuk pengembangan, gunakan puisi:
git clone https://github.com/mandiant/stringsifter.git
cd stringsifter
poetry install --with devUntuk menjalankan tes unit dari direktori pemasangan stringsifter:
poetry run tests -v Perintah pip install menginstal dua skrip runnable flarestrings dan rank_strings ke lingkungan Python Anda. Saat berkembang dari sumber, gunakan pipenv run flarestrings dan pipenv run rank_strings .
flarestrings meniru fitur strings GNU Binutils, dan rank_strings menerima input pipa, misalnya:
flarestrings < my_sample > | rank_strings rank_strings mendukung sejumlah argumen baris perintah. Argumen Posisi input_strings menentukan file string untuk memberi peringkat. Argumen opsionalnya adalah:
| Pilihan | Arti |
|---|---|
| --scores (-s) | Sertakan skor peringkat dalam output |
| --limit (-l) | Batas output ke limit teratas peringkat string |
| --min-score (-m) | Batasi output ke string dengan skor> = min-score |
| --Berang (-B) | Tentukan folder output strings untuk pemrosesan batch |
String peringkat ditulis ke output standar kecuali jika opsi --batch ditentukan, menyebabkan output peringkat ditulis ke file yang bernama <input_file>.ranked_strings .
flarestrings mendukung opsi -n (atau --min-len ) untuk mencetak urutan karakter yang setidaknya memiliki karakter min-len , bukannya default 4. Misalnya:
flarestrings -n 8 < my_sample > | rank_stringsAkan mencetak dan hanya memberi peringkat panjang dengan panjang 8 atau lebih.
docker build -t stringsifter -f docker/Dockerfile .flarestrings atau rank_strings untuk menggunakan perintah masing -masing. Perintah yang dimasukkan dapat digunakan dalam pipa: cat < my_sample > | docker run -i stringsifter flarestrings | docker run -i stringsifter rank_strings-v untuk mengekspos direktori host ke wadah: docker run -v < my_malware > :/samples -it stringsifter Di mana <my_malware> berisi sampel untuk analisis, misalnya:
docker run -v $HOME /malware/binaries:/samples -it stringsifterflarestrings /samples/ < my_sample > | rank_strings < options >Semua argumen baris perintah didukung dalam skrip yang dimasukkan.
Stringsifter dapat diterapkan pada daftar string yang sewenang-wenang, menjadikannya berguna bagi para praktisi yang ingin mendapatkan wawasan dari sumber-sumber pengumpulan intelijen alternatif seperti tempat pembuangan memori hidup, lari kotak pasir, atau binari yang mengandung string yang dikaburkan. Sebagai contoh, FireEye Labs mengacaukan string solver (benang) mengekstrak string yang dapat dicetak seperti halnya string , tetapi juga mengungkapkan string yang dikaburkan yang telah dikodekan, dikemas, atau dibangun secara manual pada tumpukan. Ini dapat digunakan sebagai pengganti in-line untuk string, artinya stringsifter dapat dipanggil dengan cara yang sama pada output benang menggunakan perintah berikut:
$PY2_VENV /bin/floss –q < options > < my_sample > | rank_strings < options >Catatan:
–q menekan header dan format untuk menunjukkan hanya string yang diekstraksi. Untuk mempelajari lebih lanjut tentang opsi benang tambahan, silakan lihat dokumen penggunaannya.floss atau rank_strings harus menyertakan jalur relatif yang merujuk pada lingkungan virtual Python.strings lari Distribusi ini mencakup program flarestrings untuk memastikan output yang dapat diprediksi di seluruh platform. Jika Anda memilih untuk menjalankan strings yang diinstal sistem Anda, perhatikan bahwa opsinya tidak konsisten di seluruh versi dan platform:
Sebagian besar distribusi Linux termasuk program strings dari GNU binutils. Untuk mengekstrak string "lebar" dan "sempit", program harus dijalankan dua kali, menyalurkan ke file output:
strings < my_sample > > strs.txt # narrow strings
strings -el < my_sample > >> strs.txt # wide strings. note the ">>" Beberapa versi strings BSD yang dikemas dengan macO tidak mendukung string lebar. Perhatikan juga bahwa opsi -a untuk string untuk memindai seluruh file dapat dinonaktifkan dalam konfigurasi default. Tanpa -a string informatif mungkin hilang. Kami merekomendasikan untuk menginstal Binutils GNU melalui Homebrew atau MacPorts untuk mendapatkan versi strings yang mendukung karakter luas. Gunakan perawatan untuk memohon versi strings yang benar.
strings tidak diinstal secara default di Windows. Kami merekomendasikan untuk menginstal Windows Sysinternals, Cygwin, atau Malcode Analyst Pack untuk mendapatkan strings kerja.
Versi stringsifter ini dilatih menggunakan output string dari binari malware sampel yang terkait dengan dataset Ember pertama. Label ordinal dihasilkan dengan menggunakan prosedur pengawasan yang lemah, dan pembelajaran yang diawasi dilakukan oleh pohon keputusan yang ditingkatkan gradien dengan fungsi objektif pembelajaran-ke-peringkat. Lihat tautan cepat untuk detail teknis lebih lanjut. Harap dicatat bahwa data yang berlabel atau kode pelatihan saat ini tidak tersedia, meskipun kami dapat mempertimbangkan kembali pendekatan ini dalam rilis mendatang.
Kami menggunakan masalah github untuk memposting bug dan permintaan fitur.
flarestrings berasal dari benang alat yang sangat baik.