基于ARP欺騙的網(wǎng)絡(luò)監(jiān)聽技術(shù)研究
由以上的分析可知,ARP數(shù)據(jù)包用C語言表示如下:
typedef struct _ARP_RHDR
{
UCHAR HardwareType[2];//數(shù)據(jù)類型,以太網(wǎng)為OX0001
UCHAR ProtocolType[2];//協(xié)議類型
UCHAR LengthOfHardware;//硬件地址長度
UCHAR LengthOfProtocol;//協(xié)議地址長度
UCHAR OpCode[2];//操作類型
UCHAR SrcMAC[6];// 發(fā)送端以太網(wǎng)地址
UCHAR SrcIP[4];// 發(fā)送端IP地址
UCHAR DesMAC[6];// 接收端以太網(wǎng)地址
UCHAR DesIP[4];// 接收端IP地址
}
ARP_RHDR,*PARP_RHDR;
2.2利用ARP欺騙在交換網(wǎng)絡(luò)下捕包
由以上對 ARP 協(xié)議的分析和對其原理的介紹可知,利用 ARP 欺騙已經(jīng)可以使子網(wǎng)內(nèi)的別的機(jī)器的網(wǎng)絡(luò)流量都會流到攻擊者機(jī)器來,為了使他們還能夠“正常”地使用網(wǎng)絡(luò),攻擊者就必須將他們的數(shù)據(jù)包轉(zhuǎn)發(fā)到他們真正應(yīng)該到達(dá)的主機(jī)去,這就需要進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),因此,要實(shí)現(xiàn)交換式以太網(wǎng)正常的網(wǎng)絡(luò)監(jiān)控,就要使用ARP欺騙結(jié)合IP轉(zhuǎn)發(fā)的發(fā)式來進(jìn)行捕包,可以使用兩個線程:一個進(jìn)行數(shù)據(jù)包的獲取、分析和轉(zhuǎn)發(fā),一個定時發(fā)送ARP應(yīng)答包。
在網(wǎng)絡(luò)監(jiān)控系統(tǒng)中,實(shí)現(xiàn)對 HTTP 訪問則是基于目標(biāo)地址的過濾,通過對 IP 首部的各個數(shù)據(jù)域的分析判斷 Destination IP Address 是否屬于規(guī)則庫中設(shè)定限制訪問集合,如果是,系統(tǒng)可以采用一定的手段阻止用戶的繼續(xù)訪問,采用的方法是切斷或關(guān)閉TCP連接。我們可以人為的構(gòu)造一個FIN報文發(fā)送給用戶,從而關(guān)閉用戶與Web服務(wù)器間的TCP連接,禁止用戶對該URL地址的訪問。Winpcap庫的核心函數(shù)pcap_sendpacket提供了繞過操作系統(tǒng)正常網(wǎng)絡(luò) Socket編程而直接讀寫網(wǎng)卡的能力,在完成該TCP連接的重要信息分析后,即可完成對其的強(qiáng)制中斷。在構(gòu)造中斷TCP報文時,需要將源、目的IP進(jìn)行交換,源、目的端口交換,然后將標(biāo)志位置為RST,然后使用 pcap_sendpacket 直接將報文發(fā)送即可實(shí)現(xiàn)目的。核心實(shí)現(xiàn)函數(shù):
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);//源為發(fā)到本機(jī)的 mac
SetMACToEther(MACCADDR_GATEWAY,EtherFrame,1);//目標(biāo)為默認(rèn)網(wǎng)關(guān)的 mac
……
}
3 軟件的實(shí)現(xiàn)和結(jié)論
基于ARP欺騙的網(wǎng)絡(luò)監(jiān)聽軟件采用了虛擬路由技術(shù),以實(shí)現(xiàn)報文的收發(fā)。軟件經(jīng)過測試,基本上達(dá)到了預(yù)期的目的。這樣的系統(tǒng),可以用來對現(xiàn)在正在使用的,用于各種功能的交換式以太網(wǎng)(如校園網(wǎng)、企業(yè)網(wǎng)等)進(jìn)行監(jiān)聽,從而解決在網(wǎng)絡(luò)管理上的諸多不便,進(jìn)而實(shí)現(xiàn)網(wǎng)絡(luò)管理的最終目標(biāo)――資源的合理、充分利用和提供可靠的通信服務(wù)。
評論