metasploit在渗透测试中经常被用到,实际上这套软件包括了很多工具,这些工具组成了一个完整的攻击框架.
metasploit或许在渗透测试中的每一方面都不能称为最好用的工具,但是这个工具有它自己的方便之处.
这篇文章中,我会演示在一次渗透测试中我们会经历哪些步骤,并且我会故意的只使用metasploit来完成这些工作,以此来显示metasploit的威力所在.
渗透测试中不能仅仅依赖工具,工具经常会出错.
最好亲自试下工具得到的结果,并且尽可能多用几个工具测一下,看下结果是不是相同的.自己手动确认漏洞当然是最好的了,比如说,如果一个工具测出来说可能存在匿名FTP登录,那我们就该试着去登录FTP服务器,看下工具的检测结果是不是正确的.
我习惯使用Backtrack 5R2系统,metasploit和postgresql数据在这个系统上都已经默认安装了.
这次用来演示的攻击目标是192.168.3.0/24这个网段.
好吧,现在开始实际操作.
打开msfconsole,并且检查数据库是否连上木有.
先来介绍一下工作空间的概念.在metasploit中工作空间被当作存放信息的逻辑单元.你可以为不同的渗透任务创建不同的工作空间.在不同的工作空间中很容易共享数据.
工作空间中有很多的放数据的表,如hosts,service,vulns,loot和notes.可以手动添加数据到表中,比如可以添加一个主机到hosts表中.
并且一个服务可以手动添加到services表中:
想到自动得到这些表的话,可以用db_nmap.不过你也可以用你喜欢的扫描工具,只要你把扫描结果导出成xml格式的文件,然后就可以把xml格式的文件导入到metasploit的数据库中.导入可以用msfconsole的内置db_import命令;看下面这张图,可以看出很多的工具都被支持:
我们先来用nmap扫一下:
看一下hosts表,可以看到表中有很多数据了:
看一下services表,我们可以只显示我们想看到的几列数据:
因为看到有这么多的windows主机,我们可以使用辅助模块,一个smb版本扫描器:
所以我们需要用set命令指定一个特定的hosts,但是那样的话我们就得一个一个的指定hosts,那不得烦死?所以这里metasploit就有一个很方便的地方,我们可以从services表中得到所有开了445端口的主机,生成一个文件,然后把这个文件当作hosts参数:
smb扫描器扫完以后,我们来看一下services表:
可以看到很多windows 2003的主机,只有一个主机安装了SP1.我们还可以看到主机的名字和域名是”TEST”.我们可以猜一下TEST-EMEA-DC-01是台域控主机,并且TEST-EMEA-DB-01可能是台数据库服务器.
OK,来看看这台可能的数据库服务器.
可以猜下如果是台数据库服务器,数据库应该是mssql,因为是台windows主机嘛.不过mssql默认的服务端口1433却貌似没打开.那我就要来测试一下到底有没有mssql了:
貌似我们扫出来了:
这里,扫描器发现了一个mssql服务,监听在1043端口.mssql服务版本9.00.4035.00,据此可知运行的是Microsoft SQL 2005 SP3.
我们查看一下services表,看下有什么改变:
services表除了增加1043端口的mssql服务,还增加了一个1433的端口,就是这个端口泄漏了mssql服务的真实端口.
现在,我们既然已经知道主机上有个数据库服务正在运行,而且知道是监听在哪个端口,我们可以再用metasploit暴力破解一下.
设置好RPORT参数,并且设置密码和用户名相同:
运行完后,成功找到密码:
OK,现在我们知道了密码.那么这个可是我们的第一个凭证.我们不妨来看看creds表:
exploit:
我们已经知道用户名,密码和端口号了:
获得一个meterpreter shell:
将这次会话放到后台.我们看下会话,可以看到有一个会话:
现在来看看怎么用post exploit模块来进一步渗透.
我们用smart_hashdump来查看hashes.设置好SESSION和GETSYSTEM参数:
然后运行:
OK,现在loot表中有一些数据了.
smart_hashdump获得了SYSTEM权限后,可以得到两个hashes.看起来administrator帐号和RID为500的localadmin一样.所以Administrator是一个假的帐号.
现在来看下loot表:
看下creds表,发现已经有三条记录了:
我们来看下localadmin帐号的密码在其他系统是否可以登录:
首先,我们添加从service表中添加hosts:
因此,我们不是在破解hash,而是简单地传递hash.我们把USER_AS_PASS和BLANK_PASSWORDS设置成false:
我们可以看到登录成功了很多:
更多的凭证在creds表中了:
现在我们有了windows系统的本地用户密码.我们可以用psexec exploit,但是那样的话,我们得一个接一个地做.在这个psexec exploit中,只有RHOST参数,没有RHOSTS参数,所以也不能用services表生成一个hosts文件.所以我们需要另一种自动化的方法-resource脚本.
感谢互联网上的各种资源,我收集到了这段脚本.修改这段脚本,很轻松地可以添加更多地模块:
现在我们需要执行psexec.不过我们不能直接地执行这段脚本,因为默认的PAYLOAD是windows/meterpreter/reverse_tcp,问题是反弹型的shell不能都连到同一个端口吧,所以这里我们要把PAYLOAD改成 windows/meterpreter/bind_tcp:
然后运行resource脚本:
现在我们就有9个会话了:
现在我们需要得到更多的hashes,虽然可以手工地进入每一个会话,然后得到hashes.但是我们需要自动化啊.我们可以用一个credential collector模块.这个模块会收集hashes,并且很重要的是它会清理好痕迹和找到domain tokens.不过这个模块还是需要自己动手对每一个session操作以此,除非我们再写一个resource脚本.
开始收集hashes和tockens:
会话5和会话6貌似有一些不一样的domain tokens:
我们可以使用这些token,这样我们对整个域就有管理员权限了:
好了,我已经演示完了metasploit中的一些组件的用法.
Happy Metasploiting…
与metasploit相关的文章推荐:
具体命令与参数:《Meterpreter初探》
攻防实战:《Metasploitable 2 漏洞演练系统使用指南(上)》
【via@spiderlabs】
Copyright © hongdaChiaki. All Rights Reserved. 鸿大千秋 版权所有
联系方式:
地址: 深圳市南山区招商街道沿山社区沿山路43号创业壹号大楼A栋107室
邮箱:service@hongdaqianqiu.com
备案号:粤ICP备15078875号