Memakai Snort Di Windows 7


Pada tulisan Memakai Snort Sebagai IPS Di Notebook, saya mencoba menjalankan Snort di Ubuntu. Kali ini, saya akan mencoba menjalankan Snort di sistem operasi Windows 7.

PENTING: Pada Windows, Snort hanya bisa bekerja sebagai Intrusion Detection System (IDS) dan tidak bisa bekerja sebagai Intrusion Prevention System (IPS).

Di Windows juga terdapat paket lengkap yang disebut Windows Intrusion Detection System (WinIDS). Akan tetapi, WinIDS sepertinya dibuat untuk dipakai pada IDS sensor standalone sehingga dilengkapi berbagai paket termasuk laporan via web dan logging ke database MySQL. Karena hanya ingin menjalankan Snort pada komputer yang sama, saya men-download installer Snort 2.9.5 dari http://www.snort.org/downloads/2417. Saya akan men-install Snort pada lokasi root directory sehingga akan terdapat sebuah folder C:\snort. Saya juga perlu men-download dan men-install WinPcap dari http://www.winpcap.org/install/bin/WinPcap_4_1_3.exe.

Saya akan mencoba menjalankan Snort. Sebelumnya, saya perlu menjalankan Command Prompt dalam modus Administrator. Caranya adalah dengan mengetik cmd di Start menu Windows 7 kemudian menekan tombol Ctrl+Shift+Enter, atau memilih icon Command Prompt, men-klik kanan dan memilih menu “Run As Administrator“. Setelah itu, saya memberikan perintah berikut ini:

C:\snort\bin\snort -W

Parameter -W adalah parameter khusus untuk Windows yang akan menampilkan daftar perangkat yang dapat ditangani oleh Snort nantinya. Nama device sepertinya diperoleh dari fungsi getAdapterList() milik WinPcap. Function tersebut akan mengambil informasi perangkat jaringan dari registry HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}. Nama yang ada diawali dengan NPF yang merupakan singkatan dari Netgroup Packet Filter, sebuah bagian inti dari WinPcap.

Saya perlu mencatat nama perangkat yang perlu dipantau oleh Snort. Contoh nama perangkat misalnya \Device\NPF_{5D24AE04-C486-83FB-8B5EC6C7F430}. Karena nama perangkat sulit dikenali, saya menentukan perangkat berdasarkan description (seperti 3Com EtherLink PCI) atau alamat IP.

Catatan untuk pengguna dial-up PPP: WinPcap tidak mendukung koneksi PPP/VPN pada sistem operasi Windows Vista ke atas. Pada Windows 2000/XP 32-bit, capture dapat dilakukan pada adapter dengan deskripsi (‘Adapter for generic dialup and VPN capture’). Informasi ini diperoleh dari FAQ WinPcap di http://www.winpcap.org/misc/faq.htm#Q-5. Bila adapter ‘generic dialup‘ ini tidak muncul pada saat memberikan perintah snort -W, maka capture frame PPP tidak dapat dilakukan. Saya tidak menemukan keterbatasan ini pada sistem operasi Linux yang memakai library libpcap (WinPcap adalah port dari libpcap untuk Windows).

Langkah berikutnya adalah mencoba menjalankan Snort untuk menampilkan packet yang dicapture oleh WinPcap. Caranya adalah dengan memberikan perintah berikut ini:

C:\snort\bin\snort -dev -i namaperangkat

Karena nama perangkat sulit untuk diingat, saya juga dapat menggunakan nomor urut (berdasarkan nilai index di tampilan snort -W), seperti pada perintah berikut ini:

C:\snort\bin\snort -dev -i 3

Setelah ini, bila terdapat aktifitas jaringan pada perangkat tersebut, Snort akan menampilkan informasi ke layar. Pada modus ini, Snort bekerja sama seperti tcpdump atau Wireshark. Untuk keluar, saya menekan tombol Ctrl dan C secara bersamaan.

Untuk memakai Snort sebagai IDS (Intrusion Detection System), saya perlu melakukan konfigurasi pada file C:\snort\etc\snort.conf.

Perubahan yang saya lakukan adalah mengubah beberapa path Linux menjadi Windows, yaitu:

dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/
dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so

Menjadi:

dynamicpreprocessor directory C:\Snort\lib\snort_dynamicpreprocessor
dynamicengine C:\Snort\lib\snort_dynamicengine\sf_engine.dll

Selain itu, saya juga perlu menghapus baris ini:

#dynamicdetection directory /usr/local/lib/snort_dynamicrules

Agar saya tidak perlu menentukan device setiap kali menjalankan Snort, saya menambahkan baris berikut ini pada snort.conf:

config interface: namadevice <== misalnya \Device\NPF_{5D24AE04-C486-83FB-8B5EC6C7F430}

Saya juga perlu menyesuaikan network variables, seperti isi dari HOME_NET (ip dari komputer yang dilindungi), DNS_SERVERS, dsb. Selain itu, saya juga menyesuaikan lokasi variabel berikut ini sesuai dengan lokasi di Windows:

