分类: 网络与安全
2009-09-19 18:48:01
本章主要讲述踩点的基本步骤,目前暂不作为重点,浏览一遍而已,待以后使用时再复习。
网络环境 |
需要确认的信息 |
因特网 |
域名 |
|
网络地址块和子网 |
|
可以直接从因特网进行访问IP地址 |
|
各个系统上运行的TCP和UDP服务 |
|
系统体系结构(例如SPARC或X86) |
|
|
(续表)
网络环境 |
需要确认的信息 |
|
访问控制机制和相关的访问控制表(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) |
外联网 |
域名 |
|
连接的起点和终点 |
|
连接的类型 |
|
访问控制机制 |
与远程访问有关的踩点技巧将在本书的第6章详细介绍。
步骤1:确定踩点活动的范围
步骤2:获得必要的授权
步骤3:可以从公开渠道获得的信息
*公司的Web网页
*相关组织
*地理位置细节
*雇员信息:电话号码、联系人名单、电子邮件地址、详细的个人资料
*近期重大事件(合并、收购、裁员、快速增长等等)
*可以表明现有信息安防机制的隐私/安防策略和技术细节
*已归档的信息
*心怀不满的员工
*搜索引擎、Usenet和个人简历
*让人感兴趣的其他信息
*公司的Web网页
很多缺乏安防意识的组织就那么毫不掩饰地把它们的网络或系统安防配置细节列在它们的因特网Web服务器上。
HTML源代码里的注释语句也是一个收集情报的好去处。在诸如“<”、“!”和“——”之类的HTML注释标记里往往会隐藏着一些你们在Web浏览器的窗口画面里看不到的秘密。推荐脱机浏览,工具:UNIX操作系统下的Wget()和Windows操作系统下的Teleport Pro()都是非常不错的选择。
注意其他网站:“” and ,www1, www2, web, web1, test, test1,等。Web接入,比如Microsoft Exchange servers,试试、,WebConnect by OpenConnect (), or . example.com/vpn。
*相关组织
比如外包公司。
/*
Author:
Developer:
Client:
*/
*地理位置细节
有了这个地址,攻击者就可以去“翻垃圾”(从垃圾箱里寻找废弃的敏感文件)、盯梢、进行社交工程或者展开其他非技术性的攻击。利用泄露的地理地址还可能非法侵入对方的办公大楼、有线或无线网络、计算机等。利用因特网上的各种资源,攻击者甚至可以获得目标建筑物的一份相当详尽的卫星图像。相关的网站有google地球和。
*雇员信息
在得到你的电话号码之后,攻击者就可以通过.phonenumber.com、.411.com或.yellowpages.com之类的网站查出你的地理地址。他们还可以根据你的电话号码为他们的“密集拨号”攻击设定一个攻击范围或是开展“社交工程”攻击以获得更多的信息和/或访问权限。
联系人名单和电子邮件地址也是非常有用的情报,可以推测相关账号。这类情报在社交工程方面也有很大的作用。
在因特网上,还有很多可以用来查找其他一些个人细节资料的资源:.crimetime.com/online.htm链接着另外几个资源;.peoplesearch.com可以让黑客了解到家庭电话号码、家庭住址、社会保险号码、信用记录、犯罪记录等个人细节信息。。如果能够在某位员工的家用电脑或笔记本电脑里偷偷安装一个击键记录器,黑客就很可能会收集到一些可以让他自由进出目标组织内部的信息。
*近期重大事件
近期重大事件往往会引起黑客们的极大兴趣。合并、收购、丑闻、裁员、短时间大量增员、重组、外包、大量使用临时合同商以及其他事件,这段时间的安全经常做得不好。还有财报。
*可以表明现有信息安防机制的隐私/安防策略和技术细节
在因特网上有一些专门归档保存过期信息的站点,你们可以从这类站点上轻而易举地检索出很多从其原始来源都无法查到的信息。由于这类站点的存在,很多因为安全原因而被特意删除的信息还是可以被那些知道这一诀窍的人检索出来。这类站点的例子有.archive.org地址处的WayBack Machine网站(如图1-3所示)、.thememoryhole.com和通过Google搜索引擎的cached results(缓存结果)链接查看到的缓存结果(如图1-4所示)。
*心怀不满的员工
对一个组织的信息安全构成真正威胁的另一个因素是心怀不满的雇员、前雇员和那些专门泄露内部交易等敏感信息的网站。你们只须到.f**ckedcompany.com或.internalmemo.com网站上去看看就能明白我说的是什么意思了。Google搜索引擎的高级搜索功能“link:www.company.com”可以在Google所知范围内将与目标组织有链接的网站查找出来,而在那些网站当中,我们经常可以发现一些故意泄露目标组织秘密或是针对目标组织的恶意网站。
*搜索引擎、Usenet和个人简历
参考:Google Hacking for Penetration Testers Vol. 2, by Johnny Long (Syngress, 2007).
我们来看一个简单的例子:如果你用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协议获得以全图形化控制台方式访问目标服务器的权限。这么说吧,有好几百种搜索条件可以让攻击者搜出包括网路摄像机、远程系统管理服务、口令字、数据库等在内的任何东西。我们不打算在这里复述别人的发现,你们只要到Google黑客技巧的权威站点之一上去看看就什么都明白了。那个站点上有Johnny Long建立的Google Hacking Database(GHDB,意思是“Google黑客技巧数据库” /ghdb.php)数据库,而他仍在不断地把新的搜索条件添加到那个数据库里去。
搜索工具; Athena 2.0 by Steveat snakeoillabs (.snakeoillabs.com); SiteDigger 2.0 (.foundstone.com); and Wikto 2.0 by Roelof and the crew (.sensepost.com/research/wikto).
这几种工具可以从Google搜索引擎的缓存内容里搜索出大量的安防漏洞、错误、配置缺陷、独有专用信息和各种有趣的安防细节,其范围涉及世界各地的Web网站。SiteDigger(如图1-5所示)允许你以某个特定的域为目标使用GHDB数据库或使用由Foundstone公司编制的搜索条件清单进行搜索,还允许你把新的搜索条件自行添加到数据库里。除搜索功能外,SiteDigger还具备自动升级功能——你可以下载最新的GHDB数据库和/或Foundstone搜索条件清单来配合该工具的使用,而这将保证你不会错过任何一种新的搜索手段。
另外还有网上的求助、简历和招聘
*让人感兴趣的其他信息
防范
措施:公用数据库的安全性
以上提到的许多种信息都是必须公诸于世的,想删除它们或者不让别人查到它们都是不现实的想法,这对那些股票公开上市的公司来说更是如此。因此,对必须公诸于世的信息进行评估和分类就变得非常重要。The Site Security Handbook(RFC 2196号文档,.faqs.org/rfcs/rfc2196.html;“网站安防手册”)是从策略方面解决这一问题的最佳参考文献之一。为确保自己的安全,你们应该定期复查本小节提到的各种资源,并把你们不想让别人搜索到的敏感信息从这些资源上删除干净。此外,在发布信息的时候,大家应该尽量使用一些不会让人们追查到你本人或你们组织的假名称,尤其是需要把信息发布到新闻组、邮件表或其他类型的公共论坛上的时候。
步骤4:WHOIS和DNS查点
Internet Corporation for Assigned Names and Numbers(ICANN;) 介绍可以参见教材。
—到某个地方去查询一个中央超级服务器就行了,对吗?不完全对。虽然上述信息的管理工作相当集中化,但实际数据却因为技术和政治方面的原因分别存储在全球各地的许多WHOIS服务器上。使事情变得更加复杂的是,WHOIS查询的语法、允许的查询类型、可供查询的数据和查询结果的格式在不同的服务器间往往有着很大的差异。此外,出于防范垃圾邮件制造者、黑客和资源过载问题的考虑,许多注册服务商都会限制人们进行某些查询;出于国家安全方面的考虑,.mil和.gov域的信息完全不允许普通大众进行查询。
只要有合适的工具、再加上一些技巧和足够的耐心,你们就应该可以把这个星球上几乎所有曾经注册过的单位和个人的域注册信息和IP注册信息查询出来!
*域注册信息
域注册信息(比如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查询的出发点当然是最合适不过的了。
我们先来看看如何通过Web浏览器进行WHOIS查询。首先,我们需要从站点查出所有.com域的最终注册机构。这个搜索告诉我们,.com域的官方注册机构是Verisign Global Registry Services(.verisign- grs.com)。在Verisign Global Registry Services的站点上,我们用“keyhole.com”作为关键字查出该域名是通过为.markmonitor.com的域名注册商进行的注册。如果我们再去那个站点,就可以通过它们的Web界面查询这家注册商的WHOIS服务器查找到keyhole.com域名的注册细节信息——大功告成!
注册人细节信息可以告诉我们目标组织的地理地址、电话号码、联系人名字、电子邮件地址、DNS服务器名字、IP地址等很多有用的信息。只要你认真按照上述流程进行查询,想查出这个星球上的任何一个(公共)域名的注册细节信息都不应该是件困难的事情。不过,有些域(比如.gov和.mil)的注册细节可能无法通过公共WHOIS数据库查询出来。
使用命令行WHOIS客户端程序去进行同样的查询,需要依次执行以下三条命令:
[bash]$ whois com ᄄCh whois.iana.org
[bash]$ whois keyhole.com ᄄCh whois.verisign-grs.com
[bash]$ whois keyhole.com ᄄCh whois.omnis.com
此外,下面这些网站可以自动完成这种WHOIS查询,但能否成功地查出想要的域名注册信息以及能查出多少细节就要看你们的运气了:
.allwhois.com
.uwhois.com
.internic.net/whois.html
最后,还有其他一些GUI界面的工具可以帮助你们进行这类查询:
SamSpade:.samspade.com
SuperScan:.foundstone.com
NetScan Tools Pro:.nwpsw.com
一旦你们掌握了正确寻找目标WHOIS服务器的诀窍,还可以在目标WHOIS服务器上进行该注册商所允许的其他查询。比如说,你们或许还可以查出通过某台DNS服务器托管的全部域名,或许查出名称里包含某个特定字符串的全部域名。虽说很多WHOIS服务器现在都已不再允许进行这些查询了,但在某个WHOIS服务器顺便查查允许进行哪些查询还是很值得的——说不定你们想要进行的查询正好是那台WHOIS服务器允许的。
*IP注册信息的查询
现在,你们已经知道如何查询域注册信息了,可是IP注册信息又该如何查询呢?我们前面讲过,IP注册事务是由属于ICANN的ASO的几家RIR具体负责的。下面,我们就一起去看看如何查询这些信息吧。
与TLD的情况不同,ICANN(IANA)的WHOIS服务器目前并不是所有RIR的最终注册机构,但每家RIR都知道自己都管辖着哪些个IP地址范围。我们只须从它们当中随便挑选一个作为IP注册信息查询的出发点,它就会告诉我们应该去往哪一个RIR才能找到需要的信息。
我们不妨假设你在查阅你的安防日志(这应该是你们的日常工作之一,对吧?)时看到了一个源IP地址是61.0.0.2的记录项,你想知道这个IP地址到底来自哪里。你决定从ARIN(.arin.net)开始这次追踪,于是把这个IP地址作为关键字输入到了ARIN网站的WHOIS查询提示框里(如图1-14所示),但它却告诉你说这个IP地址范围的实际管理者是APNIC。你去往APNIC的站点继续进行这次搜索(如图1-15所示)。在那里,你发现这个IP地址是由印度的National Internet Backbone公司负责管理的。
上述流程可以帮你追查出任何一个IP地址的实际拥有者——至少能帮你找到一位愿意提供进一步细节的知情人。和其他事情一样,在与不同公司和不同政府打交道的时候,对方的合作态度往往千差万别。我们想提醒大家的是,有很多种办法可以让黑客隐藏起他们的真实IP地址,你在安防日志里看到的IP地址不一定就是黑客对你发动攻击时实际使用的IP地址。
我们还可以通过在RIR的WHOIS服务器上搜索某个组织的正式名称来查询该组织的IP地址范围和BGP自主系统号码。比如说,如果我们在.arin.net上搜索“Google”,可以看到属于Google公司名下的IP地址范围和它的AS号码,AS 15169。
表1-2给出了其他一些WHOIS查询工具/数据源的下载地址和适用平台。
机制 |
资源 |
适用平台 |
|
Web界面 |
.arin.net .allwhois.com |
安装有Web客户程序的任何一种平台 |
|
Whois客户程序 |
大多数UNIX版本自带的whois查询工具 Chris Cappuccio(ccappuc@santefe.edu)编写的Fwhois程序 |
UNIX |
|
(续表)
机制 |
资源 |
适用平台 |
|
WS_Ping ProPack |
.ipswitch.com/ |
Windows 95/NT/2000/XP |
|
Sam Spade |
.samspade.org/ssw |
Windows 95/NT/2000/XP |
|
Sam Spade工具的 Web界面 |
.samspade.org/ |
安装有Web客户端程序的任何一种平台 |
|
Netscan工具 |
.netscantools.com/nstpromain.html |
Windows 95/NT/2000/XP |
|
Xwhois |
|
安装有X和GTK+GUI开发工具包的UNIX系统 |
|
Jwhois |
.gnu.org/software/jwhois/jwhois.html |
UNIX |
|
表1-2 WHOIS搜索工具和数据源 |
|
管理性事务联系人(administrative contact)是一项非常重要的信息,它可以告诉你在目标组织中具体负责因特网连接或防火墙管理工作的人叫什么名字。查询还会返回几个电话和传真号码。如果你正打算进行一次拨号穿刺测试,知道这些号码将非常有帮助——用密集拨号工具对这些电话和传真号码所在的号段进行一次“攻击”,往往能发现好几个潜在的调制解调器号码。此外,攻击者的另一种惯用伎俩是伪装成目标组织的管理性事务联系人,并通过社交工程技巧去欺骗目标组织中缺乏警惕性的用户,以伪造一些来自那些人的电子邮件去欺骗某位容易上当的用户。千万不要小看这种欺骗手段,会不假思索地应某位技术支持人员的要求而把自己的口令字修改成指定文字的用户数量之多绝对会让你们大吃一惊。
WHOIS查询结果中的记录创建时间和记录修改时间可以让我们推测出WHOIS信息的准确性。若是那些记录是在5年前创建的并再没有修改过,我们敢肯定其中的某些信息(比如说,管理性事务联系人)是过时的。
最后,WHOIS查询结果中的信息还可以告诉我们目标组织的正式DNS服务器都有哪些。清单里的第一个DNS服务器应该是目标组织的主DNS服务器,随后依次是该组织的一级后备DNS服务器和二级后备DNS服务器;这些信息在本章稍后的“DNS查询”小节里会派上大用场。此外,我们还可以利用WHOIS查询结果中的网络地址范围数据作为对ARIN数据库进行网络查询时的出发点。
防范措施:公用数据库的安全性
管理性事务联系人在离开原来的组织之后仍能改动该组织的域注册信息是一种并不鲜见的情况。因此,首先要保证这些数据库里的信息是准确的,一定要及时更新管理、技术和财务方面的联系人信息。另外得慎重考虑所列的电话号码和地址,因为它们可被用作拨入攻击或社交工程目的的着手点,最好考虑改用免费电话号码或不在本单位电话交换机范围内的号码。另外,我们曾见过某些组织使用一些虚构的人名来作为管理性事务联系人,这可以帮助它们发现和追查那些潜在的“社交工程师”——只要某位员工收到了来自这个虚构的联系人的电子邮件或电话,那些组织的信息安防部门就会立刻去追查其来源。
伴随域名注册的另一个危险来自有些注册机构允许更新注册信息的方式。比如说,Network
Solutions公司目前的注册机制允许已注册组织通过网络以在线方式对域名注册信息进行修改。Network Solutions公司使用Guardian算法来验证域名注册人的身份,该算法使用了三种不同的身份验证手段:电子邮件的FROM(发信人)字段、一个口令字和一个PGP(Pretty Good
Privacy,全球电子邮件加密标准)密钥。电子邮件的FROM(发信人)字段是最弱的身份验证方法,这种身份验证机制的安全隐患非常大。利用一个伪造的电子邮件地址去修改与目标域名有关的信息——这就是所谓的“域名劫持”(domain hijacking)攻击——对任何人来说都不是件难事。根据《华盛顿邮报》的报导,
虽然AOL公司在发现问题后立刻从这次攻击事件中恢复了过来,但这次事件本身充分证明一个组织在因特网上的生命有多么的脆弱,选用一个口令字或PGP身份验证机制等更加安全的解决方案来修改域名注册信息非常重要。从那以后,Network Solutions网站要求通过其“Contact Form”表单建立身份验证机制的注册用户必须正确地给出管理性或技术性事务联系人才能修改以前的注册信息。
步骤5:DNS查询
对一名系统管理员来说,允许不受信任的因特网用户执行DNS区域传送(zone transfer)操作是后果最为严重的错误配置之一。
[bash]$ nslookup
Default Server: ns1.example.net
Address:
> 216.182.1.1
Server: ns1.example.net
Address:
Name: gate.tellurian.net
Address: 216.182.1.1
> set type=any
> ls -d Tellurian.net. >\> /tmp/zone_out
寻找测试系统也是攻击者们偏爱的选择之一。原因很简单:测试系统通常不怎么启动众多的安全特性,口令字往往易于猜到,而且管理员也一般不关心谁登录进来。这确实是个“无照营业者”的完美之家。我们可以如下所示搜索测试系统:
[bash]$ grep -i test /tmp/zone_out |wc-l
96
介绍完手动进行DNS查询的方法之后,我们再向大家介绍几个可以自动完成这一查询的工具。这类工具有很多,host、Sam Spade、axfr和dig是其中比较常见的。
并非所有的踩点任务都必须使用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相关联的所有域名。不过,我们并不建议大家这么做,因为这两个顶级域里的域实在是太多了。
确定MX(邮件交换)记录
确定电子邮件在哪儿处理是定位目标单位的防火墙网络的重要突破口。在商用环境里,邮件大都是在防火墙所在的系统上处理的,最起码也是在同一个网络上。我们可使用host命令来获取更多的信息:
[bash]$ host tellurian.net
tellurian.net has address 216.182.1.7
tellurian.net mail is handled (pri=10) by mail.tellurian.net
tellurian.net mail is handled (pri=20) by
smtp-forward.tellurian.net
防范措施:DNS安全
DNS信息可以向攻击者提供大量的数据,因此有必要降低可在因特网上获取的信息量。从主机配置角度来看,必须把区域传送限定在只有经授权的服务器才能执行。就现代版本的BIND而言,named.conf文件中的allow-transfer指令可用于实施这个限制。在Microsoft的DNS中要限制区域传送,可使用Notify选项(具体参见.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加密机制的读者,请自行查阅.linux-mag.com/2001-11/bind9_01.html主页上的文章。
对区域传送操作加以限制可以拖延攻击者探测到IP地址和主机名所需要的时间。但因为名字查询仍然是允许的,所以攻击者还是可以通过手动方式对某给定网络地址范围内的所有IP地址逐一进行逆向解析。因此,在配置对外的名字服务器的时候,一定要让它只提供与那些直接接入因特网的系统有关的信息。对外的名字服务器绝不可以配置成有可能泄漏与内部网络有关的敏感信息。这一点看起来好像微不足道,但笔者曾在某些配置不当的名字服务器上提取出了16,000多个属于内部网络的IP地址和相关的主机名。最后,我们建议大家不要使用HINFO记录。正如你们将在本书后续章节里看到的那样,黑客还是可以通过其他一些办法相当准确地推测出目标系统所使用的操作系统,但那些办法毕竟要麻烦一些;如果你们使用了HINFO记录,黑客通过编程来挑选潜在的脆弱系统就会容易得多。
步骤6:网络侦察
traceroute是Van Jacobson编写的诊断工具,它允许你查看一个IP数据包从一台主机依次经由一系列主机到达其目的地的传输路径。traceroute工具利用IP数据包里的“存活时间”(time-to-live,TTL)字段让IP数据包途经的每台路由器返回一条ICMP TIME_EXCEEDED(传输超时)消息。IP数据包途经的每一台路由器都会对TTL字段进行减1操作,这使TTL字段就像是一个网际跳跃次数的计数器,而我们也正好可以利用traceroute工具的这一特点把IP数据包的实际传输路径准确地确定下来。正如刚才提到的那样,traceroute工具不仅可以用来发现对我们发出的数据包进行过滤的访问控制设备(比如一个基于应用程序的防火墙或数据包过滤路由器),还可以用来探查目标网络所采用的网络拓扑结构。
我们来看一个例子:
[bash]$ traceroute tellurian.net
traceroute to tellurian.net (216.182.1.7), 30 hops max, 38 byte packets
1 (205.243.210.33) 4.264 ms 4.245 ms 4.226 ms
2 (66.192.251.0) 9.155 ms 9.181 ms 9.180 ms
3 (168.215.54.90) 9.224 ms 9.183 ms 9.145 ms
4 (144.232.192.33) 9.660 ms 9.771 ms 9.737 ms
5 (144.232.1.217) 12.654 ms 10.145 ms 9.945 ms
6 (144.232.1.173) 10.235 ms 9.968 ms 10.024 ms
7 (144.232.8.97) 133.128 ms 77.520 ms 218.464 ms
8 (144.232.18.78) 65.065 ms 65.189 ms 65.168 ms
9 (144.232.16.252) 64.998 ms 65.021 ms 65.301 ms
10 (144.223.15.130) 82.511 ms 66.022 ms 66.170
11 (216.182.1.7) 82.355 ms 81.644 ms 84.238 ms
我们可以从上面的输出清单里清楚地看到数据包在它们的传输路径上是经过了几次网际跳跃之后才到达其最终目的地的。因为这些数据包在穿过多个网络时并没有受到阻断,所以我们可以有把握地认定目标主机是真实存在的,而到达最终目的地之前的那一次网际跳跃(第10次跳跃)应该就是目标网络的边界路由器。第10跳有可能是一台专用的防火墙,也有可能只是一个简单的数据包过滤设备——到底是什么我们目前还无法确定。但一般来说,当你在某个网络上找到一个真实存在的系统时,在它之前的那个系统通常会是一台路由分配设备(比如一台路由器或一个防火墙系统)。
这只是一个非常简单的例子。在一个复杂的环境里,不仅有可能同时存在多个路由路径——即所谓的多接口路由设备(例如Cisco 7500系列路由器)或通信负载平衡装置,还有可能出现每个路由接口分别使用不同访问控制列表(ACL)的情况。有时,有的路由接口会放行traceroute请求,其他的路由接口则会因根据相应的ACL表拒绝放行traceroute请求。这么一来,利用traceroute工具摸清整个目标网络的拓扑结构就变得极为重要。利用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
[bash]$ traceroute
traceroute to (
1 gate (192.168.10.1) 11.993 ms 10.217 ms 9.023 ms
2
rtr1.bigisp.net (
3
rtr2.bigisp.net (
4
hssitrt.bigisp.net (
5 * * *
6 * * *
在上面这个例子里,我们进行的traceroute探测——或者说我们让traceroute工具以默认方式发出的UDP数据包——被防火墙阻塞了。
现在,我们改为固定使用UDP 53号端口(DNS查询端口)作为traceroute探测数据包的目标端口再试一次:
[bash]$ traceroute -S -p53
traceroute to (
1 gate (192.168.10.1) 10.029 ms 10.027 ms 8.494 ms
2 rtr1.bigisp.net (
3 rtr2.bigisp.net (
4 hssitrt.bigisp.net (
5
因为我们发出的数据包现在已经是网络访问控制设备(第4跳)可以接受的了,所以顺利地到达了目的地。这就是说,仅仅通过改用UDP 53号端口作为探测数据包的目标端口,就顺利地探测到了网络访问控制设备身后的系统。从另一个角度来看,如果你打算探测的那个系统正在监听着自己的UDP 53号端口,它就不会像你预想的那样返回一条“ICMP无法到达”消息。这么一来,即使你发出的探测数据包已经抵达最终目的地,你在自己的屏幕上也看不到那台主机的名字或IP地址。
到目前为止,我们给出的traceroute示例都是基于命令行的。如果你是一位图形化操作界面的爱好者,可以选用VisualRoute(.visualroute.com)、NeoTrace(.neotrace.com)或Trout(.foundstone.com)之类的图形化工具来追踪路由。VisualRoute和NeoTrace工具都可以把各次网际跳跃显示在一个图像里,还都可以在探测路由的同时进行WHOIS查询。Trout工具采用了多线程技术,这使它成为探测速度最快的traceroute工具之一。VisualRoute的图像效果非常棒,但对大型网络的侦察效果不太让人满意。
有一点希望大家要特别注意:traceroute工具用来追踪路由的TTL字段是IP数据包表头的组成部分之一,因而并非只有UDP或ICMP数据包才能进行这种探查。从理论上讲,任何一种IP数据包都可以用来追踪路由。换句话说,即使防火墙阻断了UDP和ICMP数据包,我们也可以利用路由追踪技巧绕过它们。tcptraceroute( /tcptraceroute)和Cain & Abel(.oxid.it)就是可以使用TCP数据包对特定端口上的通信进行路由追踪的两种代表性工具。还有一些技巧可以探测出某给定访问控制设备所具体使用的ACL表。防火墙协议扫描(firewall protocal scanning)就是这类技巧之一,firewalk则是这类工具的典型代表,我们将在第11章向大家介绍它们。
针对网络侦察活动
的防范措施
我们在本章中仅仅触及了网络侦察技巧,以后各章中将看到更多的入侵技巧。不过,有几种防范措施可以识别和挫败我们此前向大家介绍的网络侦察手段。首先,许多商业化的网络入侵监测系统(network intrusion detection system,NIDS)和反入侵系统(intrusion prevention system,IPS)都能够监测到这类网络侦察活动。作为最优秀的免费NIDS软件之一,由Marty Roesch开发的Snort(),也可以监测到这类活动。如果你有兴趣对正在使用traceroute工具对你进行侦察的人进行反击,不妨试试由Rhino9团队的Humble编写的RotoRouter软件(.usrsback.com/UNIX/loggers /rr.c.tgz),这个工具可以把外来的traceroute请求记入你的系统日志并生成种种虚假的响应消息。最后,根据站点的安防策略,你还可以把网络边界路由器配置成只允许特定的系统响应ICMP和UDP数据包,这可以把你的暴露面降到最低的水平。