ICMP能帮你做什么?谈 OS 侦测技术(一)脑中有很多东西想写,但说实话有时候真是力不从心,弄了个网站,从头到尾说实话全部都是一手包办,不像别人也许可以东贴西剪,四处贴些工具程式,弄些新闻报导就可以开站了........我自己是希望能够多写些自创的文章,尽量不要拿别人的来用........当然看到别人的好文章,我也一定会想办法获得授权转贴给各位参考。
有关ICMP的应用及 OS 侦测技术的文章,其实我一直就有写这方面内容的打算,但始终抽不出时间,之前网站有一篇「
javascript:if(c...#39[url \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='
http://freehomepage.taconet.com.tw/This/is/taconet/...files/200012/01/tos.htm']使用 TOS 位元组里面未使用到的一个位元来判断远端使用的作业系统[/url] 」的原文,我想各位大概都没注意.......因为我到现在都没有收到有人问我这方面的问题,我想大概是大伙对这不敢兴趣的缘故。
在那篇文章里面,最主要是探讨作业系统对于 TOS(Type-of-Service)位元所做的回应,当你使用 Ping 送出 一个 ICMP ECHO(Type 8)请求时,对方机器的 ECHO Reply(Type 0)回应里面,不同作业系统对于 TOS位元所设定的 IP TTL 栏位值,都不一样,我们可以用它来作为作业系统的判断。
下面,我就用 ping 指令:「
ping -v 1 -n 1 <target ip> 」(
注一 ),配合 Netcraft 判断,针对不同作业系统,它们对于 TOS 回应所作的 TTL 值,做了一些实验,请各位看:
网站:www.hinet.net 作业系统:Solaris TTL值:249 网站:www.seed.net.tw 作业系统:Solaris TTL值:251 网站:www.sina.com 作业系统:Linux TTL值:241 网站:www.logitech.com.tw 作业系统:NT/Windows 98 TTL值:124 网站:www.trend.com.tw 作业系统:
NT4/Windows TTL值:121 作业系统:Windows 2000
TTL值:111 看到了吗?做了几个小实验,我们发现很有趣的一些事情。
一、Linux、Solaris....这些 Linux/Unix 的机器,它们的 TTL 值大约都在 240~254 之间。
二、Windows系列的机器,它们的 TTL 值大约都在 110~128 之间。
所以由这个小技巧,我们可以用 Ping 指令,初步简单的判断一台 Internet 机器它是使用何种作业系统,如:
由 TTL 248 ,我可以初步断定 Kimo 不是使用 Windows 作业系统当作伺服器,实际用 Netcraft 研判时,画面如下:
原来它是使用 FreeBSD,这就是 ICMP 的应用。
当然只用一个 TTL 栏位来判断作业系统的种类,实在不是什么很精确的技巧,再说 Windows 所能用的 ICMP工具实在太少,而整个 ICMP 协定里面又有许多其它的查询可以应用(如 Time Stamp Request、Address Mask Request),不过我写这篇文章的目的,是在讲解目前一些应用在侦测作业系统程式的基本原理,我不是给你一条鱼,而是教你如何用ICMP去钓鱼的方法。
Lance Spitzner他也写过一篇类似的文章(其实很多人都写过),不过它的平台应该是在 Linux 下,而且它是用 Snort 来作为抓取相关资讯的研判工具(
注二 ),所以它可以用 TTL、WINDOW、DF、TOS 这四个栏位来研读作业系统的特征(不像我前面光靠 Ping 指令只能得到 TTL 的值),我把它的追踪结果列出如下: #
# Lists of fingerprints for passive fingerprint monitoring
# Updated 23 May, 2000
#
# Mail your signatures to Lance Spitzner
#
# OS VERSION PLATFORM TTL WINDOW DF TOS
#--- ------- -------- --- ----------- -- ---
DC-OSx 1.1-95 Pyramid/NILE 30 8192 n 0
Windows 9x/NT Intel 32 5000-9000 y 0
NetApp OnTap 5.1.2-5.2.2 54 8760 y 0
HPJetDirect ? HP_Printer 59 2100-2150 n 0
AIX 4.3.x IBM/RS6000 60 16000-16100 y 0
AIX 4.2.x IBM/RS6000 60 16000-16100 n 0
Cisco 11.2 7507 60 65535 y 0
DigitalUnix 4.0 Alpha 60 33580 y 16
IRIX 6.x SGI 60 61320 y 16
OS390 2.6 IBM/S390 60 32756 n 0
Reliant 5.43 Pyramid/RM1000 60 65534 n 0
FreeBSD 3.x Intel 64 17520 y 16
JetDirect G.07.x J3113A 64 5804-5840 n 0
Linux 2.2.x Intel 64 32120 y 0
OpenBSD 2.x Intel 64 17520 n 16
OS/400 R4.4 AS/400 64 8192 y 0
SCO R5 Compaq 64 24820 n 0
Solaris 8 Intel/Sparc 64 24820 y 0
FTX(UNIX) 3.3 STRATUS 64 32768 n 0
Unisys x Mainframe 64 32768 n 0
Netware 4.11 Intel 128 32000-32768 y 0
Windows 9x/NT Intel 128 5000-9000 y 0
Windows 2000 Intel 128 17000-18000 y 0
Cisco 12.0 2514 255 3800-5000 n 192
Solaris 2.x Intel/Sparc 255 8760 y 0
## ADDITIONAL NOTES
#
# Cisco IOS 12.0 normally starts all IP sessions with IP ID of 0
# Solaris 8 uses a smaller TTL (64) then Solaris 7 and below (255).
# Windows 2000 uses a much larger Window Size then NT.
## Thanks to the following people for their fingprint contributions
#
# delta
# Craig
# Richard Tomkinson
不过有点好玩,我自己在 Windows 系统下,抓取到的特征和它的数值有点不一样,所以我本想写一个 Windows系统下的 OS 侦测工具, 但是我能获得作业系统的数据不够多(我能力有限,弄不到这么多系统来安装),所以这项计画只好作罢。不过利用ICMP来盼读作业系统的原理倒是可以写写,因为这些东西蛮好玩的,谁说研读 TCP/IP 通讯协定没有用呢?
答案是:「你不会用,不是它没用!」
还是只想「吃鱼」吗?
有时使用网路这些个所谓的工具程式,如果你能仔细研究它里面所用的技巧,我相信比拿它去执行你所谓的「行侠仗义」,或是破坏人家网站的工作要有趣多了。
但很可惜......吃鱼的人永远 > 钓鱼的人,而且什么都不做,只想四处开口要鱼的人更多........所以.......
「去它的担担面!」