Board logo

标题: 使用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=0ttl=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选项来关闭自动解析主机名,其中三台机器,两台是FREEBSD3.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))--回显应答,TimeStamp(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