利用ICMP请求报文探测主机操作系统

利用ICMP请求报文探测主机操作系统,第1张

利用ICMP请求报文探测主机操作系统,第2张

1) 根据ICMP地址掩码请求探测SUN操作系统

  对于ICMP地址掩码请求,只有少数操作系统会产生相应的应答,这些系统包括ULTRIX OpenVMS, Windows 95/98/98 SE/ME, NT below SP 4, 和 SUN Solaris机器。但其中SUN机器对碎片ICMP地址掩码请求(fragmented ICMP Address Mask Requests)的应答不一样,所以允许远程用户来鉴定SUN主机操作系统。

  下面是通过由Alfredo Andres Omella写的SING(http://sourceforge.net/projects/sing)对SUN SOLARIS2.7机器正常的地址掩码请求:

  # ./sing -mask IP_AddressSINGing to IP_Address (IP_Address): 12 data bytes12 bytes from IP_Address: icmp_seq=0 ttl=236 mask=255.255.255.012 bytes from IP_Address: icmp_seq=1 ttl=236 mask=255.255.255.012 bytes from IP_Address: icmp_seq=2 ttl=236 mask=255.255.255.012 bytes from IP_Address: icmp_seq=3 ttl=236 mask=255.255.255.012 bytes from IP_Address: icmp_seq=4 ttl=236 mask=255.255.255.0

  --- IP_Address sing statistics ---5 packets transmitted, 5 packets received, 0% packet loss

  操作系统会回答一个ICMP的地址掩码请求并带有其响应的网络地址掩码。

  下面我们来看我们发送一些碎片请求,下面的例子是通过发送8字节的IP数据碎片到同样上面操作的SUN SOLARIS2.7机器上,就可以看到我们获得的回应和刚才的不一样了(-c 2是允许SING发送两个ICMP地址掩码请求):

  # ./sing -mask -c 2 -F 8 IP_AddressSINGing to IP_Address (IP_Address): 12 data bytes12 bytes from IP_Address: icmp_seq=0 ttl=241 mask=0.0.0.012 bytes from IP_Address: icmp_seq=1 ttl=241 mask=0.0.0.0

  --- IP_Address sing statistics ---2 packets transmitted, 2 packets received, 0% packet loss

  如果用tcpdump监听,有如下输出:

  20:02:48.441174 ppp0 > slip139-92-208-21.tel.il.prserv.net > Host_Address:icmp: address mask request (frag 13170:8@0+)4500 001c 3372 2000 ff01 50ab 8b5c d015xxxx xxxx 1100 aee3 401c 000020:02:48.442858 ppp0 > slip139-92-208-21.tel.il.prserv.net > Host_Address:(frag 13170:4@8)4500 0018 3372 0001 ff01 70ae 8b5c d015xxxx xxxx 0000 000020:02:49.111427 ppp0 < Host_Address > slip139-92-208-21.tel.il.prserv.net:icmp: address mask is 0x00000000 (DF)4500 0020 3618 4000 f101 3c01 xxxx xxxx8b5c d015 1200 ade3 401c 0000 0000 0000

  20:02:49.441492 ppp0 > slip139-92-208-21.tel.il.prserv.net > Host_Address:icmp: address mask request (frag 13170:8@0+)4500 001c 3372 2000 ff01 50ab 8b5c d015xxxx xxxx 1100 ade3 401c 010020:02:49.442951 ppp0 > slip139-92-208-21.tel.il.prserv.net > Host_Address:(frag 13170:4@8)4500 0018 3372 0001 ff01 70ae 8b5c d015xxxx xxxx 0000 000020:02:50.011433 ppp0 < Host_Address > slip139-92-208-21.tel.il.prserv.net:icmp: address mask is 0x00000000 (DF)4500 0020 3619 4000 f101 3c00 xxxx xxxx8b5c d015 1200 ace3 401c 0100 0000 0000

  这样你就可以看到SUN SOLARIS回应的网络地址掩码是0.0.0.0。

  我们可以使用下面的方法解决这个问题:

  ndd -set /dev/ip ip_respond_to_address_mask_broadcast 0ndd -set /dev/ip ip_respond_to_echo_broadcast 0ndd -set /dev/ip ip_respond_to_timestamp 0ndd -set /dev/ip ip_respond_to_timestamp_broadcast 0ndd -set /dev/ip ip_forward_directed_broadcasts 0

  2、利用ICMP时间戳请求报文探测Windows 98/98 SE/ME/2000操作系统

  Microsoft Windows 98/98 SE/ME/2000 Profressional/2000 Server操作系统对于将代码(code)段置为0的ICMP时间戳请求报文将不产生任何应答报文。

  根据这个特性,可以通过两种格式的ICMP时间戳请求探测并确定MicrosoftWindows的操作系统类型。首先是正常的请求报文,不产生应答报文的Windows主机的操作系统类型为Microsoft Windows 95、Microsoft WindowsNT 4.0 Workstation with SP6a(及以下版本)。其它的操作系统(包括UNIX系列)则会产生相应的应答报文。接着发送定制格式的时间戳请求ICMP报文,其中的代码(code)段置为非零值,Windows98/98 SE/ME/2000 Profressional/2000 Server等较新版本的操作系统将不产生应答报文,而其它操作系统则根据此请求回复正确的应答报文。

  涉及(经过测试)的操作系统:LINUX Kernel 2.4t2; LINUX Kernel 2.2.14; FreeBSD 4.0, 3.4; OpenBSD 2.7 & 2.6; Solaris 2.5.1, 2.6, 2.7 & 2.8; HP-UX 10.20; AIX 4.1; ULTRIX; Microsoft Windows 95 / 98 / 98SE / ME / NT 4 SP3, SP4, SP6a WRST & SERVER / 2000 Professional & Server.

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 利用ICMP请求报文探测主机操作系统

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情