标题:
使用ICMP协议来进行主机探测
[打印本页]
作者:
yuyang911220
时间:
2015-11-23 22:05
标题:
使用ICMP协议来进行主机探测
主机探测对于攻击者来将是很重要的一步,通过对主机的信息搜寻,才能很好的下一步的进攻,当然对于主机探测来说有很多方法,主机某些服务的BANNER,一些使用的
应用
程序,或者使用工具来检测主机,如
NMAP
,在WEB上有
www.netcraft.com
来简单的估测主机。下面所讲的是使用ICMP协议来探测主机,主要也是可以了解ICMP这个协议,这里最主要的也是将这个ICMP协议,呵呵。
1,ICMPECHO(Type8)和ECHOReply(Type0)
我们使用一个ICMPECHO数据包来探测主机地址是否存活(当然在主机没有被配置为过滤ICMP形式),通过简单的发送一个ICMPECHO(Type8)数据包到目标主机,如果ICMPECHOReply(ICMPtype0)数据包接受到,说明主机是存活状态。
如果没有就可以初步判断主机没有在线或者使用了某些过滤设备过滤了ICMP的REPLY。
|-------------------------------------------------------------
||
|------ICMPECHOrequest------|
||
HOST
|——————————---$#@62;|HOST||
||A|$#@60;-----------------------|B||
|||如果存活或者没有过滤|||
|------将返回ICMPRCHOREPLY------|
||
--------------------------------------------------------------
这种机制就是我们通常所用的
ping
命令来检测目标主机是否可以
ping
到。
下面是两个
LINUX
机器的演示:
[root@xundi/root]#ping192.168.5.5
PING192.168.5.5(192.168.5.5)from192.168.5.1:56(84)bytesofdata.
64bytesfrom192.168.5.5:icmp_seq=0
ttl
=255time=4.
4ms
64bytesfrom192.168.5.5:icmp_seq=1ttl=255time=5.9ms
64bytesfrom192.168.5.5:icmp_seq=2ttl=255time=5.8ms
---192.168.5.5pingstatistics---
3packetstransmitted,3packetsreceived,0%packetloss
round-tripmin/avg/
max
=4.4/5.3/5.9ms
下面是snort所显示的信息包:
01/26-13:16:25.746316192.168.5.1-$#@62;192.168.5.5
ICMPTTL:64TOS:0x0ID:6059ID:5721Seq:1ECHO
89D78E3827630B0008090A0B0C0D0E0F...8c..........
101112131415161718191A1B1C1D1E1F................
202122232425262728292A2B2C2D2E2F!"#$%&()*+,-./
303132333435363701234567
01/26-13:16:25.746638192.168.5.5-$#@62;192.168.5.1
ICMPTTL:255TOS:0x0ID:6072
ID:5721Seq:1ECHOREPLY
89D78 27630B0008090A0B0C0D0E0F...8c..........
101112131415161718191A1B1C1D1E1F................
202122232425262728292A2B2C2D2E2F!"#$%&()*+,-./
303132333435363701234567
0481631
____________________________________________________________
|8位类型|代码=0|校验和|
|_____________|______________|_____________________________|
|表示符|
序列号
|
|____________________________|_____________________________|
|Optiondata|
|__________________________________________________________|
上面是ICMPECHOrequest&replay
报文
安全建议:在你的
边缘路由
或者
防火
墙阻塞来自INTERNET的ICMPECHOrequests
2,ICMPSWEEP
使用ICMPECHO轮询多个主机称为ICMPSWEEP(或者PingSweep).
对于小的或者中等
网络使用
这种方法来探测主机是一种比较可接受的行为,但对于一些大的网络如CLASSA,B,这种方法就显的比较慢,原因是Ping在处理下一个之前将会等待正在探测主机的回应。
fping
(http://
ftp
.tamu.edu/pub/Unix/src/)是一个UNIX工具,可以并行发送大量的请求,这使的它处理起来比普通的PING工具更为快速,它也可以由gping工具来传递IP地址,gping是一个用来产生IP地址列表的工具。fping也可以使用-d选项来解析探测的机器。
另外也有一个工具也可以并行处理ICMPSWEEP,并能解析被探测主机的主机名,它就是我们常用的
NMAP
(
http://www.insecure.org
),由Fyodor编写.
对于WINDOWS来讲,一个比较有名的ICMPSWEEP工具就是Rhino9的pinger,不知大家用过没有,它扫描速度确实比较快。可以和NMAP,fping相比美。
*但上面有点要注意的是,如果你使用解析被探测主机名的方法来进行PING探测,你就会在权威
DNS服务器
中留下你(攻击者)的LOG记录。
下面的例子是使用NMAP对20个IP地址进行ICMPSWEEP的演示,因为我的机器没有使用NAME
服务器
,所以使用_n选项来关闭自动解析主机名,其中三台机器,两台是FREEBSD
3.4
-RELEASE,一台是WINDOWS2000ProfessinolBETA3,三台机器都有回应,当然如果你没有NAME服务器由不关闭自动解析主机名选项,探测就会非常慢:
#nmap-sP-PI-n192.168.0.1-20
StartingnmapV.2.54BETA1byfyodor@insecure.org(
www.insecure.org/nmap/
)
Host(192.168.0.1)appearstobeup.
Host(192.168.0.2)appearstobeup.
Host(192.168.0.3)appearstobeup.
Nmapruncompleted--20IPaddresses(3hostsup)scannedin1seconds
安全建议:在你的边缘
路由
或者
防火墙
阻塞来自INTERNET的ICMPECHOrequests
3,BroadcastICMP
通过发送ICMPECHOrequest到广播地址或者目标
网络地址
可以简单的来反映目标网络存活主机。这样的请求会广播到目标网络中的所有主机,所有存活的主机都将会发送ICMPECHOREPLY到攻击者的源IP地址。这种技术的主机探测只适用于目标网络的UNIX主机,WINDOWS机器将不产生ICMPECHOREPLY给目标是广播地址或网络地址的ICMPECHOREQUEST,但这种行为是正常的操作,可以参考RFC1122(
http://www.ietf.org/
rfc
/rfc1122.
txt
.),它是这样描述的,如果我们发送ICMPECHOREQUEST给
一个IP
广播地址或者IP
多播
地址,它可以没有任何回应的丢弃。(我不知道其这个ping-b的选项是怎么得到的,我查询linux,
freebsd
,WINDOWS都没有关于-b的选项,所以请大家解释。但我还是把示例写进去。)
下面是一个演示,当发送ICMPECHOREQUEST给网络广播地址的时候期望得到主机的回应,其中的两台是
FREEBSD
主机,一台是
WIN2K
主机,
WIN2K
没有回应:
#ping-b192.168.0.255
WARNING:pingingbroadcastaddress
PING192.168.0.255(192.168.0.255)from192.168.0.1:56(84)bytesofdata.
64bytesfrom192.168.0.2:icmp_seq=0ttl=255time=4.1ms
64bytesfrom192.168.0.3:icmp_seq=0ttl=255time=5.7ms(DUP!)
---192.168.0.0pingstatistics---
1packetstransmitted,1packetsreceived,+1duplicates,0%packetloss
round-tripmin/avg/max=4.1/4.9/5.7ms 下面个例子是发一个PING到网络地址,出现的现象同样:
#ping-b192.168.0.0
WARNING:pingingbroadcastaddress
PING192.168.0.0(192.168.0.0)from192.168.0.1:56(84)bytesofdata.
64bytesfrom192.168.0.2:icmp_seq=0ttl=255time=4.1ms
64bytesfrom192.168.0.3:icmp_seq=0ttl=255time=5.7ms(DUP!)
---192.168.0.0pingstatistics---
1packetstransmitted,1packetsreceived,+1duplicates,0%packetloss
round-tripmin/avg/max=4.1/4.9/5.7ms
注意:ICMP广播如果有很多机器回应的话会造成
拒绝服务
。
安全建议:在边缘路由上阻塞IP直接广播。
4,Non-ECHOICMP(端口不可达ICMP)
在ICMP协议中不光光只有ICMPECHO的ICMP查询信息类型,在ICMP扫描技术中也用到Non-ECHOICMP技术(不仅仅能探测主机,也可以探测网络设备如路由)。其中ICMP报文的类型包括如下:ECHO(Request(Type8),Reply(Type0))--回显应答,Time
Stamp
(Request(Type13),Reply(Type14))--时间戳请
求和
应答,Information(Request(Type15),Reply(Type16))--信息请求和应答,和AddressMask(Request(Type17),Reply(Type18))--地址掩码请求和应答等。具体的就请看RFC1122和RFC1812--
http://www.ietf.org/
rfc
/rfc1812.txt.
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0