您的位置:首页 > 其它

ICMP 报文自定制

2014-04-01 19:23 169 查看
看腻了分析ICMP的文章?就是找不到具体实例?

上篇是转载别人的,通过教程成功发送了一堆ICMP 应答包,但是采用的是两败俱伤的方式,

除此之外,包里有我的MAC,IP信息,攻击别人,别人只要一抓包就知道是谁是攻击者,

这种攻击是不可取的,今天准备伪造发送者的信息,(依然是两败俱伤,不过慢慢来,改天再试试构造欺骗包,借刀杀人)

以下是wireshark截的一个完整的数据包,分析一下,接着开始伪造,然后再用winpcap发送伪造包

表里,无背景的是16进制数据,有背景的分析(解释),最后一栏是字节数,这个包合计是78字节

这是数据包:



分析开始:

20 6a 8a 60 02 09

b8 70 f4 1c c3 08
12
目的MAC
源MAC
08 00
45 00 ①见后面详解
4
Type IP(0x0800)
Differentiated Services Codepoint: Default (0x00
00 40
54 c0
4
Total length:60,包括头部和数据
标识符,用于对较大的上层数据包分段操作,和后面两个字节内容联合使用
00 00
80 01
4
Fragment offset:0
TTL Protocol: ICMP (1)
85 bf
2
Header checksum 0x85bf (correct)
用来做IP头部的正确性检测,但不包含数据部分.
路由器会为每个通过的数据包重新计算这个值
73 9b 3c be
73 9b 3c 49
8
SenderIP
ReciverIp 到此20字节IP头 分析完毕
00 00
24 e2
4
Type code ICMP头开始
checksum(correct)
02 00
00 00
4
identifier
Sequence number(LE)
53 c8 31 01 45 45
6
45 45 45 45 45 45 45 45 45 45
45 45 45 45 45 45
16
45 45 45
45 45 45 45 45 45 45

45 45 45 45
14

①处解释:IP头部前8bit(一个字节,即1byte)=version(4bit)+header
length(4bit),其中version就是IP版本协议号,此处为IPV4→0100(2进制),
header length IP包头长度,本区域值= IP头部长度(单位为bit)/(8*4);由于我们没有加别的什么信息,所以是最小长度20字节,即20x8/(8x4)=5,换成二进制就是0101,
所以第一个字节 就是01000101(二进制),换为16进制就是45,
注:还好我认真看了下IP头部构造,要不然直接看wireshark给的解释Differentiated Services Codepoint(DSCP,差分服务代码点),看到这个概念就快晕了,^_^
00 是服务类型,00是最普通的,优先级最低



ICMP报文被封装在IP数据报内部传输

就是说我们要构造的包为: 以太网头部+IP头部+ICMP头部+ICMP数据
构造开始(括号内为字节数):
目的MAC(6)+源MAC(6)+帧类型-IP0x0800(2)+ 偷下懒,我觉得只要改了源mac就能达到我的目标了,走起.
UCHAR buf
OK,我直接贴我实验的截图吧



可以看到IP头部校验和出错,改一下,



改了之后没有什么错误提示了,现在是2014年4月2日 02:57:04,有点晚了,等我明天去舍友电脑上抓包看看到底有没有发送成功.

还要解决一下为什么IP头校验和改变的问题

我构造的发送数据是

u_char buf2[]={

0x20,0x6a,0x8a,0x60,0x02,0x09,//以太网头,目的MAC 此处为舍友MAC

0x00,0x1a,0xa9,0x15,0x6c,0x9b,//以太网头,源MAC,此处为随意填的(真的是随意的么?嘿嘿嘿)

0x08,0x00,
//以太网头,帧类型,此处为IP

0x45,0x00,
//IP头 版本,长度,服务类型

0x00,0x40,
//IP头部和数据总长度

0x54,0xc0,0x00,0x00,//标识符,用于分段操作什么的

0x80,0x01,
//TTL,protocol 协议类型,1是ICMP

0x85,0x7f,
//IP头部的checksum,校验码,不包含数据部分

0x73,0x9b,0x3c,0xfe,//senderIP

0x73,0x9b,0x3c,0x49,//接收方IP

0x00,0x00,
//ICMP type和code

0x24,0xe2,
//校验和

0x02,0x00,00,00,
//标识符和序列号

0x53,0xc8,0x31,0x01,//发起时间戳

0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,

0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,

0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,

0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45 //填充的32字节数据

};

之后用winpcap发送即可,具体请百度之

让我吐槽一下CSDN的排版问题,可视化控件根本用不了,只能在源代码里改样式,对于我这种没学过CSS(还是什么的,不是很清楚)真心蛋疼,就拿上面这个表格来说

第一列,第二列宽度本来都是1211,觉得太长了,到源代码里把width="1211"改成了width="700",第一列改好了,第二列就不知道怎么改了,晕▄︻┳═一
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: