Difference between revisions of "SNORT-RULES: Coba Menulis Rules untuk pemula"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
(19 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Sumber: courses.umass.edu/cs415/labs/lab2/415-lab2-Snort.pdf | Sumber: courses.umass.edu/cs415/labs/lab2/415-lab2-Snort.pdf | ||
+ | |||
+ | Sebuah pendeteksi penyusup / Intrusion Detection System (IDS) logika bekerjanya seperti anti-virus, engine pendeteksi hanya akan bekerja dengan benar kalau database-nya benar. Kalau serangan tersebut tidak ada dalam database maka serangan tersebut tidak akan terdeteksi. Sial-nya database tersebut adalah buatan manusia, yang harus telaten mendokumentasinya bentuk paket / isi paket serangan, kemudian menuangkannya ke dalam sebuah aturan / rules. | ||
+ | |||
+ | Snort Intrusion Detection System (IDS) mempunyai kemampuan yang baik untuk membaca paket yang lewat di jaringan. Snort IDS mirip dengan tcpdump / wireshark, tetapi memiliki output yang lebih bersih dan bahasa aturan yang lebih fleksibel. Sama seperti tcpdump / wireshark, snort akan mendengarkan antarmuka tertentu, atau membaca jejak paket dari sebuah file. Umumnya administrator keamanan diminta untuk melihat jejak paket untuk menganalisa serangan yang terjadi. Salah satu yang nampaknya akan amat sangat bermanfaat adalah kemampuan untuk menulis snort rules untuk mendeteksi serangan. Disini kita akan belajar bagaimana menggunakan snort untuk membaca jejak dan belajar bagaimana menulis aturan / rules baru. | ||
+ | |||
+ | Tujuan utama snort sebagai IDS adalah untuk bereaksi jika ada rules yang cocok dengan paket yang masuk. Reaksi yang di berikan Snort IDS bisa bermacam-macam tergantung kebutuhan / kemauan yang memprogram, bisa di catat / "log", bisa memberikan "alert" bagi administrator keamanan jaringan. | ||
Line 5: | Line 11: | ||
* server dengan snort yang di instalasi | * server dengan snort yang di instalasi | ||
+ | |||
==Bacaan== | ==Bacaan== | ||
Line 13: | Line 20: | ||
* http://www.snort.org/docs/snort_manual/node16.html - How to Write Snort Rules and Keep Your Sanity | * http://www.snort.org/docs/snort_manual/node16.html - How to Write Snort Rules and Keep Your Sanity | ||
− | + | ==Beberapa perintah bermanfaat== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Melihat perintah snort | |
snort –help | snort –help | ||
+ | |||
+ | Contoh membaca log | ||
snort –r /tmp/snort-ids-lab.log -P 5000 –c /tmp/rules –e –X -v | snort –r /tmp/snort-ids-lab.log -P 5000 –c /tmp/rules –e –X -v | ||
− | + | Versi snort yang baru punya masalah saat membaca checksum paket yang tidak benar. | |
− | + | Kita perlu menambahkan kalimat | |
− | + | ||
− | checksum | + | config checksum_mode : none |
− | |||
− | |||
− | |||
− | + | di bagian atas rules file jika kita memperoleh checksum problem. | |
− | |||
− | + | Logging ASCII agar local.rules bisa di baca dengan mudah | |
− | + | ||
− | + | ||
− | + | snort -c /etc/snort/snort.conf -l /var/log/snort/ -K ascii -D | |
+ | |||
+ | ==Rule Sederhana== | ||
+ | |||
+ | JIka kita instalasi snort dengan baik maka, semua aturan snort biasanya di simpan di folder /etc/snort/rules. Aturan tersebut berupa file-file dengan nama yang sesuai dengan kategori serangan, misalnya, virus.rules adalah file berisi aturan snort yang akan mendeteksi paket yang kemungkinan membawa virus. | ||
+ | |||
+ | Bagi kita yang akan berexperimen dengan aturan snort, sebaiknya mengedit file /etc/snort/rules/local.rules. Beri keterangan dengan tanda '#' di depan-nya. Keterangan tersebut perlu dibuat untuk mengingatkan kita tentang percobaan / aturan apa yang kita buat. | ||
+ | |||
+ | Secara umum, semua rules mengikuti aturan: | ||
action protocol address port direction address port (rule option) | action protocol address port direction address port (rule option) | ||
− | + | Penjelasan format, | |
− | * | + | * Pilihan action adalah "log" atau "alert". "alert" akan menuliskan semua alert ke sebuah file "alert" yang sama. Sementara log akan menyimpan traffic untuk masing-masing IP address yang bermasalah pada sebuah folder untuk di analisa lebih lanjut. |
− | + | * Bagian protocol harus di isi "tcp", "udp",or "icmp". "Any" tidak di ijinkan. | |
− | * | + | * Address dapat berupa notasi CIDR |
− | * | + | * Port dapat menggunakan range dan operator "!. Contoh log paket ke sekumpulan mesin dengan port tidak antara 6000-6010 |
− | * | ||
− | |||
− | |||
log tcp any any -> 192.168.1.0/24 !6000:6010 | log tcp any any -> 192.168.1.0/24 !6000:6010 | ||
− | * | + | * Operator arah "->" atau "<-" atau "<>" untuk traffic bi-directional antara dua address. |
− | + | ||
− | + | ||
+ | Disini kita akan belajar untuk membuat rules pendeteksi traffic telnet. Mengapa telnet perlu di deteksi? karena memang telnet sangat rentan untuk di sadap. | ||
+ | |||
+ | Semua aplikasi pada jaringan TCP/IP akan bekerja menggunakan nomor port tertentu. Telnet menggunakan nomor port 23. Aplikasi lain akan menggunakan nomor port yang lain, misalnya, web 80, https 443, smtp 25, pop3 110, imap 143. Daftar sebagian besar nomor port yang digunakan oleh aplikasi Internet bisa di lihat di file /etc/services. | ||
− | + | Setelah mengetahui nomor port telnet 23, maka kita dapat membuat aturan snort sederhana untuk mendeteksi telnet, sebagai berikut, | |
− | + | alert tcp any any -> 192.168.0.100 23 (msg: "Ada yang telnet ke mesin!"; sid:1000001;) | |
− | |||
− | |||
− | |||
− | |||
+ | arti dari rule di atas adalah, | ||
+ | * action: kasi tanda bahaya ("alert") | ||
+ | * semua paket ke telnet port (port 23) | ||
+ | * ke mesin 192.168.0.100 | ||
+ | * tambahkan string yang bisa di baca admin "Ada yang telnet ke mesin!" | ||
+ | * sid - rule ID start dari 1000000 | ||
− | + | ==Rule option== | |
− | + | ||
− | + | Rule option dapat menentukan task yang harus dilakukan jika address dan protocol cocok. | |
− | + | Contoh, untuk menangkap semua ICMP Echo message. Untuk percobaan ini kita perlu mematikan icmp rules yang ada di snort.conf | |
− | + | ||
− | + | vi /etc/snort/snort.conf | |
− | + | ||
− | + | Matikan | |
− | + | ||
− | + | # include $RULE_PATH/icmp-info.rules | |
− | + | # include $RULE_PATH/icmp.rules | |
− | + | ||
− | + | snort rule untuk menangkap semua ICMP echo message, | |
− | + | ||
− | + | alert icmp any any <> 192.168.0.232 any (msg:"Ada yang ECHO PING"; icode:0; itype:8; sid: 1000002; ) | |
− | + | alert icmp any any <> 192.168.0.232 any (msg:"Ada yang ECHO REPLY PING"; icode:0; itype:0; sid: 1000003; ) | |
+ | |||
+ | perhatikan mengapa itype = 8? atau itype = 0? | ||
+ | |||
+ | Catatan rule option: | ||
+ | |||
+ | * harus berada dalam kurung ( ) | ||
+ | * harus di akhiri dengan ; | ||
+ | * Opsi yang menarik untuk di explorasi "content", "flags", dan ipoption". | ||
+ | |||
+ | ==Contoh Rule== | ||
alert tcp $HOME_NET 23 -> $EXTERNAL_NET any (msg:"TELNET login incorrect"; | alert tcp $HOME_NET 23 -> $EXTERNAL_NET any (msg:"TELNET login incorrect"; | ||
Line 116: | Line 135: | ||
(msg:"SHELLCODE sparc NOOP"; content:"|a61c c013 a61c c013 a61c c013 a61c | (msg:"SHELLCODE sparc NOOP"; content:"|a61c c013 a61c c013 a61c c013 a61c | ||
c013|"; reference:arachnids,355; classtype:shellcode-detect; sid:646; rev:4;) | c013|"; reference:arachnids,355; classtype:shellcode-detect; sid:646; rev:4;) | ||
+ | |||
+ | ==Restart Snort== | ||
+ | |||
+ | Supaya local.rules bisa jalan dengan baik, | ||
+ | logging ASCII agar local.rules bisa di baca dengan mudah | ||
+ | |||
+ | killall snort | ||
+ | killall snort | ||
+ | snort -c /etc/snort/snort.conf -l /var/log/snort/ -K ascii -D | ||
==Phatbot Analysis== | ==Phatbot Analysis== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Coba iseng-iseng baca analisa tentang phatbot / polybot trojan di http://www.lurhq.com/phatbot.html. Coba buat rule nya. | ||
==Referensi== | ==Referensi== | ||
* courses.umass.edu/cs415/labs/lab2/415-lab2-Snort.pdf | * courses.umass.edu/cs415/labs/lab2/415-lab2-Snort.pdf | ||
+ | |||
+ | |||
+ | ==Pranala Menarik== | ||
+ | |||
+ | * [[SNORT]] |
Latest revision as of 20:12, 10 October 2019
Sumber: courses.umass.edu/cs415/labs/lab2/415-lab2-Snort.pdf
Sebuah pendeteksi penyusup / Intrusion Detection System (IDS) logika bekerjanya seperti anti-virus, engine pendeteksi hanya akan bekerja dengan benar kalau database-nya benar. Kalau serangan tersebut tidak ada dalam database maka serangan tersebut tidak akan terdeteksi. Sial-nya database tersebut adalah buatan manusia, yang harus telaten mendokumentasinya bentuk paket / isi paket serangan, kemudian menuangkannya ke dalam sebuah aturan / rules.
Snort Intrusion Detection System (IDS) mempunyai kemampuan yang baik untuk membaca paket yang lewat di jaringan. Snort IDS mirip dengan tcpdump / wireshark, tetapi memiliki output yang lebih bersih dan bahasa aturan yang lebih fleksibel. Sama seperti tcpdump / wireshark, snort akan mendengarkan antarmuka tertentu, atau membaca jejak paket dari sebuah file. Umumnya administrator keamanan diminta untuk melihat jejak paket untuk menganalisa serangan yang terjadi. Salah satu yang nampaknya akan amat sangat bermanfaat adalah kemampuan untuk menulis snort rules untuk mendeteksi serangan. Disini kita akan belajar bagaimana menggunakan snort untuk membaca jejak dan belajar bagaimana menulis aturan / rules baru.
Tujuan utama snort sebagai IDS adalah untuk bereaksi jika ada rules yang cocok dengan paket yang masuk. Reaksi yang di berikan Snort IDS bisa bermacam-macam tergantung kebutuhan / kemauan yang memprogram, bisa di catat / "log", bisa memberikan "alert" bagi administrator keamanan jaringan.
Alat
- server dengan snort yang di instalasi
Bacaan
- www.snort.org
- http://www.snort.org/docs/FAQ.txt - Snort FAQ
- http://www.snort.org/docs/snort_manual/node2.html - Snort Overview
- http://www.snort.org/docs/snort_manual/node16.html - How to Write Snort Rules and Keep Your Sanity
Beberapa perintah bermanfaat
Melihat perintah snort
snort –help
Contoh membaca log
snort –r /tmp/snort-ids-lab.log -P 5000 –c /tmp/rules –e –X -v
Versi snort yang baru punya masalah saat membaca checksum paket yang tidak benar. Kita perlu menambahkan kalimat
config checksum_mode : none
di bagian atas rules file jika kita memperoleh checksum problem.
Logging ASCII agar local.rules bisa di baca dengan mudah
snort -c /etc/snort/snort.conf -l /var/log/snort/ -K ascii -D
Rule Sederhana
JIka kita instalasi snort dengan baik maka, semua aturan snort biasanya di simpan di folder /etc/snort/rules. Aturan tersebut berupa file-file dengan nama yang sesuai dengan kategori serangan, misalnya, virus.rules adalah file berisi aturan snort yang akan mendeteksi paket yang kemungkinan membawa virus.
Bagi kita yang akan berexperimen dengan aturan snort, sebaiknya mengedit file /etc/snort/rules/local.rules. Beri keterangan dengan tanda '#' di depan-nya. Keterangan tersebut perlu dibuat untuk mengingatkan kita tentang percobaan / aturan apa yang kita buat.
Secara umum, semua rules mengikuti aturan:
action protocol address port direction address port (rule option)
Penjelasan format,
- Pilihan action adalah "log" atau "alert". "alert" akan menuliskan semua alert ke sebuah file "alert" yang sama. Sementara log akan menyimpan traffic untuk masing-masing IP address yang bermasalah pada sebuah folder untuk di analisa lebih lanjut.
- Bagian protocol harus di isi "tcp", "udp",or "icmp". "Any" tidak di ijinkan.
- Address dapat berupa notasi CIDR
- Port dapat menggunakan range dan operator "!. Contoh log paket ke sekumpulan mesin dengan port tidak antara 6000-6010
log tcp any any -> 192.168.1.0/24 !6000:6010
- Operator arah "->" atau "<-" atau "<>" untuk traffic bi-directional antara dua address.
Disini kita akan belajar untuk membuat rules pendeteksi traffic telnet. Mengapa telnet perlu di deteksi? karena memang telnet sangat rentan untuk di sadap.
Semua aplikasi pada jaringan TCP/IP akan bekerja menggunakan nomor port tertentu. Telnet menggunakan nomor port 23. Aplikasi lain akan menggunakan nomor port yang lain, misalnya, web 80, https 443, smtp 25, pop3 110, imap 143. Daftar sebagian besar nomor port yang digunakan oleh aplikasi Internet bisa di lihat di file /etc/services.
Setelah mengetahui nomor port telnet 23, maka kita dapat membuat aturan snort sederhana untuk mendeteksi telnet, sebagai berikut,
alert tcp any any -> 192.168.0.100 23 (msg: "Ada yang telnet ke mesin!"; sid:1000001;)
arti dari rule di atas adalah,
- action: kasi tanda bahaya ("alert")
- semua paket ke telnet port (port 23)
- ke mesin 192.168.0.100
- tambahkan string yang bisa di baca admin "Ada yang telnet ke mesin!"
- sid - rule ID start dari 1000000
Rule option
Rule option dapat menentukan task yang harus dilakukan jika address dan protocol cocok. Contoh, untuk menangkap semua ICMP Echo message. Untuk percobaan ini kita perlu mematikan icmp rules yang ada di snort.conf
vi /etc/snort/snort.conf
Matikan
# include $RULE_PATH/icmp-info.rules # include $RULE_PATH/icmp.rules
snort rule untuk menangkap semua ICMP echo message,
alert icmp any any <> 192.168.0.232 any (msg:"Ada yang ECHO PING"; icode:0; itype:8; sid: 1000002; ) alert icmp any any <> 192.168.0.232 any (msg:"Ada yang ECHO REPLY PING"; icode:0; itype:0; sid: 1000003; )
perhatikan mengapa itype = 8? atau itype = 0?
Catatan rule option:
- harus berada dalam kurung ( )
- harus di akhiri dengan ;
- Opsi yang menarik untuk di explorasi "content", "flags", dan ipoption".
Contoh Rule
alert tcp $HOME_NET 23 -> $EXTERNAL_NET any (msg:"TELNET login incorrect"; content:"Login incorrect"; flags: A+; reference:arachnids,127;)
alert udp $EXTERNAL_NET any -> $HOME_NET 53 (msg:"EXPLOIT BIND Tsig Overflow Attempt"; content:"|80 00 07 00 00 00 00 00 01 3F 00 01 02|/bin/sh";)
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"SCAN FIN"; flags: F; reference:arachnids,27;)
alert tcp $EXTERNAL_NET any -> $HOME_NET 23 (msg:"MISC linux rootkit attempt lrkr0x";flags: A+; content:"lrkr0x";)5. alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 (msg:"WEB-CGI view-source access ";flags: A+; content:"/view-source?../../../../../../../etc/passwd"; nocase;reference:cve,CVE-1999-0174;)
alert icmp any any -> any any (msg:"ICMP Source Quench"; itype: 4; icode: 0;)
alert tcp $EXTERNAL_NET any -> $HOME_NET 53 (msg:"DNS EXPLOIT named overflow";flags: A+;content:"thisissometempspaceforthesockinaddrinyeahyeahiknowthisislamebutanyway whocareshorizongotitworkingsoalliscool"; reference:cve,CVE-1999-0833;)
alert tcp $EXTERNAL_NET any -> $HOME_NET 139 (msg:"NETBIOS SMB ADMIN$access"; flow:to_server,established; content:"\\ADMIN$|00 41 3a 00|"; reference:arachnids,340; classtype:attempted-admin; sid:532; rev:4;)
alert ip $EXTERNAL_NET $SHELLCODE_PORTS -> $HOME_NET any (msg:"SHELLCODE sparc NOOP"; content:"|a61c c013 a61c c013 a61c c013 a61c c013|"; reference:arachnids,355; classtype:shellcode-detect; sid:646; rev:4;)
Restart Snort
Supaya local.rules bisa jalan dengan baik, logging ASCII agar local.rules bisa di baca dengan mudah
killall snort killall snort snort -c /etc/snort/snort.conf -l /var/log/snort/ -K ascii -D
Phatbot Analysis
Coba iseng-iseng baca analisa tentang phatbot / polybot trojan di http://www.lurhq.com/phatbot.html. Coba buat rule nya.
Referensi
- courses.umass.edu/cs415/labs/lab2/415-lab2-Snort.pdf