Analisa Strings Malware


Pembahasan selanjutnya dari buku Saxe adalah tentang analisa strings malware. Strings adalah sequence dr printable character yang ada pada sebuah program binary. Dari strings ini beberapa info yang didapatkan misalnya:

  • perintah HTTP dan FTP untuk mengunduh web maupun file
  • Alamat IP & nama host yang dihubungi malware
  • Terkadang negara asal malware (dari bahasanya), walaupun kadang juga palsu
  • info tentang tujuan malware
  • info tentang compiler yang digunakan
  • bahasa pemrograman
  • scrip maupun kode html 

Walaupun seringkali malware menggunakan teknik obfuscate, enkripsi maupun compression, seringkali masih ada strings yang bisa dibaca.

Strings

untuk membaca strings, bisa menggunakan perintah command line/bash strings , contohnya:

$ strings filepath | less

Perintah ini untuk menampilkan strings dari sebuah file ke terminal. Secara default, perintah ini menampilkan strings dengan minimum length 4 bytes, tapi kita bisa mendefinisikan minimum length berbeda, dan menggunakan parameter lainnya. Untuk mengubah minimum length dapat menggunakan opsi -n, contohnya:

strings –n 10 filepath

hanya menampilkan strings dengan minimum length 10 bytes.

Analisa strings

Setelah mendapatkan strings dari sampel, tahap berikutnya adalah melakukan analisa, dan memahami strings tersebut. Contohnya dari sampel ircbot.exe kita buat dump ke ircbotstring.txt dengan perintah berikut:

$ strings ircbot.exe > ircbotstring.txt

Outputnya ratusan line text. berikut ini beberapa strings yang dimulai kata download:

[DOWNLOAD]: Bad URL, or DNS Error: %s.
[DOWNLOAD]: Update failed: Error executing file: %s.
[DOWNLOAD]: Downloaded %.1fKB to %s @ %.1fKB/sec. Updating. [DOWNLOAD]: Opened: %s.
---
[DOWNLOAD]: Downloaded %.1f KB to %s @ %.1f KB/sec.
[DOWNLOAD]: CRC Failed (%d != %d).
[DOWNLOAD]: Filesize is incorrect: (%d != %d).
[DOWNLOAD]: Update: %s (%dKB transferred).
[DOWNLOAD]: File download: %s (%dKB transferred).
[DOWNLOAD]: Couldn't open file: %s.

Ini indikasi malware berusaha mengunduh beberapa file tertentu ke komputer korban. Hasil analisa lainnya berikut ini, menunjukan sampel menjalankan fungsi sebagai web server yang melakukan monitor koneksi yang dilakukan korban.

GET
HTTP/1.0 200 OK
Server: myBot Cache-Control: no-cache,no-store,max-age=0 pragma: no-cache Content-Type: %s Content-Length: %i Accept-Ranges: bytes Date: %s %s GMT Last-Modified: %s %s GMT Expires: %s %s GMT Connection: close HTTP/1.0 200 OK
Server: myBot
Cache-Control: no-cache,no-store,max-age=0
pragma: no-cache
Content-Type: %s
Accept-Ranges: bytes
Date: %s %s GMT
Last-Modified: %s %s GMT
Expires: %s %s GMT
Connection: close
HH:mm:ss
ddd, dd MMM yyyy
application/octet-stream
text/html

String dtas menunjukan berbagai macam aktifitas http server. Server http ini mengijinkan penyerang untuk konek ke komputer target, melakukan screenshoot komputer korban, dan mengirimkan ke penyerang

Perintah GET melakukan rikues data dari internet. Perintah HTTP/1.0 200 OK adalah sebuah string HTTP yang memberikan return status code 200, bila koneksi berhasil. String Server:myBot memberi info bahwa nama server httpnya adalah myBot, dan mengindikasikan bahwa sampel membuat server http. 

reference:

Saxe, Joshua, and Hillary Sanders. Malware Data Science: Attack Detection and Attribution. No Starch Press, 2018.

,

Silahkan tuliskan tanggapan, kritik maupun saran