var RULE_PATH c:\snort\rules
var SO_RULE_PATH c:\snort\so_rules
var PREPROC_RULE_PATH c:\snort\preproc_rules
var WHITE_LIST_PATH c:\snort\rules
var BLACK_LIST_PATH c:\snort\rules
...
config logdir: C:\snort\log
Selain itu, saya juga perlu menghapus baris berikut ini:
preprocessor normalize_ip4
preprocessor normalize_tcp: ips ecn stream
preprocessor normalize_icmp4
preprocessor normalize_ip6
preprocessor normalize_icmp6

Fungsi normalisasi packet tidak berfungsi di Windows. Hal ini tidak akan berpengaruh bila Snort dijalankan dalam modus Intrusion Detection System (IDS) karena mereka hanya akan aktif bila Snort dipakai dalam modus Intrusion Prevention System (IPS).

Saya juga perlu menentukan output dari Snort (pesan bila terdapat hal mencurigakan). Paket yang lengkap WinIDS menampung output Snort ke dalam database dan memungkinkan hasilnya dibaca melalui web browser. Tapi saat ini yang saya butuhkan hanya menampilkan output ke layar command prompt, sehinggga saya menambahkan baris berikut ini pada file konfigurasi Snort:

output alert_fast: stdout

Untuk menjalankan Snort sebagai IDS, saya akan menggunakan perintah berikut ini:

C:\snort\bin\snort -c C:\snort\etc\snort.conf

Bila perintah tersebut diberikan saat ini, Snort akan protes dengan kesalahan seperti berikut ini:

ERROR: C:\snort\etc\c:\snort\rules/local.rules(0) Unable to open rules file "C:\snort\etc\c:\snort\rules/local.rules": Invalid argument.

Mengapa demikian? Isi dari folder rules saat ini masih kosong! Snort adalah IDS yang melakukan analisa packet (lalu lintas data di jaringan). Bila terdapat aktifitas jaringan yang mencurigakan, Snort akan melaporkannya. Snort mengetahui aktifitas packet mencurigakan atau tidak berdasarkan rules. Sourcefire selaku pembuat Snort juga menyediakan rules dan terus memperbaharuinya seiring dengan tren serangan. User yang membayar akan mendapatkan rules terbaru, sementara user yang mendaftar dapat memperoleh rules tersebut 30 hari kemudian secara gratis. Sebagai informasi, rules Snort tidak harus dibuat oleh Sourcefire Vulnerability Research Team (VRT), tetapi bisa saja dibuat oleh pakar keamanan komputer lainnya.

Saya segera mendownload rules dari http://www.snort.org/snort-rules. Setelah itu, saya men-extract isinya ke folder instalasi Snort; hasil extract akan memiliki nama folder yang mirip dengan di instalasi Snort. Saya perlu berhati-hati agar tidak menimpa file snort.conf, tetapi hanya menerapkan isi baris yang berbeda saja. Untuk melihat perbedaan file di Windows melalui perintah command line, saya dapat menggunakan perintah PowerShell berikut ini (untuk membuka PowerShell, ketik ‘Window PowerShell’ di menu Start):

PS C:\> Compare-Object $(Get-Content c:\snort\etc\snort.conf) $(Get-Content C:\download\rules\etc\snort.conf)
InputObject SideIndicator
----------- -------------
# VERSIONS : 2.9.4.1 =>
include $RULE_PATH/file-java.rules =>
include $RULE_PATH/indicator-scan.rules =>
include $RULE_PATH/os-mobile.rules =>
include $RULE_PATH/protocol-dns.rules =>
include $RULE_PATH/protocol-nntp.rules =>
include $RULE_PATH/protocol-rpc.rules =>
include $RULE_PATH/protocol-scada.rules =>
include $RULE_PATH/protocol-snmp.rules =>
include $RULE_PATH/protocol-telnet.rules =>
include $RULE_PATH/protocol-tftp.rules =>
include $RULE_PATH/server-samba.rules =>
# VERSIONS : 2.9.5.0 <=
...

Perintah Compare-Object di Windows PowerShell dipakai untuk membandingkan dua objek yang berbeda, termasuk isi file. Side indicator => menunjukkan bahwa baris tersebut ada di rules yang saya download tetapi belum ada di file konfigurasi Snort saya. Oleh sebab itu, saya perlu menambahkan baris include di atas pada file konfigurasi Snort.

Kali ini, bila saya menjalankan Snort, saya memperoleh pesan kesalahan yang berbeda, seperti berikut ini:

Unable to open address file C:\Snort\rules\white_list.rules, Error: No such file or directory

Reputation preprocessor membutuhkan dua file, white_list.rules dan black_list.rules. Saat ini kedua file tersebut tidak ada sehingga saya perlu membuatnya secara manual (file kosong). Reputation preprocessor tidak akan bekerja bila tidak menemukan isi pada kedua file tersebut.

