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