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_Address
SINGing to IP_Address (IP_Address): 12 data bytes
12 bytes from IP_Address: icmp_seq=0 ttl=236 mask=255.255.255.0
12 bytes from IP_Address: icmp_seq=1 ttl=236 mask=255.255.255.0
12 bytes from IP_Address: icmp_seq=2 ttl=236 mask=255.255.255.0
12 bytes from IP_Address: icmp_seq=3 ttl=236 mask=255.255.255.0
12 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_Address
SINGing to IP_Address (IP_Address): 12 data bytes
12 bytes from IP_Address: icmp_seq=0 ttl=241 mask=0.0.0.0
12 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 d015
xxxx xxxx 1100 aee3 401c 0000
20: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 d015
xxxx xxxx 0000 0000
20: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 xxxx
8b5c 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 d015
xxxx xxxx 1100 ade3 401c 0100
20: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 d015
xxxx xxxx 0000 0000
20: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 xxxx
8b5c d015 1200 ace3 401c 0100 0000 0000
这样你就可以看到SUN SOLARIS回应的网络地址掩码是0.0.0.0。
我们可以使用下面的方法解决这个问题:
ndd -set /dev/ip ip_respond_to_address_mask_broadcast 0
ndd -set /dev/ip ip_respond_to_echo_broadcast 0
ndd -set /dev/ip ip_respond_to_timestamp 0
ndd -set /dev/ip ip_respond_to_timestamp_broadcast 0
ndd -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时间戳请求探测并确定Microsoft
Windows的操作系统类型。首先是正常的请求报文,不产生应答报文的
Windows主机的操作系统类型为Microsoft Windows 95、Microsoft Windows
NT 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.
参考:
1)SING可以到以下网址下载:
http://download.sourceforge.net/sing/SING-1.0b7.tgz
2)相关链接:
http://www.sys-security.com
http://sourceforge.net/projects/sing
这个应该对你有帮助,只要知道域名最终的转向地址就可以,不过这个是在LINUX下才能用的,得有点LINUX的基础知识。 |