分享
 
 
 

ICMP漏洞分析

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

ICMP在IP中的结构是这样的.

VERSION 4

IHL INTERNET HEADER LENGTH IN 32-BITS

TYPE OF SERVICE 0

TOTAL LENGTH LENGTH OF INTERNET HEADER AND DATA IN 字节单位

IDENTIFICATION, FLAGS

分割和重组IP的标记.

TIME TO LIVE

TTL

PROTOCOL 这一点很重要,表示这次IP包内的是ICMP信息.

ICMP=1

SOURCE ADDRESS

发送这个包的原主机IP地址或路由器地址.(在发送ICMP包是可以是任何路由器的地址)

DESTINATION ADDRESS

准备接受这个icmP包的IP地址.

_____________________________________________

目的主机不可到达的ICMP包结构.

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type Code Checksum

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

unused

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Internet Header + 64 bits of Original Data Datagram

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

类型 代码 校验和

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

保留字

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

IP头和64位原始IP数据 既是原来发送普通IP包有错的数据

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

在IP段里,目的IP是发送错误包的IP地址.

在ICMP 段里

类型是 3

代码有.

0= 网络不可到达.

1= 主机不可到达.

2= 协议不可到达.

3= 端口不可到达.

4= 包需要重组.

5= 原路由失败.

校验和

校验和是0,

Internet Header + 64 bits of Data Datagram

协议头和原数据的前64位.如果原来的协议是高层协议,那么这就是前64

位高层协议的数据.

描述....

如果根据路由的路由表,在一个数据包里的目的网络是不可到达的,例如:

目的网络是无限远,那么,路由就发送一个目的不可到达的消息给这个包的发送者.

在一些路由里,有能力判断目的主机不可能到达的,就回发送主机不可到达.

如果在目的主机里,IP

模块不能传递数据给上层的端口或协议,(因为端口没有激活,或所指的高层协议根本不存在),那么

目的主机会发送目的不可到达的信息回去.

另外一种情况是,当数据报必须分割以通过一个网管时,而偏偏在IP

包里指定了不要分割.此时,网关回发送目的不可到达信息.

代码 0.1. 4, 5的ICMP 一般由路由发送.而 代码 2 3

则来自目的主机.

(cceye 评: 在这个包里,因为0,1, 4 ,5

代码可能来字任何的路由,所以不需要伪造IP

就可以发送ICMP包,此时假冒自己是路由器.

有一点困难是目的不可到达的ICMP包要求附带有原数据的前64位.不过可以假设,

例如:

HOST A -------HOST B

而你是HOST C , 可以想象A

要是访问外界有一些基本的要求,从这里下手,

可以

猜测到他的原始数据.

其一是 DNS , 假如DNS是HOST D , 而我们知道A

必须要访问DNS 才能得以访问其他主机. 而且A

常常访问一个K域,所以只要不断的向A

发送主机不可到达的ICMP信息,并带上那个查询DNS的

K 域名的信息就极有可能成功.

在局域网里可以假冒IP,这时可以假冒受害主机IP地址,并猜测其他主机可能会访问该主机的哪个

高层协议,这时可以发送协议或端口不可到达给所有的主机,

如果技术上能够达到扫描所有的局域网上的包的话,

则只要发现有访问受害主机的包,就紧跟着发送ICMP

端口不可到达.使其他主机不能访问主机)

____________________________________________________________

Time Exceeded Message

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type Code Checksum

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

unused

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Internet Header + 64 bits of Original Data Datagram

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

超时信息.

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

类型 代码 校验和

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

保留字

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

IP头和64位原始IP数据 既是原来发送普通IP包有错的数据

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

在IP段里,目的IP是发送错误包的IP地址.

在ICMP 段里

类型为 11

代码

0= TTL生命期结束.

1= 分割重组时间超时.

校验和

校验和是0,

Internet Header + 64 bits of Data Datagram

协议头和原数据的前64位.如果原来的协议是高层协议,那么这就是前64

位高层协议的数据.

描述.

当一个路由处理一个IP 包时,发现其TTL已经为0 ,

则路由有责任把这个数据销毁,不再转发.并会通知原主机.

当一个主机重组一个分割过的IP时,在系统内定的时间内没有接受到所有的分组而不能完成任务

时.会销毁这个分组并告之原主机.

如果分组被设为0 , (就是没有分组,

那么没有必要设定超时限制)

