⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 485.htm

📁 unix高级编程原吗
💻 HTM
📖 第 1 页 / 共 2 页
字号:
      定如何重组数据包。我没有加入这一特性因为没有简便的方式 <br>

      发送IP分段(特别是,在Solaris 上是不允许的)。关于覆盖 <br>

      段的更多信息,可以看IDS 的论文(www.secnet.com) <br>

TCP 选项 -- 这简直是泄漏信息的金矿。它的好处在于: <br>



      1)  这通常是可选的(哈!):) 所以并非所有实现都支持。 <br>

      2)  若一个实现发出设置了选项的请求,目标通过设置它在回 <br>

          应中表示支持。 <br>

      3)  可以在一个数据包中设置而一次测试所有选项。 <br>

      Nmap发送这些选项的几乎所有可能的包: <br>

      Window Scale=10; NOP; Max Segment Size = 265; Timestamp; End of Ops; <br>

      当你得到回应,看看那个选项被送回也就是被支持。一些操作 <br>

      系统如最近的FreeBSD 机器支持上面所有的,而其他,如Linux 2.0.X <br>

      支持的则很少。最近的Linux 2.1.x 内核支持上面所有的。另 <br>

      一方面,它们又有更易受攻击的TCP 序列生成方式。去看看。 <br>

      即使几个操作系统支持同样的选项集,有时仍可以通过选项的 <br>

      _值_分辨出它们。例如,如果送一个小的MSS值给Linux机器, <br>

      它会用那个MSS 生成一个回答给你。其他主机会给你不同的值。 <br>

      甚至即使你得到同样的支持选项集和同样得值,你仍可以通过 <br>

      选项提供的_顺序_和填充字进行辨识,例如Solaris返回'NNTNWME' <br>

      表示: <br>

      而Linux 2.2.122返回MENNTNW。同样的选项,同样的值,但不 <br>

      同顺序! <br>

      没见过其他OS检测工具利用TCP 选项,但它非常有用。 <br>

      因同样原因有其他几个有用的选项我会探测,象那些支持T/TCP <br>

      和选择性确认。 <br>

开发年代 -- 甚至使用上面所有测试,nmap仍不能从TCP 栈区分Win95, <br>



      WinNT,或Win98。这很令人惊讶,尤其是Win98 比Win95 晚出 <br>

      现4 年。你可能想它们不得不从某些方面进行改善(象支持更 <br>

      多的TCP 选项)这样我们可以检测到改变而分辨出它们。不幸 <br>

      的是,不是这样的。NT的栈显然就是放在95里的蹩脚的东西。 <br>

      而且到98也没加改动。 <br>

      但别放弃希望,还有个办法。你可以简单的进行早期的Windows <br>

      DOS 攻击(Ping of Death, Winnuke, 等)而比当时的如Teardrop <br>

      和Land多做一些。就是在每个攻击之后,ping它们看是否垮 <br>

      掉了。等到你最后crash 掉它们,你就能缩小的某一服务包 <br>

      或补丁。 <br>

      这个没加进nmap,尽管我承认它非常诱人:)。 <br>

SYN洪水限度 --  一些操作系统会停止新的连接尝试如果你送太多的 <br>

      伪造SYN 给它(伪造包避免你的内核复位连接)。许多操作系 <br>

      统只能处理8 个包。最近的Linux 内核(包括其他操作系统) <br>

      允许不同的方式如SYN cookie来防止这成为严重问题。所以你 <br>

      可以试着从伪造地址发8 个包到目标打开的端口再尝试你还能 <br>

      否建立连接以发现一些信息。这没在nmap中实现因为有人不喜 <br>

      欢你用SYN 洪水,甚至你解释这只是想知道它运行的操作系统 <br>

      也不能使他们平静。 <br>

NMAP实现和结果 <br>

我已经作了一个上面说的OS探测技术的参考实现(除了我说不包括的)。 <br>

