BASS - kerangka kerja untuk sintesis otomatis tanda tangan anti-virus

Halo semuanya. Kurang dari sepuluh hari tersisa hingga dimulainya kursus "Rekayasa Balik" . Dalam hal ini, kami ingin membagikan terjemahan lain yang menarik tentang topik tersebut. Ayo pergi!



Ulasan singkat




Gambaran ancaman berubah dengan cepat - serangan cyber baru terus muncul, dan yang lama menjadi lebih canggih. Dalam keadaan ini, profesional keamanan menghadapi tantangan yang semakin kompleks. Setiap hari mereka harus memproses dan menganalisis jutaan sampel malware yang sebelumnya tidak dikenal dan sepenuhnya baru, mengembangkan tanda tangan anti-virus yang efektif untuk menggambarkan seluruh keluarga malware, dan memastikan skalabilitas alat ketika jumlah sampel untuk analisis meningkat. Pada saat yang sama, perlu untuk memperhitungkan sumber daya yang terbatas untuk alat otomatisasi analisis malware. Untuk membantu profesional TI menangani beragam tantangan ini, Talos menawarkan platform open source baru yang disebut BASS.

BASS (dibaca sebagai "bass") adalah kerangka kerja untuk secara otomatis menghasilkan tanda tangan anti-virus berdasarkan sampel dari kelompok kode berbahaya yang terbentuk sebelumnya. Ini bertujuan untuk mengurangi konsumsi sumber daya oleh inti ClamAV dengan meningkatkan proporsi tanda tangan berbasis template relatif terhadap tanda tangan hash, dan untuk menyederhanakan pekerjaan analis mengembangkan tanda tangan berbasis template. Dengan dukungan wadah Docker, kerangka kerja berskala baik.

Perlu dicatat bahwa sejauh ini hanya versi alpha BASS yang tersedia dan masih banyak yang harus diselesaikan. Proyek ini memiliki kode sumber terbuka, dan kami secara aktif mengerjakannya, jadi kami akan dengan senang hati menerima umpan balik dari masyarakat dan rekomendasi untuk perbaikannya. Kode sumber untuk BASS tersedia di sini .

Proyek BASS diumumkan pada 2017 pada konferensi REcon di Montreal, Kanada.

Relevansi


Spesialis talos menerima lebih dari 1,5 juta sampel unik setiap hari. Sebagian besar, mereka berhubungan dengan ancaman yang diketahui dan segera dihilangkan oleh pemindai malware (ClamAV). Namun, setelah pemindaian, ada banyak file yang masih perlu analisis lebih lanjut. Kami menjalankannya di kotak pasir dan melakukan analisis dinamis, yang memungkinkan kami untuk memisahkannya menjadi berbahaya dan aman. Kami memproses sampel malware yang dipilih pada tahap ini untuk membuat tanda tangan ClamAV berdasarkan pada mereka, yang akan membantu untuk memfilter lebih lanjut ancaman ini pada tahap sebelumnya, selama pemindaian.



Selama tiga bulan, dari Februari hingga April 2017, 560.000 tanda tangan baru ditambahkan ke basis data ClamAV, yaitu, peningkatan 9.500 tanda tangan per hari. Sebagian besar dari mereka kami terima secara otomatis dalam bentuk tanda tangan hash. Tanda tangan tersebut memiliki satu kelemahan signifikan dibandingkan dengan tanda tangan atau tanda tangan bytecode (ini adalah dua jenis lain yang didukung oleh inti ClamAV): satu tanda tangan hash hanya sesuai dengan satu file. Selain itu, peningkatan jumlah tanda tangan hash mengarah pada fakta bahwa basis data ClamAV mengambil lebih banyak memori. Itu sebabnya kami lebih suka tanda tangan berbasis pola. Mereka jauh lebih sederhana dan lebih cepat untuk dikelola daripada bytecode, dan pada saat yang sama mereka memungkinkan Anda untuk menggambarkan seluruh kelompok file.

