摘要:該文在明確常用掃描器及端口掃描原理的基礎上,分析了端口掃描攻擊的改進思路,并進一步探討了網絡數據包中關鍵信息提取的實現以及異常訪問檢測的實現,很好了提升了網絡的安全性。
關鍵詞:端口掃描;數據包獲取;異常訪問檢測
中圖法分類號:TP393文獻標識碼:A 文章編號:1009-3044(2009)35-9938-02
Analysis and Perfection of Typical Port Network Scan Attacks
YANG Yu
(Jiangsu Xuzhou Institute of Technology Civil Engineering College Training Center, Xuzhou 221009, China)
Abstract: This paper analyzes the improving method of port scan attacks based on a clear scanner and port scanning theory, and further discussed the collecting of the key information in network data packet and the realization of exception access detection, greatly improving the security of network.
Key words: port scanning; collecting of data packet; exception access detection
入侵者在正式入侵網絡前都要搜集相關的信息,因為獲得的信息越多發現的漏洞也就越多,侵入網絡成功的可能性就越大。他們充分利用現在種類繁多的掃描探測工具(NMAP、Superscan、X-scanner等等)遠程探測目標主機不同端口的服務,記錄目標給予的應答,從而搜集目標主機上的各種信息,分析后找出系統存在的漏洞,然后發起攻擊。網絡漏洞掃描是以端口掃描為基礎上的,因為支持TCP/IP協議的主機和設備都是通過開放端口來提供服務,端口可以說是系統對外的窗口。
1 網絡端口掃描分析
1.1 常用的掃描器
掃描是通過固定格式的詢問來試探主機的,這是重復性的操作主要通過程序自動進行。眾多的掃描功能被集成在一起,形成了功能強大的綜合掃描器,它可以完成許多項目的掃描,如X-Scan、流光Fluxay、X-WAY等。
1.2 端口掃描原理
端口是一個16位號碼,用來標識把消息傳輸到哪個更高層協議或者應用程序(進程)。它由TCP/IP協議定義的,其中規定,用EP地址和端口作為套接字(socket),代表TCP連接的一個連接端。端口與進程是一一對應的,如果某個進程正在等待連接,那么就會出現與之對應的端口,稱之為該進程正在相應端口監聽,或者說相應的端口是打開的[1]。在Internet上,按照協議類型分類,端口被分為TCP端口和UDP端口兩類。從端口的分配來看,端口被分為固定端口和動態端口兩大類。
端口掃描是通過發送特定類型的TCP/UDP報文給所要掃描的目標主機的全部或特定端口,誘發目標主機回復響應報文,分析返回的響應報文來推斷目標主機端口的狀態等信息。最基本的端口掃描就是使用TCP connect全開掃描,這種掃描方法使用TCP協議“三次握手”,與目標主機建立標準的TCP連接。如果連接,就說明相應的端口打開[2]。這種掃描的檢測結果是最精確的,但它與目標主機建立了大量的連接,因而很容易被目標主機記錄并加以拒絕。而端口掃描要順利地實現其探測目標端口信息的目的,必須同時具備兩個特點:有效性和隱蔽性,即有效地獲取目標端口信息的同時又盡量做到不被目標主機所發覺。
2 端口掃描攻擊的改進
2.1 改進思路
下面對端口掃描攻擊的防御從防火墻技術本身進行改進。改進思路如下:
1) 從到達防火墻的數據包中通過提取數據包的IP頭指針和TCP頭指針得到該包的源IP地址、目的IP地址、目的端口號、TCP標志位的信息等,這些信息是判斷該數據包是不是用于掃描的數據包的關鍵信息;
2) 分析TCP掃描數據包的標志位特征,明確它與正常數據包的區別;
3) 通過異常訪問檢測法實現對端口掃描攻擊的防御。
此外,各反掃描功能模塊的設計思路是:反SYN掃描模塊、反ACK掃描模塊、反FIN掃描模塊、反NULL掃描模塊和反Xmas掃描這五個反掃描模塊采用的是TCP標志位檢測法,分別針對五種TCP端口掃描方式進行檢測和防御。TCP協議報頭標志位和這五種TCP端口掃描方式的描述,它們的TCP協議標志位特征為:SYN掃描;SYN、ACK掃描;ACK、 FIN掃描;FIN、NULL掃描;Xmas掃描:FIN + PSH + URG。
2.2 數據包中關鍵信息提取的實現
通常情況下,防火墻的Netfilter工作于網絡IP層,要它能對TCP等傳輸層協議處理,就必須對到來的數據包進行深入的分析。使用sk_buff這個數據結構。該結構描述了內存中的一塊數據區域,該區域存放著網絡傳輸的數據包。對載有該數據包的sk_buff進行處理。提取數據包中的IP頭指針iphead:Struct ipdhr *iphead = skb -> nh.iph ; //s kb表示該數據包的sk_buff結構u_int32_t saddr = iphead -> saddr ; // 取源IP地址u_int32_t daddr = iphead -> daddr ;// 取目的IP地址struct tcphdr *tcphead = (u_int32_t *) iphead + iphead -> ih1 ;//提取TCP頭指針tcphead;u_int32_t dest = tcphead -> dest ; // 取目的端口號u_int32_t source = tcphead -> source ;// 取源端口號tcphead -> fin ; ……Tcphead -> urg ; // 分別取出TCP報頭中的六個標志位
2.3 異常訪問檢測的實現
網絡中常用的服務端口只占全部端口的很少一部分,絕大部分端口是很少用到的。正常情況下網絡數據包訪問這些很少用到的端口的概率p2就非常低,甚至接近于0。如果數據包訪問這些很少用到的端口的概率p2大于正常概率P1的話,那它就可能是一次端口掃描。當有攻擊者進行掃描時,想提高掃描效率,但不了解主機的詳細信息,所以常選擇的port/ip組合就容易偏離正常數據流的概率分布。這種偏離越大,就越容易檢測并確定潛在的掃描行為。給予以上分析得到一個系統異常訪問檢測模塊具體實現步驟如下:
根據受保護目標主機及其所處正常網絡壞境的具體情況,選擇一些特定的端口(平常是不用),即一直處于關閉狀態且極少被正常數據包訪問。設計一個特定端口訪問量檢測模塊,將選擇的特定端口加入模塊中的特定端口列表中,在正常的網絡環境中進行檢測,如果來訪數據包的目的端口號處在特定端口列表中,就輸出提醒信息。這一步主要是看在正常網絡環境中是否有數據包訪問這些端口根據選擇的特定端口,實現異常訪問檢測模塊。模塊的流程圖如圖1所示。
系統加載了異常訪問檢測模塊后,根據模塊的作用機制,只要有數據包訪問特定端口中的任何一個,就會被反TCP端口掃描系統發現并報警。由于在正常的網絡環境中極少有數據包訪問上述特定端口。因此可認為這是一次掃描行為,根據報警輸出的IP地址,選擇是否將此IP地址加入到反掃描模塊中,丟棄來自此IP的掃描報文。
3 結束語
為防范端口掃描,通常是在防火墻的設置中嚴格控制異常TCP標志位的數據包和不可信IP地址的數據包的流進流出。我們還應該做到在掃描行為發生之后能及時地發現它,然后再采取防御措施來阻止其下一步的攻擊。于是對現有網絡典型端口掃描攻擊的方式進行一定的改進,可以進一步提升網絡的安全性。
參考文獻:
[1] 丁常福,方敏,徐亮.端口掃描技術及防御分析[J].微機發展,2003(6).
[2] 唐鑫.網絡安全端口掃描系統的研究[J].科技創新導報,2008(12).