Snort規則分析舉例

*Snort規則分析舉例html

Snort一種開源*檢測系統,當他做爲NIDS模式運行時,能夠分析網絡傳輸的數據包,當它發現能夠流量時就會根據事先定義好的規則發出報警,有關這些規則的介紹網上能夠輕鬆找到,可對於具體規則分析卻很少。下面分析了幾個典型可疑流量報警規則。ios

.1.可疑流量的報警程序員

假設一個場景:在內網中,你用Snort監控的VLAN中的若干網絡交換機,並經過Telnet來管理它們。在這種狀況下下面這條Snort規則所發出的警報就算是正常。咱們要打開Ossim系統中/etc/suricata/rules/emerging-telnet.rules配置文件,查看第53行,以下
Snort規則分析舉例
若是你把一樣這條規則用在了監控一個受禁止使用Telnet進行訪問的防火牆,那麼它發出的報警就很是重要,應該引發管理員的注意。就是說你必定要注意產生報警的具體環境,而不能一律而論。
下面在看個例子,Web有些資源是不讓訪問的,當有人試圖嘗試訪問一個Web服務器所禁止訪問的資源時,就會由下面這條規則所觸發報警。
打開emerging-misc.rules配置文件,查看第85行,以下shell

.2.空會話×××漏洞報警數據庫

早在Windows 2000系統時就發現了空會話×××漏洞(固然如今Windows 7/8系統已經消除此問題)在當時×××者能夠很輕鬆地利用空會話完成×××,經過在主機上面創建一個空會話,再經過Enum枚舉共享等方式,者可能會得到一個重命名管理員的賬戶,這是由於這個空會話回加載到全部該計算機賬戶組中。它使得不在域中的主機也能使用主機所使用的網絡。
Snort規則分析舉例
上圖使用 Net命令發起的成功空會話鏈接
當你使用Snort監控這些主機時,這種方式就會馬上暴露出來。在Ossim系統中先打開emerging-netbios.rules,查看249行,Netbios Null會話的規則以下:
Snort規則分析舉例
當一個×××者企圖經過匿名方式鏈接枚舉用戶或其它系統信息時,該規則將會被觸發。安全

.3.用戶權限獲取企圖服務器

有權使用一個普通用戶帳號的×××者,它能夠利用系統的各類漏洞來提高本身的權限,直到最高權限。這樣就能訪問未受權的數據。好比能夠經過修改.rhosts文件來獲取全
局訪問權限,下面是Snort規則檢測這樣的用戶權限獲取企圖行爲: 打開emerging-misc.rules,查看 139行
Snort規則分析舉例
在一個具體應用中提權的目標極可能是數據庫,用戶能夠訪問一種類型的數據,但可能但願訪問其它受限制的資源,另外,若是用戶得到超級用戶權限,它就能夠控制主機。下面咱們看看Snort中一個監控這種用戶提權的例子是Microsoft SQL Server的xp_cmd shell規則:
打開emerging-exploit.rules,查看931網絡

Xp_cmdshell能夠被用於執行SQL Server的系統命令。×××者可以使用xp_cmdshell安裝×××或執行能夠在Windows命令行下執行的任何程序。這個規則就能檢測這種×××行爲。ide

.4.失敗的權限提高報警規則學習

×××者提高用戶權限也不是一路順風,經常遇到問題,若是能在提權中,若是失敗就報警,失敗的登陸行爲就會觸發系統大量報警,這樣×××者的行爲就會被發現。下面舉的一個PCAnywhere失敗登陸規則就是一個是被的用戶權限獲取的例子,咱們打開emerging-policy.rules文件,查看1706行
Snort規則分析舉例
該規則檢測登陸PCAnywhere失敗的嘗試。

5.管理員權限獲取企圖

若是×××者能夠訪問Windows系統裏的Admin$共享資源,它就能夠訪問Windows系統目錄(c:\winnt\)但這麼作的人有時候並非真正的管理員,怎麼發現呢?下面這條規則就可能檢測這種行爲,打開emerging-netbios.rules文件,查看第303行。
Snort規則分析舉例

6.成功獲取管理員權限

Unix系統的passwd文件傳出是絕對不能發生在TFTP這樣不安全協議上的,TFTP協議既不須要認證,也不加密,很是危險。因此在一些Unix系統中能夠經過下面方式獲取passwd
$tftp 1.1.1.1
tftp>connect 1.1.1.1
tftp>get /etc/passwd /tmp/passwd.cracker
tftp>quit
若是經過Snort就能檢測到,經過TFTP傳輸 passwd文件的行爲,例如:
打開 emerging-tftp.rules查看89行規則以下:
Snort規則分析舉例
這條規則的報警就能夠表示×××者得到了對root用戶和其它用戶的控制權。
像這樣的例子還有用於檢測BSD Telnet守護進程×××的規則。打開Ossim 2.3系統的Snort規則庫中telnet.rules文件,查看第38行
Snort規則分析舉例

7).拒絕服務

舉例:發現Chargen/echo DOS×××,chargen服務端口爲UDP 19,echo 爲UDP 7,若是UDPchargen server 收到了一個封包就會回一個封包回去,並且若是發現與客戶端鏈接存在就會不斷髮送。若是是被利用爲ddos×××,這樣就會被放大佔用整個網絡帶寬。這裏×××者僞造了數據包,將兩臺開放Chargen/echo的服務器互指,結果形成資源耗盡而致使網絡不可用。

Snort規則分析舉例

圖 拒絕服務×××的例子
打開dos.rules的第1行

Snort規則分析舉例

該特徵檢測的DOS條件是一個Chargen/echo服務的無限循環。
還有一些DOS×××會出現一些異常的數據輸入,這些輸入的內容會是服務器癱瘓,固然,這是個比較老的漏洞,Microsoft FTP STAT globbing DOS就是一個典型,當×××者在Windows 2000 IIS 5.0的FTP服務器上發送STAT命令以後再追加一些異常的文件名匹配字符($g.*?等)時,頓時沒有打補丁的FTP服務器將會當即崩潰。咱們看看Snort應對此種×××的規則代碼,打開ftp.rules規則,查看66行:

Snort規則分析舉例

除此以外,其它DOS的規則用來檢測DDOS,DDOS×××利用大量的受害主機向目標主機發送大量請求,形成其癱瘓。這種行爲也能夠用Snort規則來檢測,如下是在收到DDOS×××時,在ACID系統裏發出的事件日誌。
#(2 - 10994) [2012-08-21 09:58:06] [arachNIDS/253] DDOS shaft synflood
IPv4: 195.27.218.62 -> 123.xxx.yyy.252
hlen=5 TOS=0 dlen=40 ID=28789 flags=0 offset=0 TTL=19 chksum=17659
TCP: port=13000 -> dport: 13000 flags=**S* seq=674711609
ack=39679596 off=5 res=0 win=25622 urp=39897 chksum=44744
Payload: none

#(2 - 10993) [2012-08-21 09:58:06] [arachNIDS/253] DDOS shaft synflood
IPv4: 195.27.218.62 -> 123.xxx.yyy.250
hlen=5 TOS=0 dlen=40 ID=28789 flags=0 offset=0 TTL=19 chksum=17661
TCP: port=13000 -> dport: 13000 flags=**S* seq=674711609
ack=1883199726 off=5 res=0 win=20738 urp=46580 chksum=22367
Payload: none
如下是Snort獲得的數據包分析
Snort:
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
21-09:37:16.080331 195.27.218.62:13000 -> 12.82.128.178:13000
TCP TTL:16 TOS:0x0 ID:39977 IpLen:20 DgmLen:40 DF
**S* Seq: 0x28374839 Ack: 0x26917D08 Win: 0x2240 TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Snort processed 1 packets.
Breakdown by protocol:
Action Stats:
TCP: 1 (100.000%) ALERTS: 0
UDP: 0 (0.000%) LOGGED: 0
ICMP: 0 (0.000%) PASSED: 0
ARP: 0 (0.000%)
IPv6: 0 (0.000%)
IPX: 0 (0.000%)
OTHER: 0 (0.000%)
本來發起一個序列號爲SYN包674711609,將產生一個SYN/ACK 674711610或者ACK 674711610,也許是shaft的程序員疏忽或者太懶了,當實際狀況是發起一個SYN包,它們爲每一個數據包使用了相同的TCP序列號。因此簡單的經過檢測6747116909的序列號,就能檢測這種×××,另外你還會發現序列號變成了0x28374839,爲何?其實十進制的674711609,表示爲十六進制爲0x28374839.
接下來咱們就要看看Snort規則如何防範這種×××,首先打開deleted.rules的第105行,以下:

Snort規則分析舉例
若是你們還關注如何手動從源碼安裝Snort系統,能夠關注個人Snort課程:https://edu.51cto.com/course/7896.html ,本課程介紹了IDS基礎,重點講解了Windows、CentOS和Ubuntu環境下的Snort安裝配置包括數據存儲數據展示的完整過程,同時提供了已經配置完成的Ubuntu14.04虛擬機和CentOS 6.8虛擬機環境;若是你還但願學習與之相關的安全案例分析請參閱《Unix/Linux網絡日誌分析與流量監控》一書。

相關文章
相關標籤/搜索