隐藏和盗窃(上)
若是你想攻入别人的网络,圣诞节和新年之间的一周是最好的时间。我喜欢一年中的这个时候,四周没有人,大多数地方最多只是最少数量的职员。若是你很能干且作得很好,那么就不会被自动控制系统注意到。这是一年中能够***这些家伙们的电子商务站点的最美好的时光——我猜确定有大量的信用卡号码。
经营这些站点的人欠个人账。我从他们那儿买过一些计算机硬件,他们给送货。而当这些货送到时有损坏,我就给他们的服务电话打电话让他们退货或者给我换一个,但他们说那个卡不能换,由于这是清仓甩卖的。但是他们的站点并无说那种卡是甩卖的呀!我跟支持人员说,可是他们不听。他们说,“规定就是规定,”“难道你没有看看下面的小字吗?”若是他们就是这种态度……等着瞧吧,总的来讲他们还算是好人,只是要给他们一点教训而已。
因此,想到这里,圣诞节以后的一天我什么也没作。家庭聚会结束后,我决定去看看他们的站点怎么样。我只是在引擎架下浏览了一下。没有什么错误。我时常处处***一些Web站点——但不破坏,我只是四处看看。过去我***的大可能是些大学和国家政府站点。最近我***了一些更有趣的站点,并且这些站点的确是十分有趣。事实上,这让一个无聊的下午充满了挑战。
如今个人一个原则是毫不经过开合桥在城堡咆哮。他们的电子商务(也许有数据库)Web站点存放在某个数据中心。由于我沿路追溯过他们的Web站点因此知道这些,我得到了与我曾经追溯过的主要Web站点彻底不一样的其余主机的路线。因此看上去它彷佛把电子商务信息与公司网络分开了,看来颇有道理。这使我很容易决定如何接近他们的网络。我想看的是公司网络,而不是他们的数据中心,由于我想也许数据中心有更严密的安全措施。
工具
首先,我显然应该选择Linux平台。几乎我用的全部工具都运行在Linux下。个人一套探索器在Linux下运行得真的很好。如今OpenBSD已经就绪了,我还算得上是个Solaris爱好者,只是在工做时,我不用Linux平台。我并不关心它是Red Hat,Mandrake,仍是Debian。这并不重要。重要的是你能根据须要调整操做系统。这才是关键。你要能确信底层操做系统是可靠的。根据有关笔记,个人自制工具是Bourne Shell,Expect和Python脚本的混合体,也有少许Perl,但大多数脚本都是用Python写的。若是你想在这类游戏中获胜,代码重用很重要。
我喜欢用nmap作网络搜寻,这是一个很好的工具。我过去用strobe,而nmap提供了更多的功能——包括从常规链接搜寻到FIN搜寻,UDP搜寻,慢速搜寻,快速搜寻,控制端口等全部功能。它是我选择的在网络上肯定目标的搜寻器。我偶尔用它来肯定目标操做系统。然而,我已经发现,在某些状况下,它破坏目标机器,那却是有点无心中的大泄露。
为了识别目标操做系统,我倾向于依靠获取标识。虽然nmap的确为远程操做系统提供指纹,但它有时也会犯错误。我看到过nmap将Solaris7当成了OpenBSD系统。获取标识仍然是远程操做系统指纹的“金科玉律”。只是大多数系统管理员不知道。若是他们只要花时间减小系统识别的步骤,就会使个人工做困可贵多。不会花太多时间——只是很小一下子的努力就行。获取标识有点危险,由于为了获取这个信息通常要创建一个彻底链接;然而用nmap的操做系统指纹功能把你的目标击倒也不必定是个好主意。
那么,识别操做系统选择什么端口好呢?两个对抓取标识较有用的TCP端口是80端口(WWW)和25(SMTP)端口。21端口(FTP)和23(Telnet)端口实际上不是好的选择。若是另外一端很灵活,就能经过路由器的访问控制列表(ACL),防火墙或通过TCP打包器的访问控制得到被锁定的21端口和23端口。不管怎样,它是至关安全的,那两个端口都在某个地方记下日志。是的,你也许一样对WWW和SMT作了日志。区别在于信息一般隐藏在某个管理员并不真要去看的日志文件里,由于他们天天都有成千上万个链接。
如今,我让应用系统依赖多种工具。选择这些工具几乎都是由于它们简单并且可以根据个人需求而修改。对于Web服务器我倾向于RFP的Whisker程序。是的,我试过Nikto并且很喜欢它(我甚至用它来作Whisker的候补),可是我如今开始真正相信Whisker了。若是你打算用工具得到成功就得相信它们。你会问“可是SSL服务器怎么样?”很好,那些服务器有sslproxy。而它自己并非一个用来***的工具,你能用它来给在SSL服务器上运行的Whisker提供加密。很好,不是吗?
对于微软的SQL Server服务器,能够用LinSQL。这是一个神奇的工具,实际上它是我根据本身的须要作了修改的linux的Microsoft客户端。我一直很惊讶网络管理员将Microsoft SQL Server放在他们能在Internet上访问到的地方。另外令我吃惊的是,我遇到过多少次Microsoft SQL Server的sa帐号的密码都是空的。有时,这已经足够提供对网络的直接访问了。LinSQL依靠xp_cmdshell扩展存储过程来执行你发送到操做系统的任何命令。一些足够敏捷的管理员便能从SQL服务器中删除这个过程。对于这些状况,我使用SQLAT做为SQL审计工具。
SQLAT是另一个能够在Microsoft SQL服务器上使用的Linux/BSD工具包。SQLAT本质上是一套能作目录***、上传文件、读系统注册表及导出SAM的工具。也有一个工具可用HTML格式的输出对SQL服务器进行最起码的分析。为了运行一些工具套件须要访问sa帐号,但通常这不是问题。若是SQL管理员删除了xp_cmdshell扩展过程,这个工具能临时恢复xp_cmdshell。为了完成这件事情,包含xp_cmdshell代码的动态连接库必定还要在系统上。SQLAT提供了有关SQL服务器的有价值的信息,并使他更容易攻破。一旦收集到了有关SQL服务器的必要的信息,我就能很快得到对系统的访问。
个人工具箱内容丰富多样,包含我多年来得到的一整套探索器。我将全部的东西放在被我叫作“***树”的目录结构中。基本上,我让探索器在UNIX探索器和基于Windows的探索器之间进行***。我从这儿攻破了两个目录进入远程和本地的子目录。而后将远程和本地目录分红针对不一样服务的探索器。下一级是攻破他们影响操做系统的探索器。***树的结构被镜像到***树目录结构中,若是我须要Solaris8 snmpXdmid服务上的探索器,就要到名为/exploits /unix /remote /snmp /solaris /8的目录下查找探索器代码或者已经被编译的二进制文件,并准备运行。树型结构以下图所示:
探索器***树型结构
这里不能列举出所有。我已经保存了Cisco路由器和交换机这样的网络设备探索器的探索结果和信息。我有一个对不一样系统和帐号的默认密码专用的目录。总之,我有一个很大的***网络的工具箱。
一旦进入系统,我通常试图导出SAM或捕获UNIX密码和shell文件。若是能获得这些信息,那么我就能将他们下载到本地系统并经过John the Ripper运行。我我的认为它是最好的开源密码***程序。我已经用了很长时间了,还用它跟朋友交换john.pot文件。个人john.pot集如今已经超过10MB了,并且John使用的密码列表有将近60MB了。在Windows系统中,若是可以访问并得到SAM,就能保证得到密码并用它来进一步探索此次访问。
搜寻
若是打算搜寻目标,就须要选择一个合适的日子来作这件事情。你必须认真地考虑被发现的可能性,尤为是IDSs现已变得愈来愈好了。尽管晚上是搜寻的好时间,由于他们极可能正实行NOC我的轮班制,我以为这一天应该是个较好的选择。在那天,他们本身站点大量的进出流量会掩盖个人巡视。
开始,没有一个正在巡视的站点Ping了他们的主机。这使那类活动至关低级,从而触发一些IDS。并且大部分网络,若是是紧密的,就会过滤掉进入的ICMP回应请求。因此,我从所谓的“盲查”开始。这种查询基本上使用名为TCP SYN查询的方式来查询一些普通端口。用这种类型的查询,nmap完成了TCP用来创建链接的三程握手的三步中的两步。若是我当心地慢慢搜寻,就能够避免被IDSs发现。
我宁愿用SYN搜寻而不是全链接搜寻。由于链接搜寻极可能在某个地方记下链接日志,可能向网络管理员告警有某个可疑的东西正在接近。因此,对于这些家伙,我减慢巡视,而且只查找20,21,22,23,25,80,443端口(我但愿能找到80和443端口,也想找到其它的端口)。
最初的扫描进行得很好。我肯定了6个有用的端口。怎么来定义有用呢?问得好。有用意味着那台主机上有多个端口开放,运行了能提供进入网络通道的服务。其中某个主机运行着两个服务,尽管两个服务都被绑定到同一个应用系统——一个Web服务器。他们显然都在提供过滤功能的路由器后面(好像我猜对了),他们的操做系统有很大不一样。我作了一个本身发现的系统和服务列表(为了代表个人“清白”,IP地址已经改了)。
查找到的主机和可用的服务
IP地址系统 |
开放的端口
|
运行
|
10.89.144.133
|
80(WWW)
|
Cisco device
|
10.89.144.140
|
80(WWW)
|
Cisco device
|
10.89.144.155
|
80(WWW),443(SSL)
|
Windows NT4.0
|
10.89.144.154
|
22(SSH)
|
未知
|
10.89.144.166
|
80(WWW),443(SSL)
|
Windows 2000
|
10.89.144.241
|
25(SMTP)
|
Sun
|
尽管有了这个列表,可是我如今还须要找到更多信息。那么,这种Cisco设备——是什么?是路由器仍是交换机?既然我已经访问到了这些设备上的Web服务器,这就是我开始的地方。
愚蠢的Cisco骗局
Cisco交换机和路由器在其Web服务器上曾经有一个有趣的bug。这个bug容许你经过Web服务器认证,可以对设备上所选择的命令进行访问。真的很简单,我很惊讶,在我以前没有人发现它(可恨,我甚至想踢本身一脚为何没有早点琢磨这事)。不管怎样,探索器是这样运行的:只要向设备发送与如下相似的URL:
http://ip-address/ <xx>/exect/-/show/config,而<xx>是从19到99的数。若是Cisco设备有弱点,就能看到如下信息:
CiscoWeb认证旁路缺陷
很是聪明。但是,我还不知道除了用Web服务器外还打算怎么访问这些设备,后来我想出来了。由此,如今我看着屏幕,显然是个路由器,并且就是Cisco路由器。
Cisco路由器显示版本信息
如今我了解了更多关于这个特殊的路由器的信息。它是一个运行在Internetwork操做系统(IOS)12.0(7)T上的Cisco1720路由器,1720吗?是的,我想不出来这儿为何是这么一个小的路由器。可是,嗨,我不是他们的网络管理员。重要的是我如今有了一个可用的密码了。
成功的网络访问(不被注意,也不被人抓住)须要时间和努力。就像好莱坞电影里演的那样,你会认为你所要作的事情就是连到网络,输入几个密码,而后就进去了。多么荒唐。要花时间的,尤为是网络管理员已作了不少努力使网络安全。
无论怎样,我还要检查一下另一个Cisco设备。这个设备不容易受到同一个bug的感染。事实上它想要一个用户名和密码进入受权的EXEC模式。那么,我如今有两个密码能够试:从路由器(***)得到的VTY密码和启用密码(Cisco),启用密码没有什么问题就让我进入了。
访问Cisco路由器
因此,我访问了那台路由器和交换机。这确定是个开始。问题是这并非我期待的真正的交互式命令行接口。哦,不要误导我,我很高兴访问它,可是要真的到达任何地方,我还须要更多。因此,我须要把注意力转到更潜在的东西。我决定稍后再回到路由器和交换机。如今,我想看看另外四个系统。
计算机就是计算机,McNealy先生
我选定的下一个目标是邮件服务器。识别这个系统真的很容易——真使人厌烦。基本上就是链接到SMTP端口,获取标识。很是容易、简单。
Sun Sendmail服务器
从这些信息中我能够收集到几件事情。他们有Solaries7系统(简称sparc7s,因此我能够将处理器的范围缩小到SPARC)。OS版本是经过sendmail版本8.9.3+Sun/8.9.1识别的。这是Solaris7 SendMail的默认版本。他们甚至根本没有真正上锁。我能够用HELP,EXPN和VRFY。有许多信息泄露出来。因此,我可以访问邮件端口,可是我真正想用的是Telnet访问。我继续进入到Web服务器。
(待续……)