我把它们加到了我的Nmap扫描器这样在分析指纹时它已经知道了什么 <br>



端口是打开还是关闭的而不用你再告诉。它也能在Linux,*BSD, 和 <br>

Solaris 2.51和2.6, 以及其他一些操作系统间移植。 <br>

新版的nmap读一个指纹模板文件。下面是语法的例子: <br>

FingerPrint  IRIX 6.2 - 6.4 # Thanks to Lamont Granquist <br>

TSeq(Class=i800) <br>

T1(DF=N%W=C000|EF2A%ACK=S++%Flags=AS%Ops=MNWNNT) <br>

T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=) <br>

T3(Resp=Y%DF=N%W=C000|EF2A%ACK=O%Flags=A%Ops=NNT) <br>

T4(DF=N%W=0%ACK=O%Flags=R%Ops=) <br>

T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=) <br>

T6(DF=N%W=0%ACK=O%Flags=R%Ops=) <br>

T7(DF=N%W=0%ACK=S%Flags=AR%Ops=) <br>

PU(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E) <br>

看第一行(我加了'>'标记): <br>

> FingerPrint  IRIX 6.2 - 6.3 # Thanks to Lamont Granquist <br>

这简单表明这个指纹覆盖IRIX版本6.2到6.3而注释表明Lamont Granquist <br>

友好地送给我测试用IRIX机器的IP地址或指纹。 <br>

> TSeq(Class=i800) <br>

这表明ISN 取样放在"i800组"。这意味着每一个新序列号比前一个大 <br>

800的整数倍。 <br>

> T1(DF=N%W=C000|EF2A%ACK=S++%Flags=AS%Ops=MNWNNT) <br>

这个测试叫T1(比test1 聪明吧?)。这个测试我们送一个SYN 包带 <br>



一组TCP 选项到一个打开的端口。DF=N意为回答的"Don't fragment" <br>

位必须没有设置。W=C000|EF2A意为收到的窗口特征必须是0xC000 或 <br>

EF2A。ACK=S++是说响应必须是我们送的序列号加1 。Flags=AS 意为 <br>

ACK 和SYN 标记在回答中。Ops=MNWNNT意为回答的选项必须如此顺序: <br>

> T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=) <br>

测试2 包括一个NULL及同样选项到一个打开的端口。Resp=Y表示我们 <br>

必须得到一个回答。Ops=表示必须没有任何选项包括在回答中。若整 <br>

个用'%Ops='则任何选项都匹配。 <br>

> T3(Resp=Y%DF=N%W=400%ACK=S++%Flags=AS%Ops=M) <br>

测试3 是一个SYN|FIN|URG|PSH w/options 到一个打开端口。 <br>

> T4(DF=N%W=0%ACK=O%Flags=R%Ops=) <br>

这是一个到打开端口的ACK。注意这儿没有Resp=。这意味着缺少回答 <br>

(比如包在网络上掉了或被防火墙拦住了)不会妨碍其他测试的匹配。 <br>

我们如此是因为实际上所有的OS都会回答,所以缺少回答总是网络原 <br>

因而不是OS本身造成。测试2和3里有Resp标记因为有OS_确实_丢弃它 <br>

们而不回答。 <br>

> T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=) <br>

> T6(DF=N%W=0%ACK=O%Flags=R%Ops=) <br>

> T7(DF=N%W=0%ACK=S%Flags=AR%Ops=) <br>

这些测试是SYN,ACK,和FIN|PSH|URG, 分别地,到一个关闭端口。 <br>

总是设置同样的选项。当然这显然给了名字'T5', 'T6', 和 'T7' :)。 <br>

> PU(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E) <br>



这大家伙是端口不可达消息测试。现在你应该认识DF=N了。TOS=0 意 <br>

为IP服务域类型是0 。下两个域给出(16进制)返回的消息头IP全长 <br>

域和IP头中给的全长。RID=E 是说在返回的部分原始包中的RID 值应 <br>

