ICMP 报文自定制
2014-04-01 19:23
169 查看
看腻了分析ICMP的文章?就是找不到具体实例?
上篇是转载别人的,通过教程成功发送了一堆ICMP 应答包,但是采用的是两败俱伤的方式,
除此之外,包里有我的MAC,IP信息,攻击别人,别人只要一抓包就知道是谁是攻击者,
这种攻击是不可取的,今天准备伪造发送者的信息,(依然是两败俱伤,不过慢慢来,改天再试试构造欺骗包,借刀杀人)
以下是wireshark截的一个完整的数据包,分析一下,接着开始伪造,然后再用winpcap发送伪造包
表里,无背景的是16进制数据,有背景的分析(解释),最后一栏是字节数,这个包合计是78字节
这是数据包:
分析开始:
①处解释: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",第一列改好了,第二列就不知道怎么改了,晕▄︻┳═一
上篇是转载别人的,通过教程成功发送了一堆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 |
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",第一列改好了,第二列就不知道怎么改了,晕▄︻┳═一
相关文章推荐
- TCP/IP详解卷1 读书笔记:第六章 ICMP 网际报文控制协议
- 关于ICMP报文
- 《TCP/IP协议详解》第六章 ICMP:Internet控制报文协议
- UNIX网络编程——ICMP报文分析:端口不可达
- 华为模拟器配置ICMP属性重定向报文
- TCP/IP详解,卷1:协议,第六章:ICMP,Internet控制报文协议
- ICMP报文分析
- TCP/IP详解卷1笔记_第五章 RARP:逆地址解析协议_第六章ICMP:Internet控制报文协议
- ICMP报文类型
- 互联网控制报文协议(icmp)
- ICMP报文分析
- 构造协议报文、自定制协议方法
- 《TCP/IP详解卷1:协议》第6章 ICMP:Internet控制报文协议-读书笔记
- 唯快不破:ICMP报文剖析-自己实现ping程序
- TCP/IP详解(六)ICMP:Internet控制报文协议
- TCP,IP详解,卷一:协议学习笔记之第六章 ICMP: Internet控制报文协议
- UNIX网络编程——ICMP报文分析:端口不可达
- TCP/IP详解学习笔记(5)-- ICMP:internet 控制报文协议
- IP报文及ICMP报文结构原理
- ICMP Redirect 报文导致TCP连接建立不起来的问题分析...