代码1 会来自一个主机, 代码0 会来自一个路由.

(CCEYE 分析: 这个的困难和上一个一样,

是要知道原主机所发的数据.

引起主机的反应不一样, 因为路由表的原因,

在小网和网络支段伪造IP 很不容易.((可以假冒,

但是通不过静态配置的路由器)) 这里只能冒充路由,返回这个ICMP包会时原主机不断试图加大

TTL

而不断重发相同的包. 关键取决与你的主机与

他的目的主机谁的先一步到,会使受害主机不能访问外界网络)

______________________________________________________-

Parameter Problem Message

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type Code Checksum

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Pointer unused

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Internet Header + 64 bits of Original Data Datagram

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

参数错误信息.

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type Code Checksum

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Pointer unused

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Internet Header + 64 bits of Original Data Datagram

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

在IP段里,目的IP是发送错误包的IP地址.

在ICMP 段里

类型为 12

代码

0 = 指针表明了错误.

校验和为 0

指针

如果代码为0 , 标明发生错误的字节.

Internet Header + 64 bits of Data Datagram

协议头和原数据的前64位.如果原来的协议是高层协议,那么这就是前64 位高层协议的数据. 描述, 如果主机或路由在传输一个数据报时发现了一个错误, 那么该主机必须销毁此包并给原主机一个ICMP信息. 代码 0 可以由 主机 或 路由 发出.

(CCEYE 评: 同上一个的方法获得一样的效果,但需要计算更多.)

___________________________________________________________-

Source Quench Message

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type Code Checksum

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

unused

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Internet Header + 64 bits of Original Data Datagram

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

原数据丢失 信息.

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type Code Checksum

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

unused

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Internet Header + 64 bits of Original Data Datagram

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

在IP段里,目的IP是发送错误包的IP地址.

在ICMP 段里

类型为 4

代码

0

校验和

为 0

Internet Header + 64 bits of Data Datagram

协议头和原数据的前64位.如果原来的协议是高层协议,那么这就是前64

位高层协议的数据.

描述:

当一个路由或主机的内部队列已经被等待处理的数据报添满而不能处理时,

会自动销毁新进来的数据报,并告诉原主机数据发送太快,

------------------------------------

(cceye:这个ICMP

包会使原主机发送包的速度越来越慢.方法同上)

_____________________________________

Redirect Message

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type Code Checksum

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Gateway Internet Address

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Internet Header + 64 bits of Original Data Datagram

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

重定向信息.

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type Code Checksum

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Gateway Internet Address

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Internet Header + 64 bits of Original Data Datagram

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

在IP段里,目的IP是发送错误包的IP地址.

在ICMP 段里

类型为 5

代码

0 = 重定向网络.

1 = 冲定向主机

2 = 重定向服务类型和网络

3 = 重定向服务类型和主机

校验和

为 0

Gateway Internet Address

原数据包的目的主机要经过的路由地址.

Internet Header + 64 bits of Data Datagram

Internet Header + 64 bits of Data Datagram

协议头和原数据的前64位.如果原来的协议是高层协议,那么这就是前64

位高层协议的数据.

描述:

一个路由发送一个重定向消息给一个主机在如下的环境下.

一个路由, G1

从一个属于他的网络中的主机得到一个数据报.G1

检查他的路由表并得到下一个路由的地址,G2

是连接着目的网络的路由, 如果G1在此时发现G2是直接连接着同属于这个数据包的原主机的网络

的话.

G1将发送一个重定向信息给原主机.告诉他连向那个网络的路由有一个更好的.路由同时把数据报

传送到目的网络.

对于在IP选项中有原路由路径的数据报,路由将不发重定向ICMP即使有更好的路由.

代码 0.1, 2, 3 都来自同路由器

(CCEYE:评.

使用该选项使目的主机完全与外界失去联系);

___________________________________________________________

Echo or Echo Reply Message

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type Code Checksum

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Identifier Sequence Number

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Data ...

+-+-+-+-+-

回声回应信息.

IP地址,目的主机的IP地址,为了回应一个回声,简单的把目的地址和原地址调换,

把类型改为0 , 并重新校验即可.

类型

8 发送回声请求.

0 回应回声.

代码

0

校验和.

Identifier

如果代码为0 ,一个标视符会加如来回应. 可以为0.

Sequence Number

如果代码为0 , 一个序列号会帮助对应回声响应.可以为0.

描述:

在回声请求里带的数据必须要被回应带回来.

标志符和序列号用来帮助回声请求者来检测回声请求.回应者必须返回同样的值.

代码 0 可以由一个主机或路由发送.

_______________________________________________-

ICMP

还有广播路由的功能.

可以肯定,一个专线主机不会和DNS服务器连接在一个网络中.

计划:

1, 假冒路由, 告诉主机DNS服务器不可到达.

需要, 一个路由, 一个DNS 服务器.两个网段.

受害主机 A ----路由 -------DNS 服务器

_________-发动攻击的主机.

目的,看A 接受到我的错误ICMP后,还对DNS是否有反应

结果:受害主机与DNS服务器之间的联系效率降低

3/4 .

2, 假冒路由, 告诉主机TTL超时.

需要, 一个路由, 一个DNS 服务器.两个网段.

受害主机 A ----路由 -------DNS 服务器

_________-发动攻击的主机.

目的,看A 接受到我的错误ICMP后,还对DNS是否有反应.

3, 假冒路由告诉主机原数据丢失.

需要, 一个路由, 一个DNS 服务器.两个网段.

受害主机 A ----路由 -------DNS 服务器

________-发动攻击的主机.

目的,看A 接受到我的错误ICMP后,还对DNS是否有反应.

4 , 假冒路由,告诉主机有更好的路由.

需要, 一个路由, 一个DNS 服务器.两个网段.

受害主机 A ----路由 -------DNS 服务器

_________-发动攻击的主机.

看主机在接受到ICMP错误信息后,还能不能访问DNS.

结果:奇怪的是路由器陷入几乎死机的状态. (32M

133MHZ redhat6.1 的路由器).看来恶意数据报被路由销毁了,但是由于算法,或机器的原因而导致太慢.

_____________________

以上是假冒路由,

以下是假冒主机在局域网内部.

计划

1 , 假冒主机依次告诉所有主机端口不可到达.

需要,

一个受害主机, 运行代理服务器.一个局域网

受害主机

__________________

A B C D 攻击主机

看局域网内部的主机是否还能访问受害主机.

2 , 假冒主机,依次告诉所有主机分组超时.

需要,

一个受害主机, 运行代理服务器.一个局域网

受害主机

__________________

A B C D 攻击主机

看局域网内部的主机是否还能访问受害主机.

________________

实验记录:

WIN95 97 98 NT的IP 序列号从0 开始, 到65535

再次从头开始 , 间隔256.

LINUX 的IP 序列号是以1 为间隔.

每个TCP的连接在无法接到回应的情况下,会连续产生4次试图连接.

现在实验看这里的4个连接的TCP内的序列号是否一样.

结果: TCP 一样.Ip 序列号不一样.

如一样,则说明IP在没有告诉上层的情况下自动从发.

如不一样说明IP 在接到ICMP报告之后会要求上层从发.

估计是一样.

另外,还要看IP在从发时是在接到ICMP后,还是在之前.结果:似乎是IP与ICMP并不太友好.因为没

有进一步的编写协议分析仪,所以无从可知,而该死的期中考试又来了.各位,原代码在此.原程序在

是计划3,或计划1,记不清了.(抱歉,要知道我连自己家的电话都要朋友提醒.不然老打错成女朋友

的:)

基本上原代码是由 MSDN 内的PING.C 范例程序和IPMAN.C

拼凑而成的.这里感谢MICRO 和 HiHint

虽然两位都未见面,心仪已久:0

代码思想是这样的:

向目的主机发送一个ECHO 类型的ICMP包.

抓到返回的包,得到她的IP序列号,以此号为开始,每加256

发送一个ICMP的报错通知,具体发送什么类型的可以在函数

void fill_icmp_datab()内修改,

原代码是目的网络不可到达,可以使路由器达到---(what

shall i say?)高潮?.

编译需要VC++5.0 以上. 注意编译时要加入

WSOCK32.LIB

运行需要WIN98 ( NOT NOT NOT WIN95 ,97 , nt4.0)

运行参数:

1 , 目的攻击IP

2, 假设目的IP要访问的IP

3, 假设目的主机要访问的端口.(这里假设是UDP

的 53 )

原代码. 已经作好的可执行程序.

都在http://cceye.iscool.net

改好了别忘了寄来一份.cceye@371.net

或在

bbs 上留下网址

参考

RFC 950 IMCP

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有