ICMP能帮你做什么?谈 OS 侦测技术(一)

Home Home
引用 | 编辑 pipikai
2005-05-17 10:56
楼主
推文 x0
ICMP能帮你做什么?谈 OS 侦测技术(一)
脑中有很多东西想写,但说实话有时候真是力不从心,弄了个网站,从头到尾说实话全部都是一手包办,不像别人也许可以东贴西剪,四处贴些工具程式,弄些新闻报导就可以开站了........我自己是希望能够多写些自创的文章,尽量不要拿别人的来用........当然看到别人的好文章,我也一定会想办法获得授权转贴给各位参考。
有关ICMP的应用及 OS 侦测技术的文章,其实我一直就有写这方面内容的打算,但始终抽不出时间,之前网站有一篇「 http://freehomepage.taconet.com.tw/This/is/taconet/top_hosts/hackland/textfiles/200012/01/tos.htm \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/top_hosts/hackland/textfiles/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 通讯协定没有用呢?
答案是:「你不会用,不是它没用!」
还是只想「吃鱼」吗?
有时使用网路这些个所谓的工具程式,如果你能仔细研究它里面所用的技巧,我相信比拿它去执行你所谓的「行侠仗义」,或是破坏人家网站的工作要有趣多了。
但很可惜......吃鱼的人永远 > 钓鱼的人,而且什么都不做,只想四处开口要鱼的人更多........所以.......
「去它的担担面!」

献花 x0