和原来的一样(就如我们送出的)。RIPCK=E 表示没有修改检查和( <br>

改了的话用RIPCK=F)。UCK=E表示UDP 检查和也正确。下面的是UDP <br>

长度0x134 和DAT=E 表示它们正确返回我们的UDP 数据。因为大多数 <br>

实现(包括这个)不送回任何我们的UDP 数据包,它们默认DAT=E。 <br>

带这个功能的这个版本的nmap正在私下进行第六次beta测试循环。你 <br>

读到的时候,也许已经完成,也许没有。访问http://www.insecure.org/nmap/ <br>

以得到最新版本。 <br>

流行网站快照 <br>

下面是我们努力的成果。我们现在可以随机挑选Internet网站判断它 <br>

使用的OS。它们许多修改了telnet标志,等。以使这些信息保密。但 <br>

这对我们的新指纹没用!这也是好办法揭露<填上你喜欢的傻OS>的用 <br>

户是多么的愚蠢。:) <br>

用在这些例子中的命令是:nmap -sS -p 80 -O -v <主机> <br>

也要注意大多数扫描是在98-10-18进行的。那以后一些家伙会升级/ <br>

改变了它们的服务器。 <br>

注意我并不喜欢这的每个网站。 <br>

# "黑客" 网站或(两方都是)自认为是的 <br>

www.l0pht.com        => OpenBSD 2.2 - 2.4 <br>

www.insecure.org     => Linux 2.0.31-34 <br>



www.rhino9.ml.org    => Windows 95/NT     # 没的说 :) <br>

www.technotronic.com => Linux 2.0.31-34 <br>

www.nmrc.org         => FreeBSD 2.2.6 - 3.0 <br>

www.cultdeadcow.com  => OpenBSD 2.2 - 2.4 <br>

www.kevinmitnick.com => Linux 2.0.31-34  # Free Kevin! <br>

www.2600.com         => FreeBSD 2.2.6 - 3.0 Beta <br>

www.antionline.com   => FreeBSD 2.2.6 - 3.0 Beta <br>

www.rootshell.com    => Linux 2.0.35  # 改成了 OpenBSD 在他们得到以后 <br>

# 安全提供商,顾问,等 <br>

www.repsec.com       => Linux 2.0.35 <br>

www.iss.net          => Linux 2.0.31-34 <br>

www.checkpoint.com   => Solaris 2.5 - 2.51 <br>

www.infowar.com      => Win95/NT <br>

# OS制造商 <br>

www.li.org           => Linux 2.0.35 # Linux 国际版 <br>

www.redhat.com       => Linux 2.0.31-34 # 我奇怪它们发行什么 :) <br>

www.debian.org       => Linux 2.0.35 <br>

www.linux.org        => Linux 2.1.122 - 2.1.126 <br>

www.sgi.com          => IRIX 6.2 - 6.4 <br>

www.netbsd.org       => NetBSD 1.3X <br>

www.openbsd.org      => Solaris 2.6     # 啊嗨 :) <br>

www.freebsd.org      => FreeBSD 2.2.6-3.0 Beta <br>



# 学联 <br>

www.harvard.edu      => Solaris 2.6 <br>

www.yale.edu         => Solaris 2.5 - 2.51 <br>

www.caltech.edu      => SunOS 4.1.2-4.1.4  # Hello! 这是90年代的 :) <br>

www.stanford.edu     => Solaris 2.6 <br>

www.mit.edu          => Solaris 2.5 - 2.51 # 这么多好学校喜欢SUN? <br>

                                           # 大概是给.edu打40%的折扣 :) <br>

www.berkeley.edu     => UNIX OSF1 V 4.0,4.0B,4.0D <br>

www.oxford.edu       => Linux 2.0.33-34  # 好家伙! <br>

# 残疾网站 <br>

www.aol.com          => IRIX 6.2 - 6.4  # 不奇怪它们那么不安全 :) <br>

www.happyhacker.org  => OpenBSD 2.2-2.4 # 病态的, Carolyn? <br>

                                        # 甚至最安全的OS在不合格的管理员手里 <br>

也没用 <br>

# 其他 <br>

www.lwn.net          => Linux 2.0.31-34 # 这是Linux新闻网站! <br>

www.slashdot.org     => Linux 2.1.122 - 2.1.126 <br>

www.whitehouse.gov   => IRIX 5.3 <br>

sunsite.unc.edu      => Solaris 2.6 <br>

注意:在它们的安全白皮书中,Microsoft 说到它们松懈的安全:“ <br>

这种假设已经改变在这些年中Windows NT获得普及很大程度上是由于 <br>

其安全特性”。喔,从我这里看Windows 在安全团体中不是很普遍:)。 <br>



从中我只看到2 台Windows 机器,而且对nmap来说Windows 是_ 容易_ <br>

分辨的它太破了(一流的聪明) <br>

当然,有更多需要检查的。这是ultra-secret Transmeta公司的网站。 <br>

有趣的是该公司主要由微软的Paul Allen建立,而非其雇员Linus Torvalds。 <br>

那么它们是和Paul用NT或者投身到Linux革命中去呢?我们看看: <br>

我们用命令: <br>

nmap -sS -F -o transmeta.log -v -O www.transmeta.com/24 <br>

这个说SYN 扫描一致端口(从/etc/services),记录结果到'transmeta.log', <br>

详细地,进行OS扫描,并扫描www.transmeta.com所在的'C'地址。这 <br>

是结果摘要: <br>

neon-best.transmeta.com (206.184.214.10) => Linux 2.0.33-34 <br>

www.transmeta.com (206.184.214.11) => Linux 2.0.30 <br>

neosilicon.transmeta.com (206.184.214.14) => Linux 2.0.33-34 <br>

ssl.transmeta.com (206.184.214.15) => Linux unknown version <br>

linux.kernel.org (206.184.214.34) => Linux 2.0.35 <br>

www.linuxbase.org (206.184.214.35) => Linux 2.0.35 可能和上面的是同一台机器 <br>

好,我想结果很清楚了:)。 <br>

感谢 <br>

现在Nmap能够检测如此多不同的操作系统的唯一原因是那么多的人在 <br>

个人beta测试中努力找到新的激动人心的机器来获取指纹!特别是, <br>

Jan Koum, van Hauser, Dmess0r, David O'Brien, James W. Abendschan, <br>

Solar Designer, Chris Wilson, Stuart Stock, Mea Culpa,Lamont Granquist, <br>



Dr. Who, Jordan Ritter, Brett Eldridge, 和Pluvius 送来成吨的 <br>

古怪机器的IP地址和/或不能通过Internet访问的机器的指纹。 <br>

感谢Richard Stallman些的GNU Emacs。 本文不能顺利自动换行如果 <br>

我用vi或cat 和^D的话。 <br>

问题和意见可以送到fyodor@insecure.org(如果它不工作了,用fyodor@insecure.org <br>

)。 <br>

Nmap可以从获得http://www.insecure.org/nmap。 <br>

------ <br>

译者注: <br>

1>原文在:http://www.insecure.org/nmap/nmap-fingerprinting-article.txt <br>

2>原文还有法语、葡萄牙语、意大利语、俄语、西班牙语、德语译本 <br>

3>对译文的任何意见请来信neko@126.com <br>

[ Nmap | Exploit World | Reading | About/Contact | Privacy Policy ] <br>

  <br>

-- <br>

如果发现太太有错一定是我的错; <br>

如果我没有看错,一定是我害太太犯错; <br>

如果她不认错,她就没有错; <br>

如果我还坚持她有错,那就是我的错; <br>

如果太太m真错了,那我就尊重她的错, 我才不会犯错。 <br>

总之,太太绝对不会错, <br>

</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="12.htm">上一层</a>][<a href="486.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -