第1章 踩点 - tup.com.cn  · web view1 - 10 of about 63 for intitle:"welcome to iis...

140
1

Upload: others

Post on 30-Apr-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

1

Page 2: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

2

案例研究:用Google寻找攻击目标无论从那个方面讲,Google都是给因特网带来革命性技术的少数几家公司之一。从早

期不带任何广告的 Spartan搜索引擎、到成为一家独树一帜的 IPO,Google已经渗透到了 IT领域的每一个方面。因特网上的许多站点都采用了Google技术,它那简单易用的搜索功能每一天每一秒都有数以百万计的人在使用。不过,大多数人只知道Google可以帮他们找到少见的 Linux内核设置或医疗知识,而只有很少的一部分人知道 Google可以帮自己查到一些危险的秘密:它向攻击者提供了一个信息宝库,而这些家伙每天都在使用Google寻找、侦察、分析和攻击因特网上的系统。

有这样一种说法:你的独特之处就是你的致命弱点。这句话正是Google的写照,它在搜索方面做得实在是太好了——它能够以一种让人窒息的高效率从因特网上查找出种种敏感的信息。事实上,很多人在看到我们用Google把他们站点的高度机密信息查找出来时都惊讶得难以置信。没错,只要知道如何构造正确的查找关键字,任何人都可以用Google把自己想要查找的秘密信息查找并显示出来。

Google之所以能以致命的高效率从数十亿的网页里找出我们需要的东西,秘密就在于那些 Google Bot(Google的网页检索“机器人”)。Google Bot们不是科学怪兽,它们只是一些能以惊人效率巡视因特网的网页检索程序。如果没有收到其他命令,Google Bot们将沿着它们检索到的每一个链接不停地前进——而这种前进很可能会给你们的网络或系统带来灭顶之灾。Google可以查找出哪些秘密

系统管理员和信息安防专家们都知道:每天都有几十种新的安防漏洞被人们发现。从浩如烟海的因特网里把有安防漏洞的系统都找出来可以说没有任何可能,更不用说为它们都打好补丁了;而这正是攻击者所依仗的。攻击者可以利用种种踩点技术去发现有攻击价值的潜在目标、收集有关这些潜在目标的情报,再利用这些情报去突破目标网站的安全防线。很多攻击者都喜欢使用Google来寻找潜在的攻击目标,下面就请大家和我们一起去看看攻击者们是怎样做的。

Joe Hacker似乎总有大把的空闲时间。这不,就在你考虑是不是要在这个周末再加个班去给你们公司那些不安全的系统打补丁的时候,他却无所事事。这位老兄在这个世界上只关心一件事——发现有漏洞的系统,至于那里有没有什么好东西,他可就没多少兴趣了。Joe Hacker一直在磨练自己的 Google“黑手”——我们的意思是说,他一直在学习和改进利用Google寻找潜在攻击目标和敏感信息的技巧。他自认为是一位顶尖的Windows黑客,

Page 3: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

3

但我们认为称他是一名善于寻找机会的专家更合适。现在,请大家随我们一起进入他的世界,去看看他每天都在忙些什么,看看他在www.google.com站点上都会进行哪些搜索。

他今天进行的第一个搜索好像没有什么危险性:intitle:"Welcom to IIS 4.0"

Results 1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)

他这是在找什么?我们在他的屏幕上看到了一份长长的Windows IIS 4.0服务器名单,IIS 4.0服务器软件存在着大量的安防漏洞,很多攻击者都喜欢挑选它们作为攻击目标。

因为还想寻找更多的牺牲品,Joe Hacker没有在这份清单上花费很多时间。他的下一个搜索目标是在Web服务器上运行着VNC Server软件的用户:

"VNC Desktop" inurl:5800

Results 1 - 10 of about 112 for "VNC Desktop" inurl:5800. (0.27 seconds)

VNC Server允许远程用户来连接和控制某个用户的桌面。因为种种原因,总有那么一些人会把自己的 VNC Server服务配置成不需要提供口令字就可以访问——这将允许别人从远程直接访问他的桌面。不得了!

Joe Hacker今天为寻找潜在的攻击目标而进行的最后一次(这当然不意味着他只会这么多招数)Google搜索是寻找防范不力的Microsoft FrontPage功能扩展模块,这种搜索一直非常流行,效果也一直不错:

filetype:pwd service

Results 1 - 10 of about 173 for filetype:pwd service. (0.28 seconds)

Joe Hacker顺手点击了搜索结果清单里的一个链接,在他的屏幕上出现了一些用户名和UNIX口令字:

# -FrontPageekendall:bYld1Sr73NLKolouisa:5zm94d7cdDFiQ

Joe Hacker启动了他的 John the Ripper口令字破解工具,那位 Louisa用户的口令字几乎是立刻就被破解了出来——“trumpet”。Joe的手里现在已经有了一个 FrontPage用户名和相关的口令字了。

如何利用 FrontPage软件中的安防漏洞去修改别人的网站主页早在好几年前就已经不是什么秘密了,Joe自然早就知道,但 Joe对这种行为的看法是:我是在“帮助”别人

Page 4: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

4

“完善”他们的网站主页。在找到了几个好的潜在攻击目标之后,Joe Hacker又把兴趣转向了Web上的敏感信息,

如口令字和财务信息等。他又进行了一次搜索:filetype:bak inurl:"htaccess|passwd|shadow|htusers"

Results 1 - 10 of about 59 for filetype:bak inurl:"htaccess|passwd| shadow|htusers".(0.18 seconds)

这次搜索查出了一大堆与人们用来存放用户名和加密口令字(要破解这些口令字并不难)的口令字文件有关的信息。Joe Hacker今天的运气还真不错,他随手点击的那个链接让他弄到了一个未使用 shadow加密机制的UNIX口令字文件。那个文件来自美国的某所著名大学,里面有好几百个用户名。只花了几秒钟的时间就有这么大的收获,让 Joe觉得心满意足。

那就再试试几个在网上寻找数据库的Google搜索招数好了,Joe想到了就做:filetype:properties inurl:db intext:password

Results 1 - 10 of about 854 for filetype:properties inurl:db intext:password. (0.21 seconds)

Joe在搜索结果清单里随手点击了一个链接。嘿,那不是明文形式的数据库口令字吗!drivers=sun.jdbc.odbc.JdbcOdbcDriver jdbc.idbDriverlogfile=D:\\user\\src\\java\\DBConnectionManager\\log.txtidb.url=jdbc:idb:c:\\local\\javawebserver1.1\\db\\db.prp

idb.maxconn=2

access.url=jdbc:odbc:demoaccess.user=demoaccess.password=demopw

Joe肯定不是一位会替你保守秘密的人,但你自己也有可能不是——那些敏感信息说不定就是你本人泄露到网上去的。Joe决定再去大学网站(.edu)那里碰碰运气,今天没准儿还能从那里找到些好东西呢。

"not for distribution" confidential site:edu

Results 1 - 10 of about 138 for "not for distribution" confidential site:edu. (0.21 seconds)

真走运,Joe今天进行的这几次搜索都大有收获——他这次随手点开的那个链接列出了 100多个机密文件。那所大学把学生们的社会安全号码保存在了一些 PDF文件里,太糟糕了。

Page 5: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

5

现在,Joe Hacker觉得今天找到的那几个潜在攻击目标都很值得一试,但在亲自动手之前,他决定先使出自己的Google搜索杀手锏:

This file was generated by Nessus

Results 1 - 10 of about 75,300 for This file was generated by Nessus. (0.20 seconds)

Nessus是一个在系统管理员中间非常流行的安防漏洞扫描工具。那些麻痹大意的系统管理员今天可真不幸,Joe Hacker搜到了好几百份 Nessuse扫描结果报告——它们的主人忘记把它们从自己的系统上删掉了!这些安防漏洞扫描结果报告绝对是从网上能够找到的最有价值的情报,它们让 Joe Hacker一清二楚地看到了哪些系统有安防漏洞以及它们都有哪些安防漏洞。还有什么东西能比这些报告对 Joe Hacker更有帮助吗?Joe根本用不着亲自动手去运行Nessus工具——那些粗心大意的系统管理员们已经替他做好了这件事。

正如你们将在接下来的内容里看到的那样,在攻击者到你们的网络里寻找“软柿子”的时候,踩点、扫描和查点都是最有价值且最有必要的步骤,而 Google“黑手”仅仅是攻击者用来收集你们情报的手段之一罢了。请记住我们的忠告:一定要对你们系统的安全性进行自我评估,因为坏人们肯定也会这样做。还有,即使你们孤立无援,也千万不要失去信心——你们手里还有这本书,而这本书将告诉你们如何去防范各种各样的攻击手段。

Page 6: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点

Page 7: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

于黑客们来说,在开始真正肆虐之前,必须完成三个基本步骤。本章讨论第一个步骤——踩点(footprinting),这是收集目标信息的奇技淫巧。举例来说,当盗贼决

定抢劫一家银行时,他们不会大摇大摆地走进去直接要钱(至少明智的贼不会)。相反,他们会狠下一番苦功夫收集关于这家银行的相关信息,包括武装押运车的路线和运送时间、摄像头位置和摄像范围、出纳员人数、逃跑出口以及其他任何有助于行事的信息。

对同样的需要也适用于成功的攻击者。他们必须收集大量的信息,以便集中火力进行外

科手术式攻击(这种攻击可不会轻易被捉住)。因此,攻击者将尽可能多地收集一个单位安全情况的方方面面。最后,黑客就得到了独特的足迹(footprint),也就是这个目标单位因特网、远程访问及内联网/外联网的剖析图(profile)。通过遵循一种结构化的方法学,攻击者可以系统地从多个来源收集信息,编篡出任何单位的重要足迹。

中国古代的大军事家孙子早在几千年前就在《孙子兵法》里指出:“知己知彼,百战不殆;不知彼而知己,一胜一负;不知彼不知己,每战必败。”

只要想查,任何人都可以从公开渠道查到很多——其数量之多绝对会让你们大吃一惊——关于你们组织安全情况的信息。了解你们的敌人都已经掌握了你们的哪些情报是赢得信息攻防战的关键!1.1 什么是踩点

攻击者可以通过对某个组织进行有计划、有步骤的踩点,收集整理出一份关于该组织信息安防现状的完整剖析图。结合使用各种工具和技巧,攻击者完全可以从对某个组织(比如 XYZ公司)毫无所知变成知之甚详,他们可以从公开渠道查出该组织具体使用的域名、网络地址块、与因特网直接相联的各有关系统的 IP地址以及与信息安防现状有关的其他细节。有很多种技术可以用来进行踩点,但它们的主要目的不外乎发现和收集与以下几种与网络环境相关的信息:因特网、内联网(intranet)、远程访问和外联网(extranet)。表 1.1列出了这些环境以及攻击者要收集和确认的重要信息。网络环境 需要确认的信息因特网 域名

网络地址块可以直接从因特网进行访问的各个系统的具体 IP地址已被发现的各个系统上运行的 TCP和UDP服务系统体系结构(例如 SPARC或X86)

Page 8: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点(续表)

网络环境 需要确认的信息访问控制机制和相关的访问控制表(access control list,ACL)入侵检测系统(intrusion detection system,IDS)各有关系统的细节信息(用户名和用户组名、系统旗标、路由表、SNMP信息等等)DNS主机名

内联网 组网协议(比如说,IP、IPX、DecNET等等)内部域名网络地址块可以直接从内联网进行访问的各个系统的具体 IP地址已被发现的各系统上运行的 TCP和UDP服务已被发现的各系统的体系结构(例如,SPARC还是X86)访问控制机制和相关的访问控制表(access control list,ACL)入侵检测系统(intrusion detection system,IDS)各有关系统的细节信息(用户名和用户组名、系统旗标、路由表、SNMP信息等等)

远程访问 模拟/数字电话号码远程系统的类型身份验证机制VPN和相关的协议(IPSec和 PPTP)

外联网 连接的源地址和目标地址连接的类型访问控制机制

表 1.1 攻击者可以从公开渠道收集和确认的网络环境信息和其他重要信息为什么说踩点是必须的

为了保证能够按部就班地、系统地确认出与上述环境相关的所有信息,进行踩点是完全必要的。如果没有一套完善的方法来进行这类情报收集工作,你们就很可能会与某种技术或组织有关的关键信息失之交臂。在试图确定某个组织的安全防御体系的时候,踩点往往是最辛苦的任务之一,但它同时也是最为重要的任务之一。踩点必须精确地进行,而且必须在受控状态下完成。

Page 9: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

1.2 因特网踩点从技术上讲,许多踩点技巧在不同的网络环境(因特网和内联网)里都大同小异,但

本章将集中讨论如何对某个组织的因特网连接进行踩点。与远程访问有关的踩点技巧将在本书的第 8章详细介绍。

因为踩点活动中的每一个步骤都可能导出多条路径,所以很难为这类活动提供一个套路化的指南。然而,本章仍将描述完成一次完整的踩点分析工作所需要的基本步骤。这些技巧中有不少能应用于前面提及的其他环境。1.2.1 步骤 1:确定踩点活动的范围

首先要解决的问题是确定踩点活动的范围。换句话说,你是打算对目标组织做全面的踩点,还是把自己的踩点活动范围控制在它的某个子公司或某个特定的地理位置?在许多场合,单是把与某个组织有关的的所有实体全都找出来就已经是一项令人生畏的繁杂任务,若再想把它们都保护得面面俱到就更不容易了。不幸的是,黑客绝不会因此而心慈手软,他们会不择手段地寻找我们的薄弱点。对于你们自己的信息安防现状,你们肯定不想让黑客了解的比你们更多。1.2.2 步骤 2:获得必要的授权

从纯粹的技术角度讲,OSI网络模型只有 7个层次,但在讨论信息安防问题的时候,笔者和其他一些专业人士都认为应该把政治因素和资金因素看做是 OSI模型的第 8层和第9层。这两个层次对黑客来说无足轻重,但你们却必须特别加以注意。这些层次对信息安防工作有着种种影响,其中又以授权方面的问题最不好解决。你的踩点或其他活动是否得到了授权?你获得的授权都允许你从事哪些具体的活动?授权是否来自有权做出这种授权的人?授权是不是以书面形式下达的?目标 IP地址是否正确无误?如果你曾向穿刺测试专家询问过“免罪金牌”的事,我敢肯定你会看到他们高深莫测的微笑。1.2.3 步骤 3:可以从公开渠道获得的信息

虽然和Web打了这么多年的交道,笔者仍时不时地会对因特网的无所不包——别忘了,它从诞生至今并没有多少年——感到莫名其妙的畏惧。

Page 10: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点

可以从公开渠道获得的信息流行度: 9简单度: 9影响力: 2风险率: 7

可以从公开渠道查找到的关于你本人、你所在的组织及它的雇员和你能想像到的其他任何方面的信息数量之多,很可能会让你们大吃一惊。

如果把收集情报比作大海捞针的话,那么踩点活动要捞的“针”都有哪些呢? 公司的Web网页 相关组织 地理位置细节 电话号码、联系人名单、电子邮件地址、详细的个人资料 近期重大事件(合并、收购、裁员、快速增长等等) 可以表明现有信息安防机制的隐私/安防策略和技术细节 已归档的信息 心怀不满的员工 搜索引擎、Usenet和个人简历 让人感兴趣的其他信息

公司的Web网页说到踩点,仔细研究目标组织的Web网页通常是一个很好的出发点。在很多时候,目

标组织的Web站点会向攻击者提供大量有用的信息。我们曾亲眼见过很多缺乏安防意识的组织就那么毫不掩饰地把它们的网络或系统安防配置细节列在它们的因特网 Web服务器上。

