-->
Bayu_Ajie
Bayu_Ajie knowledge is free you can learn anything

Investigasi malware dengan yara rules

Apa itu yara rules? 


Hallo cak welcome back bareng saya Bayu Aji hehehe. Terima kasih sudah mendukung dan selalu membaca di blog Seccodeid pada kali ini saya akan membahas seputar malware lebih tepatnya yara rules, jika Anda mempelajari threat hunting pasti Anda pernah menemukan atau mengetahui tentang yara rules, IOC dan yang lainya. Yara rules membantu Anda untuk menganalisa malware atau programm berbahaya (malicious code) mengidentifikasi dan mengklasifikasikan sampel malware, yara dapat Anda install melalui sumber terbuka yang ditulis dalam C mentah dan disediakan secara gratis melalui Github

 

Jika Anda pernah bermain reverse engineering pasti tidak asing dengan kata - kata file signature, header file, metadata, hexa, decompiler dan lainya. Tools untuk reverse engineering seperti ida pro, ghidra, olydbg dan lainya, dan saya disini hanya membagikan sedikit informasi tentang malware dan cara kerja yara rules 


Yara sangat serbaguna dalam Anda dapat memanfaatkan yara untuk analisa apa saja entah itu malware, file, software dan lain sebagainya. Anda dapat melihat beberapa sample yara rules di dalam tautan di bawah ini 


 

"YARA is not just for binaries"

 

#Analisa dengan yara  

Okok sekarang saatnya mempelajari apa itu yara lalu bagaimana cara menggunakanya. Sebelum itu pastikan Anda sudah menginstall yara jika Anda menggunkan sistem operasi berbasis linux yang di khususkan untuk pentesting pasti sudah terinstall. Jika belum Anda dapat mempelajarinya melalui dokumentasi resmi https://yara.readthedocs.io/en/v3.5.0/gettingstarted.html software ini bersifat cross platform. Anda dapat menginstall di dalam sistem operasi Windows, Mac, Linux

 

Berikut adalah tampilan dari yara  

 

Anda dapat membuka terminal kemudian ketik yara --opsi. Misalnya yara --help maka output dari perintah tersebut adalah sebagai berikut : 


YARA 4.0.5, the pattern matching swiss army knife.
Usage: yara [OPTION]... [NAMESPACE:]RULES_FILE... FILE | DIR | PID

Mandatory arguments to long options are mandatory for short options too.

       --atom-quality-table=FILE        path to a file with the atom quality table
  -C,  --compiled-rules                 load compiled rules
  -c,  --count                          print only number of matches
  -d,  --define=VAR=VALUE               define external variable
       --fail-on-warnings               fail on warnings
  -f,  --fast-scan                      fast matching mode
  -h,  --help                           show this help and exit
  -i,  --identifier=IDENTIFIER          print only rules named IDENTIFIER
  -l,  --max-rules=NUMBER               abort scanning after matching a NUMBER of rules
       --max-strings-per-rule=NUMBER    set maximum number of strings per rule (default=10000)
  -x,  --module-data=MODULE=FILE        pass FILE's content as extra data to MODULE
  -n,  --negate                         print only not satisfied rules (negate)
  -w,  --no-warnings                    disable warnings
  -m,  --print-meta                     print metadata
  -D,  --print-module-data              print module data
  -e,  --print-namespace                print rules' namespace
  -S,  --print-stats                    print rules' statistics
  -s,  --print-strings                  print matching strings
  -L,  --print-string-length            print length of matched strings
  -g,  --print-tags                     print tags
  -r,  --recursive                      recursively search directories (follows symlinks)
       --scan-list                      scan files listed in FILE, one per line
  -k,  --stack-size=SLOTS               set maximum stack size (default=16384)
  -t,  --tag=TAG                        print only rules tagged as TAG
  -p,  --threads=NUMBER                 use the specified NUMBER of threads to scan a directory
  -a,  --timeout=SECONDS                abort scanning after the given number of SECONDS
  -v,  --version                        show version information


 

Okok, selanjutnya Anda akan mempelajari syntax dasar yara dan penulisan kode yara. Menurut saya syntax yara mirip seperti bahasa C, C++ atau Python, setelah saya menyelam lebih dalam dokumentasinya, Anda akan menemukan beberapa panduan yang sangat membantu, saya akan mencontohkan sedikit bagaimana cara menulis kode di yara berserta sample - samplenya. Berikut adalah basic yara rules 



rule example

{

    meta:

    description = "testing"


    strings:

    /* ini adalah komentar*/

    $variabel = "0acb884f2f4cfa75b726cb8290b20328c8ddbcd49f95a1d761b7d131b95bafec" //masukan hash value

    $variabel2 = "749bf48a22ca161d86b6e36e71a6817b478a99d935cd721e8bf3dba716224c84"

    $variabel3 = "cf1d992f776421f72eabc31d5afc2f2067ae856f1c9c1d6dc643a67cb9349d8c"


    condition:

    //kondisi untuk menampilkan output variabel dan kode hexa

    $variabel or $variabel2 or $variabel3

}


Output 


Baris perintah dapat Anda pelajari melalui opsi help, contoh yara --help atau mengunjungi tautan ini https://yara.readthedocs.io/en/v3.4.0/commandline.html Anda dapat mempelajari beberapa perintah yara. Selanjutnya ada contoh penulisan penjelasan untuk menulis yara 


#Write Your Own Rules

Menulis yara rules tidak terlalu sulit jika Anda mempertimbangkan panduan ini:


- Kriteria pertama yang Anda gunakan untuk mencocokkan harus menjadi bagian penting dari perilaku malware

 

- Kriteria ke dua harus cukup memadai untuk membedakan keluarga malware yang diuji dari keluarga malware lainnya

 

- Kriteria ke tiga harus menjadi sesuatu yang umum di sampel yang berbeda.


Setelah Anda menganalisis malware dan mengekstraksi data yang berguna dan dapat dikenali darinya, Anda kemudian dapat mengubah informasi tersebut menjadi string yara dan menggabungkannya dengan beberapa bentuk logika

 

#Basic

Setiap aturan di yara dimulai dengan aturan kata kunci diikuti oleh pengidentifikasi aturan. Pengidentifikasi harus mengikuti konvensi leksikal yang sama dari bahasa pemrograman C, mereka dapat berisi karakter alfanumerik dan karakter garis bawah, tetapi karakter pertama tidak boleh berupa angka. Pengidentifikasi aturan peka huruf besar-kecil dan tidak boleh melebihi 128 karakter. Kata kunci berikut dicadangkan dan tidak dapat digunakan sebagai pengenal:

 

#Strings

Ada tiga jenis string di yara: string heksadesimal, string teks, dan ekspresi reguler. String heksadesimal digunakan untuk mendefinisikan urutan byte mentah, sedangkan string teks dan ekspresi reguler berguna untuk menentukan bagian teks yang dapat dibaca. Namun string teks dan ekspresi reguler dapat juga digunakan untuk mewakili byte mentah melalui urutan escape


#Metadata

Metadata dapat ditambahkan untuk membantu mengidentifikasi file yang diambil oleh aturan tertentu. Pengidentifikasi metadata selalu diikuti dengan tanda sama dengan dan nilai yang ditetapkan. Nilai yang ditetapkan dapat berupa string, integer, atau nilai Boolean. Perhatikan bahwa pengidentifikasi atau nilai yang ditentukan di bagian metadata tidak dapat digunakan di bagian kondisi, satu-satunya tujuannya adalah untuk menyimpan informasi tambahan tentang aturan

 

#Author : Nama, alamat email, sosial media

#Date   : Aturan tanggal dibuat

#Version : Nomor versi aturan yara untuk melacak 

#Reference : Tautan ke artikel atau unduhan sampel, ini digunakan untuk memberikan informasi yang relevan tentang sampel malware yang dirancang untuk dideteksi oleh yara rules


#Description : Ikhtisar atau rangkiman singkat tentang tujuan aturan dan malware yang ingin dideteksi

#Hash : Daftar contoh hash yang digunakan untuk membuat aturan yara

 

#Hexadecimal strings

String heksadesimal memungkinkan tiga konstruksi khusus yang membuatnya lebih fleksibel: wild-card, lompatan, dan alternatif. Wild-card hanyalah placeholder yang dapat Anda masukkan ke dalam string yang menunjukkan bahwa beberapa byte tidak diketahui dan mereka harus cocok dengan apa pun. Karakter placeholder adalah tanda tanya (?). Di sini Anda memiliki contoh string heksadesimal dengan wild-card: 


 

Selengkapnya Anda dapat mempelajari melalui dokumentasinya. Anda dapat melihat penulisan yara pada tautan berikut https://yara.readthedocs.io/en/v3.4.0/writingrules.html Jika Anda mempunyai sample malware apapun itu Anda dapat mengetestnya sendiri entah itu ektensi .exe, file dan lain sebegainya. Kemduian Anda dapat menulis kode yara untuk mendapatkan beberapa informasi seperti author, file signature, hexa dan lainya, jika dijelaskan akan sangat panjang.    

 

#Automatically Generate Rules 

Dengan menggunakan Rule Generator dari Joe Sandbox, Anda dapat membuat file signature untuk Windows berdasarkan data perilaku statis dan dinamis. Perhatikan bahwa aturan yang sama berlaku seperti saat menggunakan sandbox analisis malware online gratis. Anda mengunggah file Anda ke layanan cloud eksternal, yang tidak boleh dilakukan dengan file atau data sensitif yang berisi segala bentuk kredensial pengguna


Jika Anda ingin mempelajari lebih luas. Setelah memepalajari ini. Anda dapat melanjutkan ke materi selanjutnya, berikut adalah yang saya ketahui : 


  • Reverse Engineering

  • C, ASM & C++ 

  • Logika

  • Sandbox 

  • Header file

  • File signature

  • Magic number 

  • Antivirus work

  • Bypass antivirus 

  • Virus work

  • Basic programm    

  • Metadata


Dari poin yang saya sebutkan di atas kurang lebih seperti itu, Anda dapat mempelajari sandbox dan memahami tentang file signature. Jika di telaah lebih lanjut masih ada beberapa lagi yang harus Anda pelajari lebih dalam dan saya belum menemukan hal seperti itu, untuk itu minimal kita cicil sedikit demi sedikit supaya dapat memahami poin poin atau dari basic terlebih dahulu 


Kesimpulan

Yara rules dapat dikatakan untuk menganalisa sebuah malware atau program berbahaya, software ini digunakan juga oleh developer antivirus maupun pembuat virus. Karena software ini dapat membantu pembuatan sebuah virus sebagai contoh mengidentifikasi siganture file, header file, meta data dan lainya. Seihingga pembuat virus dapat menganalisa kemudian menyermpunakan virusnya, untuk itu Anda selalu berhati - hati dalam menggunakan komputer

 

Referensi : 

https://yara.readthedocs.io/en/v3.4.0/writingrules.html 

https://cybersecurity.att.com/blogs/security-essentials/explain-yara-rules-to-me 

https://securityintelligence.com/signature-based-detection-with-yara/ 

Bayu_Ajie
Bayu_Ajie  knowledge is free you can learn anything

Komentar