摘? ?要:Snort是一個(gè)輕量級(jí)的開(kāi)源網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng),其作為入侵檢測(cè)工具在入侵防范方面得到了廣泛的應(yīng)用。針對(duì)當(dāng)前服務(wù)器容易受到不被日志機(jī)制、監(jiān)測(cè)系統(tǒng)和入侵檢測(cè)系統(tǒng)捕捉的隱蔽端口掃描攻擊,文章基于Snort入侵檢測(cè)系統(tǒng),分析了端口掃描的基本特征,進(jìn)行自定義Snort規(guī)則,以達(dá)到對(duì)隱蔽端口掃描攻擊的檢測(cè)和報(bào)警效果,更加促進(jìn)應(yīng)用層實(shí)現(xiàn)安全過(guò)濾。
關(guān)鍵詞:Snort入侵檢測(cè);端口掃描;入侵防范
中圖分類號(hào): D918? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
1 引言
端口掃描是一種收集信息型的網(wǎng)絡(luò)攻擊,以向目的主機(jī)TCP/IP服務(wù)端口發(fā)送探測(cè)數(shù)據(jù)包的方式進(jìn)行初步測(cè)試,再通過(guò)分析目的主機(jī)響應(yīng)的數(shù)據(jù)包獲取服務(wù)端口狀態(tài)、服務(wù)器版本、用戶漏洞等重要信息,并可通過(guò)端口掃描捕獲目的主機(jī)流出的IP數(shù)據(jù)包監(jiān)視其運(yùn)行情況。端口掃描技術(shù)作為惡意攻擊的前奏,當(dāng)這些重要信息泄露,將會(huì)嚴(yán)重威脅用戶的網(wǎng)絡(luò),并且隨著端口掃描技術(shù)的發(fā)展,端口掃描越來(lái)越隱蔽,難以發(fā)現(xiàn),再加上檢測(cè)過(guò)濾產(chǎn)品由于應(yīng)用環(huán)境的復(fù)雜性,客觀上常難以滿足實(shí)際應(yīng)用環(huán)境的需要。因此,針對(duì)服務(wù)器環(huán)境的需要來(lái)配置對(duì)端口掃描的檢測(cè)和防護(hù)是有必要的,通常可基于經(jīng)典入侵檢測(cè)工具Snort,結(jié)合針對(duì)性的規(guī)則實(shí)現(xiàn)。
Snort入侵檢測(cè)功能是基于它的規(guī)則庫(kù),規(guī)則庫(kù)中通過(guò)一種簡(jiǎn)單的規(guī)則描述語(yǔ)言,記錄網(wǎng)絡(luò)攻擊表現(xiàn)的一些特征。根據(jù)鑒別的數(shù)據(jù)包是否匹配規(guī)則描述的特征判斷是否是攻擊行為,結(jié)合基于Snort檢測(cè)機(jī)制,達(dá)到檢測(cè)防范效果。
2 端口掃描特征分析及演示
2.1 特征分析
互聯(lián)網(wǎng)上大多數(shù)應(yīng)用是基于TCP/IP協(xié)議,故對(duì)端口掃描的特征分析需基于TCP/IP協(xié)議,從分析TCP連接“三次握手”“四次揮手”以及相關(guān)數(shù)據(jù)包為出發(fā)點(diǎn),了解端口掃描基本特征。
TCP連接只存在請(qǐng)求和響應(yīng),請(qǐng)求和響應(yīng)都是對(duì)應(yīng)的數(shù)據(jù)報(bào)文。報(bào)文包含一些重要字段用于表示連接狀態(tài),有SYN、ACK、FIN、RST、URG、PSH。SYN用于初始化連接;ACK可以確認(rèn)收到的數(shù)據(jù);FIN作為斷開(kāi)連接標(biāo)志;RST用于重新建立連接;URG指示數(shù)據(jù)時(shí)緊急數(shù)據(jù),應(yīng)立即處理;PSH用于強(qiáng)制將數(shù)據(jù)壓入緩沖區(qū)[1]。故“三次握手”就是在客戶端和服務(wù)端之間三次TCP報(bào)文交換的過(guò)程,如圖1所示;“四次揮手”就是結(jié)合客戶端和服務(wù)端雙方的狀態(tài)來(lái)闡明鏈接釋放的過(guò)程,如圖2所示。
基于以上信息,對(duì)以下端口掃描方式進(jìn)行特征分析有幾點(diǎn)。
(1)TCP content()掃描。此掃描嘗試與每一個(gè)TCP端口進(jìn)行“三次握手”通信(SYN、SYN/ACK和ACK),會(huì)產(chǎn)生大量的連接請(qǐng)求以及錯(cuò)誤信息。若能夠成功建立連接,表明端口開(kāi)放,反之端口關(guān)閉。
(2)TCP SYN 掃描。此掃描不需要建立一個(gè)完全的TCP連接但需要Root權(quán)限,是一個(gè)半開(kāi)放的掃描。其通過(guò)掃描器發(fā)送一個(gè)SYN包,當(dāng)目標(biāo)主機(jī)端口返回一個(gè)SYN/ACK信息時(shí),表明該端口處于偵聽(tīng)狀態(tài),若返回一個(gè)PRST則反之。當(dāng)收到一個(gè)SYN/ACK,掃描器需返回一個(gè)RST關(guān)閉該連接,一般情況下可避免在目標(biāo)主機(jī)上留下掃描痕跡[2]。
(3)TCP FIN掃描。此掃描方式不依賴“三次握手”的過(guò)程,而是利用TCP連接“FIN”結(jié)束標(biāo)志位。主機(jī)端口關(guān)閉時(shí)會(huì)用適當(dāng)?shù)腞ST回復(fù)FIN數(shù)據(jù)包,而開(kāi)放的端口則會(huì)對(duì)這種可疑的數(shù)據(jù)報(bào)不加理睬并將其丟棄,此掃描是基于該思想來(lái)進(jìn)行,該類掃描相關(guān)報(bào)文常包含大量的“FIN”結(jié)束位標(biāo)志。該方式可用于通過(guò)被一些防火墻和包過(guò)濾器進(jìn)行監(jiān)視的指定端口。
(4)Xmas-Tree掃描。正常情況下,TCP數(shù)據(jù)包中的ACK、FIN、RST、SYN、URG、PSH標(biāo)志位并不能被同時(shí)設(shè)置。該掃描便是向目標(biāo)端口發(fā)送一個(gè)含有FIN(結(jié)束)、URG(緊急)和PUSH(彈出)標(biāo)志的分組,對(duì)于關(guān)閉的端口,目標(biāo)系統(tǒng)會(huì)返回RST標(biāo)志,而在目標(biāo)端口開(kāi)放的情況下,目標(biāo)主機(jī)將不返回任何信息,利用該特征從而判斷端口開(kāi)放情況。
(5)TCP空掃描。該掃描方式與Xmas-Tree掃描原理相同,但發(fā)送的數(shù)據(jù)包不同,該掃描向目標(biāo)端口發(fā)送一個(gè)不包含任何標(biāo)志位的分組,目標(biāo)端口關(guān)閉的端口應(yīng)該會(huì)返回RST標(biāo)志位。
(6)IP段掃描。此掃描并不是直接發(fā)送TCP數(shù)據(jù)包,而是通過(guò)將數(shù)據(jù)包拆分成兩個(gè)較小的IP段,把一個(gè)TCP頭分成幾個(gè)數(shù)據(jù)包,從而繞過(guò)濾器探測(cè)。
(7)TCP反向ident掃描。該掃描是應(yīng)用第三方計(jì)算機(jī)向目標(biāo)主機(jī)發(fā)送SYN包,并使第三方主機(jī)對(duì)目標(biāo)主機(jī)返回的SYN|ACK回應(yīng)RST,對(duì)RST不做回應(yīng)。而利用第三方計(jì)算機(jī)進(jìn)行掃描時(shí),本地計(jì)算機(jī)進(jìn)行的是對(duì)第三方計(jì)算機(jī)連續(xù)Ping的操作,通過(guò)查看第三方計(jì)算機(jī)機(jī)返回的Echo響應(yīng)的ID字段,確定目標(biāo)主機(jī)上端口開(kāi)放或是關(guān)閉狀態(tài)。
2.2 使用Nmap工具進(jìn)行端口掃描
Nmap是一種常用于網(wǎng)絡(luò)發(fā)現(xiàn)和審計(jì)的掃描器,它可用于發(fā)現(xiàn)網(wǎng)絡(luò)上的主機(jī),可進(jìn)行端口掃描、應(yīng)用和版本偵測(cè)、OS檢測(cè)以及與腳本進(jìn)行腳本交互,是一種能夠枚舉和測(cè)試網(wǎng)絡(luò)的工具,下列是Nmap一些常用掃描命令參數(shù)。
(1)-sT:TCP connect()掃描。
(2)-sS:TCP SYN掃描。
(3)-sF:TCP FIN掃描。
(4)-sX:Xmas-Tree掃描。
(5)-p:指定端口號(hào)掃描。
(6)-v:顯示掃描過(guò)程。
(7)-F:快讀掃描。
(8)-Pn:在目標(biāo)主機(jī)禁止Ping連接情況下,能夠繞過(guò)主機(jī)發(fā)現(xiàn)的過(guò)程進(jìn)行端口掃描。
(9)-A:包括探測(cè)操作系統(tǒng)及版本,掃描腳本以及進(jìn)行路徑跟蹤等全面掃描系統(tǒng)的掃描方式。
在安全測(cè)評(píng)工作當(dāng)中,Nmap是常用的端口掃描工具之一,利用Nmap探測(cè)檢測(cè)主機(jī)或Web服務(wù)器上開(kāi)放多余的端口,在該類端口還未造成影響時(shí)進(jìn)行及時(shí)彌補(bǔ)。Nmap掃描應(yīng)用有兩部分演示。
(1)檢測(cè)TCP端口,如圖3所示。由圖結(jié)果可知端口80、3306、3389開(kāi)放,端口23關(guān)閉以及檢測(cè)出端口所對(duì)應(yīng)的服務(wù)。
(2)對(duì)目標(biāo)主機(jī)(39.96.38.215)進(jìn)行Xmas-Tree掃描,命令指令為Nmap -sX 39.96.38.215,利用Wrieshark抓取目標(biāo)主機(jī)的網(wǎng)絡(luò)數(shù)據(jù)包,如圖4所示。分析發(fā)現(xiàn)數(shù)據(jù)包的TCP標(biāo)志位包含F(xiàn)IN、PSH、URG,符合Xmas-Tree掃描的主要特征。
3 檢測(cè)端口掃描Snort規(guī)則擬定
在進(jìn)行規(guī)則擬定之前,先對(duì)規(guī)則結(jié)構(gòu)進(jìn)行基本說(shuō)明。Snort每條規(guī)則在邏輯上分為兩部分:規(guī)則頭和規(guī)則選項(xiàng)[3]。規(guī)則頭包括四個(gè)部分:規(guī)則動(dòng)作、協(xié)議、源信息、目的信息。規(guī)則動(dòng)作有五種,分別為Alert〔生成告警、記錄(Log)包〕、Log(記錄包)、Pass(丟棄包)、Activate(Alert并且激活另一條Dynamic規(guī)則)、Dynamic(先保持空閑后作為規(guī)則執(zhí)行)。協(xié)議有四種,為TCP、UDP、ICMP和IP[3]。源信息和目的信息包括IP地址端口等。規(guī)則選項(xiàng)組成了規(guī)則的核心,包含報(bào)警信息以及規(guī)則觸發(fā)時(shí)提供給管理員的參考信息。具體作用是在規(guī)則頭信息的基礎(chǔ)上進(jìn)一步分析,確定復(fù)雜的攻擊。Snort規(guī)則選項(xiàng)用分號(hào)“;”隔開(kāi),規(guī)則選項(xiàng)關(guān)鍵字和其參數(shù)用冒號(hào)“:”分開(kāi),由于規(guī)則選項(xiàng)及其參數(shù)數(shù)量過(guò)多,這里便不做詳細(xì)敘述。Snort規(guī)則結(jié)構(gòu)大體如圖5描述所示。
基于以上規(guī)則結(jié)構(gòu),結(jié)合前章端口掃描特征分析,規(guī)則擬定如下:
alert tcp ![39.96.38.215/32] any ->39.96.38.215/32 any
//規(guī)則頭,匹配除主機(jī)外任意(any)源IP和端口到主機(jī)和和其任意端口的TCP數(shù)據(jù)包發(fā)送告警消息,檢測(cè)非主機(jī)的IP地址發(fā)送的tcp協(xié)議包
(//規(guī)則選項(xiàng)
msg:”PortScan”;//在報(bào)警和包日志中打印的消息內(nèi)容
flow:to_server,established;//檢測(cè)向服務(wù)器發(fā)送方向的報(bào)文
dsize:<300;//應(yīng)用層負(fù)載包長(zhǎng)度小于300
flags:FPU;//TCP flags值
content:"|03|"; nocase; offset:4; depth:1;
//nocase指定對(duì)content字符串不區(qū)分大小寫,offest設(shè)定開(kāi)始搜索位置為4,depth設(shè)定搜索的最大深度為1,即負(fù)載偏移4取1的值為03
content:"select|20|geometryn|28|0x00000000000700000001";distance:10;
within:50;
//相對(duì)于上面的03特征向后偏移10個(gè)字節(jié)之后再取50個(gè)字節(jié)
//50個(gè)字節(jié)里邊包含select|20|geometryn|28|0x00000000000700000001
sid:1000001;//規(guī)則編號(hào),用戶自行編寫規(guī)則的編號(hào)在1000000以上
rev:1;)//版本信息。
通過(guò)該條規(guī)則,能夠?qū)⒊吮镜刂鳈C(jī)IP之外的任意源IP的任意端口發(fā)向本主機(jī)端口的TCP數(shù)據(jù)包按照要求進(jìn)行檢測(cè),若檢測(cè)到端口掃描,則會(huì)報(bào)警記錄到日志文件中。
4 實(shí)驗(yàn)與結(jié)果分析
4.1實(shí)驗(yàn)環(huán)境
Window Server;Linux虛擬機(jī);WinPcap 4.1.3;Snort 2.9.11.1。
4.2 實(shí)驗(yàn)步驟
(1)絕對(duì)路徑配置。將編寫完成的規(guī)則保存至Snort的Rules路徑下local.rules文件中并將Snort.conf中的相關(guān)相對(duì)路徑改成絕對(duì)路徑,在Snort運(yùn)行時(shí)才會(huì)加載自定義的規(guī)則文件。
(2)運(yùn)行Snort,命令:snort? -A full -c "C:\Snort\etc\snort.conf" -l "C:\Snort\log" -A full 為默認(rèn)的報(bào)警機(jī)制,snort.conf是規(guī)則集文件,當(dāng)檢測(cè)的數(shù)據(jù)包和規(guī)則集中某一規(guī)則成功匹配,Snort采取相應(yīng)行動(dòng)并記錄至指定輸出目錄(C:\Snort\log)中。
(3)通過(guò)Nmap工具進(jìn)行Xmas-Tree掃描。
(4)查看報(bào)警信息:
[**][1:1000001:0]PortScan [* *]
[Classification: Detectionof aNetwork Scan] [Priority: 0]
06/19-19:24:57.564404 192.168.197.129:3389->39.96.38.250:7599
TCP TTL:128 TOS:0x0 ID:55250 IpLen:20 DgmLen:1692 DF
[**][1:1000001:0]PortScan [* *]
[Classification: Detection of a Network Scan] [Priority: 0]
06/19-19:25:00.564449 192.168.197.129:3389-> 39.96.38.250:7599
TCP TTL:128 TOS:0x0 ID:55250 IpLen:20 DgmLen:1692 DF。
4.3 結(jié)果分析
實(shí)驗(yàn)表明,當(dāng)主機(jī)受到Xmas-Tree掃描時(shí),運(yùn)行Snort的主機(jī)能夠捕獲網(wǎng)絡(luò)上的數(shù)據(jù)包,在進(jìn)行預(yù)處理之后,將包被送到檢測(cè)引擎,檢測(cè)引擎通過(guò)規(guī)則文件(即local.rules)中的規(guī)則選項(xiàng)來(lái)對(duì)每個(gè)包的特征和包信息進(jìn)行單一、簡(jiǎn)單的檢測(cè)。由報(bào)警信息可知,基于編寫規(guī)則選項(xiàng)下,Snort能夠成功檢測(cè)出關(guān)于端口掃描的數(shù)據(jù)包,并能夠詳細(xì)地記錄攻擊源IP(192.168.197.129)、攻擊類型(PortScan)、攻擊目標(biāo)(39.92.38.250)、攻擊時(shí)間(6/19),實(shí)現(xiàn)防范端口掃描攻擊。
4.4 實(shí)驗(yàn)總結(jié)
基于規(guī)則的檢測(cè)操作簡(jiǎn)單且工作可靠,其工作過(guò)程精確,易調(diào)整配置及優(yōu)化,減少誤報(bào)率。根據(jù)實(shí)際應(yīng)用的需要進(jìn)行規(guī)則編寫,能夠有針對(duì)性地提出防范措施。
實(shí)驗(yàn)中的主機(jī)基于防范端口掃描攻擊的需要,對(duì)端口掃描原理及常用技術(shù)進(jìn)行解析,以Xmas-Tree隱蔽端口掃描技術(shù)為攻擊實(shí)例,提取其報(bào)文中FIN、PSH、URG標(biāo)志位的特征,編寫規(guī)則選項(xiàng)中的內(nèi)容,結(jié)合Snort的靈活性,完成相應(yīng)的端口掃描攻擊防范。
5 結(jié)束語(yǔ)
依新發(fā)布的網(wǎng)絡(luò)安全等級(jí)保護(hù)2.0標(biāo)準(zhǔn),國(guó)家針對(duì)網(wǎng)絡(luò)邊界及計(jì)算環(huán)境提出入侵防范要求,能夠?qū)θ肭中袨檫M(jìn)行檢測(cè)并提供報(bào)警是主要要求之一。而Snort作為一個(gè)入侵檢測(cè)工具,通過(guò)添加有效檢測(cè)入侵行為的規(guī)則,能夠成為防火墻的重要補(bǔ)充及構(gòu)建安全區(qū)域邊界和安全計(jì)算環(huán)境的組成部分。因此,針對(duì)作為入侵攻擊前奏的端口掃描攻擊來(lái)探討Snort的規(guī)則,對(duì)實(shí)現(xiàn)入侵防范具有一定的促進(jìn)作用。
本文以TCP/IP協(xié)議為基礎(chǔ),詳細(xì)說(shuō)明端口掃描行為特征以及常用的端口探測(cè)技術(shù),通過(guò)Nmap工具講述端口掃描實(shí)現(xiàn)方式,從而擬定相應(yīng)的檢測(cè)規(guī)則,從實(shí)際操作方面,探討自定義Snort規(guī)則實(shí)現(xiàn)防在范端口掃描及在入侵防范方面的促進(jìn)作用。Snort規(guī)則是Snort入侵檢測(cè)系統(tǒng)檢測(cè)入侵行為的知識(shí)庫(kù),在計(jì)算機(jī)網(wǎng)絡(luò)不斷受到網(wǎng)絡(luò)攻擊威脅和破壞的情況下,必須及時(shí)添加新的規(guī)則,提高Snort的檢測(cè)能力。
本文的Snort規(guī)則基于端口掃描攻擊行為特征進(jìn)行編寫,而網(wǎng)絡(luò)攻擊不僅包括端口掃描攻擊,還包含SQL注入、XSS、拒絕服務(wù)等多種攻擊方式,需要對(duì)攻擊方式進(jìn)行深入研究,根據(jù)應(yīng)用環(huán)境要求,舉一反三,編寫出能夠完成入侵防范效果的規(guī)則。
參考文獻(xiàn)
[1] James F. Kurose,Keith W. Ross ,陳鳴譯.計(jì)算機(jī)網(wǎng)絡(luò)(第4版)[M].北京:機(jī)械工業(yè)出版社,2009.
[2] 王國(guó)棟.端口掃描技術(shù)的研究與實(shí)現(xiàn)[J].軟件(教育現(xiàn)代化),2013.
[3] Snort中文手冊(cè)[Z].https://www.docin.com/p-981478311.html
[4] 趙艷華.基于Snort的檢測(cè)方法研究與分析[D].衡陽(yáng):南華大學(xué),2017.
作者簡(jiǎn)介:
丁佳(1984-),男,漢族,山東煙臺(tái)人,北京化工大學(xué),本科,山東維平信息安全測(cè)評(píng)技術(shù)有限公司,工程師;主要研究方向和關(guān)注領(lǐng)域:網(wǎng)絡(luò)安全、等保測(cè)評(píng)、風(fēng)險(xiǎn)評(píng)估。