快捷搜索:

被动特征探测

人家说要想百站百胜,你必须亲信知彼,你要保护系统不被进击,你首先必须了

解进击者,被动特性探测(Passive Fingerprinting )是一种懂得进击者的而

不被其发觉的一种措施

Fingerprinting

传统上,操作系统特性可以应用一些积极的对象,如queso或者nmap,这些对象是

在每一个操作系统上的IP客栈有自己不合特点的道理上来操作的,每个操作系统

相应经由过程的多种信息包。以是这些对象只要建立一个基于不合的操作系统对应不

同的信息包的数据库,然后,要判断远程主机的操作系统,发送多种不平常的信

息包,检测其是如何相应这些信息包的,再与数据库进行比较做出判断。Fyodor

的 nmap--http://www.insecure.org/nmap对象便是使用这种措施的,他也写了一

份详细的文档http://www.insecure.org/nmap/nmap-fingerprinting-article.html,

别的绿盟backend也写过这中文文章。

而被动特性探测(Passive Fingerprinting )遵照相同的观点,但实现的措施不

同。被动特性探测(Passive Fingerprinting )基于嗅探远程主机上的通信来代替

主动的去查询远程主机,所有你必要做的是抓取从远程主机上发送的信息包。在

嗅谈这些信息包的根基上,你可以判断远程主机的操作系统,就象主动特性探测

一样,被动特性探测(Passive Fingerprinting )也是由每个操作系统的有自己

的IP客栈特性,经由过程阐发sniffer traces 和鉴别他们之间的不合之处,就可以判断

远程主机的操作系统了

旌旗灯号

判断主机的操作系统一样平常可以由4个方面来抉择(当然也有其他旌旗灯号存在):

--TTL -

这个数据是操作系统对出站的信息包设置的存活光阴。--

窗口大年夜小Window Size - 是操作系统设置的窗口大年夜小,这个窗口大年夜小是 在发送FIN信息包时包孕的选项。

--DF -

可以查看是否操作系统设置了Don't Fragment bit位?--TOS -

是否操作系统设置了设备类型?

经由过程阐发信息包这些因数,你可以判断一个远程的操作系统,当然探测到的系统

弗成能100%精确,也不能寄托上面单个的旌旗灯号特性来判断系统,然则,经由过程查看

多个旌旗灯号特性和组合这些信息,你可以增添对远程主机的正确程度。下面是一个

简单的例子,下面是the sniffer trace of a system 发送一个信息包,

.This system launched a mountd exploit against me,

我现在不要应用finger 或者NMAP等对象,而想要懂得被动吸收到的信息,应用snort--

http://www.clark.net/~roesch/security.html

获得了下面的一些旌旗灯号特性:

04/20-21:41:48.129662 129.142.224.3:659 -> 172.16.1.107:604

TCP TTL:45 TOS:0x0 ID:56257

奸淫F**A* Seq: 0x9DD90553Ack: 0xE3C65D7Win: 0x7D78

根据上面的四条准则,我们可以达到下面的环境:

-- TTL: 45

-- Window Size: 0x7D78(or 32120 in decimal)

-- DF: The Don't Fragment bit is set

--TOS: 0x0

我们在对照旌旗灯号特性数据库--,首先,我们查看应用在远程系统上的TTL,从我们

的sniffer trace 可以看到TTL是45,这多半表示它经由过程19跳来被我们捕获,是以

原始的TTL是设置为64,基于这个TTL,这个信息包应该看来是由LINUX和FREEBSD

系统发来的(当然更多的系统旌旗灯号特性必要放到数据库中),这个TTL经由过程了

traceroute

远程主机获得证明,假如你斟酌到远程主机在检测你的traceroute, 你可以设置你traceroute的time-to-live(默认是30跳),应用-m选项来设定到

主机的跳数少1到2跳的数值,如,刚才的例子里,我们可以应用traceroute -m 18

来设置跳数为18跳,这样做可以让你看达到到主机的路径而不碰着远程主机。

要多TTL的信息,请查看http://www.switch.ch/docs/ttl_default.html

下一步是对照窗口大年夜小-Windows size,用Windows size来判断是另一个异常有效

的对象,分外是应用多大年夜的窗口大年夜小和改变大年夜小的规律,在上面的旌旗灯号特性中,

我们可以看到其设置为0x7D78,这是LINUX平日应用的默认窗口大年夜小。LINUX,FREEBSD

和SOLARIS系统在完备的一个会话历程中窗口的大年夜小是保持不变的,然则 ,部分

Cisco

路由器(如2514)和WINDOWS/NT的窗口是常常改变的(在一个会话阶段), 假如在初始化三次握手后衡量窗口大年夜小是对照正确的,详细信息,可以看看

Richard Stevens

的"TCP/IP Illustrated, Volume 1" 20章.

多半系统应用DF位设置,是以这个是一个限制的值,然则有些系统如SCO和OPENBSD

不应用这个DF标志,以是就对照轻易的用来鉴别一些没有这个DF位设置的系统,在

更多的测试后,发明TOS也是一个限制的值,这就表示不是很多操作系统来判断TOS,

而是协议在应用这个值。TOS的鉴定必要更多的测试。是以,根据上面的信息,一些

特殊的TTL值和窗口大年夜小值,你可以经由过程旌旗灯号数据库来对照结果。

留意,与主动特性探测一样,passive Fingerpinting有许多限定,首先,利用

法度榜样必须构建他们自己的与操作系统不合旌旗灯号特性信息包(如NMAP,HUNT ,TEARDROP等)。

其次,这种探测可以应用调剂系统的信息包的值来避免,如可以用下面的措施来

改变TTL值:

Solaris: ndd -set /dev/ip ip_def_ttl 'number'

Linux: echo 'number' > /proc/sys/net/ipv4/ip_default_ttl

NT: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters

其他信息特性和应用

上面的是评论争论了4个旌旗灯号特性,但还有其他的特性可以被跟踪,如一些初始化序列

好,IP剖断号码(IP Identification numbers ),TCP或者IP的选项。如:

Cisco

路由器趋向由0开始IP剖断号码(IP Identification numbers )来代替 随机的指派号码。也可以应用ICMP的有效负载来判断,

http://dev.whitehats.com/papers/passive/index.html

应用ICMP有效负载类型 或者TCP选项来鉴别远程主机,举个离子,微软的ICMP REQUEST的有效负荷包孕

字母,而SOLAIRS或者LINUX的ICMP REQUEST有效相符包孕数字和符号。又如TCP

选项,选择性的应答Acknowledgement选项SackOK --(rfc2018)平日被WINDOWS

和LINUX应用,但FREEBSD和SOLARIS这个选项不应用。另一个旌旗灯号特性是信息包状

态,什么类型的信息包被应用,可以利用FYODOR的话说:

"For example, the initial SYN request can be a gold mine (as can the reply

to it). RST packets also have some interesting features that can be used

for identification."(例如,初始化的SYN哀求是一个金矿(以为这个SYN哀求

是要回覆的),RST信息包也具有一些对照有趣的特性用来鉴别系统)。

您可能还会对下面的文章感兴趣: