基于ARP欺騙的網絡監聽技術研究
引言
當前局域網大部分屬于以太網,其主要連接方式主要是通過交換機進行連接。交換機在外型上類似于集線器,但在內部采用了電路交換的原理,將一個端口的輸入交換到另一指定的端口。交換式以太網彌補了共享式以太網(用集線器連接的網絡)的缺陷,但也從一定程度上增加了網絡監聽的難度。交換機在工作時維護著一張ARP的數據庫表,在這個庫中記錄著交換機每個端口綁定的MAC地址,當有數據包發送到交換機上時,交換機會將數據包的目的MAC地址與自己維護的數據庫內的端口對照,然后將數據包發送到相應的端口上。交換機與集線器最大的不同是通信數據包不再復制到其他所有端口,而是精確地發往目標機器所在的那個端口,所以,其它機器就無法監聽這種目的性較強的通信,當然也就無法實現數據包的抓取了。因此我們需要在交換式以太網中尋求一種簡單方便的監控部署軟件,以實現對現在廣泛存在的交換式以太網進行有效的監聽。
1 ARP協議及欺騙技術
1.1? ARP協議
IP數據包常通過以太網發送,以太網設備并不識別32位IP地址,它們是以48位以太網地址傳輸以太網數據包的。因此,IP 驅動器必須把IP目的地址轉換成以太網目的地址。在這兩種地址之間存在著某種靜態的或算法的映射,常常需要查看一張表。ARP地址解析協議 (Address Resolution Protocol)就是負責把網絡層的IP地址轉變成數據鏈路層的MAC地址,建立IP地址和MAC地址之間的一一映射。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。
1.2? ARP欺騙技術
ARP 協議雖然是一個高效的數據鏈路層協議,但是作為一個局域網協議,它是建立在各主機之間相互信任的基礎上的,因此也存在一些安全問題。根據ARP 協議存在的這些安全問題,可以使用以下幾種手段來進行ARP欺騙:
(1) 攻擊者也就可以在接收到該ARP請求包之后進行應答,進行假冒。
(2) 由于被假冒的機器所發送的ARP應答包有可能比攻擊者的應答包晚到達,為了確保被攻擊者機器上的緩存中絕大部分時間存放的是攻擊者的MAC地址,可以在收到ARP請求廣播后稍微延遲一段時間再發送一遍ARP應答。
(3) 由于各種操作系統對于ARP緩存處理實現的不同,一些操作系統(例如Linux)會用向緩存地址發非廣播的ARP請求來要求更新緩存。在交換網絡環境下,別的機器是不能捕獲到這種緩存更新的,這就需要盡量阻止主機發送更新緩存消息。
ARP欺騙技術可以實現全交換環境下的數據監聽。因此,我們可以利用該技術對交換式以太網進行監控。
2 采用ARP欺騙技術捕獲交換式以太網數據
通過前面的敘述,我們知道,交換式以太網可以利用ARP欺騙技術進行監控。下面說明如何采用ARP欺騙技術捕獲交換式以太網數據。
2.1 ARP協議實現
在以太網上解析IP地址時,ARP請求和應答分組的格式如圖所示
以太網報頭中的前兩個字段是以太網的目的地址和源地址。目的地址為全1的特殊地址是廣播地址。同一局域網上的所有以太網接口都要接收廣播數據幀。接著是以太網幀類型,2字節長,表示后面數據的類型。對于ARP請求或應答來說,該字段的值為0x0806。硬件類型字段表示硬件地址的類型。值為1即表示以太網地址。協議類型字段表示要映射的協議地址類型。值為0x0800即表示IP地址。硬件地址長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節為單位。對于以太網上IP地址的ARP請求或應答來說,它們的值分別為6和4。操作字段指出操作類型,可以為ARP請求(值為1)、ARP應答(值為 2)。其余的四個字段是發送端的硬件地址(以太網地址)、發送端的協議地址(IP地址)、目的端的硬件地址和目的端的協議地址。
對于ARP請求來說,除目的端硬件地址外的所有其它的字段都有填充值。當系統收到一份目的端為本機的ARP請求報文后,它就把硬件地址填進去,然后用兩個目的端地址分別替換兩個發送端地址,并把操作字段置為2,最后把它發送回去。
由以上的分析可知,ARP數據包用C語言表示如下:
typedef struct _ARP_RHDR
{
UCHAR HardwareType[2];//數據類型,以太網為OX0001
UCHAR ProtocolType[2];//協議類型
UCHAR LengthOfHardware;//硬件地址長度
UCHAR LengthOfProtocol;//協議地址長度
UCHAR OpCode[2];//操作類型
UCHAR SrcMAC[6];// 發送端以太網地址
UCHAR SrcIP[4];// 發送端IP地址
UCHAR DesMAC[6];// 接收端以太網地址
UCHAR DesIP[4];// 接收端IP地址
}
ARP_RHDR,*PARP_RHDR;
2.2利用ARP欺騙在交換網絡下捕包
由以上對 ARP 協議的分析和對其原理的介紹可知,利用 ARP 欺騙已經可以使子網內的別的機器的網絡流量都會流到攻擊者機器來,為了使他們還能夠“正常”地使用網絡,攻擊者就必須將他們的數據包轉發到他們真正應該到達的主機去,這就需要進行數據轉發,因此,要實現交換式以太網正常的網絡監控,就要使用ARP欺騙結合IP轉發的發式來進行捕包,可以使用兩個線程:一個進行數據包的獲取、分析和轉發,一個定時發送ARP應答包。
在網絡監控系統中,實現對 HTTP 訪問則是基于目標地址的過濾,通過對 IP 首部的各個數據域的分析判斷 Destination IP Address 是否屬于規則庫中設定限制訪問集合,如果是,系統可以采用一定的手段阻止用戶的繼續訪問,采用的方法是切斷或關閉TCP連接。我們可以人為的構造一個 FIN報文發送給用戶,從而關閉用戶與Web服務器間的TCP連接,禁止用戶對該URL地址的訪問。Winpcap庫的核心函數pcap_sendpacket提供了繞過操作系統正常網絡 Socket編程而直接讀寫網卡的能力,在完成該TCP連接的重要信息分析后,即可完成對其的強制中斷。在構造中斷TCP報文時,需要將源、目的IP進行交換,源、目的端口交換,然后將標志位置為RST,然后使用 pcap_sendpacket 直接將報文發送即可實現目的。核心實現函數:
Void SendData(PIP_RHDR IpData)
{
PTCP_RHDR ptcpheader=(PTCP_RHDR)IpData->Data;
int iRstFlag = ptcpheader->Flags & 0x04;
if(iRstFlag = 0x04)
return;
……
SetMACToEther(MACADDR_SRC,&EtheRFrame,0);//源為發到本機的 mac
SetMACToEther(MACCADDR_GATEWAY,&EtherFrame,1);//目標為默認網關的 mac
……
}
3 軟件的實現和結論
基于ARP欺騙的網絡監聽軟件采用了虛擬路由技術,以實現報文的收發。軟件經過測試,基本上達到了預期的目的。這樣的系統,可以用來對現在正在使用的,用于各種功能的交換式以太網(如校園網、企業網等)進行監聽,從而解決在網絡管理上的諸多不便,進而實現網絡管理的最終目標——資源的合理、充分利用和提供可靠的通信服務。
評論
查看更多