Bass


Kerangka kerja BASS dirancang untuk memfasilitasi pembuatan templat berbasis tanda tangan ClamAV. Secara otomatis menghasilkan mereka, memproses segmen kode biner yang dapat dieksekusi.



BASS mengambil sebagai kluster basis kode berbahaya, tetapi tidak termasuk sarana untuk membuatnya. Karena itu, teknologi ini tetap nyaman dan fleksibel. Kami sengaja membuat antarmuka input universal sehingga mudah untuk beradaptasi dengan sumber cluster baru. Sekarang kami menggunakan beberapa sumber seperti itu, termasuk kelompok berdasarkan indikator kompromi (IoC) dari kotak pasir kami, hashing struktural (ketika kami memiliki file yang dapat dieksekusi yang diketahui berbahaya dan kami sedang mencari sampel tambahan yang serupa strukturnya) dan malware yang diterima dari kampanye spam.

Pada tahap pertama, instance berbahaya melewati pembongkar kernel ClamAV. Itu dapat membongkar arsip berbagai format dan file yang dapat dieksekusi terkompresi (misalnya, UPX), dan juga mengekstrak objek yang disematkan (seperti file EXE di dalam dokumen Word). Artefak yang diterima dianalisis dengan cermat, informasi sedang dikumpulkan. Sekarang untuk tahap selanjutnya, penyaringan, kami menggunakan ukuran dan string sihir UNIX.

Kemudian cluster kode berbahaya disaring. Jika file tidak memenuhi persyaratan BASS (sementara platform hanya bekerja dengan file PE yang dapat dieksekusi, tetapi tidak sulit untuk menambahkan dukungan untuk file biner ELF dan MACH-O), mereka dihapus dari cluster atau, jika terlalu sedikit objek yang tersisa, cluster sepenuhnya ditolak.

Cluster yang difilter melanjutkan ke fase pembuatan tanda tangan. Pertama, file biner dibongkar. Untuk melakukan ini, kami menggunakan IDA Pro, tetapi dapat dengan mudah diganti dengan disassembler lain dengan kemampuan yang sama, misalnya, radare2.



Setelah pembongkaran, perlu untuk mengidentifikasi kode umum dalam sampel untuk menghasilkan tanda tangan atas dasar itu. Langkah ini penting karena dua alasan. Pertama, algoritma pembuatan tanda tangan membutuhkan sumber daya komputasi yang signifikan dan bekerja lebih baik dengan segmen kode pendek. Kedua, lebih disukai untuk mendapatkan tanda tangan dari sampel kode yang serupa tidak hanya secara sintaksis, tetapi juga secara semantik. Untuk membandingkan kode, kami menggunakan utilitas BinDiff. Sekali lagi, ini juga mudah untuk diganti, dan di masa depan kami dapat mengintegrasikan utilitas lain ke dalam kerangka kerja untuk perbandingan.

Jika cluster kecil, BinDiff membandingkan setiap executable dengan yang lainnya. Kalau tidak, ruang lingkup perbandingan berkurang, jika tidak prosesnya mungkin terlalu lama. Berdasarkan hasil yang diperoleh, grafik dibangun di mana simpul menunjukkan fungsi dan tepi menunjukkan kesamaannya. Untuk menemukan fungsi umum yang baik, cukup untuk menemukan subgraf yang terhubung dengan indeks kesamaan keseluruhan yang tinggi.



Subgraph ƒ1, ƒ2, ƒ4, ƒ6 dengan indikator kesamaan titik tinggi (lihat gambar di atas) adalah kandidat yang sangat baik untuk peran fungsi umum.

Segera setelah beberapa kandidat direkrut, kami membandingkannya dengan daftar putih untuk menghindari membuat tanda tangan berdasarkan fungsi biasa perpustakaan yang terkait secara statis dengan sampel. Untuk melakukan ini, fungsi dikirim ke instance Kam1n0 , database yang sebelumnya kami isi dengan fungsi dari sampel yang jelas murni. Jika klon dari fungsi apa pun terdeteksi, prosedur pemilihan subgraph diulang untuk memilih yang paling cocok dari yang tersisa. Jika verifikasi tidak mengungkapkan apa pun, set fungsi dilewatkan ke tahap berikutnya.

Kemudian generasi tanda tangan dimulai secara langsung. Tanda tangan ClamAV berbasis template dirancang untuk mendeteksi selanjutnya dalam data biner. Oleh karena itu, kami menerapkan semua fungsi yang diekstraksi algoritma pencarian untuk urutan umum terbesar (LCS, Long Term Common Sub berikutnyaence).

Dari sudut pandang komputasi, algoritma ini cukup mahal bahkan untuk dua sampel dan terasa lebih sulit untuk beberapa sampel, jadi kami menggunakan variasi heuristiknya, yang dijelaskan oleh Christian Blichmann . Hasilnya mungkin terlihat seperti ini:



Akhirnya, Anda harus mengujinya sebelum menerbitkan tanda tangan. Kami secara otomatis memeriksa tanda tangan menggunakan test suite kami untuk positif palsu. Untuk keandalan yang lebih besar, kami menggunakan Sigalyzer, fitur baru plug-in CASC IDA Pro ClamAV kami untuk menghasilkan dan menganalisis tanda tangan (ini akan diperbarui nanti). Sigalyzer menandai bagian dari biner yang cocok dengan tanda tangan ClamAV yang bekerja untuknya. Dengan demikian, representasi visual visual dari tanda tangan terbentuk.

Arsitektur


BASS diimplementasikan sebagai sekelompok kontainer Docker. Kerangka kerja ini ditulis dalam Python dan berinteraksi dengan semua alat yang diperlukan melalui layanan web. Arsitekturnya dibuat dengan analogi dengan proyek VxClass , yang juga menghasilkan tanda tangan ClamAV menggunakan IDA Pro dan BinDiff, tetapi kemudian akan ditutup dan, tidak seperti BASS, tidak dapat diakses oleh masyarakat umum.



Keterbatasan


BASS bekerja secara eksklusif dengan executable biner, karena tanda tangan dihasilkan dari kode sampel. Selain itu, hanya menganalisis executable x86 dan x86_64. Dukungan untuk arsitektur lain mungkin muncul di masa depan.

Sejauh ini, BASS tidak mengatasi dengan baik file virus, yang menanamkan potongan kode kecil dan sangat berbeda ke dalam objek yang terinfeksi, dan dengan backdoors, terutama terdiri dari kode biner yang tidak berbahaya (sering dicuri), yang dilengkapi dengan fungsi berbahaya. Kami sedang berjuang dengan kekurangan ini dengan bekerja untuk mengoptimalkan fase pengelompokan.

Dan sekali lagi kami ingin mengingatkan Anda bahwa BASS berada pada tahap pengujian alpha, dan sejauh ini tidak semuanya berfungsi dengan lancar. Tetapi kami berharap bahwa kami akan bermanfaat bagi masyarakat dengan mengembangkan kerangka kerja ini sebagai proyek sumber terbuka, dan kami akan senang dengan ide dan kritik.

Aplikasi


Perbedaan antara substring umum terbesar dan urutan umum terbesar

Ilustrasi berikut menunjukkan perbedaan antara substring umum terbesar dan urutan umum terbesar. Urutan umum terbesar ditunjukkan dalam publikasi kami oleh akronim Inggris LCS.



Itu saja. Dan sudah pada 20 Juni akan memungkinkan untuk berkenalan secara rinci dengan program kursus di open house , yang akan diadakan dalam mode webinar.

Source: https://habr.com/ru/post/id456426/


All Articles