此外,HTML源代码里的注释语句也是一个收集情报的好去处。在诸如“<”、“!”和“——”之类的 HTML注释标记里往往会隐藏着一些你们在Web浏览器的窗口画面里看不到的秘密。以脱机方式阅读源代码通常要比以在线方式查阅来得更快,所以把整个站点镜像下来进行脱机浏览的好处很多。在你们自己的机器里保留一份目标站点的本地拷贝可以让你们通过各种编程手段去查找你们感兴趣的注释或其他内容,而这将使你们的踩点活动更有效率。至于镜像整个 Web 站点的工具,UNIX 操作系统下的 Wget( http://www.gnu.org/software/wget/wget.html ) 和 Windows 操 作 系 统 下 的 Teleport Pro(http://www.tenmax.com)都是非常不错的选择。

Page 11: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报除“www”形式的主站点以外,你们还应该调查一下目标组织是否还建立有其他的站

点。比如说,很多组织都建有专门的站点来处理通过Web浏览器来访问本单位内部资源的请求。Microsoft公司的 Outlook Web Access就是一个十分常见的例子,它的作用相当于用户从因特网访问某组织内部的Microsoft Exchange的代理服务器。这类资源的 URL地址以“http://owa.company.com”或“http://outlook.company.com”这两种格式最为多见。类似地,拥 有 大 型 主 机 或 AS/400 机 器 的 组 织 往 往 会 通 过 诸 如 OpenConnect ( http:/www.openconnect.com)之类的服务向用户提供一个通过Web浏览器远程访问该组织内部资源的办法;OpenConnect的作用相当于一个基于 Java的 3270仿真设备,它使得远程用户可以在客户端使用一个Web浏览器去远程访问某组织内部的大型主机和/或AS/400机器。

此外,有不少组织现在都建立了自己的 VPN 网,所以试着访问一下“ http://vpn.company.com”或“http://www.company.com/vpn”之类的站点往往能命中“company”公司为帮助最终用户连接到该公司的VPN网而建立的网站。在这类网站上,你们通常可以查到VPN软件的供应商和版本信息以及下载和配置 VPN客户端软件的具体步骤。这类网站甚至会提供一个电话号码,黑客——对不起,我的意思是员工——在连接 VPN网遇到麻烦时可以拨打这个电话号码请求帮助。相关组织

其他组织对目标组织的引用或链接也特别值得注意。即使某个组织非常注意在它自己发布的东西里不泄露秘密,但它的合作伙伴们却未必会像它那样有安防意识——后者很可能会泄露前者的某些秘密。如果把这些秘密与你的其他发现结合起来,往往会让你了解到比目标组织的Web站点本身所泄露的信息更多和更敏感的细节。花上些时间去查看所有的“线索”,往往会让你得到一些意想不到的收获。地理位置细节

对目的明确的攻击者来说,一个具体的地理地址往往非常有用。有了这个地址,攻击者就可以去“翻垃圾”(从垃圾箱里寻找废弃的敏感文件)、盯梢、进行社交工程或者展开其他非技术性的攻击。利用泄露的地理地址还可能非法侵入对方的办公大楼、有线或无线网络、计算机等。利用因特网上的各种资源,攻击者甚至可以获得目标建筑物的一份相当详尽的卫星图像。就拿笔者最喜欢的 http://www.keyhole.com站点来说吧,该站点的拥有者是 Google公司的一家子公司,它可以让你把全世界(至少是全世界的各主要都市)尽收眼底,并通过一个设计得非常优秀的客户端软件以令人惊讶的清晰度和细节把某给定地址的周边地理环境展示在你的面前(如图 1-1所示)。http://terraserver.microsoft.com站点也是一个查看地理环境的流行资源。

Page 12: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点

图 1-1 http://www.keyhole.com网站可以把地理环境非常详细和清晰地显示出来电话号码、联系人名单、电子邮件地址和详细的个人资料

在得到你的电话号码之后,攻击者就可以通过 http://www.phonenumber.com、http://www.411.com或 http://www.yellowpages.com之类的网站查出你的地理地址。他们还可以根据你的电话号码为他们的“密集拨号”攻击设定一个攻击范围或是开展“社交工程”攻击以获得更多的信息和/或访问权限。

联系人名单和电子邮件地址也是非常有用的情报。大多数组织都会使用其员工姓名的某种变体作为他们的用户名和电子邮件地址(比如说, John Smith的用户名往往会是“ jsmith” 、 “ johnsmith” 或 “ smithj” , 而 他 的 电 子 邮 件 地 址 则 往 往 会 是[email protected]或类似的东西)。如果能够设法弄到某个组织里的一个用户名或电子邮件地址,我们就可以相当准确地把很多用户的用户名和电子邮件地址推测出来。在我们稍后尝试获得系统资源的访问权限时,一个合法的用户名将非常有用。这类情报在社交工程方面也有很大的作用。

在因特网上,还有很多可以用来查找其他一些个人细节资料的资源: http://www.crimetime.com/online.htm链接着另外几个资源;http://www.peoplesearch.com可以让黑客了解到家庭电话号码、家庭住址、社会保险号码、信用记录、犯罪记录等个人细节信息。这类信息当中的任何一项都有可能被攻击者用来达到他们不可告人的目的,而我们也不能

Page 13: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报不承认这类欺骗手段还是很有效的。攻击者可能还会对某位员工的家用电脑感兴趣,这是因为很多员工的家用电脑里都会有远程访问本单位内部信息资源的某种机制。如果能够在某位员工的家用电脑或笔记本电脑里偷偷安装一个击键记录器,黑客就很可能会收集到一些可以让他自由进出目标组织内部的信息——在可以如此简单地伪装成一位合法用户的情况下,黑客为什么要去与目标组织的防火墙、IDS、IPS等防御机制较劲呢?近期重大事件

近期重大事件往往会引起黑客们的极大兴趣。合并、收购、丑闻、裁员、短时间大量增员、重组、外包、大量使用临时合同商以及其他事件,往往会向黑客提供许多千载难逢的线索、机会。比如,在合并或收购之后最先发生的事情之一是把各有关组织的网络合并为一个整体,此时的首要任务是满足数据交换方面的需要,安全问题通常会被放在次要的位置上。相信有不少人曾听过这样的话:“我知道这样做不太安全,但我们现在的首要任务是尽快把这件事做好。安全问题以后再说吧。”在现实生活里,这种“以后再说”往往会演变为“永远遗忘”,这就给那些通过攻击某个较为薄弱的分支而迂回侵入预定目标的黑客以可乘之机。

这类事件中的人的因素也会给黑客提供很多机会。在这类时期,员工士气大都比较低落,人们往往更关心自己的求职简历而不是系统的安防日志或最新的升级补丁——人们的心思已经不在这方面了。这类过渡时期往往会存在很多的混乱和变化,而大多数人都不希望被别人视为不合作因素或阻碍因素,这就给那些熟悉社交工程技巧的黑客们以更多的可乘之机。

反过来也是如此。在一个快速扩张的企业里,规章制度和业务流程的调整往往会落后于实际发生的变革。谁能保证新招聘的员工里没有心怀叵测的人?在办公室里走来走去的那个人,是一位新来的职员、还是一位不速之客?拿着笔记本电脑走进会议室的人到底是谁?是废纸回收公司派来的?还是新来的保安人员?

至于那些股票公开上市的公司,它们的近期重大事件更是会在因特网上被传播的沸沸扬 扬。事实上,上市公司都必须向证券 监管委员会( Security and Exchange Commission,SEC)定期提交很多种报告。在这些报告当中,最让人感兴趣的是 10-Q(季度)和 10-K(年度)报告,这两种报告都可以在 http://www.sec.gov网站的 EDGAR数据库里检索到(如图 1-2所示)。在查阅这些报告的时候,可以用关键字 merger(合并)、acquisition(收购)、acquire(收购)和 subsequent event(后续事件)进行搜索。只要稍微有些耐心,你们就可以为某个组织及其分支机构勾勒出一幅完整的组织结构图来。商务信息网站和证券交易网站也可以提供类似的信息,世界各主要市场也都建立有大同小异的这类网站。攻击者可以利用这些信息去寻找目标组织中的薄弱点。大多数黑客都会选择一条

Page 14: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点抵抗最少的路径去发动攻击——为什么不呢?

图 1-2 股票上市公司都必须定期向 SEC提交各种报告。这些报告提供了很多与其近期重大事件或组织结构有关的信息

可以表明现有信息安防机制的隐私/安防策略和技术细节基于非常明显的理由,有助于深入了解目标组织隐私/安防策略的任何信息和有助于

深入了解目标组织用来保护自己的硬件和软件技术细节,都是黑客们眼里的无价之宝。对一位有经验的黑客来说,只要能收集到足够多的这类信息,就不难发现侵入目标组织的机会。已归档的信息

在因特网上有一些专门归档保存过期信息的站点,你们可以从这类站点上轻而易举地检索出很多从其原始来源都无法查到的信息。由于这类站点的存在,很多因为安全原因而被特意删除的信息还是可以被那些知道这一诀窍的人检索出来。这类站点的例子有 http://www.archive.org 地 址 处 的 WayBack Machine 网 站 ( 如 图 1-3 所 示 ) 、

Page 15: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报http://www.thememoryhole.com和通过 Google搜索引擎的 cached results(缓存结果)链接查看到的缓存结果(如图 1-4所示)。

图 1-3 在 http://www.archive.org网站上检索到的 http://www.yahoo.com多年前的网页

图 1-4 搜索引擎的特性使得任何人都可以轻而易举地查看到它们曾标引过的缓存内

Page 16: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点容。图中是通过 Google搜索引擎的 cached results(缓存结果)链接检索出来的 http://www.yahoo.com主页的缓存版本

心怀不满的员工对一个组织的信息安全构成真正威胁的另一个因素是心怀不满的雇员、前雇员和那些

专门泄露内部交易等敏感信息的网站。你们只须到 http://www.f**ckedcompany.com 或http://www.internalmemo.com网站上去看看就能明白我说的是什么意思了。如果你们曾向别人问起过心怀不满的员工的事情,就肯定会听过一些相当匪夷所思的报复手段。员工盗取、贩卖或泄露公司秘密、故意损坏设备、销毁数据、设置将在预定时间发作的逻辑炸弹、为方便日后访问而设置后门以及其他一些恶意的行为,早已不是什么耸人听闻的事件。这也正是为什么现如今的公司在解雇一名员工时往往需要有公司保安部门和人力资源部门的人员同时在场,并会派出专人陪同被解雇人员离开办公大楼的原因。Google搜索引擎的高级搜索功能“link:www.company.com”可以在 Google所知范围内将与目标组织有链接的网站查找出来,而在那些网站当中,我们经常可以发现一些故意泄露目标组织秘密或是针对目标组织的恶意网站。搜索引擎、Usenet和个人简历

现如今的搜索引擎已经发展到了一种不可思议的地步。只需几秒钟的时间,你就可以查到想知道的任何问题的答案。现在,许多流行的搜索引擎都提供了这样或那样的高级搜索功能,这些功能可以帮助你把最细枝末节的信息轻而易举地查找出来。笔者最喜欢用的几个搜索引擎是 http://www.google.com、http://search.yahoo.com、http://www.altavista.com和http://www.dogpile.com(它会把你的搜索请求同时发送给多个搜索引擎)。你会发现,为熟练掌握这些搜索引擎的高级搜索功能而付出的努力绝对是值得的。事实上,通过这些站点可以搜索到的敏感信息是如此之多,以至于已经有好几本专门介绍如何利用搜索引擎去从事黑客活动的专著问世了——比如 Johnny Long编写的 Google Hacking for Penetration Testers(Syngress出版公司,2004年)。

我 们 来 看 一 个 简 单 的 例 子 : 如 果 你 用 Google 去 搜 索 “ allinurl:tsweb/default.htm”,Google 就将把开放着 Remote Desktop Web Connection(远程桌面 Web 连接)服务的Microsoft Windows服务器给找出来。运气好的话,攻击者只须稍做尝试就可以在Google 返回的搜索结果里找到一个甚至几个激活了 Remote Desktop Protocol(RDP,远程桌面协议)的Windows服务器——只要攻陷了这样的Windows服务器,攻击者只须使用 Internet Explorer浏览器和 ActiveX RDP客户程序,就可以通过 RDP协议获得以全图形化控制台方式访问目标服务器的权限。这么说吧,有好几百种搜索条件可以让攻击者搜出

Page 17: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报包括网路摄像机、远程系统管理服务、口令字、数据库等在内的任何东西。我们不打算在这里 复 述 别 人 的 发 现 , 你 们 只 要 到 Google 黑 客 技 巧 的 权 威 站 点 之 一 http://johnny.ihackstuff.com上去看看就什么都明白了。那个站点上有 Johnny Long建立的Google Hacking Database(GHDB,意思是“Google黑客技巧数据库”)数据库,而他仍在不断地把新的搜索条件添加到那个数据库里去。

GHDB之类的搜索条件数据库还需要一系列手动操作才能真正派上用场,这多少有点儿美中不足,对吧?别着急,现在已经出现了一些把这个概念更推进一步的自动化工具,其中比较知名的几个是 Athena(由 snakeoillabs 团队的 Steven开发)、SiteDigger(http://www.foundstone.com)和 Wikto(http://www.sensepost.com/research/wikto,由 Roelof等人开发)。这几种工具可以从Google搜索引擎的缓存内容里搜索出大量的安防漏洞、错误、配置缺陷、独有专用信息和各种有趣的安防细节,其范围涉及世界各地的 Web 网站 。SiteDigger(如图 1-5所示)允许你以某个特定的域为目标使用 GHDB数据库或使用由Foundstone公司编制的搜索条件清单进行搜索,还允许你把新的搜索条件自行添加到数据库里。除搜索功能外,SiteDigger还具备自动升级功能——你可以下载最新的 GHDB数据库和/或 Foundstone搜索条件清单来配合该工具的使用,而这将保证你不会错过任何一种新的搜索手段。

图 1-5 Foundstone公司的 SiteDigger工具使用 Google Hacking Database(GHDB)数据库在Google搜索引擎的缓存中寻找有安防漏洞的系统

Page 18: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点Usenet论坛或新闻组也是收集敏感信息的大好资源。在遇到自己难以解决的问题时,

很多 IT专业人员都会到有关的 Usenet新闻组去寻求帮助。Google搜索引擎为Usenet新闻组提供了一个非常好的Web搜索界面,这个界面的背后是 Google公司已名闻遐迩的各种高级搜索功能。比如说,以“pix firewall config help”作为关键字做一次简单的搜索,可以找到数以百计的人们请求别人帮忙配置他们的 Cisco PIX防火墙的帖子,如图 1-6所示。在发出这些帖子的求助者当中,有相当一部分人会把他们当前使用的配置参数剪贴在自己的帖子里,他们的 IP地址、ACL表、口令字密文、NAT(network address translation,网络地址映射)映射表等等在帖子里一览无余。这类搜索还允许你使用某个特定域里的电子邮件地址(换句话说,@company.com)或其他搜索字符串对之进行细化,把搜索范围控制在一个适当的水平。

图 1-6 Google搜索引擎可以帮助你迅速查找到重要的信息即使那位正在寻求帮助的老兄知道不应该把自己的系统配置细节张贴在公共论坛上,

也仍有可能成为“社交工程”攻击的受害者。攻击者可以先假装友好地表示可以帮助这位束手无策的系统管理员解决他或她遇到的难题,再表示自己需要更多的细节才能把问题解决掉。这种要求当然是合理的——只要攻击者能骗取到求助者的信任,求助者自然会抛开当初的警惕性并把那些敏感信息双手奉上。

网上的招聘启事和求职简历也是一个收集信息的好资源。IT 职业门类众多,分工细致,

Page 19: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报所以想招聘到一位完全符合上岗要求的高手并不容易。为避免日后的麻烦,招聘方往往会在招聘启事里对有关职务做出详细的描述,应聘者则会在自己的求职简历对自己以前的工作经历做出详细的说明,而这些描述和说明里往往会有很多敏感的信息。

假设某个公司需要招聘一位具有某种特殊专长和工作经验的 IT安防专家,除普通专家都应该掌握的知识和技能之外,应聘人员还必须在某方面有足够的专业水平、必须有某方面的编程能力和经验、等等。总而言之,为了找到合格的人才,这家公司必须提供许多细节(供应商、版本、特殊经验、必要的知识和技能水平、等等)。如果你们在某个组织的招聘启事里看到它正在寻找一位在 CheckPoint防火墙和 Snort IDS方面有 5年以上工作经验的安防专家,你说这个组织所使用的防火墙和 IDS会是什么?它们很可能是想找一位入侵监测方面的专家来组建和领导它们的 IR 团队。如果真是如此,它们目前的入侵监测和响应能力又会是怎样的?它们是否正遇到了某种麻烦?它们目前是否有一位这方面的领军人物?如果招聘启事没能提供这些细节,打个电话过去说不定就能有所收获。让人感兴趣的求职简历也可以按照类似的办法来处理——假扮成猎头公司去问问题就可以了。这类细节可以帮助攻击者勾勒出目标组织的安防布局图——在发动攻击前的准备阶段,知道这些事情可太重要了!

如果你用 Google搜索一下“company resume firewall”(“company”是目标组织的名字),你很可能会找到一些该组织现在和 /或以前的员工为应聘与防火墙有关的工作而提交的求职简历,而那些求职简历里又很可能会有很多与他们目前所使用的技术有关的细节信息。在诸如 http://www.monster.com和 http://www.carearbuilder.com之类的招聘网站上,有成千上万的求职简历和招聘启事,以某个组织的名称作为关键字进行一次搜索往往会收获很多意想不到的技术细节。虽说要想查阅这些网站上的众多求职简历需要以某个组织的名义进行注册并交纳一定的费用,但这点儿小事难不住攻击者——只须使用一个虚构的公司名进行注册并交纳少许访问费用,他们就可以访问数以百万计的求职简历了。让人感兴的其他信息

上面介绍的种种思路和资源并不是获得情报的惟一来源,它们只是情报收集工作的跳板而已。敏感信息的藏身之地可以是世界的任何角落,它们的具体表现可以是任何形式。多花些时间、多动些脑筋去进行全面彻底的搜索绝对是一种非常有好处的练习——对攻击者和防御者来说都是如此。

防范措施:公用数据库的安全性以上提到的许多种信息都是必须公诸于世的,想删除它们或者不让别人查到它们都是

不现实的想法,这对那些股票公开上市的公司来说更是如此。因此,对必须公诸于世的信

Page 20: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点息进行评估和分类就变得非常重要。The Site Security Handbook(RFC 2196 号文档,http://www.faqs.org/rfcs/rfc2196.html;“网站安防手册”)是从策略方面解决这一问题的最佳参考文献之一。为确保自己的安全,你们应该定期复查本小节提到的各种资源,并把你们不想让别人搜索到的敏感信息从这些资源上删除干净。此外,在发布信息的时候,大家应该尽量使用一些不会让人们追查到你本人或你们组织的假名称,尤其是需要把信息发布到新闻组、邮件表或其他类型的公共论坛上的时候。1.2.4 步骤 4:WHOIS和DNS查点流行度: 9简单度: 9影响力: 5风险率: 8

从表面上看,因特网的繁荣兴旺与它缺乏一种集中控制机制有着很大的关系,但实际情况却并非真的如此。为了确保因特网上的各类系统可以互联互通、防止 IP地址发生冲突、确保地理边界和政治因素不会给名字解析带来干扰,因特网的几种基础性功能必须由某个中央机构统一管理起来。这意味着有人在管理着数量十分庞大的信息。如果你们了解这一点是如何做到的,就可以有效地利用好这个信息宝库!因特网自诞生以来已经走过了相当长的发展道路,因特网中信息的管理模式和管理者也同样在不断的变化和完善着。

那么,如今的因特网到底是由谁负责“管理”的呢?因特网的这些核心功能是由一家名为 Internet Corporation for Assigned Names and Numbers(ICANN;http://www.icann.org)的非赢利组织负责管理的。

ICANN是由一些具有广泛代表性的因特网商务、技术、教育和用户团体于 1998年 10月组建的一家因特网技术协调机构。 ICANN 接管了原来由 Internet Assigned Numbers Authority(IANA;http://www.iana.org)和其他几个组织根据与美国政府签定的合同而承担的一部分因特网管理职能(就目前而言,与因特网正常运转有关的许多日常事务仍由IANA负责处理,但这些职能迟早会被转移到 ICANN名下)。

具体地说,ICANN目前主要负责协调以下几类标识符的分配工作,因特网保持正常运转的前提之一是这几类标识符必须是全球惟一的:

因特网域名 IP地址号码 网络通信协议的参数指标和端口号码

此外,因特网的根DNS服务器系统的稳定运转也是由 ICANN负责协调的。

Page 21: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报作为一家非赢利的私营机构,ICANN的主要任务有以下几项:保证因特网的运转稳

定性;促进竞争;担任全世界因特网团体的总代表;通过民间渠道以一种由下而上的方式在达成共识的基础上制定各种制度、策略和标准。ICANN欢迎任何有兴趣的因特网用户、行业和组织加入其阵营。

ICANN在 2002年曾进行过一次名为“Evolution and Reform Process”的机构改革和重组,如图 1-7所示是 ICANN在那次改革之后的组织结构框架图。ICANN向新组织结构的转变开始于 2002年的 2 月 15 日,那一天是 ICANN的机构改革计划开始生效的日子。

图 1-7 ICANN负责管理着因特网的许多基础性核心功能ICANN有很多下属分支机构,我们此时最感兴趣的是以下三个: Address Supporting Organization(ASO,地址支持组织)

http://www.aso.icann.org Generic Name Supporting Organization(GNSO,基本名称支持组织)

http://www.gnso.icann.org Country Code Domain Name Supporting Organization(CNNSO,国家代码域名支持组织) http://www.cnnso.icann.org

Page 22: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点ASO负责听取、审查与 IP地址分配政策有关的意见并就这些问题向 ICANN 董事会提

出建议。ASO负责把 IP地址块统一分配给几个在各自的辖区内负责公共因特网号码资源的管理、分配和注册事务的洲际因特网注册局(Regional Internet Registry,RIR;如图 1-8所示)。这些 RIR再把 IP地址分配给企事业单位、因特网接入服务提供商(Internet service provider,ISP)或者——根据当地政府(主要是一些共产主义国家和集权统治国家)的有关规定——国家因特网注册局(National Internet Registry,NIR)或地区因特网注册局(Local Internet Registry,LIR):

APNIC(http://www.apnic.net) 亚太地区 ARIN(http://www.arin.net) 南美洲、北美洲和非洲下撒哈拉地区 LACNIC(http://www.lacnic.net) 拉丁美洲和加勒比海地区 RIPE(http://www.ripe.net) 欧洲、亚洲部分地区、赤道以北的非洲地区和中东地区 AfriNIC(http://www.afrinic.net;目前仍是“观察员身份”) 南非和北非地区目前分别由ARIN和 RIPE负责,但最终将会交给AfriNIC来管辖

图 1-8 目前共有 5个洲际因特网注册局(Regional Internet Registry,RIR),其中有4个是正式机构,另一个则是“观察员”身份

GNSO负责听取、审查与通用顶级域(generic top-level domain,gTLD)域名分配政策

Page 23: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报有关的各种意见,并就这些问题向 ICANN 董事会提出建议(如图 1-9所示)。请注意,GNSO不负责具体的域名注册事务,它只负责顶级域(比如.com、.net、.edu、.org和.info等),通用顶级域的完整清单可以在 http://www.iana.org/gtld/gtld.htm主页上查到。

图 1-9 GNSO负责管理通用顶级域(generic top-level domain,gTLD)CCNSO负责听取、审查与国家代码顶级域(country-code top-level domain,ccTLD)

域名分配政策有关的各种意见,并就这些问题向 ICANN 董事会提出建议。请注意,CCNSO 也不负责具体的域名注册事务。国家代码顶级域的完整清单可以在 http://www.iana.org/cctld/cctld-whois.htm主页上查到(如图 1-10所示)。

Page 24: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点

图 1-10 CCNSO负责管理国家代码顶级域(country-code top-level domain,ccTLD)下面是另外几个很有用的链接: http://www.iana.org/assignments/ipv4-address-space IPv4地址分配方案 http://www.iana.org/ipaddress/ip-addresses.htm IP地址服务 http://www. rfc-editor.org/rfc/rfc3330.txt 特殊用途的 IP地址 http://www.iana.org/assignments/port-numbers 已注册的端口号码 http://www.iana.org/assignments/protocol-numbers 已注册的协议号码好了,既然所有这些都是集中化管理的,查找上述信息似乎应该是件很简单的事情

——到某个地方去查询一个中央超级服务器就行了,对吗?不完全对。虽然上述信息的管理工作相当集中化,但实际数据却因为技术和政治方面的原因分别存储在全球各地的许多WHOIS服务器上。使事情变得更加复杂的是,WHOIS查询的语法、允许的查询类型、可供查询的数据和查询结果的格式在不同的服务器间往往有着很大的差异。此外,出于防范垃圾邮件制造者、黑客和资源过载问题的考虑,许多注册服务商都会限制人们进行某些查询;出于国家安全方面的考虑,.mil和.gov域的信息完全不允许普通大众进行查询。

你们可能会问:“我怎样才能查到想要查找的信息呢?”别着急,只要有合适的工具、再加上一些技巧和足够的耐心,你们就应该可以把这个星球上几乎所有曾经注册过的单位和个人的域注册信息和 IP注册信息查询出来!

Page 25: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报域注册信息的查询

域注册信息(比如 osborne.com)和 IP注册信息(比如 IP地址块、BGP自主系统号码、等等)需要分别向两个机构注册,这意味着我们需要沿着两条不同的路径去查找这些细节。先来看一个查找域注册信息的例子,例子中的目标组织是 keyhole.com。

首先,我们需要确定想要查找的信息到底存储在哪个 WHOIS服务器上。这一查询的基本思路是这样的:先通过某个给定 TLD(top-level domain,顶级域)的官方注册局查出目标组织是向哪家注册商进行注册,再从那家注册商那里查出查找的目标组织的域名注册细节。因为官方注册局(Registry)、注册商(Registrar)和注册人(Registrant,也就是目标组织)的英文名称都以字母“R”打头,所以我们把它们统称为 WHOIS查询的三个“R”。

因特网上有许多一站式WHOIS信息查询站点,但了解如何按照上述流程查询信息的具体办法还是相当重要的——万一那些自动化的查询工具无法返回你需要的信息,你就只能依靠自己的知识和技巧去发掘那些信息了。因为 WHOIS信息是以一种树状层次结构存储的,所以进行这类查询的最佳出发点是这棵信息树的顶点——ICANN。正如我们刚才提到的那样,ICANN(IANA)是所有 TLD的最终注册机构,因此以它作为手动WHOIS查询的出发点当然是最合适不过的了。

Page 26: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点

你们可以使用任何一种命令行WHOIS客户程序(前提是你们的防火墙允许 TCP 43号端口的外来通信进入)或使用Web浏览器来进行WHOIS查询。根据笔者的经验,用Web浏览器进行这类查询往往更为直观,且适用于几乎所有的安防体系。

我们先来看看如何通过 Web 浏览器进行 WHOIS查询。首先,我们需要从 http://whois.iana.org站点查出所有.com域的最终注册机构。这个搜索(如图 1-11所示)告诉我们, .com 域的官方注册机构是 Verisign Global Registry Services( http://www.verisign- grs.com)。在 Verisign Global Registry Services 的站点上(见图 1-12),我们用“keyhole.com”作为关键字查出该域名是通过为 http://www.markmonitor.com的域名注册商进行的注册。如果我们再去那个站点(如图 1-13所示),就可以通过它们的Web界面查询这家注册商的WHOIS服务器查找到 keyhole.com域名的注册细节信息——大功告成!

图 1-11 从 http://whois.iana.org站点开始进行域注册信息查询

注 意

Page 27: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

图 1-12 通过 Verisign Global Registry Services公司的站点查出域名 keyhole.com的具体注册机构

图 1-13 我们在具体处理域名 keyhole.com 注册事务的注册商那里查出了域名keyhole.com的注册细节信息

Page 28: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点注册人细节信息可以告诉我们目标组织的地理地址、电话号码、联系人名字、电子邮件

地址、DNS服务器名字、IP地址等很多有用的信息。只要你认真按照上述流程进行查询,想查出这个星球上的任何一个(公共)域名的注册细节信息都不应该是件困难的事情。不过,有些域(比如.gov和.mil)的注册细节可能无法通过公共 WHOIS数据库查询出来。

使用命令行WHOIS客户端程序去进行同样的查询,需要依次执行以下三条命令:[bash]$ whois com –h whois.iana.org[bash]$ whois keyhole.com –h whois.verisign-grs.com[bash]$ whois keyhole.com –h whois.omnis.com

此外,下面这些网站可以自动完成这种WHOIS查询,但能否成功地查出想要的域名注册信息以及能查出多少细节就要看你们的运气了:

http://www.allwhois.com http://www.uwhois.com http://www.internic.net/whois.html

最后,还有其他一些GUI界面的工具可以帮助你们进行这类查询: SamSpade:http://www.samspade.com SuperScan:http://www.foundstone.com NetScan Tools Pro:http://www.nwpsw.com

一旦你们掌握了正确寻找目标WHOIS服务器的诀窍,还可以在目标WHOIS服务器上进行该注册商所允许的其他查询。比如说,你们或许还可以查出通过某台 DNS服务器托管的全部域名,或许查出名称里包含某个特定字符串的全部域名。虽说很多 WHOIS服务器现在都已不再允许进行这些查询了,但在某个 WHOIS服务器顺便查查允许进行哪些查询还是很值得的——说不定你们想要进行的查询正好是那台 WHOIS服务器允许的。IP注册信息的查询

现在,你们已经知道如何查询域注册信息了,可是 IP注册信息又该如何查询呢?我们前面讲过,IP注册事务是由属于 ICANN的ASO的几家 RIR具体负责的。下面,我们就一起去看看如何查询这些信息吧。

与 TLD的情况不同,ICANN(IANA)的WHOIS服务器目前并不是所有 RIR的最终注册机构,但每家 RIR都知道自己都管辖着哪些个 IP地址范围。我们只须从它们当中随便挑选一个作为 IP注册信息查询的出发点,它就会告诉我们应该去往哪一个 RIR 才能找到需要的信息。

我们不妨假设你在查阅你的安防日志(这应该是你们的日常工作之一,对吧?)时看

Page 29: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报到了一个源 IP地址是 61.0.0.2的记录项,你想知道这个 IP地址到底来自哪里。你决定从ARIN(http://www.arin.net)开始这次追踪,于是把这个 IP地址作为关键字输入到了ARIN网站的WHOIS查询提示框里(如图 1-14所示),但它却告诉你说这个 IP地址范围的实际管理者是APNIC。你去往APNIC的站点继续进行这次搜索(如图 1-15所示)。在那里,你发现这个 IP地址是由印度的National Internet Backbone公司负责管理的。

图 1-14 ARIN告诉我们应该去哪一个 RIR进行搜索

图 1-15 追查结果:目标 IP地址的实际拥有者是印度的National Internet Backbone公司

Page 30: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点上述流程可以帮你追查出任何一个 IP地址的实际拥有者——至少能帮你找到一位愿

意提供进一步细节的知情人。和其他事情一样,在与不同公司和不同政府打交道的时候,对方的合作态度往往千差万别。我们想提醒大家的是,有很多种办法可以让黑客隐藏起他们的真实 IP地址,你在安防日志里看到的 IP地址不一定就是黑客对你发动攻击时实际使用的 IP地址。

我们还可以通过在 RIR的WHOIS服务器上搜索某个组织的正式名称来查询该组织的IP 地址范围和 BGP 自主系统号码。比如说,如果我们在 http://www.arin.net 上搜索“Google”,可以看到属于 Google公司名下的 IP地址范围和它的 AS号码,AS 15169(如图 1-16所示)。

图 1-16 Google公司名下的 IP地址范围和 BGP AS号码表 1-2给出了其他一些WHOIS查询工具/数据源的下载地址和适用平台。

机制 资源 适用平台Web界面 http://whois.iana.org

http://www.arin.nethttp://www.allwhois.com

安装有 Web 客户程序的任何一种平台

Whois 客户程序

大多数 UNIX版本自带的 whois查询工具Chris

UNIX

Page 31: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报Cappuccio([email protected])编写的 Fwhois程序

(续表)机制 资源 适用平台WS_Ping ProPack

http://www.ipswitch.com/ Windows 95/NT/2000/XP

Sam Spade http://www.samspade.org/ssw Windows 95/NT/2000/XPSam Spade 工具的Web界面

http://www.samspade.org/ 安装有 Web 客户端程序的任何一种平台

Netscan工具 http://www.netscantools.com/nstpromain.html

Windows 95/NT/2000/XP

Xwhois http://c64.org/<126>nr/xwhois/ 安装有 X和 GTK+GUI开发工具包的UNIX系统

Jwhois http://www.gnu.org/software/jwhois/jwhois.html

UNIX

表 1-2 WHOIS搜索工具和数据源管理性事务联系人(administrative contact)是一项非常重要的信息,它可以告诉你在

目标组织中具体负责因特网连接或防火墙管理工作的人叫什么名字。查询还会返回几个电话和传真号码。如果你正打算进行一次拨号穿刺测试,知道这些号码将非常有帮助——用密集拨号工具对这些电话和传真号码所在的号段进行一次“攻击”,往往能发现好几个潜在的调制解调器号码。此外,攻击者的另一种惯用伎俩是伪装成目标组织的管理性事务联系人,并通过社交工程技巧去欺骗目标组织中缺乏警惕性的用户,以伪造一些来自那些人的电子邮件去欺骗某位容易上当的用户。千万不要小看这种欺骗手段,会不假思索地应某位技术支持人员的要求而把自己的口令字修改成指定文字的用户数量之多绝对会让你们大吃一惊。

WHOIS查询结果中的记录创建时间和记录修改时间可以让我们推测出 WHOIS信息的准确性。若是那些记录是在 5年前创建的并再没有修改过,我们敢肯定其中的某些信息(比如说,管理性事务联系人)是过时的。

最后,WHOIS查询结果中的信息还可以告诉我们目标组织的正式 DNS服务器都有哪些。清单里的第一个 DNS服务器应该是目标组织的主DNS服务器,随后依次是该组织的

Page 32: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点一级后备 DNS服务器和二级后备 DNS服务器;这些信息在本章稍后的“DNS查询”小节里会派上大用场。此外,我们还可以利用 WHOIS查询结果中的网络地址范围数据作为对ARIN数据库进行网络查询时的出发点。

防范措施:公用数据库的安全性刚才介绍的各种数据库中所包含的信息有不少都存在着泄密问题,可是管理性事务联

系人、已注册的网络地址块、正式的名字服务器这些信息等又都是某组织在注册自己的因特网域名时必须向注册机构提供的信息。尽管如此,我们还是可以采取一些安防措施不让攻击者轻易得手。

管理性事务联系人在离开原来的组织之后仍能改动该组织的域注册信息是一种并不鲜见的情况。因此,首先要保证这些数据库里的信息是准确的,一定要及时更新管理、技术和财务方面的联系人信息。另外得慎重考虑所列的电话号码和地址,因为它们可被用作拨入攻击或社交工程目的的着手点,最好考虑改用免费电话号码或不在本单位电话交换机范围内的号码。另外,我们曾见过某些组织使用一些虚构的人名来作为管理性事务联系人,这可以帮助它们发现和追查那些潜在的“社交工程师”——只要某位员工收到了来自这个虚构的联系人的电子邮件或电话,那些组织的信息安防部门就会立刻去追查其来源。

伴随域名注册的另一个危险来自有些注册机构允许更新注册信息的方式。比如说Network Solutions公司目前的注册机制允许已注册组织通过网络以在线方式对域名注册信息进行修改。Network Solutions公司使用Guardian算法来验证域名注册人的身份,该算法使用了三种不同的身份验证手段:电子邮件的 FROM(发信人)字段、一个口令字和一个PGP(Pretty Good Privacy,全球电子邮件加密标准)密钥。电子邮件的 FROM(发信人)字段是最弱的身份验证方法,这种身份验证机制的安全隐患非常大。利用一个伪造的电子邮件地址去修改与目标域名有关的信息——这就是所谓的“域名劫持”( domain hijacking)攻击——对任何人来说都不是件难事。根据《华盛顿邮报》的报导,1998年 10 月16 日针对AOL(美国在线)公司的攻击就是一次这样的事件:有人冒充 AOL的一名官员修改了AOL的域名注册信息,把发往AOL的网络通信都重定向到了 autonete.net网络。

虽然 AOL公司在发现问题后立刻从这次攻击事件中恢复了过来,但这次事件本身充分证明一个组织在因特网上的生命有多么的脆弱,选用一个口令字或 PGP身份验证机制等更加安全的解决方案来修改域名注册信息非常重要。从那以后,Network Solutions网站要求通过其“Contact Form”表单建立身份验证机制的注册用户必须正确地给出管理性或技术性事务联系人才能修改以前的注册信息。

Page 33: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报1.2.5 步骤 5:DNS查询

确认了所有关联的域名后,就可以开始查询 DNS了。DNS是一个把主机名映射为 IP地址或者把 IP地址映射为主机名的分布式数据库系统。如果 DNS配置得不够安全,就有可能泄露有关组织的敏感信息。

Page 34: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点

区域传送流行度: 9简单度: 9影响力: 3风险率: 7

对一名系统管理员来说,允许不受信任的因特网用户执行 DNS 区域传送(zone transfer)操作是后果最为严重的错误配置之一。

区域传送操作指的是一台后备服务器使用来自主服务器的数据刷新自己的 zone数据库。这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主域名服务器因意外故障变得不可用时影响到全局。一般来说,DNS 区域传送操作只在网络里真的有后备域名DNS服务器时才有必要执行,但许多 DNS服务器却被错误地配置成只要有人发出请求,就会向对方提供一个 zone数据库的拷贝。如果所提供的信息只是与连到因特网上且具备有效主机名的系统相关,那么这种错误配置不一定是坏事,尽管这使得攻击者发现潜在目标要容易得多。真正的问题发生在一个单位没有使用公用 /私用 DNS机制来分割外部公用DNS信息和内部私用 DNS信息的时候,此时内部主机名和 IP地址都暴露给了攻击者。把内部 IP地址信息提供给因特网上不受信任的用户,就像是把一个单位的内部网络完整蓝图或导航图奉送给了别人。

下面查看几个用于进行区域传送的方法以及从中能获取的信息类型。尽管执行区域传送有多个不同的工具,我们还是只打算讨论其中几种。

使用大多数 UNIX和Windows上通常提供的 nslookup客户程序是执行区域传送的一个简单办法。我们可以以交互模式使用 nslookup:

[bash]$ nslookupDefault Server: ns1.example.netAddress: 10.10.20.2> 216.182.1.1Server: ns1.example.netAddress: 10.10.20.2Name: gate.tellurian.netAddress: 216.182.1.1

> set type=any> ls -d Tellurian.net. >\> /tmp/zone_out

我们先以交互模式运行 nslookup程序。在启动之后,nslookup程序将回显它当前使用的名字服务器,它通常是本单位的本地 DNS服务器或者某 ISP提供的DNS服务器。因为

Page 35: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报这个例子里的本地 DNS服务器(10.10.20.2)本身无法对目标域里的主机名和 IP地址做出权威的解析——我们想要查找的 DNS记录没有被全部收录在这台 DNS服务器里,所以还需要以手动方式告诉 nslookup去查询哪一个 DNS服务器。具体到上面的例子,我们使用Tellurian Networks的主DNS服务器(216.182.1.1),这是在早些时候执行域名 whois查询时找到该信息的。

接下来,我们把记录类型设置为“any”,这允许你取得任何可能的 DNS记录(使用man nslookup命令查看),从而构成一个完整的清单。

最后,我们使用“ls”选项列出所有与目标域名有关的记录,其中“-d”开关用于列出该域名的所有记录。我们在域名后面添了一个点号“.”以强调这是一个完全限定域名,不过大多数情况下不添加也行。另外,我们把输出内容重定向到文件 /tmp/zone_out里去,以便稍后对它操作。

完成区域传送后,查看输出文件,找一找是否存在有助于确认特定系统的让人感兴趣的信息。因为 Tellurian Network网站不允许进行区域传送操作,我们这里只能给出一个示例性的输出结果:

[bash]$ more zone_outacct18 1D IN A 192.168.230.3 1D IN HINFO "Gateway2000" "WinWKGRPS"

1D IN MX 0 tellurianadmin-smtp1D IN RP bsmith.rci bsmith.who1D IN TXT "Location:Telephone Room"

ce 1D IN CNAME aesopau 1D IN A 192.168.230.4

1D IN HINFO "Aspect" "MS-DOS"1D IN MX 0 andromeda1D IN RP jcoy.erebus jcoy.who1D IN TXT "Location: Library"

acct21 1D IN A 192.168.230.51D IN HINFO "Gateway2000" "WinWKGRPS"1D IN MX 0 tellurianadmin-smtp1D IN RP bsmith.rci bsmith.who1D IN TXT "Location:Accounting"

我们不打算详细解释每个记录,但将指出若干种重要的类型。在上面的输出清单里,列在右边的每个主机系统名栏都对应一个“A”类型记录,它指出了该系统的 IP地址。另外,每台主机都对应一个 HINFO记录,标识其平台或所运行的操作系统类型(参见 RFC-952)。HINFO记录并非必需,反倒给攻击者提供了不少信息。既然我们已把区域传送的结果保存到一个输出文件中,接着就能很容易地利用 grep、sed或 awk等UNIX程序或者 Perl语言脚本来处理这些结果。

Page 36: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点假定我们是 SunOS或 Solaris专家,可以通过编程找出其 HINFO记录带有 Sparc、Sun

或 Solaris等词的 IP地址。[bash]$ grep -i solaris zone_out |wc –l 388

可以看到,我们有 388个引用“Solaris”一词的潜在记录。毫无疑问,我们有大量的目标。

寻找测试系统也是攻击者们偏爱的选择之一。原因很简单:测试系统通常不怎么启动众多的安全特性,口令字往往易于猜到,而且管理员也一般不关心谁登录进来。这确实是个“无照营业者”的完美之家。我们可以如下所示搜索测试系统:

[bash]$ grep -i test /tmp/zone_out |wc-l 96

可以看出,该区域文件中约有 96个含有“test”一词的项。这应该等同于相当数量的实际测试系统。以上只是一些简单的例子。大多数入侵者会分割区域数据以瞄准具有已知脆弱点的特定系统类型。

这里有两点需要注意。首先,前面谈及的方法一次只查询一个名字服务器。这意味着不得不对目标域名的所有权威名字服务器执行完全相同的任务。另外,我们只是查询了Tellurian.net域。如果存在子域,我们又不得不给每个子域(例如 greenhouse.Tellurian.net)执行同样类型的查询。其次,你可能会收到一个消息,声称你不能罗列域名数据或者查询被拒绝。这通常表示目标域名服务器已被配置成不允许未经授权的用户执行区域传送。这么一来你不能再从该服务器执行区域传送,不过要是存在多个 DNS服务器,你仍有可能找到一个允许区域传送的服务器。

介绍完手动进行 DNS查询的方法之后,我们再向大家介绍几个可以自动完成这一查询的工具。这类工具有很多,host、Sam Spade、axfr和 dig是其中比较常见的。

许多版本的UNIX都带有 host命令。下面是使用 host命令的一些简单形式:host -l tellurian.net

和host -l -v -t any tellurian.net

如果只需将某些 IP地址作为某个 shell脚本的输入,那么可以利用剪贴操作把这些 IP地址从 host命令的输出中提取出来:

host -l tellurian.net |cut -f 4 -d" " >> /tmp/ip_out

Page 37: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报并非所有的踩点任务都必须使用 UNIX命令才能完成。Sam Spade等Windows 产品也

能提供同样的信息。UNIX环境中的 dig命令是DNS系统管理员的最爱之一,这个工具经常被人们用来查

修DNS体系中的故障。它还可以用来完成本节前面介绍的各种DNS查询。这个工具的命令行选项多得难以在这里详细列出,有兴趣的读者可以在它的man文档里查到它的各项功能的详细用法。

最后,你们可以使用执行区域传送操作的最佳工具之一:由 Gaius编写的 axfr工具(http://packetstormsecurity.nl/groups/ADM/axfr-0.5.2.tar.gz)。这个工具递归地完成区域传送操作,给所查询的每个域创建一个压缩的区域数据库和主机文件。此外,你甚至可以把com和 edu这样的顶级域名传递给它,以取得分别与 com和 edu相关联的所有域名。不过,我们并不建议大家这么做,因为这两个顶级域里的域实在是太多了。

下面是使用 axfr工具进行区域传输的命令示例:[bash]$ axfr tellurian.netaxfr: Using default directory: /root/axfrdbFound 2 name servers for domain ’tellurian.net.’:Text deleted.Received XXX answers (XXX records).

查询刚刚获得的 axfr数据库中的信息,执行如下命令:[bash] $ axfrcat tellurian.net

确定MX(邮件交换)记录确定电子邮件在哪儿处理是定位目标单位的防火墙网络的重要突破口。在商用环境里,

邮件大都是在防火墙所在的系统上处理的,最起码也是在同一个网络上。我们可使用 host命令来获取更多的信息:

[bash]$ host tellurian.net

tellurian.net has address 216.182.1.7tellurian.net mail is handled (pri=10) by mail.tellurian.nettellurian.net mail is handled (pri=20) by smtp-forward.tellurian.net

防范措施:DNS安全DNS信息可以向攻击者提供大量的数据,因此有必要降低可在因特网上获取的信息

量。从主机配置角度来看,必须把区域传送限定在只有经授权的服务器才能执行。就现代版本的 BIND而言,named.conf文件中的 allow-transfer 指令可用于实施这个限制。在Microsoft 的 DNS 中 要 限 制 区 域 传 送 , 可 使 用 Notify 选 项 ( 具 体 参 见 http://

Page 38: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点www.microsoft.com/technet /prodtechnol/windows2000serv/maintain/optimize/c19w2kad.mspx)。如果你使用的是其他的名字服务器软件,请查阅它们的自带文档以确定限制或禁止进行区域传送的必要步骤。

从网络角度看,可以配置防火墙或数据包过滤路由器,由它们拒绝所有未经授权的通往 53号 TCP端口的外来连接请求。既然名字查找请求使用的是 UDP,而区域传送请求使用的是 TCP,因此这将有效地挫败区域传送企图。不过,这种做法多少有点儿违反 RFC文档中的规定:根据有关 RFC文档中的规定,多于 512个字节的 DNS查询结果应该通过TCP发送。在大多数情况下,DNS查询的返回结果不会超过 512个字节。一个更好的解决方案是采用加密的交易签名(transaction signature,TSIG)来保证主 DNS服务器只向“可信的”主机进行区域传递操作。有兴趣了解 Bind 9软件中的 TSIG加密机制的读者,请自行查阅 http://www.linux-mag.com/2001-11/bind9_01.html主页上的文章。

对区域传送操作加以限制可以拖延攻击者探测到 IP地址和主机名所需要的时间。但因为名字查询仍然是允许的,所以攻击者还是可以通过手动方式对某给定网络地址范围内的所有 IP地址逐一进行逆向解析。因此,在配置对外的名字服务器的时候,一定要让它只提供与那些直接接入因特网的系统有关的信息。对外的名字服务器绝不可以配置成有可能泄漏与内部网络有关的敏感信息。这一点看起来好像微不足道,但笔者曾在某些配置不当的名字服务器上提取出了 16,000多个属于内部网络的 IP地址和相关的主机名。最后,我们建议大家不要使用HINFO记录。正如你们将在本书后续章节里看到的那样,黑客还是可以通过其他一些办法相当准确地推测出目标系统所使用的操作系统,但那些办法毕竟要麻烦一些;如果你们使用了HINFO记录,黑客通过编程来挑选潜在的脆弱系统就会容易得多。1.2.6 步骤 6:网络侦察

找到可以作为潜在攻击目标的网络之后,攻击者就可以去尝试确定那些网络的网络拓扑结构和可能存在的网络访问路径了。

路由追踪:traceroute工具流行度: 9简单度: 9影响力: 2风险率: 7

为了完成这一任务,我们可以使用大多数 UNIX 版本和 Windows NT 都提供的traceroute程序(下载地址:ftp://ftp.ee.lbl.gov/traceroute.tar.gz)。在Windows操作系统里,因为需要与早期的 8.3文件命名规则保持兼容,所以这个工具的程序名是“tracert”。

Page 39: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报traceroute是 Van Jacobson编写的诊断工具,它允许你查看一个 IP数据包从一台主机

依次经由一系列主机到达其目的地的传输路径。traceroute工具利用 IP数据包里的“存活时间”( time-to-live, TTL)字段让 IP 数据包途经的每台路由器返 回一条 ICMP TIME_EXCEEDED(传输超时)消息。IP数据包途经的每一台路由器都会对 TTL字段进行减 1操作,这使 TTL字段就像是一个网际跳跃次数的计数器,而我们也正好可以利用traceroute工具的这一特点把 IP数据包的实际传输路径准确地确定下来。正如刚才提到的那样,traceroute工具不仅可以用来发现对我们发出的数据包进行过滤的访问控制设备(比如一个基于应用程序的防火墙或数据包过滤路由器),还可以用来探查目标网络所采用的网络拓扑结构。

我们来看一个例子:[bash]$ traceroute tellurian.nettraceroute to tellurian.net (216.182.1.7), 30 hops max, 38 byte packets1 (205.243.210.33) 4.264 ms 4.245 ms 4.226 ms2 (66.192.251.0) 9.155 ms 9.181 ms 9.180 ms3 (168.215.54.90) 9.224 ms 9.183 ms 9.145 ms4 (144.232.192.33) 9.660 ms 9.771 ms 9.737 ms5 (144.232.1.217) 12.654 ms 10.145 ms 9.945 ms6 (144.232.1.173) 10.235 ms 9.968 ms 10.024 ms7 (144.232.8.97) 133.128 ms 77.520 ms 218.464 ms8 (144.232.18.78) 65.065 ms 65.189 ms 65.168 ms9 (144.232.16.252) 64.998 ms 65.021 ms 65.301 ms10 (144.223.15.130) 82.511 ms 66.022 ms 66.17011 www.tellurian.net (216.182.1.7) 82.355 ms 81.644 ms 84.238 ms

我们可以从上面的输出清单里清楚地看到数据包在它们的传输路径上是经过了几次网际跳跃之后才到达其最终目的地的。因为这些数据包在穿过多个网络时并没有受到阻断,所以我们可以有把握地认定目标主机是真实存在的,而到达最终目的地之前的那一次网际跳跃(第 10次跳跃)应该就是目标网络的边界路由器。第 10 跳有可能是一台专用的防火墙,也有可能只是一个简单的数据包过滤设备——到底是什么我们目前还无法确定。但一般来说,当你在某个网络上找到一个真实存在的系统时,在它之前的那个系统通常会是一台路由分配设备(比如一台路由器或一个防火墙系统)。

这只是一个非常简单的例子。在一个复杂的环境里,不仅有可能同时存在多个路由路径——即所谓的多接口路由设备(例如 Cisco 7500系列路由器)或通信负载平衡装置,还有可能出现每个路由接口分别使用不同访问控制列表(ACL)的情况。有时,有的路由接口会放行 traceroute请求,其他的路由接口则会因根据相应的 ACL表拒绝放行 traceroute请求。这么一来,利用 traceroute工具摸清整个目标网络的拓扑结构就变得极为重要。利用

Page 40: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点traceroute工具把目标网络上的多个系统的角色确定下来之后,就可以开始绘制目标网络的拓扑结构图并在图中标识出它的网关体系结构以及各访问控制设备的分布位置。我们把这称为“访问路径图”(access path diagram)。

值得注意的是,在 UNIX环境里,不同版本的 traceroute工具的默认行为基本上都是发出 UDP数据包,并且可以用“-I”开关改用 ICMP(网际控制消息协议)数据包。在Windows环境里,traceroute工具的默认行为是发出 ICMP ECHO请求数据包。因此,使用traceroute工具的结果可能随站点阻塞UDP数据包还是阻塞 ICMP数据包而变化。traceroute工具还有一个很值得玩味的选项,那就是允许用户为数据包指定其途经路由(loose source routing)的“-g”选项。如果你能肯定目标网关会接受一个由你指定其出发路由的数据包(这是一个重大的安全漏洞),就可以尝试选择一个适当的网际跳跃计数值去启用这个选项(关于“-g”选项的详细介绍可以在UNIX上执行“man traceroute”查到)。

下面再向大家介绍一下 traceroute工具的另外几个开关,它们可以帮你绕过路由探测路径上的网络访问控制设备。traceroute工具的“-p n”选项允许指定一个 UDP目标端口号(n),这个端口号会在路由探测开始时自动按 1递增。这意味着如果不修改 traceroute程序本身,我们就无法使用一个固定的端口号。还好,Michael Schiffman为 traceroute 1.4a5版本(ftp://ftp.cerias.purdue.edu/pub/tools/unix/netutils/traceroute/old/)创建的补丁(http://www.packetfactory.net/Projects/firewall/traceroute.diff)给这个工具增加了一个可以阻止目标端口号自动递增的“-S”开关。这样一来,我们就可以强行让我们发出的所有数据包都使用同一个端口号,这往往可以骗过某些访问控制设备并放行它们。UDP 53号端口(DNS查询端口)就是一个十分理想的目标端口号。因为许多站点都允许外来的DNS查询进入自己的内部网络,所以把 UDP 53号端口用做 traceroute工具的目标端口将大大提高网络访问控制设备放行我们发出的探测数据包的概率。

[bash]$ traceroute 10.10.10.2traceroute to (10.10.10.2), 30 hops max, 40 byte packets1 gate (192.168.10.1) 11.993 ms 10.217 ms 9.023 ms2 rtr1.bigisp.net (10.10.12.13)37.442 ms 35.183 ms 38.202 ms3 rtr2.bigisp.net (10.10.12.14) 73.945 ms 36.336 ms 40.146 ms4 hssitrt.bigisp.net (10.11.31.14) 54.094 ms 66.162 ms 50.873 ms5 * * *6 * * *

在上面这个例子里,我们进行的 traceroute探测——或者说我们让 traceroute工具以默认方式发出的UDP数据包——被防火墙阻塞了。

现在,我们改为固定使用 UDP 53号端口(DNS查询端口)作为 traceroute探测数据包的目标端口再试一次:

Page 41: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报[bash]$ traceroute -S -p53 10.10.10.2traceroute to (10.10.10.2), 30 hops max, 40 byte packets1 gate (192.168.10.1) 10.029 ms 10.027 ms 8.494 ms2 rtr1.bigisp.net (10.10.12.13) 36.673 ms 39.141 ms 37.872 ms3 rtr2.bigisp.net (10.10.12.14) 36.739 ms 39.516 ms 37.226 ms4 hssitrt.bigisp.net (10.11.31.14)47.352 ms 47.363 ms 45.914 ms5 10.10.10.2 (10.10.10.2) 50.449 ms 56.213 ms 65.627 ms

因为我们发出的数据包现在已经是网络访问控制设备(第 4 跳)可以接受的了,所以顺利地到达了目的地。这就是说,仅仅通过改用 UDP 53号端口作为探测数据包的目标端口,就顺利地探测到了网络访问控制设备身后的系统。从另一个角度来看,如果你打算探测的那个系统正在监听着自己的 UDP 53号端口,它就不会像你预想的那样返回一条“ICMP无法到达”消息。这么一来,即使你发出的探测数据包已经抵达最终目的地,你在自己的屏幕上也看不到那台主机的名字或 IP地址。

到目前为止,我们给出的 traceroute示例都是基于命令行的。如果你是一位图形化操作界面的爱好者,可以选用 VisualRoute(http://www.visualroute.com)、NeoTrace(http://www.neotrace.com)或 Trout(http://www.foundstone.com)之类的图形化工具来追踪路由 。VisualRoute和 NeoTrace工具都可以把各次网际跳跃显示在一个图像里,还都可以在探测路由的同时进行WHOIS查询。Trout工具采用了多线程技术,这使它成为探测速度最快的traceroute工具之一。VisualRoute的图像效果非常棒,但对大型网络的侦察效果不太让人满意。

有一点希望大家要特别注意:traceroute工具用来追踪路由的 TTL字段是 IP数据包表头的组成部分之一,因而并非只有UDP或 ICMP数据包才能进行这种探查。从理论上讲,任何一种 IP数据包都可以用来追踪路由。换句话说,即使防火墙阻断了UDP和 ICMP数据包,我们也可以利用路由追踪技巧绕过它们。 tcptraceroute(http://michael.toren.net/code /tcptraceroute)和 Cain & Abel(http://www.oxid.it)就是可以使用 TCP数据包对特定端口上的通信进行路由追踪的两种代表性工具。还有一些技巧可以探测出某给定访问控制设备所具体使用的 ACL表。防火墙协议扫描(firewall protocal scanning)就是这类技巧之一,firewalk则是这类工具的典型代表,我们将在第 11章向大家介绍它们。

针对网络侦察活动的防范措施我们在本章中仅仅触及了网络侦察技巧,以后各章中将看到更多的入侵技巧。不过,

有几种防范措施可以识别和挫败我们此前向大家介绍的网络侦察手段。首先,许多商业化的网络入侵监测系统(network intrusion detection system,NIDS)和反入侵系统(intrusion prevention system,IPS)都能够监测到这类网络侦察活动。作为最优秀的免费NIDS软件之

Page 42: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

41第 1章 踩 点一,由Marty Roesch开发的 Snort(www.snort.org),也可以监测到这类活动。如果你有兴趣对正在使用 traceroute工具对你进行侦察的人进行反击,不妨试试由 Rhino9 团队的Humble编写的 RotoRouter软件(http://www.usrsback.com/UNIX/loggers /rr.c.tgz),这个工具可以把外来的 traceroute请求记入你的系统日志并生成种种虚假的响应消息。最后,根据站点的安防策略,你还可以把网络边界路由器配置成只允许特定的系统响应 ICMP和UDP数据包,这可以把你的暴露面降到最低的水平。1.3 小结

正如大家看到的那样,攻击者可以采用许多种不同的方法来侦察或踩点你的网络。在这一章里,我们有意识地把讨论范围限制在那些比较常见的工具和技巧方面。请记住,新的工具每天都在出现。另外,我们在讲解踩点概念时只使用了一个简单化的例子。在现实世界里,你们所面对的往往会是需要发现并踩点几十甚至几百个域的艰巨任务。因此,我们更倾向于组合使用 shell脚本、expect脚本或 Perl程序,以自动化方式一次完成尽可能多的任务。天外有天,能在不被人察觉的情况下进行网络侦察活动的攻击者大有人在,他们的知识、技能和工具都相当齐全。请记住我们的两点忠告:一是注意隐藏你们在因特网上的面目,把因此而泄漏的信息量和信息类型减少到最小;二是以高度的警惕性监控各种可疑迹象。

Page 43: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

Page 44: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描

果说踩点相当于寻找并侦察情报中心的话,扫描就是在逐寸敲打墙壁以期找出所有门窗了。在第 1章里,我们通过whois和ARIN查询获得了一份 IP网络地址块和

IP地址清单。那些技巧向系统安防管理员(以及黑客)提供了很多有价值的信息,包括员工们的姓名和电话号码、IP地址范围、DNS服务器以及邮件服务器等等。在这一章里,我们将利用各种工具和技巧——比如 ping扫描、端口扫描以及各种自动发现工具——去确定在目标网络里都有哪些系统正在监听外来的网络通信(或者说是真实存在的),以及都有哪些系统可以从因特网直接进行访问。你们还将看到如何绕过防火墙去扫描对方有意识地使用防火墙规则阻断了普通扫描活动的系统。

如我们将依次测试每一个目标系统以判断它是否真实存在以及它(如果有的话)正在监

听着哪些端口。我们曾见过许多配置不当的 DNS名字服务器把内部网络的 IP地址(例如10.10.10.0)夹杂在公共 IP地址表里列了出来。因为这些内部 IP地址是无法通过因特网上的路由到达的,所以试图寻找一条访问这些地址的路由只会让你白费功夫。保留给内部网络使用的 IP地址包括 10.0.0.0/8、172.16.0.0/12和 192.168.0.0/16。RFC 1918号文档对无法通过公共网络路由进行访问的 IP 地址范围做了详细的介绍( http://www.ietf.org/rfc /rfc1918.txt)。

现在,让我们开始情报收集工作的第二阶段:扫描。2.1 确定目标系统是否真实存在

要想查出某个网络的拓扑结构,最基本的步骤之一是对其 IP地址范围和网络地址块进行一轮自动化的 ping扫描,以确定在这个网络里都存在着哪些设备或系统。传统意义上ping操作是这样的:向目标系统发出一些 ICMP ECHO(协议类型 8)数据包,如果从目标系统返回了一个 ICMP ECHO_REPLY数据包(协议类型 0),就说明目标系统是真实存在的。在小型或中型的网络里,通过 ping操作来确定网络里的机器个数还是比较可行的,但在大型、企业级网络里如果这么做就未免过于低效了。扫描一个典型的 A类网络至少需要花费好几个小时甚至几天的时间才能完成。你们必须掌握一些查找真实存在的系统的方法,接下来的几个小节就是这类技巧的一个样板。

Page 45: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

网络 ping扫描流行度: 10简单度: 9影响力: 3风险率: 7

网络 ping扫描是向目标系统发出特定类型的数据包并分析目标系统返回的响应结果(或没有任何返回结果)的行为。典型的 ping扫描都需要用到 ICMP协议(Internet Control Message Protocol,因特网控制消息协议)。虽然 ICMP数据包不是惟一可以完成这种功能的数据包,但各种扫描工具对 ICMP协议的支持却是最广泛的。当然,你也可以使用 TCP或UDP来完成同样的功能——寻找目标网络里正在运行着的主机。

UNIX 和 Windows 环 境 都 有 许 多 可 以 用 来 进 行 ICMP ping 扫 描 的 工 具 。fping(http://packetstorm.securify.com/ Exploit_Code__Archive/ fping.tar.gz)是UNIX环境里久经考验的 ping扫描工具之一。早期的 ping扫描工具大都需要等待前一个被探测主机返回某种响应消息之后才能继续探测下一台主机是否存在,但 fping却能以轮转方式并行地发出大量的 ping请求。这么一来,用 fping工具去扫描多个 IP地址的速度要比 ping快很多 。fping工具有两种用法:既可以通过标准输入设备(stdin)向它提供一系列 IP地址作为输入,也可以让它去读取某个文件。让 fping工具去读取一个文件是件很简单的事情:创建一个文本文件并把 IP地址按每行一个的格式写入,如下所示:

192.168.51.1192.168.51.2192.168.51.3...192.168.51.253192.168.51.254

然后使用“-f”参数读入这个文件,如下所示:[root]$ fping –a –f in.txt192.168.1.254 is alive192.168.1.227 is alive192.168.1.224 is alive...192.168.1.3 is alive192.168.1.2 is alive192.168.1.1 is alive192.168.1.190 is alive

Page 46: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描fping工具的“-a”选项表示只在输出报告里列出当前正在运行的系统。如果你愿意,

还可以同时使用这个工具的“-d”选项去解析主机名。笔者比较喜欢使用 fping工具的“-a”选项配合 shell脚本和“-d”选项去扫描那些有着独一无二的主机名的系统。在编写进行ping扫描的脚本时,“-f”和 fping工具的其他几个选项也很有用。fping工具的可用选项的完整清单可以通过执行“ fping -h”命令来查看。此外,由 Fyodor 编写的 nmap 工具(http://www.insecure.org/nmap)也可以进行 ping扫描。我们将在本章后面的内容里对nmap工具做详细的介绍,但在这里要提前告诉大家的是,这个工具的“ -sP”选项提供了ping扫描能力,如下所示:

[root] nmap –sP 192.168.1.0/24

Starting nmap V. 3.70 by [email protected] ( www.insecure.org/nmap/ )

Host (192.168.1.0) seems to be a subnet broadcastaddress (returned 3 extra pings).Host (192.168.1.1) appears to be up.Host (192.168.1.10) appears to be up.Host (192.168.1.11) appears to be up.Host (192.168.1.15) appears to be up.Host (192.168.1.20) appears to be up.Host (192.168.1.50) appears to be up.Host (192.168.1.101) appears to be up.Host (192.168.1.102) appears to be up.Host (192.168.1.255) seems to be a subnet broadcastaddress (returned 3 extra pings).Nmap run completed -- 256 IP addresses (10 hosts up) scanned in 21 seconds

对于 Windows 爱好者来说,Foundstone 公司(http://www.foundstone.com)开发的SuperScan软件是个值得一试的自由软件产品,如图 2-1所示。它是速度最快的 ping扫描工具之一。类似于 fping工具,SuperScan也是同时发出多个 ICMP ECHO请求数据包再等待目标主机返回响应。还类似于 fping工具,SuperScan也可以在进行 ping扫描的同时对目标主机名进行解析并把扫描工作的结果保存为一个HTML文件。

从技术角度讲,以下几类的 ICMP数据包都可以用来 ping一台主机(详见 RFC 792号文档)。常用的 ICMP数据包类型有:

消息类型:0 - Echo Reply(回音应答) 消息类型:3 - Destination Unrechable(目的地无法到达)

Page 47: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

图 2-1 Foundstone公司的 SuperScan工具是速度最快、灵活性最高的 ping扫描工具之一,并且是完全免费的

消息类型:4 - Source Quench(源主机准备关机) 消息类型:5 - Redirect(重定向) 消息类型:8 - Echo(回音) 消息类型:11 - Times Exceeded(超时) 消息类型:12 - Parameter Problem(参数有错误) 消息类型:13 - Timestamp(时间戳) 消息类型:14 - Timestamp Reply(时间戳应答) 消息类型:15 - Information Request(信息请求) 消息类型:16 - Information Reply(信息应答)以上这些 ICMP数据包都可以用来发现网络上的主机,具体情况取决于目标主机上的

ICMP实现和它对这些数据包类型的响应。不同的操作系统会对这些 ICMP数据包类型做出不同的响应或是不做出响应,利用这些细微的差异可以推测出目标主机使用的操作系统。

Page 48: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描SolarWinds公司(http://www.solarwinds.net)开发的 Ping Sweep软件(它是一种商业

化软件)也是一种速度奇快的 ping扫描工具。Ping Sweep工具之所以有那么高的扫描速度,是因为它允许用户设定数据包的发送间隔时间——如果把这个值设定为 0或 1的话,Ping Sweep在 7秒钟之内就可以完成对一个 C类网络从头到尾的扫描和主机名解析工作。不过,扫描速度太快并不见得是件好事,128K ISDN或 Frame Relay(帧中继)等低速链路的带宽很容易因为这些高速 ping扫描工具在短时间内发出的大量数据包而被消耗殆尽——卫星或红外线(IR)链路就更不用说了。

Windows环境下的其他 ping扫描工具还包括WS_Ping ProPack(www.ipswitch.com)和NetScanTools(www.nwpsw.com)。这两种工具完全可以胜任对一个小网络的扫描工作,但它们的扫描速度却要比 SuperScan和 Ping Sweep慢不少。我们还想提醒大家的是,虽然这些 GUI界面的 ping扫描工具可以提供赏心悦目的输出效果,但如果你们打算把 ping扫描编写为脚本的话,这些工具就很难满足要求了。

看到这里,有些读者可能会问:万一目标站点阻断了 ICMP数据包,情况又会是怎样的呢?这个问题问得好。有安防意识的站点往往会在它们的网络边界路由器或防火墙上阻塞 ICMP,但即使目标网络阻断了 ICMP,我们还是可以利用其他一些工具和技巧去发现它里面真实存在并正在运行的系统,只是在准确性和效率方面要比正常的 ping扫描差一些罢了。

如果目标网络阻断了 ICMP通信,端口扫描(port scanning)将是我们用来发现活跃主机的首选替代技术(我们将在本章稍后对端口扫描做详细的讨论)。通过扫描每个潜在IP地址上的常用端口,我们就能通过发现目标系统开放或正在监听着的端口,从而判断出有哪些主机是真实存在的。这种技术往往需要花费很多的时间,但它经常能够发现一些隐藏得很深或受到高度保护的系统。

在Windows环境下,我们推荐的端口扫描工具是 SuperScan。正如刚才讨论的那样,SuperScan工具可以分别使用 ICMP和 TCP/UDP发现目标网络里的主机和服务。它的TCP/UDP端口扫描选项可以帮助你们判断出目标网络里的某个主机是否真实存在——而不需要使用 ICMP。如图 2-2所示,只须选中相应的选项并填写几个数字,你们就可以组合不同的通信协议和扫描类型来对目标网络进行扫描了。

Page 49: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

图 2-2 Foundstone公司的 SuperScan工具可以发现隐藏在传统防火墙身后的主机UNXI/Windows工具 nmap也可以利用端口扫描技术去发现目标主机。除我们刚才介绍

的 ICMP扫描能力外,nmap工具还提供了一种更为高级的扫描选项——TCP ping扫描 。nmap工具可以对其“-PT”选项指定的端口(通常是 80号端口)进行 TCP ping扫描。选用80号端口是因为大多数网络都允许 80号端口上的通信穿过自己的网络边界路由器到达不设防区(demilitarized zone,DMZ)里的系统,有些网络甚至允许这类通信穿过自己的主防火墙。“-PT”选项将使 nmap工具向目标网络发出一系列 TCP ACK数据包并根据从目标网络返回的 RST数据包去判断有哪些活跃主机。之所以会选用发出 ACK数据包的办法进行 TCP ping扫描,是因为绝大多数无状态(non-stateful)防火墙产品(比如 Cisco IOS系列)通常都会放行这种数据包。我们来看一个例子:

[root] nmap -sP -PT80 192.168.1.0/24TCP probe port is 80Starting nmap V. 3.70Host (192.168.1.0) appears to be up.Host (192.168.1.1) appears to be up.Host shadow (192.168.1.10) appears to be up.Host (192.168.1.11) appears to be up.Host (192.168.1.15) appears to be up.Host (192.168.1.20) appears to be up.Host (192.168.1.50) appears to be up.

Page 50: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描Host (192.168.1.101) appears to be up.Host (192.168.1.102) appears to be up.Host (192.168.1.255) appears to be up.Nmap run completed (10 hosts up) scanned in 5 seconds

如上所示,即使目标网络阻断了 ICMP,我们也能有效地确定那个网络里都有哪些系统正在运行。分别对 SMTP端口(25)、POP端口(110)、IMAP端口(143)、AUTH端口(113)以及目标网络独有的其他常用端口多进行几次扫描,往往会有意想不到的收获。

http://www.hping.org的 hping2工具比较适合技术型读者,这个 UNIX环境下的 TCP ping扫描工具有一些 nmap工具不具备的 TCP功能。hping2工具允许用户设定 UDP、TCP和 Raw IP数据包里的某些特定选项,而这使得 hping2工具发出的扫描数据包可以穿透某些网络访问控制设备。

用 hping2工具的“-p”选项指定一个 TCP目的端口就可以进行一次简单的 TCP ping扫描。hping2工具可以像在第 1章介绍的 traceroute技巧那样绕过某些网络访问控制设备。除了可以进行 TCP和 UDP ping扫描,hping2工具还具备把数据包分割为多个片段的能力,可以利用这种能力可以绕过某些网络访问控制设备。我们来看一个例子:

[root]# hping2 192.168.0.2 -S -p 80 -fHPING 192.168.0.2 (eth0 192.168.0.2): S set, 40 data bytes60 bytes from 192.168.0.2: fl ags=SA seq=0 ttl=64 id=418 win=5840 time=3.2 ms60 bytes from 192.168.0.2: fl ags=SA seq=1 ttl=64 id=420 win=5840 time=2.1 ms60 bytes from 192.168.0.2: fl ags=SA seq=2 ttl=64 id=422 win=5840 time=2.0 ms

--- 192.168.0.2 hping statistic ---3 packets tramitted, 3 packets received, 0% packet loss

比较简单的访问控制设备往往无法正确处理被分割为多个片段的数据包,这就使得hping2工具的扫描数据包可以穿越它们而探测出目标系统是否真实存在。一般来说,只要目标系统有一个开放着的端口(flags=SA),就会在收到 hping2工具发出的扫描数据包时返回 TCP SYN(S)和 TCP ACK(A)标志作为响应。hping2工具的数据包计数选项“-cN”使得这个工具很容易被集成到一个 shell脚本里去——“-cN”选项使 hping2工具在向目标系统发送“N”个数据包后结束运行并开始执行下一条脚本命令。虽然 hping2工具在扫描速度方面不如前面介绍的某些 ICMP ping扫描方法,但某些特定配置的目标网络只有用hping2工具扫描才能有所收获。我们将在第 9章对 hping2工具做进一步介绍。

由 Simple Nomad 团 队 开 发 的 icmpenum 程 序 ( http://www.nmrc.org/files/sunix

Page 51: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报/icmpenum-1.1.1.tgz)是我们将在本小节介绍的最后一个 TCP ping扫描工具。这个UNIX程序是很一个方便的 ICMP查点工具,利用它可以迅速确定目标网络里都存在着哪些活跃的系统。这个工具既可以发出传统的 ICMP ECHO数据包、也可以发出 ICMP TIME STAMP REQUEST和 ICMP INFO请求(类似于 SuperScan工具)。换句话说,即使 ICMP ECHO数据包被目标网络的边界路由器或防火墙阻断了,icmpenum程序也可以利用其他类型的ICMP数据包把目标网络里的活跃系统找出来:

[shadow] icmpenum -i2 -c 192.168.1.0192.168.1.1 is up192.168.1.10 is up192.168.1.11 is up192.168.1.15 is up192.168.1.20 is up192.168.1.103 is up

在上面的例子里,我们利用 ICMP TIME STAMP REQUEST 数据包对 C 类网络192.168.1.0从头至尾进行了一次查点。不过,icmpenum工具的真正威力在于它可以使用伪造的数据包去发现目标网络里的活跃系统,以免被对方监测到扫描活动的真正来源——icmpenum工具的“-s”选项可以给它发出的扫描数据包设置一个虚假的源地址,“ -p”选项可以让它以被动方式监听从目标网络返回的响应。

总结一下,在查点步骤里,我们可以选用某种 ICMP扫描工具或是其他类型的端口扫描工具准确地把目标网络里的活跃系统找出来。同时,我们已经从某 C类网络共 255个可用的 IP地址当中发现了几个真实存在并正在运行着的主机,这些主机将是我们侦察活动的重点目标。

针对 ping扫描活动的防范措施虽说 ping扫描活动看起来只是一种骚扰,但及时监测到这种活动的发生还是非常重

要的。根据具体的安防策略,你们也许还需要阻断 ping扫描数据包。下面是我们在这两方面给出的建议。监测

利用 ping扫描活动摸清目标网络的拓扑结构,是在发起攻击之前侦察目标网络的有效办法之一;所以防御者对 ping扫描活动进行监测有助于判断攻击将在何时发生和来自何方。监测 ping扫描活动的基本方法是使用诸如 Snort(www.snort.org)之类基于网络的IDS(intrusion detection system,入侵监测系统)程序。

从基于主机的角度,有几种 UNIX实用工具可以监测到 ping扫描活动并把它们记载到日志文件里去。如果你们在查看有关日志时发现来自某个系统或网络的 ICMP ECHO数据

Page 52: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描包是某种可疑的模式,那可能代表着有人正在对你们的站点进行网络侦察。一定要密切留意这类活动,它往往预示着一次全面的攻击已迫在眉睫。

有 许 多 种 商 业 化 的 网 络 和 桌 面 防 火 墙 工 具 ( Cisco 、 Check Point、Microsoft、McAfee 、Symantec和 ISS等公司都能提供)可以监测到 ICMP、TCP和UDP ping扫描活动。但存在可以监测 ping扫描活动的技术,并不意味着有人在密切监测着这类活动。

基于Windows主机的自由软件类 ping扫描监测工具是存在的。Genius工具就是一种很不错的共享 /自由软件类产品。 Genius 工具的最新版本是 3.1,可以从 http://www.indiesoft.com网站下载。Genius工具不能监测系统是否受到了 ICMP ECHO(ping)扫描,但它将监测是否有人在对某个特定的端口进行 TCP ping扫描。表 2.1列出了一些可以提高你们安防监控能力的UNIX ping扫描监测工具。程序 资源Scanlogd http://www.openwall.com/scanlogdCourtney http://packetstormsecurity.org/UNIX/audit/courtney-1.3.tar.ZIppl http://pltplp.net/ipplProtolog http://packetstormsecurity.org/UNIX/loggers/protolog-1.0.8.tar.gz

表 2-1 基于UNIX主机的 ping扫描监测工具防御

监测 ping扫描活动固然重要,但提前安排好防御措施的效果无疑更佳。你应该对允许哪些类型的 ICMP通信进入网络或特定系统做出细致的评估。ICMP通信分为许多种不同的类型——ECHO请求和 ECHO_REPLY响应只是其中的两种而已。绝大多数路由器并非必须放行所有类型的 ICMP通信到达与因特网直接相连的系统才能正常工作。尽管几乎任何一种防火墙都能对 ICMP通信进行过滤,但企事业单位的业务活动往往需要防火墙放行某些 ICMP通信才能顺利进行。如果你们公司确实有这类需要,请务必仔细考虑应该放行哪些 类 型 的 ICMP 通 信 。 最 简 单 的 办 法 是 只 允 许 ICMP ECHO_REPLY、HOST_UNREACHABLE和 TIME_EXCEEDED数据包进入DMZ网络并只允许它们到达特定的主机。此外,若是可以通过访问控制表(access control list,ACL)把外来 ICMP通信限制在只能到达某些属于你们 ISP(因特网接入服务提供商)的 IP地址,你们的处境将会更安全。这既不会影响 ISP检修网络线路故障,又可以让别人更难以对你们直接接入因特网的系统进行 ICMP扫描。

ICMP是为了检修网络线路故障而开发出来的一种功能强大的通信协议,但它也很容

Page 53: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报易被滥用。允许 ICMP通信不受限制地进入网络边界网关会给攻击者留下发动“拒绝服务”(denial of service)攻击的可乘之机,这会造成系统死机或降低它们的可用性。更糟糕的是,万一攻击者真的攻陷了网络中的某个系统,他们就可以安插操作系统后门并利用loki等黑客工具把恶意数据打包在 ICMP EHO数据包里。有关 loki工具的详细介绍见Phrack Magazine 杂志 1997 年 9 月 1 日第 7卷第 51 期中的 06 号文章(http://phrack.org /show.php?p=51&a=6)。

由 Tom Ptacek开发并由Mike Schiffman 移植到 Linux上的 pingd工具提出了另外一个有趣的概念。pingd是一个在主机层面处理各种 ICMP ECHO和 ICMP ECHO_REPLY通信的用户级守护进程。这一卓绝的手法禁用操作系统内核对 ICMP ECHO数据包的处理功能,然后一个带底层 ICMP套接口的用户级守护进程去处理这些数据包。也就是 pingd工具提供了一种主机级的 ping 访问控制机制。基于 Linux 的 pingd 工具可以从 http://packetstormsecurity.org/UNIX/misc/pingd-0.5.1tgz获得。

ICMP查询流行度: 2简单度: 9影响力: 5风险率: 5

说到某个系统的 ICMP信息,ping扫描(或 ICMP ECHO数据包)仅仅是冰山一角。只须简单地向某个系统发送一个 ICMP数据包,你们就可以收集到种种与该系统有关的高价值情报。比如说,如果用 UNIX 工具 icmpquery( http://packetstormsecurity.org /UNIX/scanners/icmpquery.c ) 或 icmpush ( http://packetstormsecurity.org/UNIX/scanners /icmpush22.tgz)向某个系统发出一条 ICMP TIMESTAMP(时间戳,ICMP消息类型 13)消息,就可以获知系统时间和它所在的地理时区。类似地,如果你们向目标设备发出的是ICMP ADDRESS MASK REQUEST(地址掩码请求;ICMP消息类型 17)消息,返回的就将是该设备的子网掩码(netmask)。网卡的子网掩码非常重要,攻击者可以根据子网掩码把目标网络的各个子网全部查找出来。查出那些子网之后,攻击者就可以撇开广播地址而集中火力只攻击某几个特定的子网。icmpquery工具既可以用来发出时间戳请求,也可以发出地址掩码请求:

icmpquery <-query> [-B] [-f fromhost] [-d delay] [-T time] targetswhere <query> is one of:

-t : icmp timestamp request (default)-m : icmp address mask request

Page 54: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描The delay is in microseconds to sleep between packets.targets is a list of hostnames or addresses-T specifi es the number of seconds to wait for a host to

respond. The default is 5.-B specifi es 'broadcast' mode. icmpquery will wait

for timeout seconds and print all responses.If you're on a modem, you may wish to use a larger -d and –T

如果你想用 icmpquery工具查询某个路由器的时间,请执行如下的命令:[root] icmpquery -t 192.168.1.1192.168.1.1 : 11:36:19

如果你想用 icmpquery工具查询某个路由器的子网掩码,请执行如下的命令:[root] icmpquery -m 192.168.1.1192.168.1.1 : 0xFFFFFFE0

并非所有的路由器或系统都允许 ICMP TIMESTAMP 或 NETMASK响应,所以用icmpquery或 icmpush工具对不同主机进行这类查询时的返回结果可能会有很大的差别。

针对 ICMP查询的防范措施最好的防范措施之一是在网络边界路由器上阻断有可能泄漏敏感信息的各种 ICMP数

据包,至少应该限制 TIMESTAMP(ICMP消息类型 13)和 ADDRESS MASK(ICMP消息类型 17)这两种数据包进入你们的网络。如果在网络边界上部署的是 Cisco路由器,可以用如下所示的ACL表限制其对这两种 ICMP请求数据包做出响应:

access-list 101 deny icmp any any 13 ! timestamp requestaccess-list 101 deny icmp any any 17 ! address mask request

诸如 Snort之类的网络入侵监测系统(network intrusion detection system,NIDS)也可以监测到这类活动。下面是 Snort在监测到此类活动时记入日志的消息示例:

[**] PING-ICMP Timestamp [**]05/29-12:04:40.535502 192.168.1.10 -> 192.168.1.1ICMP TTL:255 TOS:0x0 ID:4321TIMESTAMP REQUEST

2.2 确定目标系统上都哪些服务正在运行或监听到目前为止,我们已经通过 ICMP或 TCP ping扫描发现了目标网络里真实存在的系统,

还有选择地收集了一些 ICMP情报。完成这些准备工作之后,我们就开始对目标网络里的

Page 55: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报活跃系统逐个进行端口扫描了。

Page 56: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描

端口扫描流行度: 10简单度: 9影响力: 9风险率: 9

“端口扫描”是主动连接到目标系统的 TCP和 UDP端口以确定在目标系统上都有哪些服务正在运行或处于 LISTENING(监听)状态的过程。确定有哪些端口正处于监听状态是一个非常重要的攻击步骤,攻击者不仅可以了解到远程系统上都运行着哪些服务,还可以准确地探测出目标系统所使用的操作系统和应用程序的类型和版本。处于监听状态的活跃服务就像是你家的大门和窗户——它们都是外人进入你私人领地的通道。根据其具体类型(是“窗户”还是“大门”),这些通道有的会让非授权用户侵入各种配置不当的系统,有的则会放任非授权用户运行某种有安防缺陷的软件版本。在本小节里,我们的讨论将集中在目前比较流行的几种端口扫描工具和技术方面,它们或者会向攻击者提供大量的信息,或者可以帮助攻击者找到一扇“窗户”进入有安防缺陷的系统。下面要讨论的端口扫描技术与此前介绍的端口扫描技术是有本质区别的。在接下来的步骤里,我们将假设要扫描的目标系统都是真实存在的活跃系统,而我们是要把目标系统上的监听端口或潜在的访问入口都找出来。

我们希望对目标系统进行端口扫描以达到多个目的,其中包括但不限于以下几个: 确定在目标系统上运行的 TCP服务和UDP服务。 确定目标系统上的操作系统的具体类型。 确定目标系统上负责提供各服务的应用程序名称和版本。

2.2.1 扫描类型在开始介绍端口扫描工具之前,有必要先把各种端口扫描技术向大家做个交代。实现

各种端口扫描技术的先锋人物之一是 Fyodor,他把许多种扫描技术都集成到了 nmap工具当中。以下讨论的许多种扫描类型都直接取材于 Fyodor本人的工作成果:

TCP 连接扫描 这种扫描将连接目标端口并完成一次完整的三次握手过程(SYN、SYN/ACK 和ACK),就像 TCP RFC(Request for Comment)描述的那样。这种扫描很容易被目标系统觉察。图 2-3是 TCP三次握手的流程图。

Page 57: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

图 2-3 (1)发出一个 SYN数据包;(2)收到一个 SYN/ACK数据包;(3)发出一个ACK数据包

TCP SYN扫描 这种扫描也叫做“半开扫描”(half-open scanning),因为双方并没有建立起一条完整的 TCP连接,而是扫描者先向被目标端口发出一个 SYN数据包。如果从目标端口返回一个 SYN/ACK数据包,我们就可以断定该端口处于监听状态;如果返回一个 RST/ACK数据包,它通常表明目标端口不在监听状态。接下来,扫描者将送出一个 RST/ACK数据包,这使得通信双方永远不会建立起一条完整的连接。这种技术的优点是比一条完整的 TCP连接更隐秘,而且目标系统一般也不会把这类事件记入日志。而它的主要缺点是打开的半开连接数量过多时,会在目标系统上形成一种“拒绝服务”条件而引起对方的警觉。但如果你没有使用大量的这类连接去扫描同一个系统,这种技术还是很安全的。

TCP FIN扫描 这种扫描向目标端口发出一个 FIN数据包。根据 RFC 793号文档(http://www.ietf.org /rfc/rfc0793.txt)中的规定,如果目标端口是关闭的,目标系统应该返回一个 RST数据包。这种扫描通常只对UNIX系统的 TCP/IP栈有效。

TCP圣诞树扫描 这种技术向目标端口发送一个 FIN、URG和 PUSH数据包。根据RFC 793号文档的有关规定,如果目标端口是关闭的,目标系统应该返回一个RST数据包。

TCP空扫描 这种技术是关掉所有的标志。根据 RFC 793号文档的有关规定,如果目标端口是关闭的,目标系统应该返回一个 RST数据包。

TCP ACK扫描 这种技术用来试测防火墙的规则集。它可以帮助扫描者判断对方的防火墙是一个简单的、只允许已建立连接(即 ACK标志位被置位的连接)通过的数据包过滤器;还是一个高级的、具备数据包过滤功能的有状态(stateful)防火墙。

TCP窗口扫描 这种技术可以试测出特定类型的目标系统(比如 AIX和 FreeBSD系统)上的目标端口是开放的、被过滤的、还是不被过滤的——这几种情况会导致目标系统向扫描者返回不同的 TCP窗口(TCP windows)长度值。

Page 58: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描 TCP RPC扫描 这种技术仅适用于 UNIX系统,其主要用途是发现并确认目标系统上的 RPC(远程过程调用)端口以及与 RPC端口相关联的应用程序和版本号。

UDP扫描 这种技术将向目标端口发出一个 UDP数据包。如果从目标端口返回的是一条“ICMP port unreachable”(无法到达指定 ICMP端口)出错消息,就表明该端口是关闭的。反之,如果扫描者没有收到该出错消息,就可以断定那个端口是开放的。因为 UDP协议不要求通信双方必须建立一条连接,所以这种扫描的准确性在很大程度上取决于与目标网络的使用情况和过滤机制有关的许多种因素。此外,如果你试图扫描的是一个数据包过滤量很大的设备,UDP扫描的速度会非常慢。如果你打算在因特网上进行UDP扫描,请做好扫描结果不可靠的心理准备。

IP 协议的某些具体实现会因为其自身的缺陷而为所有被扫描端口返 回一个RST(reset)数据包——不管它们是不是处于监听状态。因此,你们看到的扫描结果很可能会与我们这里的不一致;但“TCP SYN扫描”和“TCP连接扫描”应该适用于任何类型的主机。2.2.2 确定运行的 TCP和UDP服务

好的端口扫描工具是踩点阶段的一个决定性组件。尽管 UNIX和Windows环境都有许多种端口扫描程序可供选用,我们还是要把讨论的范围限定在几种广为流行且久经考验的端口扫描工具上。strobe

由 Julian Assange编写的 strobe程序(ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ strobe-1.06.tgz)是一个久经考验的 TCP端口扫描工具。它已面世很长时间,是最快最可靠的 TCP扫描程序之一。strobe工具的核心特色包括对系统和网络资源进行优化、高效率地扫描目标系统的能力等。除了高效率,strobe工具(1.04及其后续版本)还可以把与各端口相关联的旗标(如果有的话)抓取回来,这对我们判断目标系统使用的操作系统和服务非常有帮助。第 3章将对旗标抓取技术做详细的讨论。

strobe工具的输出报告列出了所有处于监听状态的 TCP端口:[root] strobe 192.168.1.10strobe 1.03 (c) 1995 Julian Assange ([email protected]).

192.168.1.10 echo 7/tcp Echo [95,JBP]192.168.1.10 discard 9/tcp Discard [94,JBP]192.168.1.10 sunrpc 111/tcp rpcbind SUN RPC192.168.1.10 daytime 13/tcp Daytime [93,JBP]

Page 59: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报192.168.1.10 chargen 19/tcp ttytst source192.168.1.10 ftp 21/tcp File Transfer [Control] [96,JBP]192.168.1.10 exec 512/tcp remote process execution;192.168.1.10 login 513/tcp remote login a la telnet;192.168.1.10 cmd 514/tcp shell like exec, but automatic192.168.1.10 ssh 22/tcp Secure Shell192.168.1.10 telnet 23/tcp Telnet [112,JBP]192.168.1.10 smtp 25/tcp Simple Mail Transfer [102,JBP]192.168.1.10 nfs 2049/tcp networked fi le system192.168.1.10 lockd 4045/tcp192.168.1.10 unknown 32772/tcp unassigned192.168.1.10 unknown 32773/tcp unassigned192.168.1.10 unknown 32778/tcp unassigned192.168.1.10 unknown 32799/tcp unassigned192.168.1.10 unknown 32804/tcp unassigned

strobe工具的扫描结果非常可靠,但它仍有某些局限性。strobe工具只能进行 TCP扫描,它不具备UDP扫描能力。因此,就前面的例子而言,我们只看到了一半服务。因为 strobe程序的扫描能力和扫描结果不能满足我们的需要,我们就必须求助于其他的扫描工具了。udp_scan

我们可以使用 udp_scan扫描器来弥补 strobe工具只能进行 TCP扫描的不足。udp_scan工具原本是 Dan Farmer和Wietse Venema于 1995年编写的著名安防软件 SATAN(Security Administrator Tool for Analyzing Networks,安防管理员网络分析工具箱)的组件之一。虽说 SATAN现在有点儿过时,但它的众多工具却仍然工作得相当好。此外,可以在 http://wwdsilx.wwdsi.com站点上找到 SATAN软件的新版本——新名字叫做 SAINT。可以用来进行UDP扫描的工具有很多,但 udp_scan却一直是我们眼中最可靠的 UDP扫描工具之一。需要提醒大家的是,udp_scan工具——虽然它的扫描结果非常可靠——有一个致命的弱点:会触发 IDS 产品生成一条扫描的报警消息;这意味着你很难把它用作某种隐秘的用途。一般情况下,笔者通常会用 udp_scan工具去扫描所有编号小于 1024的常用端口以及编号大于 1024的高风险端口。下面是一个例子:

[root] udp_scan 192.168.1.1 1-102442:UNKNOWN:53:UNKNOWN:123:UNKNOWN:135:UNKNOWN:

Page 60: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描netcat

由Hobbit([email protected])编写的 netcat(简称 nc)程序是另一个最优秀的软件工具。这个工具能够完成的任务非常之多,所以业内人士都称之为信息安防人员的“瑞士军刀”。除了你们将在本书陆续看到的其他高级功能,nc程序还提供了基本的 TCP和 UDP端口扫描能力。nc程序的选项:“-v”生成详尽的输出报告;“-vv”生成非常详尽的输出报告;“-z”,零模式 I/O(zero mode I/O),也就是进行端口扫描;“-w2”,设定各条连接的倒计数超时值。默认 nc程序将使用 TCP端口。如果你们想进行UDP扫描,就必须像下面第二个示例那样给出一个“-u”选项:

[root] nc -v -z -w2 192.168.1.1 1-140

[192.168.1.1] 139 (?) open[192.168.1.1] 135 (?) open[192.168.1.1] 110 (pop-3) open[192.168.1.1] 106 (?) open[192.168.1.1] 81 (?) open[192.168.1.1] 80 (http) open[192.168.1.1] 79 (fi nger) open[192.168.1.1] 53 (domain) open[192.168.1.1] 42 (?) open[192.168.1.1] 25 (smtp) open[192.168.1.1] 21 (ftp) open

[root] nc -u -v -z -w2 192.168.1.1 1-140[192.168.1.1] 135 (ntportmap) open[192.168.1.1] 123 (ntp) open[192.168.1.1] 53 (domain) open[192.168.1.1] 42 (name) open

Network Mapper(nmap)我们刚才介绍的都是些入门级的端口扫描工具,接下来要介绍最著名的 UNIX端口扫

描工具之一,nmap(http://www.insecure.org/nmap)。由 Fyodor编写的 nmap工具不仅具备基本的 TCP和UDP扫描能力,还集成了我们此前提及的多种扫描技术。下面是它最有用的一些功能的说明。

[root]# nmap –hnmap V. 3.70 Usage: nmap [Scan Type(s)] [Options] <host or net list>Some Common Scan Types ('*' options require root privileges)-sT TCP connect() port scan (default)

* -sS TCP SYN stealth port scan (best all-around TCP scan)

Page 61: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报* -sU UDP port scan-sP ping scan (Find any reachable machines)

* -sF,-sX,-sN Stealth FIN, Xmas, or Null scan (experts only)-sR/-I RPC/Identd scan (use with other scan types)

Some Common Options (none are required, most can be combined):* -O Use TCP/IP fi ngerprinting to guess remote operating system-p <range> ports to scan. Example range: '1-1024,1080,6666,31337'-F Only scans ports listed in nmap-services-v Verbose. Its use is recommended. Use twice for greater effect.-P0 Don't ping hosts (needed to scan www.microsoft.com and others)

* -Ddecoy_host1,decoy2[,...] Hide scan using many decoys-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> General

timing policy-n/-R Never do DNS resolution/Always resolve [default: sometimes

resolve]-oN/-oM <logfi le> Output normal/machine parsable scan logs to

<logfi le>-iL <inputfi le> Get targets from fi le; Use '-' for stdin

* -S <your_P>/-e <devicename> Specify source address or network interface--interactive Go into interactive mode (then press h for help)

[root] nmap –sS 192.168.1.1Starting nmap V. 3.70 by [email protected] ports on (192.168.1.11):(The 1504 ports scanned but not shown below are in state: closed)Port State Protocol Service21 open tcp ftp25 open tcp smtp42 open tcp nameserver53 open tcp domain79 open tcp fi nger80 open tcp http81 open tcp hosts2-ns106 open tcp pop3pw110 open tcp pop-3135 open tcp loc-srv139 open tcp netbios-ssn443 open tcp https

nmap还有一些需要解释的其他功能。我们已经讲过了用于扫描单个系统的语法。nmap还提供了扫描整个网络的简易手段。正如你们将看到的那样, nmap 允许以CIDR ( Classless Inter-Domain Routing , 域 间 不 分 类 路 由 ) 网 络 块 记 号 ( 详

Page 62: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描见 http://www.ietf.org/rfc/rfc1519.txt处的 RFC 1519号文档)输入地址范围,利用这种方便的格式可以把 192.168.1.1~ 192.168.1.254指定为地址范围。还要注意的是,使用“-o”选项可以把结果保存到一个独立文件中,-oN选项可以以适合人类阅读的格式保存结果:

[root]# nmap -sF 192.168.1.0/24 -oN outfile

如果想要把结果保存到一个以 tab键作为分割符的文件中以便编程分析它,那就使用“-oM”选项。由于这种扫描有可能收到大量信息,因此使用任何一种格式把结果保存起来是个合理的想法。某些情况下,可以组合“-oN”和“-oM”选项,把结果以两种格式同时保存。

假设踩点某个单位后发现他们在使用一个简单的数据包过滤设备作为主防火墙,我们可以使用 nmap的“-f”选项把数据包划分成片段。该选项实质上把 TCP表头分割到若干个数据包中,从而给访问控制设备或 IDS系统增加监测扫描的难度。大多数情况下,现代的数据包过滤设备和基于应用程序的防火墙会在决定是否放行 IP片段前排队重组它们(分片的逆过程)。不过较老的访问控制设备或要求达到最高性能级别的设备可能不重组片段就放行它们了。

此时,执行过的扫描可能已被目标站点轻易地监测到了,这取决于目标网络和主机的先进程度。nmap提供了额外的欺骗能力,也就是使用“-D”选项给目标站点灌输多余的信息。隐含在该选项背后的基本前提是,在发起真实扫描的同时发起欺骗性扫描,这是通过源地址假冒真实的服务器,并把这些虚假的扫描与真实的扫描混杂在一起来完成的。目标系统除对真实的端口扫描作出响应外,对虚假扫描也不例外。另外,目标系统为了确定哪些扫描是真实的,哪些又是虚假的,势必会增添试图追踪所有扫描的负担。需要记住的是,虚假地址必须是活动的,否则这样扫描可能导致 SYN数据包淹没目标系统,造成拒绝服务的后果。下面这个例子使用了“-D”选项:

[root] nmap -sS 192.168.1.1 –D 10.1.1.1www.target_web.com,ME -p25,139,443

Starting nmap V. 3.70 by [email protected] ports on (192.168.1.1):

Port State Protocol Service25 open tcp smtp443 open tcp https

Nmap run completed -- 1 IP address (1 host up) scanned in 1 second

上例中,nmap提供的欺骗性扫描能力使目标站点不太容易把合法的和非法的端口扫描区分开来。

Page 63: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报另 一 个 有 用 的 扫 描 功 能 是 执 行 ident 扫 描 。 ident ( 参 见 RFC 1413 , 访

问 http://www.ietf.org/rfc/rfc1413.txt)用于确定发出某个 TCP连接的用户的身份,办法是与113号端口通信。许多版本的 ident确实会以捆绑在某个端口上的进程的属主作为响应,而这成了针对UNIX目标系统的最有用扫描手段之一。我们来看一个例子:

[root] nmap -I 192.168.1.10Starting nmap V. 3.70 by [email protected] State Protocol Service Owner22 open tcp ssh root25 open tcp smtp root80 open tcp http root110 open tcp pop-3 root113 open tcp auth root6000 open tcp X11 root

注意,上例中我们实际上可以确定每个服务器进程的属主。敏锐的读者可能已注意到Web服务器在以“root”而不是以诸如“nobody”之类的某个非特权用户身份运行,这可是安全性很糟的做法。这么一来,我们通过执行 ident扫描得悉,要是目标系统的HTTP服务出现问题,从而允许未经授权的用户执行命令,那么攻击者们实际得到了 root访问权限。

最后要讨论一种扫描技术是 FTP 弹射扫描(FTP bounce scanning)。FTP 弹射攻击的概 念是由 Hobbit 最早公之于众的。 1995 年,在 Bugtraq 上发布的一篇文章(http://www.securityfocus.com/templates/archive.pike?list=1&msg=199507120620.CAA18176 @narq.avian.org)里,Hobbit指出了 FTP协议(详见 http://www.ietf.org/rfc/ rfc0959.txt处的RFC 959号文档)中的某些内在缺陷。大体上说 FTP 弹射攻击是一种狡诈的洗劫 FTP服务器连接的方法,它滥用了对“代理(proxy)”FTP连接的支持。正如Hobbit在那篇文章中指出的那样,FTP 弹射攻击“可用来张贴几乎无从追踪的邮件和新闻,破坏各个站点的服务器,填满硬盘,尝试穿越防火墙,而且通常既令人讨厌又难以追踪。”而且,你还可以让端口扫描活动弹离 FTP服务器以隐蔽自己的身份,甚至绕开访问控制机制。

nmap以“-b”选项支持这种扫描类型,不过必须有几个条件。首先,FTP服务器必须有一个可写可读目录,例如/incoming。其次,FTP服务器必须允许 nmap通过 PORT命令供给它虚假的端口信息。FTP 弹射扫描技术在绕开访问控制设备和隐蔽个人身份上,尽管非常有效,但实施起来可能相当慢。另外,许多新版本的 FTP服务器并不允许这种类型的活动发生。

既然我们已经展示了执行端口扫描的必要工具,接下去要理解如何分析从每个工具汇总到的数据。不论使用什么工具,我们都试图确认打开的端口,它们提供了泄露操作系统内情的蛛丝马迹。举例来说,当 139号和 135号端口打开着时,目标操作系统是Windows

Page 64: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描NT的可能性非常之大。Windows NT通常同时监听 135和 139号端口,这跟只监听 139号端口的Windows 95/98不一样。

进一步查看讨论 strobe时给出的输出实例,我们看到该系统上运行着多个服务。我们猜测它看来是在运行某种UNIX。得出这个结论是因为 portmapper(111)、Berkeley R服务端口(512~514)、NFS(2049)以及高编号(3277X甚至更高)端口都处于监听状态,而这种端口的存在说明系统运行的是 UNIX。另外,如果猜测具体的 UNIX类型,那就是Solaris。我们事先就知道 Solaris通常将其 RPC服务运行于 3277X这个端口范围内。不过要记住我们只是在做假设,真正的类型有可能不是 Solaris。

通过简单地执行 TCP和UDP端口扫描,我们可以就所扫描系统的暴露程度快速做出假设。举例来说,如果某台 Windows NT服务器上打开着 139号端口,那么它可能面临极大的危险。第 4章将讨论Windows NT固有的脆弱点以及 139号端口的访问被如何用来损害系统的安全,而这些系统并没有采取足够的安全措施来保护对该端口的访问。在我们的例子中,UNIX系统看来也在冒险,因为它监听的服务既提供了大量的功能,也有不少已知的与安全相关的脆弱点。举例来说,远程过程调用(RPC)服务和网络文件系统(NFS)服务是攻击者损害一台 UNIX服务器安全的两个主要手段(参见第 5章)。相反,如果某个远程服务不在监听,那就几乎不可能损害它的安全。因此要记住,所运行的服务越多,损害一个系统的安全的可能性就越大。2.2.3 基于Windows的端口扫描工具

我们已经讨论了许多UNIX用户使用的端口扫描程序,那么是否意味着Windows用户就没有这些好玩的东西呢?当然不是——下面这些端口扫描工具因为速度、准确性以及功能已成为我们工具箱中的热门工具了。SuperScan

在 经 过 多 年 的 完 善 之 后 , 由 Foundstone 公 司 开 发 的 SuperScan ( http://www.foundstone.com)已经是速度最快、可靠性最高、适用面最广的Windows端口扫描工具之一,并正在成为众多安防评估项目使用的标准化工具。与几乎所有其他的端口扫描工具不同,SuperScan工具既是一个 TCP扫描器,也是一个 UDP扫描器,而且价格优势明显——它是免费的!正如你在图 2-4里看到的那样,这个工具可以用来进行 ping扫描、TCP和UDP端口扫描,还可以组合多种技术同时进行这些扫描。

Page 65: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

图 2-4 SuperScan提供了许多种主机发现技巧供用户选择SuperScan 工具允许从传统的 Echo Requests 和不太为大众 熟 悉的 Timestamp

Requests、Address Mask Requests和 Information Requests等四种不同的 ICMP主机发现技术中做出选择。这些技术中都可以让人们准确地发现许多种不同类型的主机。此外,这个工具还允许选择将对哪些端口进行扫描、使用哪种技术(包括Data、Data+ICMP和静态源端口扫描等)进行UDP扫描、使用哪种技术(包括 SYN扫描、TCP连接扫描和静态源端口扫描等)进行 TCP扫描。

UDP Data扫描技术向目标 UDP端口发出一个数据包,并根据返回的响应去判断目标端口是否处于打开状态。这种扫描的结果有着让人难以置信的准确度,但前提是目标端口返回的响应必须包含一个可以识别的标识字符串。如果目标UDP端口上运行的服务是以前从未见过的,就有可能无法断定它是否处于打开状态。Data+ICMP技术把Data扫描技术的准确性提高到了一个更高的水平,通过对传统 UDP扫描技术进行大幅改进,SuperScan工具的 Data+ICMP技术可以向一个已为“关闭”的端口发出多个 UDP数据包。接下来,根据目标系统对 ICMP数据包的响应能力,它将创建一个窗口并在窗口内对目标端口进行扫描。这一技术的准确性令人难以置信,它可以把所有打开着的端口全部扫描出来,但这可能需要一些时间才能完成。因此在选择进行这种扫描时,一定要有这种心理准备。

SuperScan最新版本(第 4版)的其他一些新增功能还包括:一个调整 CPU/资源占用程度的滑块、主机和服务发现遍数、主机名解析、旗标抓取、源 IP扫描等等。

此外,SuperScan第 4版的 Tool(工具)菜单(如图 2-5所示)也增加许多新功能,其中包括:主机名 /IP解析、Ping、ICMP路由追踪、区域传送、批量解析、HTTP HEAD Request、HTTP GET Request、HTTPS GET Request以及Whois、CRSNIC Whois IP、ARIN

Page 66: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描Whois IP、RIPE Whois IP和APNIC Whois IP查询等等。

图 2-5 SuperScan软件自带了许多种不同的评估工具,对这些功能的介绍见本书的有关章节

WinScan

由 Prosolve公司的 Sean Mathias编写的WinScan(http://www.prosolve.com)也是一个免费的 TCP端口扫描程序,它有图形化(winscan.exe)和命令行(scan.exe)两种版本。我们在脚本中常采用命令行版本,因为它可以扫描 C类网络且很容易对输出进行加工。利用Mortice Kern Systems公司(http://www.mks.com)为 strings、tee和 tr等实用工具开发的Win32版本,下面这条Windows控制台命令可以扫描给定网络的 0~1023号端口,并把输出信息排版为几个以冒号分隔的列:“IP地址∶服务名∶端口号”:

scan.exe -n 192.168.7.0 -s 0 -e 1023 -f | strings | findstr /c:"/tcp" | tr \011\040 : | tr -s : : | tee -ia results.txt

scan.exe的“-f”开关最好不要在扫描低速链接时使用,否则结果不可靠。下面是上面这条脚本命令的输出结果示例:

192.168.22.5:nbsession:139/tcp192.168.22.16:nbsession:139/tcp

Page 67: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报192.168.22.32:nbsession:139/tcp

ipEye

你真的需要使用 Linux操作系统和 nmap工具才能进行某种独特的数据包扫描吗?由Arne Vidstrom编写的 ipEye工具(http://ntsecurity.nu)能够从Windows命令行进行源端口扫描、SYN、FIN和 Xmas扫描。这个精巧的工具只有两项明显的不足:一是只能在Windows 2000下运行,二是每次只能扫描一台主机。下面是用 ipEye工具进行 SYN扫描的一个例子;为了躲过路由器的过滤规则,我们使用了 TCP 20号端口作为源端口——这与nmap工具的“-g”选项很相似(为简明起见,我们对输出结果进行了删节):

C:\>ipeye.exe 192.168.234.110 -syn -p 1 1023 -sp 20

ipEye 1.1 - (c) 2000, Arne Vidstrom ([email protected])- http://ntsecurity.nu/toolbox/ipeye/

1-52 [closed or reject] 53 [open] 54-87 [closed or reject] 88 [open] 89-134 [closed or reject] 135 [open] 136-138 [closed or reject] 139 [open]... 636 [open] 637-1023 [closed or reject] 1024-65535 [not scanned]

因为有许多路由器和防火墙的 ACL都被配置成允许 DNS(UDP 53)、FTP数据通道(TCP 20)、SMTP(TCP 25)以及HTTP(TCP 80)等协议由外向内进入防火墙,源端口扫描技术才正是利用这一点伪装成这几种外来通信以躲避防火墙的检查。不过,源端口扫描取得成功的前提条件是你必须知道防火墙或路由器身后的 IP地址空间是怎样的,如果目标网络使用了 NAT(Network Address Translation,网络地址转换),源端口扫描就不那么容易得手了。WUPS

WUPS(Windows UDP Port Scanner,Windows UDP端口扫描器)工具也是由 Arne Vidstrom编写的(http://ntsecurity.nu)。WUPS是一个可靠的图形化端口扫描工具,虽然每次只能按给定顺序对一台主机上的给定端口进行扫描,但速度还是比较快的(取决于延迟设置)。如果你想对单独一台主机进行快速全面的UDP扫描,WUPS还是很值得信赖的,

Page 68: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描如图 2-6所示。

图 2-6 WUPS正在扫描一台运行着 SNMP服务(UDP 161)的系统ScanLine

现在把我们最喜欢的Windows端口扫描器 ScanLine介绍给大家。在所有端口扫描工具中,Foundstone公司的 ScanLine应该说是最快的。这个工具的选项非常之多,但它最有价值的功能是能够快速扫描很大的地址范围,并且可以同时进行 TCP和 UDP扫描。我们来看一个例子:

C:\ >sl -t 21,22,23,25 -u 53,137,138 192.168.0.1ScanLine (TM) 1.01Copyright (c) Foundstone, Inc. 2002http://www.foundstone.com

Scan of 1 IP started at Fri Nov 22 23:09:34 2002

------------------------------------------------------------192.168.0.1Responded in 0 ms.1 hop awayResponds with ICMP unreachable: NoTCP ports: 21 23UDP ports:--------------------------------------------------------------Scan finished at Fri Nov 22 23:09:46 2002

1 IP and 7 ports scanned in 0 hours 0 mins 12.07 secs

ScanLine的帮助文件对它的各项功能做了全面的介绍:

Page 69: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报ScanLine (TM) 1.01Copyright (c) Foundstone, Inc. 2002http://www.foundstone.com

sl [-?bhijnprsTUvz][-cdgmq ][-fl LoO <fi le>][-tu [, - ]]IP[,IP-IP]

-? - Shows this help text -b - Get port banners -c - Timeout for TCP and UDP attempts (ms). Default is 4000 -d - Delay between scans (ms). Default is 0 -f - Read IPs from file. Use "stdin" for stdin -g - Bind to given local port -h - Hide results for systems with no open ports -i - For pinging use ICMP Timestamp Requests in addition to Echo Requests -j - Don't output "-----..." separator between IPs -l - Read TCP ports from file -L - Read UDP ports from file -m - Bind to given local interface IP -n - No port scanning - only pinging (unless you use -p) -o - Output file (overwrite) -O - Output file (append) -p - Do not ping hosts before scanning -q - Timeout for pings (ms). Default is 2000 -r - Resolve IP addresses to hostnames -s - Output in comma separated format (csv) -t - TCP port(s) to scan (a comma separated list of ports/ranges) -T - Use internal list of TCP ports -u - UDP port(s) to scan (a comma separated list of ports/ranges) -U - Use internal list of UDP ports -v - Verbose mode -z - Randomize IP and port scan order

Example: sl -bht 80,100-200,443 10.0.0.1-200

This example would scan TCP ports 80, 100, 101...200 and 443 on all IPaddresses from 10.0.0.1 to 10.0.1.200 inclusive, grabbing bannersfrom those ports and hiding hosts that had no open ports.

Page 70: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描2.2.4 端口扫描工具汇总表

表 2-2列出了流行的端口扫描程序以及它们能够进行的扫描类型。扫描器 TC

PUDP

隐藏自己

资源UNIX strobe X ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/

strobe-1.06.tgz tcp_scan X http://wwdsilx.wwdsi.com/saint udp_scan X http://wwdsilx.wwdsi.com/saint nmap X X X http://www.inscure.org/nmap netcat X X http://packetstorm.securify.com/UNIX/utilities/

nc110.tgzWindows netcat X X* http://www.atstake.com/research/tools/nc11nt.zip SuperScan

X http://members.home.com/rkeir/software.html

WinScan X http://www.prosolve.com ipEye X http://ntsecurity.nu WUPS X http://ntsecurity.nu ScanLine X X http://www.foundstone.com* 注意:在Windows系统上使用 netcat工具进行UDP扫描无法正常工作,不要相信它的扫描结果。表 2-2 常见扫描工具和功能端口扫描防范措施

监测攻击者们通常使用端口扫描来确定远程系统上监听着的 TCP和UDP端口。如果你想

建立一个攻击预警系统,对端口扫描活动进行监测将是第一重要的任务。监测端口扫描活动的基本方法是使用诸如 Snort之类基于网络的 IDS程序。

Snort(www.snort.org)是一个非常棒的 IDS自由软件,而这要归功于那些为 Snort提供签名的志愿者们。它是笔者最喜欢的程序之一,把它当做一个 NIDS来使用也很让人放心。(请注意,Snort的 1.x版本对数据包片段的处理还不够好。)下面是 Snort在监测到一

Page 71: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报次端口扫描活动时生成的报警消息示例:

[**] spp_portscan: PORTSCAN DETECTED from 192.168.1.10 [**]05/22-18:48:53.681227[**] spp_portscan: portscan status from 192.168.1.10: 4 connections across

1 hosts: TCP(0), UDP(4) [**]05/22-18:49:14.180505[**] spp_portscan: End of portscan from 192.168.1.10 [**]05/22-18:49:34.180236

从 UNIX 主机的角度看,Solar Designer 编写的 scanlogd(http://www.openwall.com /scanlogd)以及另外几种实用工具都可以监测到这类攻击并记入日志。此外,Abacus项目团队(http://www.psionic.com/abacus)开发的 Psionic PortSentry也可以配置成能够监测和反击这类攻击的样子。对端口扫描活动的反击手段之一是激活操作系统内核的数据包过滤规则自动生成功能。这类规则可以在 PortSentry程序的配置文件里进行配置,但具体内容会因系统的不同而有所差异。以具备内核级防火墙的 Linux 2.2.x系统为例,portsentry.conf文件中的相关配置应该是如下所示的样子:

# New ipchain support for Linux kernel version 2.102+KILL_ROUTE="/sbin/ipchains -I input -s $TARGET$ -j DENY -l"

PortSentry软件在包括 Solaris在内的绝大多数 UNIX变体上都能工作。一定要记住,如果你们发现来自某个系统或网络的端口扫描活动的模式,那可能代表着有人正在对你们的站点进行网络侦察。一定要密切留意这类活动,它往往预示着一次全面的攻击已迫在眉睫。最后,我们希望大家在反击或阻断端口扫描活动时三思而后行,因为攻击者往往会冒用某个无辜者的 IP地址,你的系统所反击的很可能不是真正的攻击者。Solar Designer撰写的一篇文章(http://www.openwall.com/scanlogd /P53-13.gz)非常值得一读,它介绍了很多在设计和攻击一个端口扫描监测系统方面的技巧。

大多数防火墙都应该被配置成能够监测端口扫描活动的样子。有些防火墙在监测能够隐藏自己真正来源的端口扫描活动方面要比其他产品做得更好。比如说,有不少防火墙都有一个选项可以让系统在不对 SYN扫描做出任何响应的前提下监测 FIN扫描活动。监测端口扫描活动的最大困难是怎样高效率地从信息量巨大的日志文件里把有关事件的日志记录项筛选出来,我们建议去试试 Psionic Logcheck 工具( http://www.psionic.com/abacus /logcheck/)的日志检索能力。我们的下一个建议是,把你的防火墙或入侵监测系统配置成可以通过电子邮件实时报警。如果它具备“阈值日志”( threshold logging)功能,请务必激活之,这有助于防止你的电子邮箱因为收到过多的报警邮件而形成“拒绝服务”。阈值日志功能可以对报警信息进行归纳整理而不是每监测到一次异常活动就向你发出警报。总

Page 72: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描之,你至少应该建立一种可以向你报告本站点遭到端口扫描报告机制。 Lance Spitzner(http://www.enteract.com/<126>lspitz/intrusion.html)为 Firewall-1防火墙软件编写了一个名为 alert.sh的工具,它将调用 Firewall-1去监测和监控端口扫描活动,并会根据用户事先做出的定义发出警报。

从Windows的角度看,由 Independent Software公司编写的 Genius 2.0软件可以用来监测简单的端口扫描活动(可以从 http://www.indiesoft.com网站下载到Genius 3.2.2),这个工具适用于Windows 95/98和Windows NT/2000/2003。这个软件产品还有其他一些功能,但它的 TCP端口扫描监测功能已足以让你们把它收录到你们的系统工具箱里了。Genius能够在一段给定时间内同时监听大量的端口打开请求,当它监测到一次扫描活动时,就会弹出一个如下所示的窗口向你报告来犯者的 IP地址和DNS主机名:

Genius工具的端口扫描监测功能可以监测到传统的 TCP连接扫描和 SYN扫描预防

既然难以做到不让别人对我们的系统进行端口扫描,我们就只能力求自保了:应该禁用所有不必要的服务以便尽可能地缩小自己的暴露面。在 UNIX环境下,你们可以通过先在/etc/inetd.conf文件里注释掉不必要的服务、然后修改系统启动脚本来做到这一点。我们将在专门讨论UNIX系统的第 5章里对此做详细介绍。

对于Windows系统,你们同样应该禁用所有不必要的服务。由于Windows的运行方式的特点——比如说,Windows的很多功能都离不开 TCP 139和 445号端口——要做到这一点会比较困难。不过,你们可以通过 Control Panel | Services(控制面板 | 服务)菜单禁用某些服务。我们将在第 4章对Windows的安全问题及相关对策做详细的讨论。至于其他品牌的操作系统或设备,请查阅它们的用户手册去了解怎样才能在保证系统正常运转的前提下把监听端口的数目减少到最少。2.3 探查操作系统

正如我们前面演示过的那样,有大量的软件工具和许多种不同的技术可以用来发现目

Page 73: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报标系统上的开放端口。你们应该不会忘记,本章的第一个目标是通过端口扫描去确定目标系统上的 TCP和 UDP 监听端口。有了这些信息,我们就能进一步分析出那些监听端口是否存在着安防漏洞了。此外,我们还需要多收集一些关于目标系统的情报。我们现在的目标是确定被扫描系统的操作系统类型。

Page 74: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描

主动地探查目标系统的操作系统流行度: 10简单度: 8影响力: 4风险率: 7

具体详细的操作系统信息将在以后——脆弱点映射阶段——讨论。在寻找并确认目标系统的脆弱点时,我们必须尽可能地做到准确无误。我们不想无事生非地劝诫企事业单位的 IT部门去修补某种并非真正漏洞或根本不存在的东西。我们需要查明目标操作系统,而且要查得尽可能的详细。

有许多种技术可以用来完成这项任务。我们可以使用第 3章介绍的旗标抓取技术,这项技术可以利用 FTP、telnet、SMTP、HTTP、POP和其他一些服务收集到很多有用的信息,这是探查操作系统和有关服务的具体名称和版本号最简单的办法。还有一种准确度更高的操作系统探查技术——协议栈指纹分析技术。现在,我们已经有了一些非常好的工具可以帮助我们完成这一任务。我们可以免费获得和使用的两个最精确的工具是无所不能的 nmap和 queso,它们都提供了堆栈指纹分析能力。2.3.1 主动式协议栈指纹分析技术

在学习 nmap和 queso工具的具体用法之前,我们应该先把什么是堆栈指纹分析技术(stack fingerprinting)搞清楚。协议栈指纹分析技术是一项功能非常强大的技术,它可以帮助你以极高的准确度快速查明每一台主机的操作系统。从原理上讲,不同厂家的 IP协议栈实现之间存在着许多细微的差别,各厂家在编写协议栈时,往往会对特定的 RFC文档规定做出不同的解释。因此,通过探查这些差异,我们就能对目标系统所使用的操作系统做出有依据的判断。为了最可靠,协议栈指纹分析技术通常要求目标系统至少要有一个监听端口。但即便是目标系统没有打开着的端口,nmap工具也能比较有把握地——当然,准确度会有所下降——推测出它的操作系统。Fyodor曾在 Phrack Magazine杂志上发表过一篇 这 方 面 的 权 威 性 论 文 , 这 篇 文 章 可 以 从 http://www.insecure.org/nmap/nmap- fingerprinting-article.html上查到。

我们先来看看都有哪些探查技术可以帮助我们区分各种操作系统: FIN探查 这种技术将向某个打开的端口发出一个 FIN数据包。根据 RFC 793号文档中的有关规定,目标系统的正常行为应该是不做出任何响应。但协议栈的许多种实现(比如Windows NT/2000/2003)会返回一个 FIN/ACK数据包作为响应。

Page 75: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报 无效标志探查 在 SYN数据包的 TCP表头置位一个准确定义的 TCP标志。某些操作系统(例如 Linux)会在它们的响应数据包里也置位这个标志。

ISN(Initial Sequence Number,初始序列号)采样 TCP协议在响应一个连接请求时,返回的初始序列号往往呈现出不同的模式。

DF标志位监控 某些操作系统会置位 DF位(Don't fragment bit,不允许对 TCP/IP数据包做进一步拆分)以改善性能。通过监控 DF位,我们就能判定出在目标系统上运行的是不是具有上述行为特点的操作系统。

TCP 初始数据窗长度 这种技术通过分析从目标系统返回的数据包的初始窗口大小来推测操作系统。对 TCP/IP协议栈的某些实现来说,这个长度值是独一无二的,因而可以极大地提高指纹分析的准确度。

ACK值 不同的 IP协议栈在往ACK字段里填写序列号时会采用不同的做法,有的实现将原封不动地送回你发去的序列号,有的实现则会先给你发去的序列号加上1、再送回来。

ICMP 出 错 消 息 抑 制 有 些 操 作 系 统 会 遵 循 RFC 1812 号 文 档(http://www.ietf.org/rfc /rfc1812.txt)中的有关规定,对送出 ICMP出错消息的频率做出限制。这种探查技术随机向目标系统的某些高编号端口发出一些 UDP数据包,然后对在给定时间内返回的目的地无法到达出错消息的数量进行统计。这还可以帮助我们发现目标UDP端口是否处于打开状态。

ICMP消息内容 不同的操作系统在 ICMP 返回消息里给出的文字内容是不一样的。通过查看返回的 ICMP消息,我们可以对目标操作系统做出比较准确的猜测。

ICMP出错消息——请求/响应是否匹配 协议栈的某些实现在返回 ICMP出错消息时会改变请求数据包的 IP表头。通过查看 IP表头都发生了哪些变化,我们就可以对目标操作系统做出比较准确的猜测。

TOS(Type of Service,服务类型)字段 这种探查技术通过查看“ ICMP port unreachable”(无法到达指定 ICMP端口)消息的 TOS字段来判断目标操作系统。协议栈的大多数实现都会把它设置为 0,但也可以把它设置为其他数值。

数据包拆分处理 正如 Thomas Ptacek 和 Tim Newsham 在他们划时代的论文Insertion, Evasion, and Denial of Service: Eluding Network Intrusion Detection(插入、规避和拒绝服务:躲避网络入侵检测)里指出的那样(详见 http://www.clark.net/<126>roesch /idspaper.html),协议栈的不同实现在处理数据包拆分片段时会采取不同的做法。在重新拼凑数据包片段的时候,协议栈会用后收到的新数据覆写先收到的老数据(或者刚好反过来)。通过观察目标系统如何拼凑探查数据包,我们就可以对目标操作系统做出比较准确的猜测。

Page 76: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描 TCP 选项 RFC 793 号文档和后来的 RFC 1323 号文档(http://www.ietf.org/rfc

/rfc1323.txt)对 TCP选项做出了定义。RFC 1323号文档增加了一些高级 TCP选项协议栈的各种最新实现几乎都增加了对它们的支持。通过发送设置了多个选项——比如“无操作”选项、“最大分段长度”选项、“数据窗缩放比例”选项和“时间戳”选项——的 TCP数据包并分析其返回结果,我们就可以对目标操作系统做出比较准确的猜测。

nmap工具的“-O”选项可以同时使用以上技术(“数据包拆分处理”和“ICMP出错消息队列”除外)进行探查。下面是我们对某目标网络进行探查的结果:

[root] nmap -O 192.168.1.10Starting nmap V. 3.70 by [email protected] ports on shadow (192.168.1.10):Port State Protocol Service7 open tcp echo9 open tcp discard13 open tcp daytime19 open tcp chargen21 open tcp ftp22 open tcp ssh23 open tcp telnet25 open tcp smtp37 open tcp time111 open tcp sunrpc512 open tcp exec513 open tcp login514 open tcp shell2049 open tcp nfs4045 open tcp lockd

TCP Sequence Prediction: Class=random positive incrementsDiffi culty=26590 (Worthy challenge)

Remote operating system guess: Solaris 2.5, 2.51

通过 nmap工具的协议栈指纹分析选项“-O”,我们可以对目标操作系统做出简明准确的判断。即使目标系统没有端口处于打开状态,nmap工具也可以对它的操作系统做出相当准确的猜测:

[root]# nmap -p80 -O 10.10.10.10Starting nmap V. 3.70 by [email protected]: No ports found open on this machine, OS detection will be MUCH less

Page 77: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报reliableNo ports open for host (10.10.10.10)

Remote OS guesses: Linux 2.0.27 - 2.0.30, Linux 2.0.32-34, Linux 2.0.35-36,Linux 2.1.24 PowerPC, Linux 2.1.76, Linux 2.1.91 - 2.1.103,Linux 2.1.122 - 2.1.132; 2.2.0-pre1 - 2.2.2, Linux 2.2.0-pre6 - 2.2.2-ac5

Nmap run completed -- 1 IP address (1 host up) scanned in 1 second

请注意,目标系统没有端口处于打开状态,但 nmap工具还是准确地猜出了目标操作系统是 Linux。

nmap工具把它的签名清单保存在了一个名为 nmap-os-fingerprints的文件里,这为我们提供了极大的方便。nmap工具每推出一个新版本,这个文件就会增加更多的签名。在我们写这本书的时候,这个文件里的签名已经有好几百个了。

虽然 nmap工具的 TCP探查是最准确的,但这些技术并非完美无缺:它们往往只能提供一个大概的猜测结果,有时甚至会帮倒忙。除了这些不足,nmap工具也不是实现这些技术的第一个程序。在 Fyodor把他在操作系统探查方面的研究成果集成到 nmap工具里之前,就 已 经 有 人 发 布 过 一 个 名 为 queso 的 操 作 系 统 探 查 工 具 ( 可 以 从 http://packetstormsecurity.org /UNIX/scanners/queso-980922.tar.gz处下载)。queso不是一个端口扫描工具,它只能用来探查目标操作系统,而且每次只能查询一个打开着的端口(默认时使用 80号端口)。如果目标服务器的 80号端口没有打开,就必须另外指定一个打开着的端口。在下面的例子里,queso工具将通过 25号端口去确定目标操作系统:

[root] queso 10.10.10.20:2510.10.10.20:25 * Windoze 95/98/NT

针对操作系统探查活动的防范措施以下介绍的监测和防御步骤有助于降低你们的操作系统被攻击者探查出来的风险。

监测我们前面介绍过的很多种端口扫描监测工具都可以用来监测操作系统探查活动。它们

虽然不能明确地告诉 nmap或 queso操作系统探查扫描活动正在发生,但它们都能监测到具有特定的选项或标志——比如置位了 SYN标志——的扫描活动。防御

我们希望找到一种能挫败操作系统探查活动的简单办法,只可惜这个问题并不那么容易解决。通过修改操作系统的源代码或是参数来改变某一个指纹特征不是不可能,但这可

Page 78: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描能对操作系统的正常功能造成不利影响。比如说, FreeBSD 4.x 提供了一个TCP_DROP_SYNFIN内核选项,这个选项可以不对 nmap工具在进行协议栈指纹分析时发出的 SYN+FIN数据包做出任何响应。激活这个选项有助于挫败OS探查活动,但同时却违反了 RFC 1644号文档《TCP Extension for Transtractions》(用于事务处理的 TCP扩展)中的有关规定。

“不出声就不会被发现”这一古老的格言并不适用于信息安防工作,你们应该只把健壮的、经过安防硬化处理的代理或防火墙摆在前线。即使攻击者探查出了目标的操作系统,以不可能轻易获得目标系统的访问权限。

被动地探查目标系统的操作系统流行度: 5简单度: 6影响力: 4风险率: 5

通过刚才那几个 nmap和 queso示例,我们已经演示了主动式协议栈指纹分析技术是多么的有效。请注意,前面提到的协议栈探查技术就其本性来讲是主动的:我们向目标系统发出一些数据包去探查它们网络协议栈的独有特点,然后根据这些特点去推测它们的操作系统。因为我们向目标系统发出了一些数据包,所以对方的网络 IDS系统可以相对比较容易地觉察到我们的操作系统探查活动。换句话说,这类探查技术并不是最隐蔽的,老谋深算的攻击者通常都不会这么做。2.3.2 被动式协议栈指纹分析技术

被动式协议栈指纹分析技术与主动式 TCP/IP协议栈指纹分析技术在概念上很相似,但被动式探查技术不向目标系统发送数据包,攻击者将通过被动地监控网络通信的办法去推测目标系统的操作系统。所以,通过监控不同系统之间的网络通信,我们同样可以查明网络上的操作系统。被动式探查技术的成功取决于攻击者必须位于网络的通信枢纽,以及必须有一个可以用来捕获数据包的端口(比如一个镜像端口)。

Lance Spitzner在被动式协议栈指纹分析技术领域做了很多研究工作,并写了一篇技术白皮书来阐明他的发现(http://project.honeynet.ory)。此外,Marshall Beddoe和 Chris Abad开发出了 siphon软件,这是一个被动式端口映射、操作系统探查和网络拓扑结构分析工具。你们可以从 http://packetstormsecurity.org/UNIX /utilities/siphon-v.666.tar.gz处下载到这个工具。

有了这些背景知识,让我们一起去看看被动式协议栈指纹分析技术是如何工作的。

Page 79: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报被动式特征

网络通信的种种特征可以用来识别不同的操作系统。我们将把我们的讨论范围限制在下面几个与 TCP/IP会话有关的属性上:

TTL 操作系统给外出数据包设置的 TTL(Time-To-Live,生存时间)值是多大? Windows size(数据窗长度) 操作系统设置的数据窗长度是多大? DF位 操作系统是否设置了“Don't Fragment”(不允许对 TCP/IP数据包做进一步拆分)位?

通过被动地分析每一种属性并将分析结果与某个已知的属性数据库比较,我们就能比较准确地推测出远程操作系统。虽然这个办法不能保证每次都能找到正确的答案,但把这些属性组合起来加以分析的结果还是相当可靠的。这种技术正是 siphon工具所使用的。

我们来看一个例子。我们将先从系统“ shadow”( 192.168.1.10)上对系统“quake”(192.168.1.11)执行 telnet命令,然后使用 siphon工具以被动方式去查明后者的操作系统:

[shadow] # telnet 192.168.1.11

使用我们最喜欢的嗅探工具 Snort,我们可以查看到 telnet连接的部分数据包踪迹。06/04-11:23:48.297976 192.168.1.11:23 -> 192.168.1.10:2295TCP TTL:255 TOS:0x0 ID:58934 DF**S***A* Seq: 0xD3B709A4 Ack: 0xBE09B2B7 Win: 0x2798TCP Options => NOP NOP TS: 9688775 9682347 NOP WS: 0 MSS: 1460

查看我们的三个 TCP/IP 属性,可以发现以下事实: TTL = 225 Window Size = Ox2798 Don’t fragment(DF)位 = Yes

现在,我们再去查查 siphon指纹数据库文件 osprints.conf:[shadow]# grep -i solaris osprints.conf# Window:TTL:DF:Operating System DF = 1 for ON, 0 for OFF.2328:255:1:Solaris 2.6 - 2.72238:255:1:Solaris 2.6 - 2.72400:255:1:Solaris 2.6 - 2.72798:255:1:Solaris 2.6 - 2.7FE88:255:1:Solaris 2.6 - 2.787C0:255:1:Solaris 2.6 - 2.7

Page 80: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描FAF0:255:0:Solaris 2.6 - 2.7FFFF:255:1:Solaris 2.6 - 2.7

我们可以看到,第四条记录与 snort的跟踪结果完全吻合:数据窗长度是 2798,TTL是 255,DF位是置位状态(等于 1)。这么看来,我们应该可以用 siphon准确地猜测出目标操作系统来了:

[crush]# siphon -v -i xl0 -o fi ngerprint.outRunning on: 'crush' running FreeBSD 4.0-RELEASE on a(n) i386Using Device: xl0Host Port TTL DF Operating System192.168.1.11 23 255 ON Solaris 2.6 - 2.7

如上所示,我们猜出了目标操作系统是 Solaris 2.6。请注意,我们没有向 192.168.1.11发出任何 IP数据包就做出了准确的猜测——我们只是从网络上捕获了几个数据包并稍微做了点儿分析而已。

被动式指纹分析技术可以被攻击者用来寻找潜在的受害者,攻击者只须访问目标网站并分析网络通信或使用 siphon之类的工具进行猜测。尽管这是一种很有效的技术,它还是有一些局限性。首先,有些应用软件(比如 nmap)可以自行构造数据包,而它们构造出来的数据包与操作系统生成的数据包通常不会有共同的特征。这样一来,你的分析结果就可能不准确。其次,你必须能够捕获到一些数据包(这在没有激活端口镜像功能的开关上可能会很困难)。第三,改变一条连接的属性对远程主机来说是件很简单的事(主动式协议栈指纹分析技术也存在着这一局限性)。

针对被动式操作系统探查活动的防范措施参见本章前面内容里的“针对操作系统探查活动的防范措施”小节所介绍的防范措施。完整的解决方案:自动化侦察工具

流行度: 10简单度: 9影响力: 9风险率: 9

可以帮助攻击者发现潜在目标的工具已有不少,而且还在不断涌现。我们无法把每一种工具都列举出来,但我们还想再向大家介绍两种工具。

cheops(http://www.marko.net/cheops)是一个几乎无所不能的图形化网络侦察工具,如图 2-7所示。这个工具把 ping、traceroute、端口扫描和操作系统探查(通过 queso工具)

Page 81: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报等功能集成到了同一个软件包里。cheops工具向人们提供了一个以图像方式查看目标系统和目标网络的简单界面,让我们可以直观地看到目标网站的拓扑结构。

图 2-7 cheops工具把许多网络侦察工具集成在了同一个图形化界面里。tkined工具是 Scotty软件包(http://wwwhome.cs.utwente.nl/schoenw/scotty)的组件之

一。tkined是一个用 Tcl脚本语言编写的、集成了许多种网络管理工具的网络编辑器,可以用它来侦察 IP网络。tkined有很好的可扩展性,你可以用它来进行网络侦察活动,还可以把侦察结果绘制成网络地图。虽然它不能用来进行操作系统探查,但它仍能完成本章和第1章中提到过的许多任务。除了 tkined工具,Scotty软件包里的其他几种工具也很值得一试。

针对自动化侦察工具的防范措施Scotty、tkined和 cheops等工具可以同时使用我们前面介绍的多种技术进行网络侦察活

动,针对那些攻击的防范措施同样适用于这些自动化的网络侦察工具。2.4 小结

在这一章里,我们讨论了很多种可以进行 ping扫描、TCP、UDP和 ICMP端口扫描以及操作系统探查活动的工具和技巧。ping扫描工具可以帮你发现目标网络里的活跃系统和确定值得继续侦察的潜在目标。TCP/UDP扫描工具和技巧可以帮你发现目标系统上处于监听状态的服务,还可以帮你收集到各目标系统的很多情报。操作系统探查工具可以让攻击

Page 82: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

63第 2章 扫 描者准确地推测出目标系统的特定操作系统。在后面的章节里,你们将看到利用这些工具收集到的信息对发动一次集中火力的攻击有多么的重要。

Page 83: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

Page 84: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点

然攻击者已经使用第 2章讨论的技术成功地识别出了活动的主机和运行的服务,接下来他们通常会针对已知的弱点,对识别出来的服务进行更为充分的探查,这

个过程我们称之为查点(enumeration)。既

先前讨论的信息收集技术和查点技术之间的关键区别是攻击者的入侵程度。查点包括了对目标系统的主动连接和直接的查询。因而,这类事件可能(实际上是应该)被记入日志或是触发其他形式的警报。我们将告诉大家应该去寻找哪些蛛丝马迹以及——如果还来得及的话——如何阻断它。

初看起来,查点活动收集的大部分信息都是无害的。可是,这些信息可能成为目标系统的祸根,我们在本章将设法证明这一事实。通常,攻击者通过查点寻找的信息包括用户账号名(用于随后的口令猜测攻击)、错误配置的共享资源(例如,不安全的文件共享)和具有已知安全性漏洞的旧版本软件(例如会出现远程缓冲区溢出的 web服务器)。一旦这样的漏洞被查点出来,那么入侵者即使不能完全控制系统,也可以在某种程度上威胁到系统的安全,这些都仅仅是时间的问题。堵上这些容易修改的漏洞,就消除了黑客的第一个立足点。

查点技术通常与具体的系统平台息息相关,在很大程度上要依赖于在第 2章(端口扫描和操作系统探查)里收集到的信息。实际上,端口扫描和查点功能经常捆绑到同一个工具中,例如第 2章中的 SuperScan,它可以扫描网络中开放的端口,并同时从监听的端口抓取旗标(banner)。本章先简要讨论抓取旗帜,这是最通用的查点技术,然后将深入讲述更多与平台相关的机制,这些都需要更多的专用工具支持。

我们将根据服务类型而不是操作系统来编排讨论内容——这是我们从本书的第 4版开始引入并沿用到第 5版的做法。这项调整是根据读者们的反馈意见做出的,其目的是为了让大家更清楚地体会到端口扫描活动和查点活动之间的紧密联系。毕竟,按照本书的进度,我们现在还不能把目标机器的操作系统确定下来。

在讨论各项服务的时候,我们将统一按照它们监听端口号的大小顺序来进行而不再按它们是 TCP 服务还是 UDP 服务来划分——比如说,我们将先讨论 TCP 25 号端口(SMTP),然后是 UDP 69号端口(TFTP),再往后是 TCP 79号端口(finger协议),依此类推。我们不可能在这短短的一章里逐个地把适用于每一个 TCP或UDP端口(它们各有 65,535个!)的查点技术全部介绍;我们的讨论将集中在那些最容易泄露信息和信息泄露量最大的服务上——请相信我们这些安防测试专家的经验!我们希望这种安排可以让大家更清楚地认识到查点活动对扩大和加深对目标系统的了解有多么重要,这种了解对攻击者获得系统级访问权限又有多么的重要。

Page 85: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

在这一章里,我们将用“NT 平 台”来代表基于微软公司“New Technology”( NT)平 台的各种系统,其中包括 Window NT 3.x~4.x、Windows 2000、Windows XP和Windows Server 2003。在有必要区分NT系列的桌面版本和服务器版本时,我们会做出说明。与此相对,我们将把微软公司的DOS/Windows 1.x/3.x/9x/Me系列统称为“DOS 平台”。

3.1 旗标抓取基础最基础的查点技术是旗标抓取,我们在第 2章曾简要地提到过它。旗标抓取可以简单

地定义为连接到远程应用程序并观察它的输出,远程攻击者往往可以通过旗标抓取技术收集到大量的信息。在最低限度,攻击者可以识别出正在目标系统上运行的各项服务工作模型,在许多情况下,这些信息已足以让攻击者开始对目标系统的潜在弱点展开研究了。

第 2章还提到过,许多端口扫描工具可以在识别开放端口(预示着一项可利用的服务)的同时执行旗标抓取。本节将对以手动方式进行旗标抓取的常用技术做简单的介绍,有心的黑客是不应该忽略这些的(无论端口扫描器变得如何自动化)。

旗标抓取基础∶telnet和 netcat

流行度: 5简单度: 9影响力: 1风险率: 5

以手动方式抓取应用程序旗标和收集应用程序信息的各种技术几乎都与 telnet程序(大多数操作系统都会提供的远程通信工具)有关。用 telnet程序去抓取旗标是非常容易的:建立一条到目标服务器某已知端口的 telnet连接,多按几次回车(如果有必要的话),你就能看到如下所示的返回信息:

C:\>telnet www.corleone.com 80HTTP/1.0 400 Bad RequestServer: Netscape-Commerce/1.12

Your browser sent a non-HTTP compliant message.

这是一项适用面很广的技术,用于监 听标准端口上的常见应用服务——比如HTTP(80号端口)、SMTP(25号端口)和 FTP(21号端口)。

如果需要更准确可靠的探查工具,可以使用被称为“TCP/IP瑞士军刀”的 netcat工具。

注 意

Page 86: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点这个软件的原始作者是 Hobbit([email protected]),Weld Pond在就职于 L0pht安防研究团队时把它移植到Windows NT 平台(包括Windows NT和Windows 2000、XP以及 2003 Server)上。你们可以从 http://www.atstake.com/research/tools/network_utilities下载到 netcat工具。正如你们将在本书里看到的那样,netcat工具有着无数的功能和用法,是系统管理员的必备工具。当敌人使用它时,后果是毁灭性的。现在,我们来演示一下这个工具的最简单的用法:连接到一个远程 TCP/IP端口并抓取服务旗标。

C:\>nc –v www.corleone.com 80www.corleone.com [192.168.45.7] 80 (?) open

随便输入点儿东西就可能看到一大堆信息。在这个例子里,按回车键将看到以下信息:HTTP/1.1 400 Bad RequestServer: Microsoft-IIS/4.0Date: Sat, 03 Apr 1999 08:42:40 GMTContent-Type: text/htmlContent-Length: 87

<html><head><title>Error</title></head><body>The parameter is incorrect.</body></html>

netcat工具的 readme文件提到了一个可以从远程系统获得更多信息的窍门:把某个文件的内容重定向为 netcat程序的输入。比如说,先创建一个名为 nudge.txt的文本文件,让它只有一行“GET / HTTP/1.0”文本,然后是两个回车。现在,执行以下命令:

[root$]nc -nvv -o banners.txt 192.168.202.34 80 < nudge.txtHTTP/1.0 200 OKServer: Sun_WebServer/2.0Date: Sat, 10 Apr 1999 07:42:59 GMTContent-Type: text/htmlLast-Modifi ed: Wed, 07 Apr 1999 15:54:18 GMTETag: "370a7fbb-2188-4"Content-Length: 8584<HTML><HEAD> <META NAME="keywords" CONTENT"=igCorp, hacking, security"> <META NAME="description" CONTENT="Welcome to igCorp’s Web site. ">=BigCorp is a leading manufacturer of security holes.

<TITLE>BigCorp Corporate Home Page</TITLE>

</HEAD</HTML>

Page 87: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

在使用数字 IP地址给出目标主机时,给 netcat命令行增加一个“-n”选项可以避免很多不必要的麻烦。

看了上面这个例子,你们应该知道攻击 Sun WebServer 2.0的好办法了吧?与上例中的nudge.txt文件作用类似的文本文件还有很多,比如“HEAD / HTTP/1.0 <cr><cr>”、“QUIT <cr>”、“HELP <cr>”、“ECHO <cr>”、甚至仅有一对回车(<cr>)也可以;效果取决于被探查的服务。

有了这些信息,入侵者就可以知道应该集中火力去攻击哪些个系统了。探查出服务器平台的软件厂商和版本之后,攻击者将去收集与这种平台相关的技术和已知的攻击手段,他可以逐个尝试各种手段直至侵入目标机器为止。随着时间的推移,攻击者会慢慢地积累起优势,以反抗目标机器的系统管理员。在本书后面的内容里,你们将会看到 netcat工具更多的用途。

针对旗标抓取活动的防范措施我们曾经讲过,针对旗标抓取活动的最佳防范措施是把不必要的服务全都关闭。另一

种办法加强网络访问控制,严格限制对它们的访问。有缺陷的软件服务或许是进入任何一种系统环境最宽广的大门了,加强访问控制可以防范旗标抓取活动。

接下来,对于那些对业务活动必不可少因而不能简单地一关了之的服务,你们需要找出一种正确的方法不让它们在旗标里泄露有关软件的具体名称和版本信息。你们还应该定期使用端口扫描工具和 netcat工具对必须开放的活跃端口进行自我审查以确保它们不会把敏感信息泄露给攻击者。3.2 对常用网络服务进行查点

下面,我们将向大家介绍一些基本的查点技术以及如何利用这些技术去查点各种常用的网络服务。

FTP查点,TCP 21

流行度: 1简单度: 10影响力: 1风险率: 4

虽说 FTP(File Transfer Protocol,文件传输协议)在因特网上已经不多见了,但连接

窍 门

Page 88: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点到 FTP站点并查看其内容仍是最简单和可能最有收获的查点活动之一。笔者曾见过不少公共 Web服务器仍允许使用 FTP来上传 Web内容,这就给攻击者留下了上传恶意可执行代码(第 12章对这个问题做了更详细的讨论)的机会。一般来说,如果某个网站有一项允许人们随意使用的文件共享服务,很快就会变得人人都知道,而公共 FTP网站的结局往往是充斥着大量敏感和色情的内容。更糟糕的是,许多这类站点还允许人们匿名上传和下载文件。

连接一个 FTP站点的操作很简单,大多数现代的操作系统都内建有建立这种连接的客户端程序。下面的例子里使用的是Windows自带的 FTP客户程序。请注意,我们在登录到例子中的匿名 FTP服务时使用的用户名是“anonymous”,使用的口令字是一个虚构的电子邮件地址(输出里没有显示):

C:\>ftp ftp.tnrcc.state.tx.usConnected to www.tnrcc.state.tx.us.220 www FTP server (Version 1.1.214.4(PHNE_29461) Thu Nov 20 06:40:06 GMT 2003)ready.User (www.tnrcc.state.tx.us:(none)): anonymous331 Guest login ok, send your complete e-mail address as password.Password:230 Guest login ok, access restrictions apply.ftp> ls200 PORT command successful.150 Opening ASCII mode data connection for file list.lost+foundetcincomingpubusr226 Transfer complete.ftp: 37 bytes received in 0.00Seconds 37000.00Kbytes/sec.ftp>

当然,图形化的 FTP客户程序也有不少可供选用。大多数现代的Web浏览器都实现有FTP功能,用户可以像浏览自己的硬盘那样通过点击文件和文件夹图标浏览 FTP站点。如果你想购买一个优秀的图形化 FTP客户软件,我们推荐 http://www.bpftp.com网站推出的BulletProof FTP软件。在 http://www.ftp-sites.org网站上可以查到一份匿名 FTP站点的清单(这份清单每月更新一次)。

当然,利用 FTP查点出来的旗标可以让我们知道 FTP服务器使用的是不是有着严重安防漏洞的服务器软件。就拿华盛顿大学的 FTP服务器软件(wu-ftp)来说,这个软件非

Page 89: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报常流行,但它的历史却“污点”斑斑——人们在这个软件里发现了好几个严重的缓冲区溢出漏洞。

针对 FTP查点活动的防范措施FTP已是一项“够老但不够好”的服务了,你们应该禁用这项服务。对匿名 FTP服务

要特别提高警惕,无论如何也不应该允许用户不受限制地上传文件。SMTP查点,TCP 25

流行度: 5简单度: 9影响力: 1风险率: 5

最经典的查点技术之一是利用 Internet 的邮件发送机制,即简易邮件传 输协议(Simple Mail Transfer Protocol,简称 SMTP),这项服务通常运行在 TCP 25号端口上 。SMTP协议提供了两个都可以用来查看其他用户个人资料的内建指令:VRFY,可以对合法用户的名字进行验证;EXPN,可以显示假名和邮件表的实际发送地址。虽然现在的公司大都不介意别人知道它们的电子邮件地址,但在你们的邮件服务器上允许这种行为却会把宝贵的用户资料泄露给入侵者,而这将帮助他们伪造出更“真实”的邮件来。在下面的例子里,我们将使用 telnet工具来演示 SMTP查点:

[root$]telnet 192.168.202.34 25Trying 192.168.202.34...Connected to 192.168.202.34.Escape character is '^]'.220 mail.bigcorp.com ESMTP Sendmail 8.8.7/8.8.7; 11 Apr 2002vrfy root250 root <[email protected]>expn adm250 adm <[email protected]>quit221 mail.bigcorp.com closing connection

针对 SMTP查点活动的防范措施SMTP也是一项“够老但不够好”的服务,你们应该禁用这项服务。sendmail(http://

www.sendmail.org)是一种比较流行的 SMTP服务器软件,这个软件的第 8及更高版本允许邮件系统管理员在 mail.cf文件里嵌入新的语法,以禁用 VRFY和 EXPN命令或者要求

Page 90: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点进行身份认证。微软公司最新版本的 Exchange Server在默认情况下将不允许非特权用户使用 EXPN和VRFY命令。其他厂家的 SMTP服务器软件也应该提供类似的功能。要是它们连这一点都做不到,那就把它们换掉!

DNS 区域传送,TCP 53

流行度: 5简单度: 9影响力: 2风险率: 5

正如你们在第 1章看到的那样,DNS(Domain Name System,域名系统)是我们在踩点阶段收集信息的主要来源之一。DNS是一个因特网标准协议,它负责把数字形式的主机IP地址解析为像 Amazon.com这样人类容易记忆的名字。在本书中,DNS 区域传送可以说是最古老的查点技术了,攻击者可以通过 TCP 53号端口对配置不当的 DNS服务器进行这种查点。区域传送操作将把某给定域的 zone文件的内容完整地发送给请求者,把主机名与IP地址的映射关系、HINFO(Host Information Record,主机信息记录)数据等敏感信息泄露无余(参见第 1章)。

如果目标服务器正运行着Microsoft DNS服务以便为Active Directory(AD,活动目录;一项从NT4开始引入的新功能)提供支持,攻击者将有很好的机会可以收集更多的信息。因为 AD的名字空间是基于 DNS的,所以微软的 DNS服务器软件使用了 DNS SRV记录(详见 RFC 2052号文档)来提供诸如AD和Kerberos之类的域级服务。这样做的好处是可以通过服务类型(比如 LDAP、FTP、或WWW)和协议(比如 TCP)去定位服务器,但坏处是攻击者只须进行一次简单的区域传送操作(先执行 nslookup命令,然后执行“ls - d < domainname>”命令)就可以收集到大量敏感的网络配置信息。下面的例子对域“labfarce.org”进行了一次区域传送(为简明起见,我们对输出报告进行了删节和排版):

C:\>nslookupDefault Server: corp-dc.labfarce.orgAddress: 192.168.234.110> ls -d labfarce.org[[192.168.234.110]]labfarce.org. SOA corp-dc.labfarce.org admin.labfarce.org. A 192.168.234.110labfarce.org. NS corp-dc.labfarce.org. . ._gc._tcp SRV priority=0, weight=100, port=3268, corp-dc.labfarce.org_kerberos._tcp SRV priority=0, weight=100, port=88, corp-dc.labfarce.org

Page 91: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报_kpasswd._tcp SRV priority=0, weight=100, port=464, corp-dc.labfarce.org_ldap._tcp SRV priority=0, weight=100, port=389, corp-dc.labfarce.org

根据 RFC 2052号文档,SRV记录的格式如下:Service.Proto.Name TTL Class SRV Priority Weight Port Target

攻击者可以从这个文件获取的信息包括:运行着域级 Global Catalog 服务的主机(_gc._tcp)、运行着Kerberos身份验证服务的域控制器(_kerberos._tcp)、LDAP服务器(_ldap._tcp)以及这几项服务的端口号等。(这里只给出了与 TCP有关的服务。)

阻断 DNS 区域传送这个问题的简单解决方案是只允许有授权的机器(通常是后备 DNS服务器)进行区

域传送。Window NT4 之后的 DNS 实现很容易限制区域传送:在名为“ Computer Management”(计算机管理)的 MMC(Microsoft Management Console,微软管理控制台)窗口里选中一个转发查找域(forward lookup damain;本例中是 labfarce.org),再选中这个域的“Properties”(属性)设置页面,就可以看到如下所示的窗口;这个窗口的完整路径是\Services and Applications\DNS\ [server_name] \Forward Lookup Zones\ [zone_name] | Properties。

Page 92: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点

Windows 2000的默认配置允许以任意服务器为目的地进行区域传送,这可是个大漏洞。只须在上面这个窗口里弃选“Allow Zone Transfers”复选框,就可以完全禁止区域传送。但在现实世界里,后备 DNS服务器需要随时保持更新,所以我们在上面窗口中选择了限制不太严格的折中配置。

微软公司已经在Windows 2003 Server的 DNS实现里把默认配置改为不允许向未获得授权的地址进行区域传送,这里面多少应该有我们写的这本《黑客大曝光》的功劳吧。

TFTP查点,TCP/UDP 69

流行度: 1简单度: 3影响力: 7风险率: 3

尽管由于收集信息的手段过于强硬而几乎不能被称做查点技巧,但所有 UNIX/Linux查点技巧的最强者就是取得/etc/passwd文件,这一点我们将在第 7章详细讨论。但值得一

注 意

Page 93: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报提的是,最流行的抓取 passwd文件的方法是通过 TFTP(Trivial File Transfer Protocol,简化的文件传输协议)来进行,通常在UDP 69号端口上运行。通过 TFTP抓取一个保护不力的/etc/passwd文件是非常容易的,如下所示:

[root$]tftp 192.168.202.34 tftp> connect 192.168.202.34 tftp> get /etc/passwd /tmp/passwd.cracklater tftp> quit

攻击者现在不但弄到了 passwd文件以在闲暇时破解,还可以直接从文件中读取用户列表。

针对 TFTP查点活动的防范措施TFTP本质上就是一个不安全的协议,协议以明文形式运行在连接上,没有提供认证

机制,还会遗留下配置错误的文件系统访问控制列表(ACL),开放了可能被滥用的大量权限。因此,不要运行 TFTP;如果需要该服务,就要对其进行包装以限制存取(使用诸如TCP Wrappers之类的工具),只允许访问/tftpboot目录,并确认边境防火墙已经阻塞了TFTP协议。

Page 94: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点

Finger,TCP/UDP 79

流行度: 7简单度: 10影响力: 1风险率: 6

或许提到查点用户技术时,最古老的技巧就是UNIX/Linux环境的 finger实用程序。在过去那个小得多但也友好得多的 Internet中,Finger是一种自动公布用户信息的方便途径。我们讨论它主要目的是描述攻击的特征,因为许多脚本攻击工具仍然在尝试该方法,而有许多系统管理员也在系统的最低安全配置中运行了 finger。下文假定已经在早先的扫描中识别出了一个运行 finger服务(端口 79)的有效主机:

[root$]finger –l @target.hackme.com

[target.hackme.com]Login: root Name: rootDirectory: /root Shell: /bin/bashOn since Sun Mar 28 11:01 (PST) on tty1 11 minutes idle

(messages off)On since Sun Mar 28 11:01 (PST) on ttyp0 from :0.0

3 minutes 6 seconds idleNo mail.Plan:John SmithSecurity GuruTelnet password is my birthdate.

“finger 0@hostname”命令也可以收集到很多有用的信息:[root$]finger [email protected]

[192.168.202.34]

Line User Host(s) Idle Location* 2 vty 0 idle 0 192.168.202.14Se0 Sync PPP 00:00:02

您可以看到,finger显示的大部分信息是无害的。(相关的信息是从/etc/passwd中对应的字段获得的,前提是该文件中存在这些字段。)或许 finger的输出中最危险的信息是登录用户的名字和空闲时间,这使得攻击者能够得到一些信息,如谁在值守系统和这些用户?

Page 95: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报他们是否对系统比较留意。一些附加信息可被用于“社交工程”攻击中(黑客俚语,即设法使用社交手段获得访问权限;参见第 14章)。该示例表明,用户如果在其 home目录中放置了.plan或.project文件,很可能受到此类探测的攻击。(此类文件的内容在前文进行的finger探测中被显示出来。)

Finger防范措施检测并堵塞信息泄漏是很容易的——不要运行 finger(在 inetd.conf文件中注释掉它,

并执行 killall -HUP inetd),在防火墙中阻塞端口 79。如果您必须提供 finger访问,请使用TCP Wrappers(参见第 7章)来限制访问并记录日志,或使用修改过的 finger守护进程来提供受限的信息。

HTTP查点,TCP 80

流行度: 5简单度: 9影响力: 1风险率: 5

在黑客社区中,查点web服务器的构造和工作模型是最轻松、历史最悠久的技术之一。每当新的 web服务器攻击方法发布时(例如,作为 Code Red和 Nimda蠕虫基础的 ida/idq缓存溢出),秘密活动就变得简单,黑客们会使用自动化的查点工具检查 Internet的整个网段,查找潜在的有漏洞软件,所以不要认为你不会被攻击。

我们在本章开篇的“旗标抓取基础: telnet和 netcat”小节里演示了基本的 HTTP旗标抓取技巧。在那一节里,我们说明了如何使用 netcat从标准的 HTTP端口(TCP 80)上连接到 web服务器,并输入几个回车键来抓取旗标。对更高级的黑客来说,HTTP HEAD方法是一种得到旗标信息的干净利落的手段。在连接到目标服务器后,您可以在 netcat中输入该命令,如下所示(需要输入的命令以黑体显示;在输入 HEAD命令之后,你们可能需要按下两次或更多次回车键):

C:\>nc –v www.corleone.com 80www.corleone.com [192.168.45.7] 80 (?) openHEAD / HTTP/1.0HTTP/1.1 200 OKServer: Microsoft-IIS/5.0Date: Tue, 08 May 2001 00:52:25 GMTConnection: Keep-AliveContent-Length: 1270Content-Type: text/html

Page 96: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点Set-Cookie: ASPSESSIONIDGGQGQLAO=IPGFKBKDGDPOOHCOHIKOAKHI; path=/Cache-control: private

在上面这个例子中,我们示范了 HTTP HEAD请求,但这现在已经不常见了(除了在蠕虫中)。HEAD请求可能会触发某些入侵检测系统。

另外,如果遇到使用 SSL的网站,不要因为 netcat无法处理 SSL连接而烦恼。只要使用 SSL代理工具将其重定向即可,如 openssl或 sslproxy。

我们在这里指出,在网页的HTML源代码中,可以找到我们感兴趣的信息。用来下载整个网站的网络爬虫工具中,我们最喜欢的是 Blighty Design(http://samspade.org/ssw)开发的 Sam Spade。图 3-1 演示了如何使用 Sam Spade下载整个网站和搜查我们感兴趣的信息,例如单词“password”。

图 3-1 Sam Spade工具的“Crawl Websit”窗口使得分析整个站点来获得口令字等敏感信息的工作变得非常简单

利用网络爬虫获取 HTML来得到感兴趣的信息已经属于Web攻击的范畴,我们将在第 12章对此做详细的讨论。

对Web攻击活动的方法论、工具和技术的全面深入讨论可以参考 Hacking Exposed: Web Applications 一 书(McGraw-Hill/Osborne,2002;http://www.web- hackingexposed.com)。

注 意

Page 97: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

针对HTTP查点活动的防范措施阻止此类行为的最佳方法是修改web服务器的旗标。改动旗标的步骤因web服务器厂

家而有所不同,我们使用最常见的例子来说明,即微软公司的 Internet Information Services(IIS)。IIS经常被作为攻击目标,主要是因为很容易得到攻击工具,比如针对Microsoft Data Access Components(MDAC)、Unicode、和 Internet Printing Protocol的缓存溢出(参见第 12章)。将这些手段和自动化的 IIS蠕虫(比如 Code Red和Nimda)结合起来,您就明白了为什么扫描 IIS几乎已经成为了网络上的全民娱乐项目。改变 IIS的旗标,对于从某些用心叵测的人的视野中脱离出来颇有帮助。

不幸的是,直接改变 IIS旗标涉及到对包含 IIS旗标的DLL(%systemroot%\system32 \inetsrv\w3svc.dll)进行十六机制编辑。操作比较复杂,而在Windows 2000中则更为困难,因为该 DLL是由Windows系统的 System File Protection(SFP)机制保护的,除非停用SFP,否则修改过的文件会自动被原始版本替换。

另一个改变 IIS旗标的方法是安装一个 ISAPI过滤器,通过调用 SetHeader函数来设置旗标。微软公司已经发布了一篇知识库(Knowledge Base,KB)文章,讨论了相关的细节,并给出了示例源代码,可以在 http://support.microsoft.com/default.aspx?scid=kb;en-us; Q294735得到。此外,您也可以下载并部署微软公司的URLScan,它是 IIS Lockdown工具(参见 http://www.microsoft.com/technet/security/tools/locktool.mspx)的一部分。URLScan是一个 ISAPI过滤器,可以用来阻断许多流行的 IIS攻击,使之无法到达 web服务器。它还允许配置定制的旗标,以愚弄粗心的攻击者和自动化的蠕虫。有关URLScan部署和用法的 完 全 讨 论 , 请 参 看 Hacking Exposed:Web Applications 一 书(McGraw-Hill/Osborne,2002)。

IIS Lockdown无法安装在Windows Server 2003/IIS 6 平台上,这是因为 IIS 6的默认配置已达到或超越了 IIS Lockdown工具的安防配置设置。但你们仍可以在 IIS 6上安装和运行 URLScan工具,因为它向高级系统管理员提供了比 IIS 6的默认安防设置更多和更严格的灵活配置。

Microsoft RPC端点映射器(MSRPC)查点,TCP 135

流行度: 7简单度: 8影响力: 1风险率: 5

某些 Microsoft Windows 系统在 TCP 135 号端口上运行远程过程调用(Remote

注 意

Page 98: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点Procedure Call,简称 RPC)端点映射器(endpoint mapper)。查询该服务可以得到目标计算机上可用的应用程序和服务的相关信息,以及其他可能对攻击者有帮助的信息。Reskit工具包里的 epdump工具可以查询MSRPC端点映射器,并显示出服务绑定的 IP地址和端口号(当然,格式很粗糙)。这里是一个例子,描述了该工具针对在 TCP 135端口上运行MSRPC服务的目标系统如何进行工作(为简明起见,我们对输出报告进行了编辑):

C:\>epdump mail.victim.combinding is 'ncacn_ip_tcp:mail.victim.com'int 82ad4280-036b-11cf-972c-00aa006887b0 v2.0 binding 00000000-etc.@ncalrpc:[INETINFO_LPC] annot ''int 82ad4280-036b-11cf-972c-00aa006887b0 v2.0 binding 00000000-etc.@ncacn_ip_tcp: 216.154.242.126[1051] annot ''int 82ad4280-036b-11cf-972c-00aa006887b0 v2.0 binding 00000000-etc.@ncacn_ip_tcp:192.168.10.2[1051] annot ''no more entries

输出中需要注意的重要事项是,我们看到了两个类似 IP地址的数字:216.154.242.126和 192.168.1.2。这些是MSRPC应用程序绑定到的 IP地址。其中第二个是一个符合 RFC 1918的地址,这表明该计算机可能有两个物理网卡,其中一个接入到内部网络。对于正在寻找内部和外部网络之间的桥接作为攻击点的黑客来说,这可是个有意思的发现。

如果仔细研究一下这份输出报告,你们就会注意到 ncacn_ip_tcp对应动态分配的 TCP端口,这使我们可以方便地继续对这个系统进行查点(输出报告中的 ncacn_ip_udp对应动态分配的UDP端口)。Jean-Baptiste Marchand的研究报告对Windows网络服务的一些细节做了深入的分析,这篇报告可以在 http//www.hsc.fr/ressources/articles/win_net_srv上查到。

另一个较好的MSRPC查点工具是 rpcdump(不要把它和Microsoft Reskits资源工具包里的 rpcdump程序混为一谈),通过 http://www.bindview.com /Support/Razor/Utilitis/Windows/rpctools1.0-readme.cfm上还可以查到一些讨论这个问题的好文章。

针对MSRPC查点活动的防范措施防止非授权人士进行MSRPC查点的最佳办法是限制其对 TCP 135号端口的访问。当

有Microsoft Exchange Server接入 Internet时,上述情况会变得麻烦。为了让 Outlook MAPI客户能够连接到 Exchange服务,客户端必须首先与端点映射器联接。因此,为了让远程用户能够通过因特网连接到 Outlook/Exchange,你只能开放 TCP 135号端口。这个问题的一

窍 门

Page 99: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报种解决方案是使用另一个访问设施来认证对 TCP 135号端口的访问。例如,防火墙产品可以自动地为某些特定的远程 IP地址打开一个 ACL,只要相关的远程用户能够成功的经由另一个协议(例如 HTTPS)通过防火墙的认证。另一个可选的方案是使用 Microsoft的Outlook Web Access(OWA)来支持远程Outlook用户。OWA基本上是一个 Exchange邮箱的web前端,它工作在HTTPS协议上。如果你打算使用OWA,我们推荐使用强度较高的身份验证机制(比如数字证书或双重身份验证机制 [two-factor authentication mechanisms])。在 Windows Server 2003 和 Exchange 2003 里,微软实现了 RPC over HTTP(基于 HTTP的 RPC),这是我们通过因特网访问 OWA时最喜欢用的办法,它既方便,又能保留 Outlook客户丰富的视觉和使用体验(参见 http://support.microsoft.com /default.aspx?kbid=833401 和 http://msdn.microsoft.com/library/library/en-us/rpc/rpc/rpc_over_http_security.asp处的两篇文章)。

如果你无法限制对MSRPC服务的访问,就应该限制对各个 RPC应用程序的访问。如果你对这个问题感兴趣,我们建议你去阅读一篇名为“Writing a Secure RPC Client or Server”(怎样才能编写出一个安全的 RPC客户或服务器)的文章,它可以在地址 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rpc/rpc/writing_a_secure_rpc_client_or_server.asp处查到。

NBNS查点,UDP 137

流行度: 7简单度: 5影响力: 3风险率: 5

NBNS服务(NetBIOS Name Service,NetBIOS名字服务)传统上为基于 Microsoft Windows的网络提供分布式名字解析系统。从Windows 2000开始,NBNS不再是必不可少,它已经被基于 Internet的名字解析标准 DNS服务所替代。但在写作本书时,Windows的所有发行版本仍默认启用了 NBNS服务,因此对连接到本地网段(或经由一台在 TCP/IP连接上运行 NBNS隧道的路由器)的攻击者来说,“有事就问 Windows”还是很容易的,我们通常把这称为NBNS查点。

NBNS查点之所以如此容易,是因为用于探查 NetBIOS线路的工具和技术都是现成的——大部分是操作系统内建或自带的工具!实际上,NBNS查点技术通常会向 NBNS服务轮询网络上所有计算机,该服务是如此之透明,以至于我们几乎无法觉察到它是连接到UDP 137号端口上的一个特定服务。我们首先会讨论Windows自带的工具,然后是一些第三方的工具。由于修补这些漏洞都非常简单,我们到最后再讨论对策。

Page 100: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点用“net view”查点Windows工作组和域

net view命令是内建查点工具的一个很好的例子。它是Windows NT系列操作系统中一个非常简单的命令行实用程序,可以列出网络中所有可用的域以及某个域中的所有计算机。以下演示了如何使用 net view查点网络上的域:

C:\>net view /domainDomain-------------------------------------------------------_CORLEONEBARZINI_DOMAINTATAGGLIA_DOMAINBRAZZI

下面这条命令将列出给定域里的计算机:C:\>net view /domain:corleoneServer Name Remark--------------------------------------------------------\\VITO Make him an offer he can't refuse\\MICHAEL Nothing personal\\SONNY Badda bing badda boom\\FREDO I'm smart\\CONNIE Don't forget the cannoli

同样,net view要求能够访问所有要查点的网络的 NBNS,这意味着它只能在本地网段工作。如果NBNS通过 TCP/IP路由,则 net view可以查点整个企业中的Windows工作组、域和主机。如果要把整个组织的结构暴露出来,只需要把任意系统的网线插入到一个网络中,在能够得到DHCP地址的情况下,通过一个无需认证的查询即可完成。

请记住,我们可以利用从 Ping扫描(参见第 2章)获取的 IP地址来替换计算机的 NetBIOS名字。在绝大多数情况下,IP地址和 NetBIOS名字是可互换的。(例如,\\192.168.202.5等价于\\server_name。)为了方便起见,攻击者通常会用“#PRE”语法在其%systemroot%\system32\drivers\etc\LMHOSTS文件中追加一些记录项,然后再在命令行运行 nbtstat –R命令去刷新内存中的NetBIOS名字解析表。在以后的攻击中,他们就可以使用 NetBIOS名字了,这些名字会透明地映射到在 LMHOSTS文件中指定的 IP地址。

查点Windows域控制器为把Windows网络结构挖掘得深入些,我们需要使用Windows Resource Kit(简称

RK或 Reskit)工具包里的一个工具。在下一个例子中,我们将会看到称作 nltest的 RK工

窍 门

Page 101: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报具如何在使用 net view查点过的域中识别出域控制器(域控制器是Windows网络凭据的维护者,因此也是恶意黑客的主要目标):

C:\>nltest /dclist:corleoneList of DCs in Domain corleone\\VITO (PDC)\\MICHAEL\\SONNY

The command completed successfully

Reskit中的 Netdom是另一个有用的工具,可用来查点在线的Windows域的关键信息,包括域成员和备份域控制器(BDC)的身份标识。用 netviewx工具查点网络服务

由 Jesper Lauritsen编写的 netviewx工具(参见 http://www.ibt.ku.dk/jesper/ NTtools)与net view命令十分类似,但它有一个功能,可以列出具有特定服务的服务器。我们经常使用 netviewx来探测 NT Remote Access Service(RAS),以获得某个网络上可以拨入的服务器数目,如下例所示(-D指定了需要查点的域,而-T指定了需要查找的计算机或服务的类型):

C:\>netviewx -D CORLEONE -T dialin_server

VITO,4,0,500,nt%workstation%server%domain_ctrl%time_source%dialin_server%

backup_browser%master_browser," Make him an offer he can't refuse "

在该系统上运行的服务以百分比符号(%)分隔后列出。在选择非域控制器的、安全措施较差的目标时,Netviewx也是一个很好的工具。用 nbtstat和 nbtscan工具导出NetBIOS名字表

Nbtstat可以连接到某些特定的计算机,而不是对整个网络进行查点。它可以查询远程系统的NetBIOS名字表。名字表包含了大量的信息,如下例所示:

C:\>nbtstat -A 192.168.202.33 NetBIOS Remote Machine Name Table

Name Type Status------------------------------------------------SERVR9 <00> UNIQUE RegisteredSERVR9 <20> UNIQUE Registered9DOMAN <00> GROUP Registered

Page 102: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点9DOMAN <1E> GROUP RegisteredSERVR9 <03> UNIQUE RegisteredINet<126>Services <1C> GROUP RegisteredIS<126>SERVR9...... <00> UNIQUE Registered9DOMAN <1> UNIQUE Registered..__MSBROWSE__. <01> GROUP RegisteredADMINISTRATOR <03> UNIQUE Registered

MAC Address = 00-A0-CC-57-8C-8A

在上例中,nbtstat工具提取出了目标系统的系统名(SERVR9)、目标系统所在的域(9DOMAN)、当前登录用户(ADMINISTRATOR)、当前运行着的服务(INet <126> Services)和网卡的硬件MAC(Media Access Control)地址。这些信息项可以通过它们的NetBIOS服务代码(service code,即名字右侧的两个十进制数字)被识别出来。表 3-1列出了一部分NetBIOS服务代码。NetBIOS 服务代码

资源computer name>[00]

Workstation(工作站)服务domain name>[00] 域名computer name>[03]

Messenger服务(负责处理发送给本计算机的消息)Service

user name>[03] Messenger服务(负责处理发送给本用户的消息)computer name>[20]

Server(服务器)服务domain name>[1D]

主浏览器(Master Browser)domain name>[1E]

Browser(浏览器)服务质量报告domain name>[1B]

域主浏览器(Domain Master Browser)表 3-1 常见的NetBIOS服务代码

nbtstat的两个主要缺点是,每次只能查询一台主机,输出也比较令人费解。Alla Bezroutchko编写的免费工具 nbtscan解决了这两个问题,该工具可以在 http://www.inetcat.o

Page 103: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报rg /software/nbtscan.html处下载。Nbtscan可以对整个网络进行快速的“nbtstat”查询并对输出信息进行排版:

C:\>nbtscan 192.168.234.0/24Doing NBT name scan for addresses from 192.168.234.0/24

IP address NetBIOS Name Server User MAC address-----------------------------------------------------------------------192.168.234.36 WORKSTN12 <server> RSMITH 00-00-86-16-47-d6192.168.234.110 CORP-DC <server> CORP-DC 00-c0-4f-86-80-05192.168.234.112 WORKSTN15 <server> ADMIN 00-80-c7-0f-a5-6d192.168.234.200 SERVR9 <server> ADMIN 00-a0-cc-57-8c-8a

很显然,nbtscan工具是一种快速找出网络上运行的Windows主机的有效手段。对你们熟悉的 C类网段运行一下这个工具,就会明白我们的意思了。

针对NBNS查点活动的防范措施刚才介绍的所有技术都必须以运行在 UDP 137号端口上的 NBNS(NetBIOS Name

Service,NetBIOS名字服务)为基础。只要阻断了对 UDP 137号端口的访问——无论是在单个主机上,还是在网络路由器上禁用该协议——就可以防范前面提到的各种攻击。为防止用户数据出现在 NetBIOS 名字表的转储中,可以在单个的计算机上禁用 Alerter和Messenger服务。这些服务的启动行为可以通过 Windows控制面板中的“Services”(服务)组件进行配置。在Windows 2000及其后的系统中,可以针对单个的网卡禁用基于TCP/IP的NetBIOS服务。但用这个办法去防范NBNS查点并不太成功,因此不要对它过于信赖(在本章后文中您可以看到,对该特性的错误配置比比皆是)。最后要注意,如果你在某个路由器上阻断了 UDP 137号端口,与这个路由器有关的Windows名字解析将无法进行,同时依赖于NBNS的应用程序可能都无法工作。

NetBIOS会话查点,TCP 139

流行度: 8简单度: 10影响力: 8风险率: 9

Windows NT及后续的系统,在向远程黑客泄漏信息方面,确实是臭名昭著。这几乎都是因为下面将要讨论的漏洞,即Windows null session/anonymous connection攻击。

Page 104: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点空会话查点

如果您曾经通过网络访问另一台 Windows机器上的文件或打印机,那么很可能已经使用了微软公司的 Server Message Block(SMB)协议,该协议是文件和打印共享(File and Print Sharing)的基础(Linux提供的 SMB实现叫做 Samba)。

通过API访问 SMB可以获得相关的Windows系统的非常丰富的信息,对未认证的用户也可以。由于通过这种机制收集的信息的质量之高,使得在不进行充分保护的情况下,SMB会成为Windows的最致命弱点之一。

为示范无防护的 SMB引起的破坏,我们来执行一些利用了该协议的广为人知的黑客技术。查点 SMB的第一步是使用所谓的“null session”命令连接到服务,如下所示:

C:\> net use \\192.168.202.33\IPC$ "" /u:""

您可能会注意到,该命令和用于安装网络驱动器的标准 net use语法非常类似,实际上它们几乎是相同的。上述命令行使用空口令字(" ")以内建的匿名用户(/u : " ")的身份去连接 IP地址为 192.168.202.33的主机的“进程间通信”共享卷(IPC$)。如果成功的话,攻击者就有了一条开放的信道,可以在其上尝试本节列出的各种技术,从目标尽可能多的掠取信息,包括网络信息、共享情况、用户、组、注册表键等等。您可能已经听说过称作“Red Button”的漏洞、null session connections或 anonymous logon,这些实际上都是同一个漏洞,入侵者会将它作为最具破坏性的攻击立足点,在下文中我们会示范这一点。

SMB查点可以在 TCP 139号端口(NetBIOS会话)和 TCP 445号端口(基于 TCP/IP的 SMB,亦称为“Direct Host”)上运行。这两个端口都提供了对同一服务的访问,只是传输方式不同。我们在本章稍后讨论 TCP 445号端口。

查点文件共享卷入侵者比较喜欢的目标是权限配置错误的Windows文件共享卷。在建立了 null session

的情况下,我们有若干技术可以很容易地查出文件共享卷的名称。例如,Windows内建的net view命令可以查点远程系统上的共享卷。

C:\>net view \\vito

Shared resources at \\192.168.7.45

VITO

Share name Type Used as Comment-----------------------------------------------------------NETLOGON Disk Logon server shareTest Disk Public access

注 意

Page 105: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报The command completed successfully.

Resource Kit中其他好用的共享卷查点工具包括 rmtshare、srvcheck和 srvinfo(使用“-s”选项)。rmtshare工具生成的输出报告和 net view命令的输出报告差不多。srvcheck工具可以查出共享卷和授权用户,包括隐藏的共享卷,但在查点用户和隐藏共享卷时,它要求对远程系统有特权级别的访问能力。srvinfo工具的“-s”选项能够列出共享卷和其他许多信息。

查点Windows文件共享卷(和许多其他东西)最好的工具之一是 DumpSec(以前称作 DumpAcl),如图 3-2 所示。该工具是免费的,可以在 Somarsoft( http://www.somarsoft.com)得到。在NT系统安全管理员的工具箱中,很少有工具的地位能超出DumpSec。它对远程系统上的所有事务进行核查,基本的用户信息可以通过无害的空连接得到。它可以从命令行运行,因此易于自动化和用于脚本中。在图 3-2里,我们演示了如何使用DumpSec从远程计算机转储共享信息。

图 3-2 DumpSec工具通过与目标计算机的一个空会话查出来的共享卷信息打开空连接并手工使用前述的工具对于直接攻击很有效,但大多数黑客通常会使用

NetBIOS扫描器快速扫描整个网络以寻找垂手可得的共享卷。Legion是这类扫描器中最流行的之一(在许多 Internet档案服务器上可以得到),如下所示。

Page 106: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点

Legion可以对 C类网段进行扫描,并在图形界面上显示所有可用的共享。版本 2.1包括了一项“强力工具”特性,可以使用用户提供的一组口令尝试连接到给定的共享。对于Windows上蛮力破解的更多信息,可参见第 4和第 5章。

另一个流行的Windows 共享扫描器是 NetBIOS Auditing Tool(NAT),它是 Andrew Tridgell 编 写 的 代 码 。 ( NAT 可 以 在 Hacking Exposed 网 站 下 载 ,即 http://www.osborne.com/he5)Rhino9 Security Team(该组织现已不再活动)的 Neon Surge和 Chameleon为NAT编写了图形界面,如图 3-3所示。NAT不仅能够找到共享信息,还可以使用用户定义的用户名和口令列表尝试登录。

Page 107: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报图 3-3 NetBIOS Auditing Tool(NAT)工具的图形化界面和命令行输出注册表查点

另一种查点NT系列应用程序信息的有效机制是把目标机器的Windows注册表内容导出来。在 NT系统上,大多数正确安装的应用程序都会在注册表中留下一些信息,问题只是到哪去找。入侵者在获得了对注册表的访问权限,后可以对与用户和配置相关的信息进行筛选。只要耐心些,就可以在错综复杂的迷宫中找到能够获得访问权限的数据。幸运的是,Windows的默认配置只允许管理员访问注册表(至少在服务器版本中是这样)。因此,下面描述的技术通常无法利用匿名的空会话重现。有一个例外,在 HKLM\System \CurrentControlSet\ Control\SecurePipeServer\Winreg\AllowedPaths键中指定了可以通过空会话访问的键。默认情况下,该键的设定允许访问 HKLM\Software\Microsoft\WindowsNT \Current Version。

如果你在试图查看一个远程注册表时遇到了麻烦,最好的工具是 RK的 regdmp和Somarsoft的DumpSec(又遇到这个工具了)。Regdmp是一个相当粗糙的工具,它只是把整个注册表(或在命令行上指定的键)转储到控制台窗口中。尽管远程访问注册表通常只限于管理员,但那些无所不为的邪恶者很可能对键进行枚举,以期能够幸运地找到一个入口。在这里,我们看一下Windows启动时有哪些应用程序随同启动。黑客通常会在这里放置一些指向后门程序(如NetBus,参见第 5和 14章)的项:

C:\>regdmp -m \\192.168.202.33 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run SystemTray = SysTray.Exe BrowserWebCheck = loadwc.exe

DumpSec的输出比 regdmp要好一点,但功能基本类似,如图 3-4所示。“Dump Services”将枚举远程系统上的每一个Win32服务和内核驱动程序,以查看其运行状态(这里假定有适当的访问许可)。在策划攻击时,这可以为攻击者提供大量的潜在备选目标。要记住,该行为需要一个空会话。

Page 108: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点

图 3-4 DumpSec工具可以把远程系统上的所有服务和驱动程序都出查出来查点信任域

还记得 nltest工具吗?在讨论 NetBIOS Name Service查点时我们讨论过它。一旦与所要查点域中的一台计算机建立了空会话,就可以使用 nltest的/server:<server_name>和/trusted_domains命令来进一步了解与该计算机相关的Windows域。令人惊讶的是,在建立了空会话时,这个简单的工具变得更为强大。查点用户

如里只看上面的讨论,可能会有读者认为泄漏了共享卷信息是比较糟糕,但并不是世界末日,因为攻击者还没有弄到用户账户信息。这个想法大错特错,利用空会话收集Windows机器上的用户信息就像收集共享卷信息一样容易。

通过空会话收集用户信息最强大的工具是DumpSec(又遇到了)。它可以得到一个列表,包括用户、组和 NT系统的策略和用户权限。在下一个例子中,我们在命令行上使用DumpSec,生成一个包括远程计算机用户信息的文件(要记住,DumpSec需要一个目标计算机的空会话才能工作):

C:\>dumpsec /computer=\\192.168.202.33 /rpt=usersonly /saveas=tsv /outfi le=c:\temp\users.txtC:\>cat c:\temp\users.txt4/3/99 8:15 PM - Somarsoft DumpSec - \\192.168.202.33UserName FullName Commentbarzini Enrico Barzini Rival mob chieftaingodfather Vito Corleone Capo

Page 109: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报godzilla Administrator Built-in account for administering the domainGuest Built-in account for guest accesslucca Lucca Brazzi Hit manmike Michael Corleone Son of Godfather

使用 DumpSec的 GUI界面,可以在输出中包括更多的信息字段,刚才显示的输出格式通常会让麻烦制造者非常高兴。例如,我们曾经遇到一台服务器,把改名后的管理员账号的口令存储在 Comments字段中!

其他两个非常强大的Windows查点工具是 sid2user和 user2sid,由 Evgenii Rudnyi开发(参见 http:// www.chem.msu.su:8080/<126>rudnyi/NT/sid.txt)。这两个都是命令行工具,对NT系列系统进行查点,从输入的用户名获得对应的 SID,反之亦然。SID即安全标识符,是一个可变长度的数值,NT系列的系统在安装时会设定 SID。对 SID的结构和功能的详细讨论,可以参看Mark Russinovich的文章 http://www.win2000mag.com/Articles /Index.cfm?ArticleID=3143。在通过 user2sid获得一个域的 SID之后,入侵者可以使用已知的 SID数字查点对应的用户名。这里是一个例子:

C:\>user2sid \\192.168.202.33 "domain users"

S-1-5-21-8915387-1645822062-1819828000-513

Number of subauthorities is 5Domain is WINDOWSNTLength of SID in memory is 28 bytesType of SID is SidTypeGroup

上述信息告诉了我们该计算机的 SID,即 S-1开头的字符串,由连字符分隔。最后一个连字符之后的数字串被称作相对标识符(RID),它是预定义的,用于内建的Windows用户和组,例如 Administrator和 Guest。例如,Administrator用户的 RID总是 500,而Guest用户的 RID则是 501。有了这些数据,黑客使用 sid2user在已知的 SID 串后附加一个为 500的 RID,即可得到管理员账号名(即使已经改名)。这里是一个例子:

C:\>sid2user \\192.168.2.33 5 21 8915387 1645822062 18198280005 500

Name is godzillaDomain is WINDOWSNTType of SID is SidTypeUser

注意“S-1”和连字符都忽略掉了。另一个有趣的事实是,在任何基于 NT的本地系统或域上创建的第一个账号,分配的 RID是 1000,此后的创建的各个对象的 RID依次递增(即 1001、1002、1003等等,在当前的系统中,RID是不复用的)。因此,在得知NT系统

Page 110: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点的一个 SID后,黑客基本上可以枚举到该系统上的每一个用户和组,无论是现在还是过去。

即使 RestrictAnonymous(稍后定义)被设置为 1,只要还能访问 139或 445号端口,Sid2user/user2sid也可以工作。这真让人害怕!

下面是一个简单的例子,示范了如何编写脚本 user2sid/sid2user来循环得到系统上所有的用户账号。在运行该脚本之前,我们首先使用空会话上的 user2sid来得到目标系统的SID,这在前文中已经演示过。NT系列系统从 1000开始为新账号分配 RID,我们使用 NT系列系统的 shell命令 FOR和 sid2user工具(见前文)执行以下循环,以枚举目标系统上的账号,直至得到 50个账号为止:

C:\>for /L %i IN (1000,1,1050) DO sid2user \\acmepdc1 5 21 1915163094 1258472701648912389 %I >> users.txtC:\>cat users.txt

Name is IUSR_ACMEPDC1Domain is ACMEType of SID is SidTypeUser

Name is MTS Trusted ImpersonatorsDomain is ACMEType of SID is SidTypeAlias. . .

上面的输出比较乱,可以通过管道馈入一个过滤器对其进行整理,只剩下用户名。当然,脚本环境并不只限于使用NT shell,Perl、VBScript等也都很方便。最后提醒读者一次,只要目标系统的 139或 445端口是开发的,那么上例将可以成功地转储用户,即使把RestrictAnonymous设置为 1也可以。

在下一节中将讨论的 UserDump工具与 TCP 445号端口交互,自动化了上文中的“SID漫步”查点技术。

多功能空会话查点工具BindView的 Razor 团队推出的 enum工具包含了每种 SMB查点特性,而且还远不止

此。该工具对本章的内容正合适,它可以从 http://www.bindview.com/support/Razor/utilities下载。以下列出了该工具的命令行开关,读者可以看出其功能是何等丰富:

C:\>enum

注 意

注 意

Page 111: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报usage: enum [switches] [hostname|ip] -U: get userlist -M: get machine list -N: get namelist dump (different from -U|-M) -S: get sharelist -P: get password policy information -G: get group and member list -L: get LSA policy information -D: dictionary crack, needs -u and -f -d: be detailed, applies to -U and -S -c: don't cancel sessions -u: specify username to use (default "") -p: specify password to use (default "") -f: specify dictfi le to use (wants -D)

enum甚至可以自动建立和断开空会话。要特别注意口令字策略查点开关“ -P”,该选项可以告诉远程攻击者是否能够远程猜测用户账号的口令(使用“-D”、“-u”和“-f”),直至找到防卫较弱之处。下例演示了 enum的操作,为了简便起见已经进行了编辑:

C:\>enum -U -d -P -L -c 172.16.41.10server: 172.16.41.10setting up session... success.password policy: min length: none. . . lockout threshold: noneopening lsa policy... success. names: netbios: LABFARCE.COM domain: LABFARCE.COM. . .trusted domains: SYSOPSPDC: CORP-DCnetlogon done by a PDC servergetting user list (pass 1, index 0)... success, got 11. Administrator (Built-in account for administering the computer/domain) attributes: chris attributes: Guest (Built-in account for guest access to the computer/domain) attributes: disabled. . .

Page 112: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点 keith attributes: Michelle attributes:. .

enum也可以使用“-D -u <username> -f < dictfile>”参数每次只猜测一个用户的口令字。Nete比 enum更不容易找到,但它物有所值。该工具由 Cult of the Dead Cow的 Sir

Dystic编写,可以通过空会话连接抽取出大量有价值的信息。我们喜欢使用“/O”开关执行所有检查。下面是 nete的命令行语法,您可以从中对 nete通过空会话所能获取的信息的广泛性有所了解。

C:\>neteNetE v.96 Questions, comments, etc. to [email protected]

Usage: NetE [Options] \\MachinenameOrIP Options: /0 - All NULL session operations /A - All operations /B - Get PDC name /C - Connections /D - Date and time /E - Exports /F - Files /G - Groups /I - Statistics /J - Scheduled jobs /K - Disks /L - Local groups /M - Machines /N - Message names /Q - Platform specific info /P - Printer ports and info /R - Replicated directories /S - Sessions /T - Transports /U - Users /V - Services /W - RAS ports /X - Uses /Y - Remote registry trees /Z - Trusted domains

Page 113: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报其他空会话查点工具

还有其他一些适用于NT系列的查点工具值得一提。getmac使用空会话可以显示出远程计算机网卡的MAC地址和设备名称。在攻击者试图了解有多个网络接口的系统时,该工具可以得到有用的网络信息。即使 RestrictAnonymous设置为 1,getmac也可以工作。

其他一些用户查点工具,如 Reskits中的 usrstat、showgrps、local和 global等,可以提供有关用户的更多信息。

Arne Vidstrom的Winfo工具(http://www.ntsecurity.nu)可以得到用户账号、共享资源、子域、服务器和工作站的受信任账号。如果使用-n命令行开关,它甚至可以自动创建空会话。

由 Next Generation Security Software Ltd.(NGSS)公司的 David Litchfield 编写的Nbtdump工具能够创建空会话、查点共享卷和用户账户,再把结果生成一份整齐美观的THML报告。Nbtdump工具可以在 http://www.atslake.com/research/tools/info_gathing上找到。

针对 SMB空会话查点活动的防范措施空会话需要访问Windows 2000或后续操作系统的 TCP 139或 445号端口,因此阻止

攻击的最谨慎方法就是在周边所有网络访问设备上过滤掉 TCP和UDP端口 139和 445号。还可以在单独的 NT 3~4.x主机上完全停用 SMB服务,只需在 Network Control Panel的Bindings 属性页上,将WINS Client(TCP/IP)从相应的网络接口解除绑定。

在 NT 4 Service Pack 3以后,微软公司提供了一种机制,它无需将 SMB服务从网络接口解绑,即可阻止通过空会话查点敏感信息(尽管如此,我们仍然推荐禁用 SMB服务)。该机制称为 RestrictAnonymous,根据所用的注册表键来命名。以下是实施该机制的步骤:

1. 打开 regedt32程序,找到HKLM\SYSTEM\CurrentControlSet\Control\LSA主键。2. 选择 Edit | Add Value菜单项,输入以下数据:

Value Name: RestrictAnonymousData Type: REG_DWORDValue: 1(在Windows 2000系统上是 2)

3. 退出注册表编辑器,重新启动计算机,改动即可生效。在Windows 2000及以后的系统上,由于安全策略的原因,所需的修改更为简单 。

MMC的 Security Policies管理单元提供了一个图形界面,可以对许多与安全相关的注册表设置进行配置,如 RestrictAnonymous,而这些在 NT 4之前都要手工配置。更好的是,这些设置可以按照域、计算机或组织单位(Organizational Unit)来应用,因此如果在

Page 114: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点Windows 2000域控制器应用了相关的设置,那么 Active Directory中的所有子对象都可以继承这些设置。这需要Group Policy管理单元,更多信息参见第 5章。

有趣的是,将 RestrictAnonymous设置为 1事实上并不阻塞匿名连接。但它确实阻止了通过空会话可能泄漏的大多数信息,当然,主要是对用户账号和共享资源的枚举。

即使 RestrictAnonymous被设置为 1,有些查点工具和技术仍然能从远程系统抽取敏感数据,因此不要过于自信。

为在 Windows 2000 系统上完全限制对 CIFS/SMB 信息的访问,可以将策略键Additional Restrictions For Anonymous Connections 设置 为 No Access Without Explicit Anonymous Permissions,如下图所示。(这等价于在 Windows 2000 注册表中将RestrictAnonymous设置为 2)。

把 RestrictAnonymous设置为 2,就可以防止 Everyone组被包含在匿名访问令牌中。它有效地阻塞了空会话的创建:

C:\>net use \\mgmgrand\ipc$ "" /u:""System error 5 has occurred.

Access is denied.

对旧版本的客户端、第三方的产品/或旧版本的Windows 平台来说,该设置可能引起连接问题。与 Windows 2000一同发行的 dsclient程序可以更新Windows 95客户端,减轻该问题的影响。更多的细节可以参见Microsoft知识库文章Q246261。

注 意

注 意

Page 115: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报绕过 RestrictAnonymous=1的限制

使用了 RestrictAnonymous也不要太轻松。黑客们已经发现,通过调用 NetUserGetInfo API , 将 Level 设 置 为 3 , 就 可 以 不 受 RestrictAnonymous = 1 的 限 制 。 即 使RestrictAnonymous设置为 1,http://www.HammerofGod.com/download.htm的 UserInfo工具也可以通过空会话查点用户信息。(当然,如果在Windows 2000上把 RestrictAnonymous设置为 2,空会话将根本不可能建立。)下面是用 UserInfo 工具去查点某个RestrictAnonymous=1的远程系统的Administrator账户的步骤。

C:\>userinfo \\victom.com Administrator

UserInfo v1.5 - [email protected]

Querying Controller \\mgmgrand

USER INFO Username: Administrator Full Name: Comment: Built-in account for administering the computer/domain User Comment: User ID: 500 Primary Grp: 513 Privs: Admin Privs OperatorPrivs: No explicit OP Privs

SYSTEM FLAGS (Flag dword is 66049) User's pwd never expires.

MISC INFO Password age: Mon Apr 09 01:41:34 2001 LastLogon: Mon Apr 23 09:27:42 2001 LastLogoff: Thu Jan 01 00:00:00 1970 Acct Expires: Never Max Storage: Unlimited Worvkstations: UnitsperWeek: 168 Bad pw Count: 0 Num logons: 5 Country code: 0 Code page: 0 Profi le: ScriptPath: Homedir drive: Home Dir:

Page 116: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点 PasswordExp: 0

Logon hours at controller, GMT: Hours- 12345678901N12345678901M Sunday 111111111111111111111111 Monday 111111111111111111111111 Tuesday 111111111111111111111111 Wednesday 111111111111111111111111 Thursday 111111111111111111111111 Friday 111111111111111111111111 Saturday 111111111111111111111111

Get hammered at HammerofGod.com!

来自 HammerofGod.com的另一个相关工具是 UserDump。它可以枚举远程系统的SID,然后对所需的 RID值逐一核查以收集所有用户的账号名。UserDump通过已知的用户或组的名字,从 RID 1001开始按照用户指定的次数对 SID进行迭代。UserDump总是先得到 RID 500(管理员)。接下来它从 RID 1001 开始,迭代指定的次数。(如果将“MaxQueries”设置为 0 或空白,那么将只枚举出 SID 500 和 1001)。这里是使用UserDump的一个例子:

C:\>userdump \\mgmgrand guest 10

UserDump v1.11 - [email protected]

Querying Controller \\mgmgrand

USER INFO Username: Administrator Full Name: Comment: Built-in account for administering the computer/domain User Comment: User ID: 500 Primary Grp: 513 Privs: Admin Privs OperatorPrivs: No explicit OP Privs[snip]LookupAccountSid failed: 1007 does not exist...LookupAccountSid failed: 1008 does not exist...LookupAccountSid failed: 1009 does not exist...Get hammered at HammerofGod.com!

另一个工具是 http://www.securityfriday.com的 Urity编写的 GetAcct,在技术上相差不多。GetAcct有图形界面,可以将结果导出为由逗号分隔的文件供以后分析,也不需要目标

Page 117: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报服务器上存在一个 Administrator 或 Guest 账号。如下所示, GetAcct 可以从一个RestrictAnonymous设置为 1的系统获得用户账号信息。

Windows XP/Server 2003对 RestrictAnonymous的改进我们已经注意到,在Windows 2000中将 RestrictAnonymous设置为 2即可防止空用户

连接到 IPC$共享卷,可是这样做时低版本客户端在访问那些如此设置的Windows 2000系统或可信域时会遇到麻烦(Windows 95客户端可以使用 dsclient实用程序升级以减轻影响,更多细节请参见Microsoft知识库文章Q246261)。在Windows XP/Server 2003上,控制匿名访问的接口已经重新设计,RestrictAnonymous能够更细致地控制更多的实际选项。

在查看 Security Policy 的 Security Options 节点时,最明显的改变是“No Access Without Explicit Anonymous Permissions”(相当于在Windows 2000上将 RestrictAnonymous设置为 2)不见了。在XP/.NET Server 2003中,Security Options下所有的设置都分类组织起来,与限制匿名访问相关的设置在前缀“Network Access :”开头的类别下。表 3-2给出了XP/Server 2003中新的设置和我们推荐的配置。

在表 3-2中,可以很清楚的看到,Windows XP/Server 2003新设置主要的好处就在于,可以对通过空会话能够访问的资源进行更细粒度的控制。提供更多的选项当然更好,但我们仍然偏爱Windows 2000中 RestrictAnonymous = 2的简单和优雅,因为这可以彻底解决空会话的问题。当然,兼容性会受到影响,但我们都愿意更安全一些,不是吗?对那些铁杆人士来说,Microsoft最好是能够提供最严格的选项。在我们的穿刺测试中,我们使用了很多种流行的工具,但都未能攻入按表 3-2给出的建议配置出来的系统。XP/Server 2003设置项 推荐配置Network access: Allow anonymous SID/Name translation

Disabled。阻塞 user2sid和类似的工具Network access: Do not allow anonymous Enabled。阻塞绕过 RestrictAnonymous = 1

Page 118: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点enumeration of SAM accounts 的工具Network access: Do not allow anonymous enumeration of SAM accounts and shares

Enabled。阻塞绕过 RestrictAnonymous = 1的工具

Network access: Let Everyone permissions apply to anonymous users

Disabled 。 尽 管 该 设 置 看 起 来 类 似RestrictAnonymous = 2,但空会话仍然是可能的

Network access: Named pipes that can be accessed anonymously

需要根据系统的角色来设置。可以删除SQL\QUERY 和 EPMAPPER 以防范 SQL和MSRPC查点活动

Network access: Remotely accessible Registry paths

需要根据系统的角色来设置。最安全的作法是将该键设置为空

Network access: Shares that can be accessed anonymously

需要根据系统的角色来设置。什么都不选是 最 安 全 的 , 默 认 设 置 是COMCFG,DFS$

表 3-2 Windows XP/Server 2003和Windows 2000上的匿名访问设置SecurityFriday.com公司的 Urity在 2004年 8 月发表的一篇文章里指出,即使是在Windows XP SP2环境里,“\pipe\browser”命名管道也可以通过空会话访问,随之而来的后果是 lanmanserver和 lanmanworkstation接口可以通过 NetSessionEnum和 NetrWkstaUserEnum这两个MSRPC调用去访问,最终的结果是我们可以远程查看目标系统中的本地和远程用户的用户名清单。据说这个问题已经在Windows Server 2003里得到了解决。

确保锁定了注册表匿名访问设置不会应用到远程注册表访问(您可能在 Windows XP/.NET Server的

Security Policy中,已经看到了与此相关的一个独立设置)。确认你的注册表已经锁定且不允许远程访问。注册表中与远程访问相关的键是 HKLM\System\CurrentControlSet\Control \SecurePipeServer\Winreg及其子键。如果注册表中有该键,那么有权远程访问注册表的将仅限于系统管理员。这个主键在Windows NT 平台的服务器版本里是默认存在的,但在桌面版本就不是这样了。可选的 AllowedPaths子键定义了注册表中允许访问的具体路径,它根本没有考虑到Winreg主键的安全,你们一定要仔细检查一下这项设置。说到参考读物,微软知识库文章Q153183(http://search.support.microsoft.com)很值得一读。另外,请定期使用诸如DumpSec这样强大的工具进行自我审查以确保没有任何漏洞。

注 意

Page 119: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报SNMP查点,UDP 161

流行度: 7简单度: 9影响力: 3风险率: 6

Simple Network Management Protocol(SNMP)被认为是一种网络管理和监控服务,其目的在于提供有关网络设备、软件、系统的详细信息,因而它也是攻击者经常选择的目标。此外,由于该协议缺乏有效的安全机制,已经使它有了一个外号“Security Not My Problem”(意思是“安防问题不关我事”)。

SNMP使用了一种简单的“用户名/口令字”身份验证机制来保护自己的数据。不幸的是,在 SNMP实现中有几个广为人知的默认口令。例如,在 SNMP协议的各种常见实现里,以只读方式访问 SNMP 代理的默认口令字(术语称之为“读操作通行字”)都是“public”。如果攻击者在端口扫描中识别出了 SNMP,他肯定会去试试这个字符串。

更糟糕的是,许多厂商已经实现了他们自己对基本的 SNMP 信息集(称作Management Information Base,或MIB)的私有扩展。这些定制的MIB可能包含特定厂商信息,例如Microsoft的MIB包含了Windows用户账号的名字。因此,即使您已经对通过TCP 139或 445端口访问 SMB的企图增强了防卫,但如果 NT系列的系统在默认配置中运行了 SNMP服务(就像您猜测的那样,它的读操作通行字也是“public”),类似的信息仍然有可能被泄漏。因此,使用 RK的 SNMP浏览器 snmputil可以非常轻松地通过 SNMP枚举Windows用户:

C:\>snmputil walk 192.168.202.33 public .1.3.6.1.4.1.77.1.2.25Variable = .iso.org.dod.internet.private.enterprises.lanmanager.

lanmgr-2.server.svUserTable.svUserEntry.svUserName.5.71.117.101.115.116

Value = OCTET STRING - Guest

Variable = .iso.org.dod.internet.private.enterprises.lanmanager.lanmgr-2.server.

svUserTable.svUserEntry.svUserName.13.65.100.109.105.110.105.115.116.114.97.116.111.114

Value = OCTET STRING - Administrator

End of MIB subtree.

snmputil命令行中最后一个变量“.1.3.6.1.4.1.77.1.2.25”是对象标识符(OID),它指定了Microsoft Microsoft 企业级 MIB的一个特定分支。MIB是一个层次化名字空间,因此

Page 120: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点沿着树向上“漫步”(即,使用一个更抽象的数字,如 .1.3.6.1.4.1.77)将会得到多得多的信息。记住所有这些数字是比较困难的,因此入侵者一般使用等价的文本串。下表列出了从MIB里能够查出来的大量信息的部分:

SNMP MIB(把本栏内容追加到.iso.org.dod.internet.private.enterprises.lanmanager.lanmgr2之后) 查出来的信息.server.svSvcTable.svSvcEntry.svSvcName 正运行着的服务.server.svShareTable.svShareEntry.svShareName 共享卷的名字.server.svShareTable.svShareEntry.svSharePath 共享卷的路径.server.svShareTable.svShareEntry.svShareComment 关于共享卷的注释.server.svUserTable.svUserEntry.svUserName 用户名.domain.domPrimaryDomain 域名你们还可以使用UNIX/Linux工具 snmpget来查询 SNMP,如下例所示:[root]# snmpget 192.168.1.60 public system.sysName.0system.sysName.0 = wave

尽管 snmpget有用,但使用 snmpwalk窃取整个MIB的内容要快得多,如下所示:[root]# snmpwalk 192.168.1.60 publicsystem.sysDescr.0 = Linux wave 2.4.3-20mdk #1 Sun Apr 15 2001 i686system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.linuxsystem.sysUpTime.0 = Timeticks: (25701) 0:04:17.01system.sysContact.0 = Root <root@localhost> (confi gure /etc/snmp/snmp.conf)system.sysName.0 = wavesystem.sysLocation.0 = Unknown (confi gure /etc/snmp/snmp.conf)system.sysORLastChange.0 = Timeticks: (0)[output truncated for brevity]

这份 SNMP查询结果向我们提供了大量关于目标系统的信息,包括以下这些:UNIX变体: Linux

Linux内核版本: 2.4.3

发行版本: Mandrake(请注意跟在内核版本号后面的“mdk”)硬件体系结构: Intel 686

攻击者可以使用这些信息来攻击系统。更糟的是,如果启用了默认的写操作通行字(例如“private”),攻击者能够改变刚才列出的一些参数,从而导致拒绝服务攻击或危

Page 121: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报害系统的安全。

当然,为避免键入这些信息,您可以从 http://www.solarwinds.net下载优秀的图形化SNMP浏览器 IP Network Browser来查看所有这些信息。图 3-5是使用该工具查看某网络里的一个启用了 SNMP服务的系统时的窗口画面。

图 3-5 在输入了正确的通行字之后,SolarWinds公司出品的 IP Network Browser工具可以从运行 SNMP代理的系统上查出大量的信息。图中的系统使用的是默认的读操作通行字“public”。许多流行的 SNMP实现都存在各种重大安防漏洞,使得远程攻击者能够获得管理权限。因此,如果有人在你的网络找到了一个没有打补丁的 SNMP agent,那么至少信息会被查点。

警 告

Page 122: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点

针对 SNMP查点活动的防范措施阻止此类行为最简单的方法是删除或停用 SNMP agent。如果无法关闭 SNMP,那么至

少要保证以适当的管理群名字(不是默认的"public"或"private")对 SNMP进行了合适的配置。当然,如果您在使用 SNMP管理网络,则要确认在周边所有的网络接入设备上阻塞了对 TCP和UDP 161号端口(SNMP GET/SET)的访问。最后,应仅让适当的管理控制台 IP地址才能访问 SNMP agent。例如,Microsoft的 SNMP agent可以配置为仅响应来自每个 IP地址集合的 SNMP请求,而此 IP地址集合由管理员定义。

也可以考虑使用 SNMP V3,细节参考 RFC 2571~2575。SNMP V3比V1更加安全,并提供了强化的加密和认证机制。(V2已经被V3 取代,因此我们这里不详细说明它)。不幸的是,V1是实现得最广泛的版本,因而许多组织不愿升级到更安全的版本。

在Windows NT 平台上,您还可以通过编辑注册表的办法只允许被批准的请求访问SNMP管理群名字,并阻止 Microsoft MIB信息的发送。首先,打开 regedt32并定位到HKLM\System\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities 。 选 中“Security | Permissions”,然后把权限设置为只允许批准的用户访问。接下来,找到HKLM\System\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents 主键,删除包含着字符串“LANManagerMIB2Agent”的键值,然后重新命名剩余的记录项以更新序列。例如,如果被删除键值的拨号是 1,就需要把原来编号是 2的键值重新编号为 1,把原来编号是 2的键值重编号为 2,依次类推,直到整个序列的最小编号是 1、最大编号是记录项总数为止。

希望在阅读本节之后,您已经了解了为什么允许将内部的 SNMP信息泄漏到公共网络上是一个大禁忌。有关 SNMP更多的信息,请到 http://www.rfc-editor.org搜索最新的 SNMP RFC。

BGP查点,TCP 179

流行度: 2简单度: 6影响力: 2风险率: 2

Border Gateway Protocol(BGP)是 Internet事实上的路由协议,路由器会使用该协议传播必要的信息,以便将 IP包路由到目的地。通过查看 BGP路由表,您可以确定与一个特定公司的网络,以便增加目标主机阵列的成员。并不是所有连接到 Internet的网络都使用BGP,该方法也可能不适用于特定的公司网络。只有具备超过一个上行链路的网络才使用

Page 123: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报BGP,通常只有中型到大型的组织会使用这样的网络。

攻击步骤很简明。下面是进行 BGP路由查点的步骤:1. 确定目标组织的ASN号码(Autonomous System Number,自治系统号)。2. 对路由器进行查询,找出所有以目标组织的ASN号码结尾的AS路径。BGP协议使用的 IP网络地址和ASN号码具有惟一性。ASN是一个 16位整数,由组织

向ARIN购买,以便在网络上识别该组织,也可以认为ASN就是某个组织的 IP地址。因为无法使用公司名称在路由器上执行命令,所以第一步是确定目标组织的ASN。有两种技术可以做到这一点,选择哪一种取决于您现在拥有信息的类型。首先,如果你已经知道了目标公司的名称,可以使用ASN关键字对ARIN进行whois查询(如图 3-6所示)。

图 3-6 搜索“ASN KPE”的输出:ASN号码是 16394,AS名称是KPENY-AS。其次,如果你已经知道目标组织的一个 IP地址,那么可以对路由器进行查询,使用

AS路径中的最后一项作为ASN。例如,您可以 telnet到一个公共路由器,然后执行下述命令以识别出作为AS路径的数字序列。最后一个数字 16394即为ASN:

route-views.routeviews.org 现在使用 AAA 进行登录,登录用户名是“rviews”。详见 http://www..routeviews.org/aaa.html。窍 门

Page 124: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点C:>telnet route-views.oregon-ix.netUser Access Verifi cationUsername: rviewsroute-views.oregon-ix.net>show ip bgp 63.79.158.1BGP routing table entry for 63.79.158.0/24, version 7215687Paths: (29 available, best #14) Not advertised to any peer 8918 701 16394 16394212.4.193.253 from 212.4.193.253 (212.4.193.253)Origin IGP, localpref 100, valid, external

在“Not advertised to any peer”下一行列出的数字就是 AS路径,我们这是需要最后一组ASN号码,即 16394。下面就用它去查询路由器以确定与其关联的网址:

route-views.oregon-ix.net>show ip bgp regexp _16394$BGP table version is 8281239, local router ID is 198.32.162.100Status codes: s suppressed, d damped, h history, * valid, > best, i – internalOrigin codes: i - IGP, e - EGP, ? – incomplete Network Next Hop Metric LocPrf Weight Path* 63.79.158.0/24 212.4.193.253 0 8918 701 16394 16394

请注意,上面这条命令中的下划线字符(_)代表着一个空格,美元符号($)表明AS路径的结尾,加上这两个字符是为了把AS路径里不是最终目的地的网络全部过滤掉。我们已经在输出清单删掉了重复出现的路径,这些路径在下面的讨论里没有什么用。不管怎么说,我们的查询识别出了一个网络:63.79.158.0/24,这个网络属于KPE公司。

执行这些步骤并整理输出是很琐碎的事情,这适合于自动化。让代码去做这些工作吧!我们以几个警告做结:许多组织不运行 BGP,上述技术可能无效。这样的话,如果搜

索ARIN数据库,就无法得到ASN。如果您使用第二种方法,那返回的ASN可能是代表客户发布 BGP消息的服务供应商的 ASN。到ARIN 复查一下,确认您得到的 ASN是否是正确的。由于需要搜索的路由项数目较大,我们示范的技术实际上是一个较慢的过程。

针对 BGP路由查点活动的防范措施很不幸,针对 BGP路由查点活动没有什么好的对策。只要你想让数据包被路由到你的

网络,就必须使用 BGP。在ARIN中可以使用不可识别的信息,但它无法阻止使用第二种技术来识别 ASN。未运行 BGP的组织无需担心,而其他组织可以自我安慰:BGP查点的风险较低,而本章中的其他技术都可以用于网络查点。

Page 125: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

Windows活动目录 LDAP查点,TCP/UDP 389和 3268

流行度: 2简单度: 2影响力: 5风险率: 3

在 NT 系列操作系统中,Windows 2000 引入的比较根本的变化是增加了一个Lightweight Directory Access Protocol,这是一个基于目录的服务,Microsoft称作活动目录(Active Directory,AD)。引入AD的目的是为与该公司技术基础结构相关的所有对象设计统一的逻辑表示。因此,从查点的角度来看,它可能是信息泄漏的主要来源。Windows Support Tools(可以在服务器版本安装 CD的 Support\Tools文件夹下找到)包括了一个简单的 LDAP客户端,称作 Active Directory Administration Tool(ldp.exe),该工具可以连接到一个AD服务器并浏览目录的内容。

1999夏天,在分析Windows 2000 Release Candidates版本的安全性时,笔者发现:只要能使用 ldp工具连接到Windows 2000域控制器(DC),通过一次简单的 LDAP查询就可以把现有的用户和用户组全部枚举出来。进行这种查询仅需要通过 LDAP建立一个身份验证会话。如果你已经通过其他手段攻陷了目标计算机上的某个账户,而 NetBIOS端口被阻塞或不可用,LDAP就提供了另一种查点用户的手段。

在下面的例子中,我们将说明如何使用 ldp工具去枚举用户和用户组。例子中的目标系统是Windows 2000域控制器 bigdc.labfarce.org,其活动目录的根环境是“DC=labfarce, DC=org”。我们假定BIGDC上的Guest账户已被攻陷,它的口令字是“guest”。以下是需要执行的步骤:

1. 使用 ldp连接到目标系统。选择 Connection | Connect(连接 | 连接)菜单,输入目标服务器的 IP地址或DNS名。您可以连接到 LDAP的默认端口 389,或使用活动目录的全局目录端口(AD Global Catalog port)3268。我们这里使用的是 389号端口:

2. 在连接建立后,使用攻陷的 Guest用户进行认证。打开 Connections | Bind,确认选中了Domain 复选框并输入了正确的域名,接下来输入Guest的口令,如下所示:

Page 126: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点

3. 在建立了经过认证的 LDAP会话之后,实际上就可以枚举用户和组了。打开 View | Tree,在确认对话框中输入根环境。比如说,在这个例子里,我们使用的是“dc=labfarce, dc=org”:

4. 在左侧窗格将显示一个节点。点击加号展开该节点,即可看到该目录下的根对象。5. 双击 CN=Users和 CN=Builtin容器。这两个容器展开后,你就可以看到该服务器上

所有的用户和所有的内建用户组了。Users容器如图 3-7所示。

图 3-7 Active Directory Administration Tool(即 idp.exe程序)可以通过经身份验证的连接查点活动目录,查出目标域里的用户和用户组

仅使用 guest连接怎么能做到这一点呢?某些早期的 NT 4系统服务(诸如 Remote Access Service和 SQL Server)能够在AD中查询用户和组对象。Windows 2000的活动目录

Page 127: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报安装程序(dcpromo)会向用户确认,是否放宽访问许可以允许遗留服务执行查找,如图3-8所示。如果在安装时选择了放宽限制,即可通过 LDAP枚举用户和组对象。

图 3-8 活动目录安装向导(Active Directory Installation Wizard)dcpromo会向用户询问要不要放宽对用户和组对象的默认权限,以允许早期的系统访问

针对活动目录查点活动的防范措施首先,应该在网络边界过滤掉对 389和 3268端口的访问。除非您打算完全开放活动目

录,否则不应该许可对目录的未经认证的访问。如果要阻止信息泄漏给内部的半受信网络上的未经授权的人员,必须限制对活动目录

的访问权限。和遗留服务兼容的模式和Windows内置模式之间的区别,本质上是系统内建的本地组 Pre-Windows 2000 Comptible Access的成员资格问题。Pre-Windows Comptible Access组的默认权限允许访问表 3-3中的目录。对象 权限 适用于目录的根结点 查看内容 本对象及其所有的子对象User(用户)对象 查看内容、查看所有的属性、读权限 User对象Group(用户组)对象

查看内容、查看所有的属性、读权限 Group对象表 3-3 Pre-Windows 2000 Compatible Access用户组对活动目录中的Group(用户组)和User(用

Page 128: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点

户)对象的权限如果你在如图 3-8 所示的窗口里选中了“Permissions Compatible with Pre-Windows

2000 Server”(与Windows 2000之前的Windows服务器相兼容的权限)选项,活动目录安装向导就会自动地把 Everyone 添加到 Pre-Windows 2000 Compatible Access 组里去。组Everyone包括了所有用户被身份验证过的会话。如果把 Everyone组从 Pre-Windows 2000 Compatible Access组删除(然后重新启动域控制器),Windows 2000的安全性将会更高。如果您由于某种原因需要降低安全等级,可以再使用下列命令把 Everyone用户组添加回去:

net localgroup "Pre-Windows 2000 Compatible Access" everyone /add

想了解更多这方面信息的读者可以参阅微软知识库文章 Q240855( http://search.support.microsoft.com)。

适用于“Pre-Windows 2000 Compatible Access”用户组成员的访问权限控制同样适用于在 NetBIOS空会话上进行的查询。为说明这一点,考虑在下面例子中 enum工具(先前描述过)的两个用法。第一次先对Windows 2000 Advanced Server 执行 enum命令,该计算机上的 Everyone用户是“Pre-Windows 2000 Compatible Access”用户组的成员之一:

C:\>enum -U corp-dcserver: corp-dcsetting up session... success.getting user list (pass 1, index 0)... success, got 7. Administrator Guest IUSR_CORP-DC IWAM_CORP-DC krbtgt NetShowServices TsInternetUsercleaning up... success.

现在,从 Compatible用户组删除 Everyone,重新启动系统,然后再进行一次上面的enum查询:

C:\>enum -U corp-dcserver: corp-dcsetting up session... success.getting user list (pass 1, index 0)... failreturn 5, Access is denied.cleaning up... success.

如果你仍使用着 NT4或更早的域(早就应该升级了!)并准备把它们融入到活动目录机制里去,应该先考虑对公司所有的 RAS、Routing and Remote Access Service(RRAS)和 SQL服务器进行升级,这样才能防止信息的泄

窍 门

Page 129: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报漏。

Page 130: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点

Novell NetWare查点,TCP 524和 IPX

流行度: 7简单度: 6影响力: 1风险率: 4

在“空会话”漏洞这方面,Microsoft Windows并非是惟一的例子。Novell NetWare也有类似的问题,甚至更糟糕。Novell 开放了大量的信息,而不需要向某台服务器或NDS(Novell目录服务)树认证。NetWare 3.x和 4.x服务器(启用了 Bindery Context)有一个称为“Attach”的漏洞,允许任何人查找服务器、树、组、打印机和用户名,而无须登录到服务器。我们将向您说明上述操作是多么的容易,并推荐堵塞漏洞的方法。通过“网上邻居”查点NetWare

查点Novell网络的第一步是了解连接在网络上的服务器和NDS树。有许多方法可以做到这一点,但最简单的是通过Windows的网上邻居。这个方便的网络浏览程序可以查询到网络连接的所有Novell服务器和NDS树(如图 3-9所示)。这种查点可以在很多环境下进行,包括传统NetWare网络的 IPX协议,或运行“纯粹的”TCP/IP协议(NetWare客户机软件实质上把 IPX打包在 IP数据包中发送到 TCP 524号端口)的NetWare 5或更高版本系统中的 NetWare Core Protocol(NCP,TCP 524号端口)协议。尽管不登录到 NDS树就无法得到Novell NDS树的信息,但上述能力可以为后续的攻击建立基础。

图 3-9 Windows中的“网上邻居”可以查点出网络上连接的Novell服务器和NDS树Novell Client32连接

Novell 的 NetWare Services 程序系统托盘区在运行,可以通过该程序的 NetWare Connections 选项管理你的 NetWare 连接,如下图所示。这种能力在管理附接(attachments)和登录两种连接方式时非常有用。

Page 131: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

更重要的是,一旦创建了一个附接,您就可以检索包含服务器的NDS树、连接号和完整的网络地址(包括网络号码和结点地址),如图 3-10所示。

图 3-10 Novell的NetWare Connections工具查到了目标服务器所在的 NDS树、连接号以及包括网络号和结点地址在内的完整的网络地址

这对于以后连接到服务器并获取管理权限(参见第 7章)是有用的。On-Site Admin工具——查看Novell服务器

无需认证到某台服务器,即可使用 Novell的 On-Site Admin 产品查看网络上连接的每一台服务器的状态。On-Site并不自行发送广播请求,它只是显示网上邻居所缓存的服务器列表,而网上邻居会周期性的发送广播以确认网络上的 Novell服务器。图 3-11显示了由On-Site Admin获得的大量信息。

Page 132: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点

图 3-11 在查点Novell网络时,Novell的On-Site Admin是最有用的工具On-Site Admin工具的另一个亮点是 Analyze(分析)功能,如图 3-12所示。选择一个

服务器并点击 Analyze按钮,可以收集到大量信息。使用 On-Site Admin工具的Analyze功能将会建立起与目标服务器的连接。

图 3-12 On - Site Admin工具查出了大量的信息

Page 133: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报尽管该功能收集的信息并不致命,但却进一步加剧了信息泄漏。使用 Novell的 On-Site Admin工具可以浏览 NDS树直至叶结点。在上例中,Client32

实际上附接到了在树中所选择的服务器,原因是在默认情况下 NetWare 4.x允许任何人浏览NDS树。你们在图 3-13所示的窗口里可以看到更多的敏感信息,如用户、用户组、服务器、卷等等。

图 3-13 On-Site Admin工具可以浏览NDS树直至叶结点Razor安防研究团队在 2000年 11 月公布了 NetWare 5.0和 5.1中的一个缺陷,该缺陷

允许查点 Novell环境中的包括 NDS对象和 Service Announcement Protocol(SAP)表中的动态列表,后者可能包括非 Novell的硬件和软件产品。Razor对该漏洞的评价是“类似于连接到域控制器的Windows空会话”。Razor 团队发布了名为 NCPQuery的工具,它可以探测有漏洞的服务器,并通过 TCP 524 号端口去查点有关对象(参见 http://www. bindview.com/support/Razor/Utilities)。

利用这里收集的情报,攻击者就可以进行主动系统渗透,就像第 6章描述的那样。NetWare查点防范措施一如既往,最好的防御是限制对有问题服务的访问。IPX不可能穿透 Internet防火墙,

但入侵者可以通过 TCP 524号端口访问 IPX网络。不要对不可信任的网络暴露该协议。通过向NDS树的根增加一个继承权限过滤器(inheritance rights filter,IRF),可以最

小化 NDS树被浏览的可能性。NDS树的信息是高度敏感的,绝不能让人随意地浏览其内容。

Page 134: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点为阻止通过 Razor发现的NetWare 5.x漏洞查点对象,可以从 NDS对象[Public]中删除

Browse权限,限制认证用户对NDS树的访问。在 http://support.novell.com网站上可以查到一些有用的安防补丁和推荐配置。

UNIX RPC查点,TCP/UDP 111和 32771

流行度: 7简单度: 10影响力: 1风险率: 6

像其他网络资源一样,应用程序之间也需要通信。一个最流行的此类协议是远程过程调用(Remote Procedure Call,RPC)。RPC使用一个称为 portmapper的服务(现在称为rpcbind)将客户端的请求与 RPC为监听程序动态分配的端口相匹配。虽然 RPC对防火墙管理员造成麻烦,但它还是非常流行的。用来探查远程主机上都有哪些 RPC正在监听外来请求的基本工具是 rpcinpo,这个工具可以说是 RPC查点方面的 finger工具,如果扫描时发现在端口 111(rpcbind)或 32771(Sun的 portmapper)上监听的服务器,用 rpcinfo探查定会有收获:

[root$]rpcinfo –p 192.168.202.34program vers proto port 100000 2 tcp 111 rpcbind 100002 3 udp 712 rusersd 100011 2 udp 754 rquotad 100005 1 udp 635 mountd 100003 2 udp 2049 nfs 100004 2 tcp 778 ypserv

这份输出报告可以让攻击者知道这台主机运行着 rusersd、NFS和 NIS(ypserv是NIS服务器)服务。接下来,攻击者可以使用“rusers”、“showmount -e”和“pscan -n”等命令去收集更多的信息(这些工具在本章后面会介绍到)。pscan工具的“-r”选项也可以用来查点这些信息。

rpcinfo工具还有一种可以用在Windows NT 平台上的变体叫做 rpcdump,编写者是Next Generetion Security Software Ltd. 公 司 的 David Litchfield ( 这 个 版 本 可 以在 http://www.atstake.com/research/tools/info_gathering主页上找到)。rpcdump工具的行为和“rpcinfo -p”一样,如下所示:

C:\>rpcdump 192.168.202.105

窍 门

Page 135: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

Program no. Name Version Protocol Port

(100000) portmapper 4 TCP 111(100000) portmapper 3 TCP 222(100001) rstatd 2 UDP 32774(100021) nlockmgr 1 UDP 4045

黑客还可以用 RPC玩其他一些把戏。Sun公司的UNIX版本 Solaris在 32771端口以上运行另一个 portmapper,因此即使阻塞了端口 111,定向到 32771端口的 rpcinfo仍然能够从 Solaris获取信息。

已知最好的 RPC扫描工具是 nmap,我们将在第 7章详细讨论它。黑客通常会向rpcinfo提供特定的参数以查找 RPC应用程序。例如,为查看目标系统 192.168.202.34是否运行了 ToolTalk Database(TTDB)服务器(该程序有一个已知的安全问题),可以输入:

[root$] rpcinfo -n 32776 -t 192.168.202.34 100083

数字 100083就是 RPC为 TTDB分配的“程序号”。如果使用 nmap工具,就用不着猜测特定的程序号(比如 100083)了,它的“-sR”选

项把这些麻烦事都包办了:[root$]nmap -sS -sR 192.168.1.10

Starting nmap V. 2.53 by [email protected] (www.insecure.org/nmap/)

Interesting ports on (192.168.1.10):(The 1495 ports scanned but not shown below are in state: closed)Port State Service (RPC)23/tcp open telnet4045/tcp open lockd (nlockmgr V1-4)6000/tcp open X1132771/tcp open sometimes-rpc5 (status V1)32772/tcp open sometimes-rpc7 (rusersd V2-3)32773/tcp open sometimes-rpc9 (cachefsd V1)32774/tcp open sometimes-rpc11 (dmispd V1)32775/tcp open sometimes-rpc13 (snmpXdmid V1)32776/tcp open sometimes-rpc15 (tttdbservd V1)

Nmap run completed -- 1 IP address (1 host up) scanned in 43 seconds

Page 136: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点

针对RPC查点活动的防范措施除非对 RPC采用某种形式的认证,不然没有简单的办法可限制这种信息泄露(请向

您的 RPC厂商咨询以获知可用的选项)。此外,您还可以迁移到其他的类 RPC程序包,如 Sun公司的 Secure RPC,它可以基于公钥口令字机制进行认证。最后,要确认 111和32771(rpcbind)端口以及所有其他的 RPC端口都已经在防火墙过滤掉,或在本地的UNIX/Linux系统中停用。

rwho(UDP 513)和 rusers(RPC程序 100002)流行度: 3简单度: 8影响力: 1风险率: 4

rusers和 rwho程序是比 finger程序还少见人使用的工具。如果远程主机上运行着 rwho守护进程(rwhod),我们就可以用 rwho命令查出那里的当前登录用户:

[root$]rwho 192.168.202.34root localhost:ttyp0 Apr 11 09:21jack beanstalk:ttyp1 Apr 10 15:01jimbo 192.168.202.77:ttyp2 Apr 10 17:40

rusers命令“-l”选项可以返回比 rwho稍微多点儿的类似信息,其中包括用户最后一次敲击键盘以后经过的时间。该信息由 rpc.rusersd RPC程序提供(如果该程序在运行的话)。我们在本章前面曾提到过,在某些 Sun工作站上,RPC portmapper服务通常运行在TCP/UDP 111号端口和 TCP/UDP 32771号端口上。这里是一个例子,使用 rusers客户端枚举了登录到一个UNIX操作系统的用户:

[root$]rusers –l 192.168.202.34root 192.168.202.34:tty1 Apr 10 18:58 :51root 192.168.202.34:ttyp0 Apr 10 18:59 :02 (:0.0)

针对 rwho和 rusers工具的防范措施类似于 finger,这些服务都应该关闭。这些服务的起源通常都是独立 inetd 超级服务器,

因此您必须在启动脚本中(通常位于 /etc/init.d/和/etc/rc*.d)查找对 rpc.rwhod和 rpc.rusersd的引用,并使用#字符注释掉相关的行。

Page 137: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报

NIS查点,RPC程序号 100004

流行度: 3简单度: 8影响力: 1风险率: 4

查找 UNIX网络信息时,另一个潜在的资源是 Network Information System(NIS),这是个很好的想法(一个网络信息的分布式数据库),但在实现时对安全特性考虑得较少。NIS的主要问题是:一旦了解了服务器的NIS域名,使用简单的 RPC查询即可得到服务器的 NIS 映射中的任何信息。NIS 映射是同一域内各主机关键性信息的分布式映射,比如passwd文件的内容。传统的 NIS攻击使用 NIS客户端工具猜测域名,或者使用诸如 pscan工具的“-n”参数搜索出相关的信息(该工具由 Pluvius编写,可以在许多 Internet黑客归档服务器上找到)。

针对NIS查点活动的防范措施对仍然使用NIS的人来说,不要将域名设置为容易猜测的字符串(如公司名称、DNS

域名等等)。这样做会使黑客很容易检索到信息,包括口令数据库。如果您不太愿意迁移到 NIS+(支持基于安全 RPC的数据加密和认证),那么至少也要对文件 /var/yp/securents进行编辑,将访问权限限制到预定义的主机或网络,还可以在选择支持 TCP Wrappers的配置下重新编译 ypserv。另外,在NIS表中不要包括 root和其他系统账号的信息。

SQL Resolution Service查点,UDP 1434

流行度: 5简单度: 8影响力: 2风险率: 5

传统上 Microsoft SQL Server在 TCP 1433号端口上监听客户端连接。从 SQL Server 2000开始,微软公司引入了在同一物理计算机上运行多个 SQL Server实例的能力(可以认为一个实例是一个虚拟的独立 SQL Server)。但根据 TCP/IP的规则,在某一给定的计算机上,1433端口只能作为一个实例的默认端口,其他的必须分配不同的 TCP端口。SQL Server Resolution Service能够识别出哪个实例在哪个端口上监听远程客户端的连接 ——可以认为该服务类似于 RPC端口映射器,有一点“SQL Server实例映射器”的意思。在 SQL Server 2000及后续版本中,SQL Server Resolution Service总是在UDP 1434号端口上监听。

Page 138: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点SQL Server Resolution Service一直默默无闻,直至一些 SQL安全专家注意到在 SQL

Server 2000的默认安装中就启用了该服务,它向外界发布出有关本地 SQL Server实例的信息(读者会看到,情形可能更糟糕)。其中的一位专家,sqlsecurity.com的 Chip Andrews发布了一个概念验证性质的工具 SQLPing,该工具查询 UDP 1434号端口并返回在给定计算机上监听的实例的情况。我们在评估基于Microsoft的客户端时经常使用 SQLPing,Chip的新版本有图形界面、IP 区段扫描、猜测口令功能——它能把配置不好的 SQL Server环境搅个底朝天。但在非默认端口上监听就安全吗?多考虑考虑吧。图 3-14显示了 SQLPing 2.2扫描一些 IP地址的情形,该工具对 UDP 1434号端口进行了探测,并针对找到的 SQL Server实例测试经典的“sa/null password”入侵手段能否得逞。

图 3-14 SQLPing可以扫描 SQL Server的实例并猜出了几个口令字如果发现在UDP 1434号端口有监听程序,那么除了能够识别出非默认的 SQL实例之

外,还可能存在着一个严重的堆栈溢出漏洞,该漏洞是由 David Litchfield于 2002年发现的 ( 参 见 http://www.nextgenss.com/advisories/mssql-udp.txt 和 http://www.microsoft.com/technet /security/bulletin/MS02-039.mspx)。

针对 SQL实例查点活动的防范措施Chip Andrews的站点 http://www.sqlsecurity.com列出了几个步骤,可以将服务器从

SQLPing之类的工具的视野中隐藏起来。第一步是标准作法,使用防火墙限制对该服务的

Page 139: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

62 第 1部分 收 集 情 报访问。Chip推荐的另一个作法较为激烈,即使用 Server Network Utility删除所有的网络通信库,这会使 SQL Server变成聋子和哑巴,除非指定了“(local)”或(.),此时只有本地的连接是可能的。最后,还可以使用 Server Network Utility工具里选中 TCP/IP netlib项中的“hide server”选项,并删除其他所有的 netlib。请注意,Chip自称在执行上文的步骤时遇到过奇怪的问题——SQL服务器的默认 TCP端口改为 32433,因此请小心这种情况。

NFS查点,TCP/UDP 2049

流行度: 7简单度: 10影响力: 1风险率: 6

UNIX实用程序 showmount在查点NFS时很有用,它可以导出网络上的文件系统。比如说,如果通过端口扫描发现目标系统的 2049号端口(NFS)有程序在监听,我们就可以用 showmount工具去查一下那里有哪些目录是共享的:

[root$]showmount -e 192.168.202.34export list for 192.168.202.34:/pub (everyone)/var (everyone)/usr user

命令行开关“-e”可以导出NFS服务器的导出表。NFS查点防范措施不幸的是,没什么办法堵塞该漏洞,因为 NFS的默认行为即如此,只能确认您共享

的那部分文件系统已经设置了合适的权限(读 /写应该限于特定的主机)并且在防火墙阻塞了NFS(端口 2049)。Showmount请求还可以被日志记录,这是捕捉攻击者的好办法。

NFS不再是UNIX/Linux上惟一可以共享文件系统的软件,开放源代码的 Samba软件也比较流行,它向 SMB客户端提供了无缝的文件和打印服务。前文提到,SMB(Server Message Block)是Windows网络的基础。Samba可以在 http://www.samba.org下载,它与许多 Linux包一同发行。尽管 Samba服务器的配置文件(/etc/smb.conf)中已经有了一些安全参数,但错误的配置仍然将会导致无防护的网络共享。

Page 140: 第1章 踩点 - tup.com.cn  · Web view1 - 10 of about 63 for intitle:"Welcome to IIS 4.0". (0.10 seconds)他这是在找什么?我们在他的屏幕上看到了一份长长的Windows

133第 3章 查 点

3.3 小结对恶意的计算机黑客来说,信息是时间之外最为强大的工具。幸运的是,系统管理员

同样能够使用信息来增强系统的防卫。当然,我们只接触了少数最常见的应用程序,由于时间和篇幅的原因,我们无法在此涵盖现存的几乎无限多种的网络软件。但使用这里列出的基本概念,您至少应该对网络上可能有漏洞的软件有了初步的了解,包括:

操作系统的底层体系结构 Windows NT系列的网络以 SMB为基础,这使得非常容易得到用户的口令字、文件系统导出清单和应用程序信息。可以像本章开始建议的那样,禁止或限制对 TCP 139和 445号端口的访问,并设置 RestrictAnonymous(或是Windows XP/Server 2003系统中与此相关的新的 Network Access设置),以锁固NT及其后续系统。此外,新的Windows操作系统并未完全解决这些问题,而且在活动目录方面引入了一些新的漏洞,比如 LDAP和DNS。Novell NetWare也会泄漏类似的信息,需要谨慎处理才能确保其私密性。

SNMP SNMP协议设计的目的是使企业管理软件尽可能得到比较多的信息,配置不正确的 SNMP agent(例如使用默认管理群字符串,如“public”)可以向未授权用户泄漏这些数据。

会泄露敏感信息的操作系统级服务 Finger和 rpcbind是提供了过多信息的服务程序的典型例子。此外,大多数内建的操作系统服务都会很容易给出包含版本号和厂商信息的旗标。停用诸如 finger 之类的程序,使用 RPC 的安全实现或 TCP Wrappers,并从厂商那里找到如何关闭旗标的方法。

定制的应用程序 尽管我们没有在本章太多讨论这一点,但大量从头开始定制开发的WEB应用程序的增加,导致了在安全方面考虑不周的应用程序代码泄漏信息的增加。要对您开发的应用程序进行测试、核查其设计和实现,以保持不落后于黑客。可以参考Hacking Exposed Web Applications,(McGrawHill/Osborn,2002)。

防火墙 许多信息泄露源可以在防火墙上堵住。这不是对有问题计算机不打补丁的借口,但防火墙可以大大减少受攻击的风险。

最后,请定期进行自我审查。你们的计算机开放了哪些端口?有许多因特网站点可以远程扫描你的系统。笔者比较喜欢用的一个免费工具是 http://www.linux-sec.net/Audit /nmap.test.gwif.html,它可以对单机系统或 C类网段进行简单的 nmap扫描(你打算扫描的系统必须在这个网段内)。TCP/UDP 端口清单及其用途可以在 http://www.iana.org /assignments/port-numbers主页上查到。