1.工具介绍
PowerShell Empire是一款开源后渗透框架, 渗透测试人员和红队可以使用它来执行对手模拟,。在渗透阶段后期, 攻击者往往需要进行横向移动、提权等操作, 而该工具可以为使用者在后渗透阶段提供很大的便捷。
该框架专注于使用PowerShell脚本语言针对Windows环境进行攻击自动化和执行恶意命令。PowerShell Empire有三个主要组件:
-
Empire服务器 - 采用Python编写,包含添加不同功能的模块。
-
Empire客户端 - 与PowerShell Empire一起内置,支持远程访问Empire服务器。
-
GUI客户端 - 提供了一个名为Starkiller的图形界面,用于访问Empire服务器。
要使用PowerShell Empire,需要在目标系统上执行一个Stager。这个Stager是一个小段代码,它与Empire服务器通信并生成一个代理,提供对目标系统的远程访问。Empire客户端(或GUI客户端)允许连接到Empire服务器并通过内置命令或更复杂的Empire模块与该代理进行交互。
2.工具优势
使用代理、服务器和客户端来控制被入侵系统通常被称为命令和控制(C2)框架。PowerShell Empire是众多可用的C2框架之一。还有其他开源框架,如Slither,以及商业框架,如Cobalt Strike。这些工具在安全领域中用于在渗透测试或红队行动期间模拟对手,以便防御者能更好地保护自己免受攻击。
渗透测试人员和红队人员经常会选择使用C2框架而不是像Metasploit这样的渗透测试框架,原因如下:
-
C2框架专为后渗透设计,具有内置工具和横向移动技术。
-
C2框架擅长规避网络检测。具备众多内置功能,可以规避传统安全解决方案,在目标网络中很难被发现。
-
C2框架具有高度可定制性。许多框架允许自定义创建新的代理、调整C2配置文件,并添加新功能,用于模拟实战威胁。
-
C2框架通常具有报告功能,支持记录发现的安全弱点、执行的操作以及攻击的影响。
-
C2框架专为安全处理和加密客户数据而设计。
PowerShell Empire的优势:
-
集成功能强大, 在渗透后期阶段能够在内存中自动化执行PowerShell脚本 ,难以被检测。
-
专为渗透后期阶段设计,并具有用于提权、横向移动和数据外泄的内置工具。
-
模块化架构设计,框架扩展能力强大。
-
具备活跃的社区支持, 并提供持续的更新和新功能开发。
PowerShell Empire的缺点:
-
以Windows为中心,而在Windows环境之外的功能有限。
-
收集PowerShell日志(或完全阻止它)的现代安全解决方案严重影响了PowerShell Empire的功能。
-
对于需要理解PowerShell脚本和框架功能的新用户来说,该框架存在一定的学习曲线。
3.工具安装
在Kali Linux上通过运行以下命令来实现:
sudo apt update && sudo apt upgrade
sudo apt install powershell-empire
接下来,运行以下命令sudo powershell-empire server来启动PowerShell Empire服务器。
另开一个终端, 运行命令:sudo powershell-empire client 连接到Empire客户端。
4.监听器配置
PowerShell Empire的Stagers连接到Empire服务器后, 会创建一个代理, 客户端与之交互并用来控制被入侵系统。为了允许Stagers连接到服务器, 还需要创建一个监听器以方便回连。这些监听器将监听来自Empire Stager的连接, 并在Stager连接时生成一个代理。
要在PowerShell Empire中设置监听器或要获取所有支持的监听器列表, 运行命令:use listener进行查看。
要使用http监听器, 输入命令: uselistener http,如图:
设置完成之后, 将在Empire服务器的80端口创建一个监听器, 并显示当前正在使用的所有选项。可以通过调整上面列出的选项来自定义该监听器, 如果要保存这些选项并启动监听器, 运行命令: execute
可以通过运行命令:options来重新检查监听器的选项, 如图:
执行命令back从监听器界面返回。然后,使用命令listeners查看Empire服务器上的所有活动监听器。
5.Stagers配置
监听器配置完成并运行之后, 需要接着创建一个Stager。Stager是一段代码, 它在目标机器上执行一个Payload, 该Payload会回连到监听器。该Payload包含生成代理所需的功能, 能够远程控制被入侵系统,同时启动加密密钥交换协议以保护C2通信。
PowerShell Empire包括几种不同类型的Stager:
-
恶意脚本(.bat、.hta、.vbs等)
-
动态链接库(DLL)
-
可执行文件(.exe)
-
Shellcode
-
Microsoft Office宏
-
用于Linux和macOS的跨平台Stager
要创建一个Stager, 需要运行命令:usestager, 如图:
要使用windows_launcher_bat Stager, 运行命令:usestager windows_launcher_bat, 这是一个自删除Stager,它使用批处理文件将shellcode注入到一个正在运行的进程中, 并在完成后删除自身。
当然也可以更改默认的Stager设置, 首先运行命令:options, 然后使用set命令, 后面跟要更改的选项, 如图:
6.Agents配置
在上面的配置中,完成了监听器和Stager的创建, 最后一步是在目标系统中执行创建的Stager, 一旦回连Empire服务器,将生成一个新的代理, 最终实现远程控制目标机器。
首先, 将创建的Stager传输到目标机器上, 运行execute命令, PowerShell Empire会告诉我们这个Stager被写到了哪里,如图:
将Stager传输到目标机器上并执行,如图:
回到PowerShell Empire, 运行agents命令列出当前的激活agent,如图:
可以看到Stager连接回来后创建了一个新的代理, 现在可以重命名一个复杂的名称, 如果要更改代理名称,可以运行命令: rename 旧名称 新名称,如图:
7.功能模块
要对目标机器执行操作,需要使用PowerShell Empire的模块。每个模块执行特定的功能,例如收集浏览器数据、转储密码、利用本地漏洞、建立持久性、执行侦察和横向移动。
PowerShell Empire拥有超过400个模块供使用,使用PowerShell、Python和C#编写。下面将介绍一些流行的模块。
现在通过运行命令usemodule powershell_privesc_getsystem来使用powershell_privesc_getsystem模块:
该模块可以将管理员权限提升为SYSTEM权限, 从而可以进行转储凭据、窃取Kerberos令牌并进行横向移动。使用命令:set Agent 7B3ZS8Y9设置要通过该模块执行的代理, 之后执行execute以运行该模块。注意, 这里必须使用代理的ID进行设置, 而不是名称。
要查看模块是否成功,键入interact 7B3SZS8Y9, 如图:
8.持久性
为了能够在重新启动或断开连接后继续控制目标系统, 可以使用提升的PowerShell Empire代理来安装持久性机制。使用powershell_persistence_elevated_schtasks模块如图:
通过命令set Agent 7B3ZS8Y6将代理设置为通过模块执行,并使用set Listener MyListener将持久性机制连接回的监听器设置为在PowerShell Empire服务器上设置的监听器。最后,运行execute命令, 如下图:
该模块在目标机器上创建一个每天在09:00运行并命名为“Updater”的计划任务。要查看模块是否成功,再次与代理进行交互。
可以看到模块成功运行。在这里可以通过编辑模块的配置选项来调整计划任务的名称、执行时间和在系统中隐藏的位置。这样可以更好地混淆持久性机制并规避网络检测。
9.转储凭据
要在PowerShell Empire中转储凭据,可以使用powershell_credentials_invoke_ntlmextract模块。
这个模块要设置的唯一选项是代理,使用set Agent 9WPM8CGY命令设置,然后输入execute,如图:
该模块提取存储在目标系统注册表中的本地用户帐户的NTLM哈希值。可以使用密码破解工具(如Hydra)破解这些提取的密码哈希,或者使用它们通过传递哈希攻击进行横向移动。
再次与代理进行交互, 查看模块是否成功, 如图:
该模块成功并显示了几个用户的NTLM哈希值。还可以看到几个Empire代理已断开连接并停止连接回监听器。已断开连接的代理以红色显示。
可以使用PowerShell Empire模块转储其他凭据,例如Kerberos票据、访问令牌、浏览器数据等等。以下是可以利用的其他一些模块。
模块种类 | 模块描述 | 举例 |
枚举 | 执行侦察和信息收集 | csharp/SharpSploit.Enumeration/GetDomainUser |
信息掌控 | 感知目标信息 | powershell/situational_awareness/host/hostrecon |
活动目录 | 枚举活动目录环境 | python/situational_awareness/network/active_directory/get_computers |
权限提升 | 执行或扫描特权提升 | powershell/privesc/bypassuac |
凭据 | 窃取凭据 | powershell/credentials/mimikatz/extract_tickets |
持久性 | 维持对系统的访问 | powershell/persistence/userland/registry |
横向移动 | 执行命令或移动到远程系统 | powershell/lateral_movement/invoke_psexec |
代码执行 | 在目标系统中执行自定义代码 | powershell/code_execution/invoke_dllinjection |
收集 | 从系统中收集数据 | powershell/collection/keylogger |
管理 | 用于管理系统 | powershell/management/restart |
开发 | 用于利用已知的本地漏洞(例如 ZeroLogon、PrintNightmare、EternalBlue 等) | powershell/privesc/zerologon |
10.总结
总的来说, PowerShell Empire是一个复杂的后利用框架, 擅长在Windows环境中执行后利用活动。PowerShell Empire框架主要包括三大组件:Empire服务器、Empire客户端和Starkiller GUI工具。通过启动Listener、创建和执行Stager以及通过Agent和PowerShell Empire的Modules在目标系统中执行操作。
原文始发于微信公众号(二进制空间安全):渗透后期命令控制(C2)框架工具
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论