Setelah ini, Snort dapat dijalankan dengan baik dengan memberikan perintah:

C:\snort\bin\snort -c C:\snort\etc\snort.conf

Sampai disini Snort dapat dijalankan dengan baik. Tapi saya perlu memastikan bahwa Snort bekerja sebagai IDS. Untuk itu, saya menambahkan baris berikut ini pada file konfigurasi:

alert icmp any any -> any any (msg: "Seseorang sedang men-ping!"; sid: 1000001;)

Baris di atas adalah sebuah rule yang akan memberikan alert setiap kali terdapat paket ICMP (tidak terbatas pada ping!) yang ditangkap. Saya kemudian mematikan Snort dan menjalankan kembali, kemudian saya mencoba men-ping dari komputer lain. Berikut adalah hasil yang saya peroleh:

--== Initialization Complete ==--

,,_ -*> Snort! <*-
o" )~ Version 2.9.5-WIN32 GRE (Build 103)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/snort/snort-t
eam
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using PCRE version: 8.10 2010-06-25
Using ZLIB version: 1.2.3

Rules Engine: SF_SNORT_DETECTION_ENGINE Version 2.0 <Build 1>
Preprocessor Object: SF_SSLPP Version 1.1 <Build 4>
Preprocessor Object: SF_SSH Version 1.1 <Build 3>
Preprocessor Object: SF_SMTP Version 1.1 <Build 9>
Preprocessor Object: SF_SIP Version 1.1 <Build 1>
Preprocessor Object: SF_SDF Version 1.1 <Build 1>
Preprocessor Object: SF_REPUTATION Version 1.1 <Build 1>
Preprocessor Object: SF_POP Version 1.0 <Build 1>
Preprocessor Object: SF_MODBUS Version 1.1 <Build 1>
Preprocessor Object: SF_IMAP Version 1.0 <Build 1>
Preprocessor Object: SF_GTP Version 1.1 <Build 1>
Preprocessor Object: SF_FTPTELNET Version 1.2 <Build 13>
Preprocessor Object: SF_DNS Version 1.1 <Build 4>
Preprocessor Object: SF_DNP3 Version 1.1 <Build 1>
Preprocessor Object: SF_DCERPC2 Version 1.0 <Build 3>
Commencing packet processing (pid=xxxx)
07/20-12:13:08.176640 [**] [1:1000001:0] Seseorang sedang men-ping! [**] [Prior
ity: 0] {ICMP} xxx.xxx.xxx.xxx -> xxx.xxx.xxx.xxx
07/20-12:13:09.177903 [**] [1:1000001:0] Seseorang sedang men-ping! [**] [Prior
ity: 0] {ICMP} xxx.xxx.xxx.xxx -> xxx.xxx.xxx.xxx

Bila perlu, saya juga dapat mengaktifkan pendeteksian port scan, dengan menambahkan baris berikut ini pada file konfigurasi:

preprocessor sfportscan: proto { all } sense_level { medium } logfile { portscan.log }

Hasil alert bila terjadi port scan tidak akan ditampilkan ke layar, melainkan akan disimpan ke file C:\snort\log\portscan.log. Untuk mengujinya, saya dapat menggunakan nmap dari komputer lain.

Perlu diingat bahwa saat ini Snort bekerja dalam modus Intrusion Detection System (IDS). Detection disini benar2 hanya berarti mendeteksi dan memberitahu bila terjadi serangan! Tidak ada upaya untuk menanggulangi atau menghindari serangan. Hal ini berguna bila Snort dipakai dalam honeypot, sebuah sistem yang sengaja menarik perhatian hacker guna menganalisa teknik serangan mereka. IDS seperti Snort biasanya berada di lapisan sebelum firewall sehingga packet dapat dianalisa secara lengkap sebelum diteruskan ke firewall.

Pada Windows, Snort tidak dapat bekerja pada inline mode atau Intrusion Prevention System (IPS). Sebagai contoh, walaupun aktifitas port scan tercatat dan diketahui oleh pengguna, hasil port scan tetap diperoleh oleh penyerang! Selain itu, saya tidak menemukan cara untuk menkonfigurasi firewall bawaan Windows 7 untuk membiarkan Snort bekerja terlebih dahulu sebelum penyaringan dilakukan. Semua pengujian di atas saya lakukan dengan mematikan firewall bawaan. Hal ini tentunya tidak aman untuk keperluan sehari-hari.

Perihal Solid Snake
I'm nothing...

One Response to Memakai Snort Di Windows 7

  1. mau tanya nih mas, winpcap kan tidak mendukung dial up connection untuk os diatas vista, saya pake os windows server 2003 enterprise edition sp2 32bit untuk instalasi IDS ini dan kebetulan saya pake koneksi dial up mas buat penelitian tugas akhir, solusi agar adapter generic dial up dapat muncul saat melakukan perintah snort -W di cmd agar capture frame ppp dapat berjalan gimana ya mas? ada solusi mungkin. he terimakasih mas

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: