XÜSUSİ RABİTƏ VƏ İNFORMASİYA
TƏHLÜKƏSİZLİYİ DÖVLƏT XİDMƏTİ

KOMPÜTER İNSİDENTLƏRİNƏ QARŞI MÜBARİZƏ MƏRKƏZİ

İnsident bildir

Məqalələr > Snort - şəbəkə sistemi

7 İyul 2014

 Bu gün sizlərə Snort İDS olaraq istifadə edib şəbəkəyə olunan hücumların təyin edilməsini və loqlaşdırılmasını praktiki olaraq Laboratoriya şəraitində göstərəcəyik. Snort 1998 ci ildə Martin Roesch tərəfindən yazılmış və hal hazırda SourceFire şirkətinin aldığı Free OpenSource İDS | İPS sistemidir. Snort proqram təminatı olaraq fəaliyyət göstərir.

Snort

1)Performanc qabiliyyəti güclü olan
2)PCRE kitabxanasından istifadə edən
3)Aydın şəkildə loqlaşdırmağa icazə verən
4)Network Sniffer & Packet Dump
5)Ən vacib olanı open source bir proqram təminatıdır.
Rəsmi sayt.

http://www.snort.org/

KİMM Malware LAB olaraq sizlərə Snortu İDS modda necə istifadə etməyi praktiki olaraq göstərəciyik. Məlumat üçün bildiririk ki, testlərimizi Ubuntu Linux 2.6.32-38-generic kernel üzərində göstərəciyik. Snort haqqında internetdə xeyli sayda məlumat olduğu üçün o qədər də dərinə getmədən birbaşa paket yaxalama hissəsinə keçirik.

Snort install.
sudo apt-get install snort
[password]
Məqaləmizdə sizlərə uzun müddətdir hackerlərin ən çox istifadə etdiyi WEB hücum üsullarından biri olaraq sql injection-un yaxalama qaydaları haqqında bəhs edəciyik.


Test üçün kiçik scriptimiz belə olacaq:
<?php
$sql_query = $_GET['cat_id']; //Sql sorğumuzu cat_id –dən götürən dəyişən http://xxxxx.com/cat_id= query
//Bundan sonra artıq sql query-lərimizi bazaya göndərərək cavabı alır və client tərəfə göndəririk.
//Test zamanı sorğuları ekrana ötürəcəyik.
print("Sql sorgu=" . $sql_query);
?>

Uripath => http://xxxxx.com/cat_id=1 union select 1


Server side:
sudo tail –f /var/log/apache2/access.log
Nəticə.
192.168.x.x - - [11/Jun/2014:11:41:00 +0500] "GET /2.php?cat_id=1%20union%20select%201 HTTP/1.1" 200 320 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:x.x) Gecko/20100101 Firefox/x.x"

Bəli gördüyünüz kimi GET üsulu ilə surf olunan url normal fəaliyyət göstərir. İndi təsəvvür edin hackerler məhz bu url - da tapılmış bir boşluqdan faydalanaraq Sql-in köməkliyi ilə istifadəçiyə və system inzibatçısına aid məlumatları oğurlamağa çalışırlar.
Normal halda bizə tcpdump və wireshark kimi proqram təminatları heç cür kömək edə bilməz. Bundan əlavə olaraq da access.log kimi apache loglarının saxlandığı faylda həmçinin eyni vaxtda serverə daxil olan bu qədər sorğuların içərisindən Sql injection hücümunu təyın etməyiniz mümkün deyil. Bu cür hallarda məhz Snort kimi proqram təminatları köməyimizə çata bilər.
Snort yazdığınız qaydalara(rules) uyğun olaraq şəbəkəni dinləyir və beləliklə uyğun qaydaya rast gəldiyində sistem inzibatçısına bu haqda məlumat verir. Məsələn gəlin başlıyaq select ifadəsindən.
Select Sql injection sorğularının hamısında istifadə olunur.
İndi gəlin kiçik bir qayda yazaq ki, Snort tərkibində Select sözü keçən hər paket haqqında bizə məlumat versin.
I rule:
alert tcp any any > 192.168.x.x 80 (content “Select”;msg:”Sql injection hucumuna cehd edildi!”;sid=1100)
Bu qaydamızı istənilən qovluğa (sqli_detection.rule) save edirik.
Və Snort command line:
sudo snort A console –ieth3 –c /home/cert-lab/Desktop/sqli_detection.rule –y

Bəli snort uğurla işə düşdü. İndi isə yenidən client tərəfdən server tərəfə sorğu göndəririk və budur artıq snort paketimizi yaxaladı.

Consol əmrlərinə diqqət yetirək.
Sudo –root access
Snort – Snort proqramı
-A console – Təhlükə mesajını birbaşa consol ekranında göstər.
-c – Qayda faylımız rule file.
-ieth3 - ethernet 3 interfeysinə qulaq as.
-y loglara timestampıda əlavə et.

İndi gəlin bu tip bir sorğunu yoxlayaq.
http://192.168.56.101/2.php?cat_id=SeLeCT
Yuxarıdakı, urlda Select-in yazılış formasına diqqət yetirin. Bu tip bir sorğu zamanı Snort necə reaksiya verəcək?Gəlin yoxlayaq. Sorğunu göndəririk və nəticə -> NULL. Snort bu tip bir sorğunu təyin etmədi. Səbəbi Snort normal olaraq qaydaları case-sensitive modda oxuyur. Yəni Select necə yazılıbsa o cür oxuyur və analiz edir. Buna görə yuxarıdakı metod-da snort SeLeCT kəliməsini detect edə bilmədi.
Bu isə bizim işimizə heç yaramır!!!
Çün ki,hücüm edən şəxsin hansı ardıcılığı gedəcəyini bilmirik. Çıxış yolu rule faylına növbəti parametri əlavə etməkdir.
nocase;
alert tcp any any > 192.168.x.x 80 (content “Select”;msg:”Sql injection hucumuna cehd edildi!”;nocase;sid=1100)
İşə salıb yoxlayırıq və nəticə müsbətdir. Burda nəyə diqqət etmək lazımdır. Detection word seçərkən diqqətli olun. Sql hücümlarını analiz edin və statik kəlimələri toplamağa çalışın və məhz bu tip dəqiq kəlimələrdən istifadə edin.
Unutmayın Snortun bacarığı bununla kifayətlənmir. Binary detection(hex bytes) ,PCRE, distance,offset kimi parametlərlə demək olar şəbəkə qatında sizi hər cür təhlükələrə qarşı qoruya bilər.
P.S Snort haqqında danışmağımız boş yerə deyildi.
Çün ki, KİMM Malware LAB olaraq bundan sonrakı, virus analizlərimizdə sizlərə virusları şəbəkə qatında Snort ilə yaxalamağı göstərəcəyimiz zaman beyninizdə Snort nədir?nə işə yarıyır? deyə bir sual formalaşmaması üçün məhz sizlərə snort haqqında qısa da olsa məlumat verdik.
Bundan sonrakı, məqalələrimizdə də Snort-a tez-tez rast gələcəksiniz və Snort haqqında bilikləriniz artacaqdır.