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/