• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      ARP防火墻的設(shè)計與開發(fā)

      2012-04-29 00:44:03柴王愛,黃文康
      電腦知識與技術(shù) 2012年2期

      柴王愛,黃文康

      摘要:ARP(Address Resolution Protocol)基本功能是通過目標設(shè)備的IP地址,查詢目標設(shè)備的MAC地址,以保證通信的順利進行。然而,一些非法的入侵者和網(wǎng)絡(luò)監(jiān)聽者,利用各種技術(shù)和手段,篡改IP地址與MAC地址之間的對應關(guān)系,從而“冒名頂替”他人的MAC地址,以達到非法監(jiān)聽和獲取他人在網(wǎng)絡(luò)上傳輸?shù)男畔⒌哪康模@種網(wǎng)絡(luò)入侵方式為ARP欺騙入侵。它是近年來網(wǎng)絡(luò)入侵攻擊的主要形式之一,嚴重威脅著網(wǎng)絡(luò)信息的安全。針對以上問題,該文開發(fā)了一套ARP防火墻系統(tǒng),通過對局域網(wǎng)內(nèi)ARP數(shù)據(jù)包的分析,實現(xiàn)對局域網(wǎng)內(nèi)所有的主機進行檢測和監(jiān)控,及時發(fā)現(xiàn)局域網(wǎng)內(nèi)的ARP攻擊行為,將其廣播給網(wǎng)關(guān)和局域網(wǎng)內(nèi)所有主機,并對該攻擊進行防御和處理,從而解決局域網(wǎng)內(nèi)由于ARP攻擊所造成的網(wǎng)絡(luò)癱瘓問題。

      關(guān)鍵詞:MAC;ARP攻擊;數(shù)據(jù)包捕獲;ARP攻擊的檢測與防范

      中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2012)02-0269-03

      隨著現(xiàn)在社會信息技術(shù)的飛速發(fā)展,如今企業(yè)網(wǎng)絡(luò)辦公化也正式步入了無線網(wǎng)的領(lǐng)域中。構(gòu)建無線網(wǎng)最大的好處就是組網(wǎng)無需布線,使用便捷,經(jīng)濟。所以對多數(shù)企業(yè)來說,無疑是組網(wǎng)方案的最佳選擇。大量的無線路由器被用于企業(yè)中,使得針對無線網(wǎng)絡(luò)的故障診斷和安全保障變得與有線網(wǎng)絡(luò)一樣重要。

      ARP攻擊以及非法入侵未設(shè)防的無線局域網(wǎng)已經(jīng)是現(xiàn)在導致聯(lián)網(wǎng)異常的典型案例了。由于安全設(shè)置的疏忽以及后期安全防護的不足,導致少數(shù)具有惡意的黑客對企業(yè)的重要信息及保密數(shù)據(jù)造成了極大的危害。

      另一方面,在我們?nèi)粘5纳暇W(wǎng)過程中,我們經(jīng)常會碰到諸如網(wǎng)絡(luò)經(jīng)常無緣無故的掉線,或者突然提示你IP有沖突,甚至網(wǎng)速慢得連網(wǎng)頁都打不開等網(wǎng)絡(luò)問題。這些問題的根源就是ARP攻擊。ARP攻擊已經(jīng)成為困擾人們?nèi)粘I暇W(wǎng)行為的主要黑客攻擊。

      本文研究的ARP防火墻系統(tǒng)可有效解決以上問題。

      1基于ARP協(xié)議的網(wǎng)絡(luò)攻擊的原理

      在TCP/IP網(wǎng)絡(luò)環(huán)境下,一個IP包走到哪里、怎么走是靠路由表定義的。但是,當IP包到達該網(wǎng)絡(luò)后,哪臺機器響應這個IP包?則是靠該IP包中所包含的物理地址來識別的。也就是說,只有機器的物理地址和該IP包中的物理地址相同的機器才會應答這個IP包。因為在網(wǎng)絡(luò)中,每一臺主機都會有發(fā)送IP包的時候,所以,在每臺主機的內(nèi)存中都有一個IP地址到物理地址的轉(zhuǎn)換表,它通常是動態(tài)的轉(zhuǎn)換表(但在路由中,該ARP表可以被設(shè)置成靜態(tài))。

      1.1 ARP協(xié)議的工作原理

      從下面兩種情況來探討ARP的工作原理:

      情況一:將本地網(wǎng)絡(luò)的主機IP地址解析為MAC地址。ARP解析過程分4步進行:1)當一臺主機要與別的主機通信時,初始化ARP請求。當該IP確定為本地IP時,源主機在ARP緩存中查找目標主機的硬件地址。2)若找不到映射,ARP就建立一個請求,源主機IP地址和硬件地址會被包括在請求中,該請求通過廣播,使所有本地主機均能接收并處理。3)本地網(wǎng)上的每個主機都收到廣播并尋找相符的IP地址。4)當目標主機斷定請求中的IP地址與自己的IP地址相符時,直接發(fā)送一個ARP答復,將自己的硬件地址MAC地址傳給源主機。以源主機的IP和MAC地址更新它的ARP緩存。源主機收到回答后便建立起了通信關(guān)系。

      情況二:將遠程網(wǎng)絡(luò)的主機IP地址解析為MAC地址。當不同網(wǎng)絡(luò)中的主機互相通信時,因目標IP地址是一個遠程網(wǎng)絡(luò)主機的地址,ARP將廣播一個路由器(源主機的缺省網(wǎng)關(guān))的地址。ARP解析過程分3步進行:1)初始化通信請求,得知目標IP為遠程地址。源主機在本地路由表中查找,若無,源主機就認為是缺省網(wǎng)關(guān)。在ARP緩存中查找符合該網(wǎng)關(guān)記錄的IP的MAC地址。2)若沒找到該網(wǎng)關(guān)的記錄,ARP將廣播一個包含網(wǎng)關(guān)地址而不是目標主機的地址的請求。路由器用自己的硬件地址響應源主機的獲取它的硬件地址MAC地址。3)如果此網(wǎng)關(guān)的硬件地址不在ARP緩存中,通過ARP廣播獲得。一旦它獲得硬件地址,ICMP響應就送到路由器上,然后傳回源主機。

      1.2基于ARP協(xié)議的網(wǎng)絡(luò)攻擊過程

      從ARP的工作原理可以看出,當計算機發(fā)送ARP請求,監(jiān)聽ARP回答,并定期更新ARP高速緩存時,一個黑客或惡意攻擊者完全可能發(fā)送一個帶有欺騙性的ARP請求和回答,以至于改變另一個主機的ARP高速緩存中的地址映射(即IP與MAC的對應關(guān)系),使得該被攻擊的主機在地址解析時發(fā)生錯誤結(jié)果,導致所封裝的數(shù)據(jù)被發(fā)往黑客所希望的目的主機,從而使數(shù)據(jù)信息被劫取。

      可見,利用ARP欺騙,一個入侵者可以利用基于IP的安全性不足,冒用一個合法IP來進入主機,捕獲專用的或者機密的信息;可以用來危害網(wǎng)絡(luò)鄰居的安全,或者用來獲取更高級別的訪問權(quán)限;分析網(wǎng)絡(luò)結(jié)構(gòu),進行網(wǎng)絡(luò)滲透。

      2系統(tǒng)結(jié)構(gòu)設(shè)計及實現(xiàn)

      2.1系統(tǒng)結(jié)構(gòu)

      圖1系統(tǒng)結(jié)構(gòu)

      2.2實現(xiàn)

      2.2.1原始數(shù)據(jù)包捕獲

      原始數(shù)據(jù)包捕獲技術(shù)是調(diào)用了一個開源包WinPcap包。WinPcap是一個Win32平臺的,用于捕獲數(shù)據(jù)包和進行網(wǎng)絡(luò)分析的體系結(jié)構(gòu)。它包括了一個內(nèi)核級的數(shù)據(jù)包過濾器,一個低層動態(tài)鏈接庫(packet.dll),一個高層的,依賴于系統(tǒng)的庫(wpcap.dll)。Win? Pcap數(shù)據(jù)包捕獲的主要過程:

      首先,抓包系統(tǒng)必須繞過操作系統(tǒng)的協(xié)議棧來訪問在網(wǎng)絡(luò)上傳輸?shù)脑紨?shù)據(jù)包(raw packet),這就要求一部分運行在操作系統(tǒng)核心內(nèi)部,直接與網(wǎng)絡(luò)接口驅(qū)動交互。這個部分是系統(tǒng)依賴(system dependent)的,在Winpcap的解決方案里它被認為是一個設(shè)備驅(qū)動,稱作NPF(Netgroup Packet Filter)。Winpcap開發(fā)小組針對Windows95,Windows98,WindowsME,Windows NT 4,Windows2000和WindowsXP提供了不同版本的驅(qū)動。這些驅(qū)動不僅提供了基本的特性(例如抓包和injection),還有更高級的特性(例如可編程的過濾器系統(tǒng)和監(jiān)視引擎)。前者可以被用來約束一個抓包會話只針對網(wǎng)絡(luò)通信中的一個子集(例如,僅僅捕獲特殊主機產(chǎn)生的ftp通信的數(shù)據(jù)包),后者提供了一個強大而簡單的統(tǒng)計網(wǎng)絡(luò)通信量的機制(例如,獲得網(wǎng)絡(luò)負載或兩個主機間的數(shù)據(jù)交換量)。

      其次,抓包系統(tǒng)必須有用戶級的程序接口,通過這些接口,用戶程序可以利用內(nèi)核驅(qū)動提供的高級特性。Winpcap提供了兩個不同的庫:packet.dll和wpcap.dll。前者提供了一個底層API,伴隨著一個獨立于Microsoft操作系統(tǒng)的編程接口,這些API可以直接用來訪問驅(qū)動的函數(shù);后者導出了一組更強大的與Libpcap一致的高層抓包函數(shù)庫(capture primitives)。這些函數(shù)使得數(shù)據(jù)包的捕獲以一種與網(wǎng)絡(luò)硬件和操作系統(tǒng)無關(guān)的方式進行。

      2.2.2數(shù)據(jù)包分析

      以ARP數(shù)據(jù)包為例,介紹數(shù)據(jù)包分析的過程。

      /*ARP協(xié)議分析函數(shù)*/

      CString m_protocol_temp="ARP";

      CString m_info_temp;//臨時變量

      CString m_data_temp;//臨時變量

      struct arp_header *arp_protocol;// ARP包頭

      u_short protocol_type;//協(xié)議類型

      u_short hardware_type;//硬件類型

      u_short operation_code;//操作:請求1,回答2

      u_char *smac_string;//源主機MAC串

      u_char *dmac_string;//目的主機MAC串

      u_char *ip_str;// IP串

      struct in_addr source_ip_address;//源主機IP地址

      struct in_addr destination_ip_address; //目的主機IP地址

      u_char hardware_length;//硬件長度

      u_char protocol_length;//協(xié)議長度

      arp_protocol = (struct arp_header *) (temp_data_arp+14);

      //去掉以太網(wǎng)頭

      hardware_type = ntohs(arp_protocol->arp_hardware_type);

      protocol_type = ntohs(arp_protocol->arp_protocol_type);

      operation_code = ntohs(arp_protocol->arp_operation_code);

      hardware_length = arp_protocol->arp_hardware_length;

      protocol_length = arp_protocol->arp_protocol_length;

      //打印源MAC地址和IP地址

      smac_string=arp_protocol->arp_source_ethernet_address;memcpy((void *) & source_ip_address, (void *) &arp_protocol->arp_source_ ip_address, sizeof(struct in_addr));

      //打印目的MAC地址和IP地址

      dmac_string = arp_protocol->arp_destination_ethernet_address;

      memcpy((void *) &destination_ip_address, (void *) &arp_protocol->arp_destination_ip_address, sizeof(struct in_addr)); switch(operation_code)

      {

      case 1: m_info_single = " ARP Request";

      break;

      case 2: m_info_single = " ARP Response";

      break;

      case 3: m_info_single = " ARP Request";

      break;

      case 4: m_info_single = " ARP Response";

      break;

      default:

      break;

      }

      2.2.3問題ARP數(shù)據(jù)包過濾

      在原始數(shù)據(jù)包捕獲過程中,有一個循環(huán)緩沖區(qū),用來保存數(shù)據(jù)包并且避免丟失。一個保存在緩沖區(qū)中的數(shù)據(jù)包有一個頭,它包含了一些主要的信息,例如時間戳和數(shù)據(jù)包的大小,但它不是協(xié)議頭。系統(tǒng)針對ARP數(shù)據(jù)包,對時間戳進行計算,判斷來自同一計算機的ARP數(shù)據(jù)包發(fā)送是否過于頻繁,進而通過WinPcap的過濾器對ARP數(shù)據(jù)報進行過濾。實現(xiàn)有效的防止ARP攻擊(ARP欺騙)。

      過濾規(guī)則設(shè)置:

      struct bpf_program bpf_filter;// BPF過濾規(guī)則

      char *bpf_filter_string= "";//過濾規(guī)則字符串

      //設(shè)置過濾規(guī)則

      if(pcap_compile(pcap_handle,&bpf_filter,bpf_filter_string,1,net_mask)<0)

      {

      AfxMessageBox("過濾規(guī)則出錯!");

      return 1;

      }

      //編譯過濾規(guī)則

      if(pcap_setfilter(pcap_handle, &bpf_filter)<0)

      {

      AfxMessageBox("過濾規(guī)則出錯!將使用默認方式捕獲數(shù)據(jù)包");

      return 1;

      }

      //設(shè)置過濾規(guī)則

      if (pcap_datalink(pcap_handle) != DLT_EN10MB)

      {

      AfxMessageBox("不在局域網(wǎng)內(nèi)");

      return 1;

      }

      3軟件簡介

      以VC++ 6.0進行編譯、運行,系統(tǒng)軟件界面及數(shù)據(jù)包捕獲過程,具體參數(shù)有本地連接、信息中的IP地址和子網(wǎng)掩碼、數(shù)據(jù)包捕獲、數(shù)據(jù)包信息以及數(shù)據(jù)包數(shù)據(jù)。

      4總結(jié)

      本系統(tǒng)主要實現(xiàn)兩方面大的功能:

      1)捕獲數(shù)據(jù)包,分析數(shù)據(jù)包。這部分功能類似與網(wǎng)絡(luò)上的協(xié)議分析軟件,如Linux系統(tǒng)下TCPDump,Windows下的WinDump,主要是捕獲本地計算機網(wǎng)絡(luò)接口上的數(shù)據(jù)包,對數(shù)據(jù)報進行協(xié)議分析,判斷數(shù)據(jù)包是何種網(wǎng)絡(luò)數(shù)據(jù)。由于本系統(tǒng)是ARP防火墻的設(shè)計與開發(fā),所以ARP數(shù)據(jù)包是重點分析的對象。

      2)過濾問題ARP數(shù)據(jù)包。對于網(wǎng)絡(luò)上廣播的ARP數(shù)據(jù)包,系統(tǒng)需要即使對數(shù)據(jù)進行分析,判斷數(shù)據(jù)包是否為ARP攻擊數(shù)據(jù)包。進而采取相應的過濾規(guī)則將數(shù)據(jù)包過濾。

      另外,本系統(tǒng)功能雖然單一,但是較有針對性,因此為較有效使用的軟件。

      參考文獻:

      [1]朱雁輝.Windows防火墻與網(wǎng)絡(luò)封包截獲技術(shù)[M].北京:電子工業(yè)出版社,2002.

      [2]謝希仁.計算機網(wǎng)絡(luò)[M].2版.北京:電子工業(yè)出版社,1999.

      [3]張曾科.計算機網(wǎng)絡(luò)[M].北京:清華大學出版社,2003.

      [4]孟曉明.基于ARP的網(wǎng)絡(luò)欺騙的檢測與防范[J].信息技術(shù),2005,29(5).

      [5]劉文濤.網(wǎng)絡(luò)安全開發(fā)包詳解[M].北京:電子工業(yè)出版社,2005.

      连江县| 东兴市| 崇明县| 大冶市| 三都| 合江县| 遵义市| 璧山县| 廉江市| 聂拉木县| 兴业县| 阿克陶县| 无棣县| 西贡区| 武胜县| 杭锦后旗| 政和县| 朝阳县| 东乡| 延吉市| 合水县| 勐海县| 普格县| 雷波县| 大连市| 渭源县| 靖边县| 南昌县| 特克斯县| 绥棱县| 玛纳斯县| 河曲县| 青神县| 郸城县| 青冈县| 勃利县| 丰原市| 尤溪县| 双峰县| 鲜城| 江油市|