凭据抓取与认证材料取证分析

凭据抓取与认证材料取证分析

在很多入侵事件中,真正推动攻击从“单机失陷”升级为“全网扩散”的关键,不是某个漏洞本身,而是攻击者拿到了可复用的认证材料。它可能是明文密码、NTLM Hash、Kerberos Ticket、浏览器 Cookie、SSH 私钥,也可能是数据库连接串、云平台 Access Key、RDP 凭据缓存。

前面已经补过 数据库痕迹与凭据泄露分析.md内网横向痕迹与跳板机行为分析.md命令行历史取证与攻击者行为还原.md 这些专题。本文则把它们的共同核心抽出来,专讲认证材料是怎么被拿走、怎么被复用、如何被取证


0x01 认证材料分析要回答什么

面对疑似凭据窃取事件,建议优先回答五个问题:

  1. 攻击者拿到的到底是什么材料? 是密码、Hash、Ticket、Token、Cookie、私钥,还是应用连接串。
  2. 这些材料是从哪里来的? 来自内存、浏览器、配置文件、客户端工具,还是历史会话缓存。
  3. 材料是否已被复用? 是否发生了 RDP、SMB、SSH、数据库、邮箱或云平台二次登录。
  4. 复用后的权限边界是什么? 是普通用户、管理员、服务账号,还是域级身份。
  5. 材料是否还能继续生效? 是否需要立刻做密码轮换、Ticket 失效、Cookie 下线和私钥更换。

如果只停留在“发现了可疑工具”或“怀疑有人抓过密码”,还远远不够。真正的取证目标是确认认证材料被盗用的链条是否成立


0x02 攻击者最常盯上的认证材料

认证材料不等于“账号密码”四个字,实际范围比很多人想象得更大。

1. Windows 身份材料

重点包括:

  • 明文密码
  • NTLM Hash
  • Kerberos Ticket
  • 浏览器保存的域账号
  • RDP 凭据缓存
  • DPAPI 保护的数据

2. Linux 与类 Unix 身份材料

重点包括:

  • ~/.ssh/id_rsaid_ed25519
  • authorized_keys
  • 历史命令中的明文密码
  • sudo 缓存
  • 应用连接串与服务口令

3. Web 与办公场景身份材料

重点包括:

  • 浏览器 Cookie
  • SSO Token
  • 邮箱登录态
  • VPN 客户端保存的凭据
  • IM / OA / Git 平台登录态

4. 应用与云平台材料

重点包括:

  • 数据库用户名密码
  • API Key / Secret
  • 云平台 Access Key
  • CI/CD 发布密钥
  • 对象存储、镜像仓库、Git 访问令牌

很多横向事件里,攻击者未必需要知道用户的明文密码,只要拿到一个仍然有效的 Token 或私钥就足以继续推进。


0x03 认证材料最常从哪里被拿走

1. 内存抓取

最经典的场景是 Windows 上针对认证相关进程的材料提取,例如:

  • lsass.exe
  • 浏览器进程
  • 远控进程内存

攻击者常通过:

  • 直接转储内存
  • 调用系统 API 读取进程内存
  • 使用内置或自定义工具导出凭据

这类行为通常会和:

  • 可疑进程创建
  • 安全软件绕过
  • procdump, rundll32, comsvcs.dll

一类痕迹共同出现。

2. 本地文件与配置提取

常见来源:

  • 浏览器配置与会话文件
  • SSH 私钥
  • application.yml, .env, config.php
  • RDP 连接配置
  • 数据库客户端连接记录

这类方式更隐蔽,因为攻击者不一定要提升到很高权限,也不一定需要与安全产品正面冲突。

3. 历史命令与脚本泄露

前面已经在命令历史专题里提到,以下内容很常见:

  • mysql -uroot -p123456
  • redis-cli -a xxx
  • curl -u user:pass
  • 脚本中硬编码口令

这些材料虽然看起来“不是凭据转储”,但在实战里同样高价值。

4. 会话劫持与登录态复用

例如:

  • 浏览器 Cookie 被导出
  • SSO Token 被窃取
  • 邮箱登录态被复用
  • VPN 会话在受害者不知情的情况下继续使用

这类场景往往不会留下“猜密码”的痕迹,因为攻击者直接复用现成会话。


0x04 凭据抓取事件的典型攻击链

场景一:终端失陷后抓取系统凭据

  1. 攻击者通过钓鱼或木马控制办公终端
  2. 在本机执行凭据抓取工具或内存转储
  3. 获取高权限账号材料
  4. 复用到 RDP、SMB、WinRM、域控

关键点在于,真正推动横向的是“身份被升级”,不是最初那封邮件本身。

场景二:Web 服务器窃取应用与私钥材料

  1. 攻击者拿下 Web 服务器
  2. 搜索源码、配置文件、发布目录
  3. 拿到数据库口令、SSH 私钥、云平台 Key
  4. 进一步访问数据库、发布机、运维平台

这类链条和前面的数据库、横向、WebShell 文章天然可衔接。

场景三:浏览器与办公客户端保存凭据被利用

  1. 攻击者控制用户主机
  2. 导出浏览器 Cookie、保存密码、SSO 状态
  3. 直接登录邮箱、OA、Git、云控制台
  4. 再借这些系统推动更高价值攻击

这类事件往往没有爆破、没有弱口令,只有“正常身份出现了异常动作”。


0x05 如何判断认证材料已经被复用

找到材料本身只是第一步,更重要的是判断它有没有被真正用过。

1. 看异常登录

重点观察:

  • 新设备、新源 IP
  • 异常时间段
  • 非常驻地点
  • 先登录终端后登录高价值系统

2. 看身份跨场景跳转

如果某个身份在短时间内连续出现于:

  • 邮箱
  • VPN
  • Git
  • 跳板机
  • 数据库

且这些系统平时并非同一工作流,就要高度警惕认证材料被复用。

3. 看本地痕迹与远程行为是否闭环

例如:

  1. 主机上出现浏览器 Cookie 导出行为
  2. 十分钟后邮箱后台记录到新地域登录
  3. 随后邮件系统内又发起对外钓鱼

这就构成一条很强的材料复用证据链。


0x06 认证材料取证的几个高价值证据面

1. 进程与命令行

重点看:

  • 是否出现针对凭据的转储或提取命令
  • 是否启动了典型工具或其重命名版本
  • 父进程是否异常

这里和 命令行历史取证与攻击者行为还原.md 直接相关。

2. 文件与落地物

重点看:

  • 临时目录中的转储文件
  • 压缩包
  • 可疑文本输出
  • 私钥复制痕迹
  • 浏览器数据库与会话文件被导出

3. 登录与认证日志

重点看:

  • 成功登录但无前置口令试探
  • 同一账号突然跨多台主机成功认证
  • 同一票据或会话材料在异常主机上出现

4. 浏览器与应用登录态

重点看:

  • Cookie 文件读取 / 导出
  • 浏览器进程异常访问
  • 新设备复用旧登录态
  • 不经过 MFA 再认证的敏感访问

0x07 公开案例与落地排查

1. 案例一:Exchange WebShell 后转向 LSASS 凭据抓取

一个很适合落地到蓝队排查流程里的公开案例,是 Unit 42 在 2021 年披露的 Exchange Server 事件分析:

  • 攻击者先利用 ProxyLogon 相关漏洞写入 WebShell
  • 6 天后通过 WebShell 执行 PowerShell 做信息收集
  • 接着定位 lsass.exe 进程并尝试导出其内存
  • 然后把信息收集与凭据抓取结果压缩为 cabinet 文件,落到 IIS 可访问目录,试图通过 HTTP 直接下载取走

这个案例的价值在于,它把“WebShell -> PowerShell -> LSASS -> 打包外传”完整串起来,非常适合作为凭据抓取专题的实战模板。

公开来源:

2. 案例二:Alloy Taurus 结合多种方式抓取身份材料

Unit 42 在 2023 年公开的 Alloy Taurus 事件里,攻击者在 Exchange WebShell 落地后继续:

  • 尝试使用 Mimikatz
  • 尝试使用 procdump 导出 lsass.exe
  • 执行 cmdkey /l 枚举本地保存凭据
  • 搜索 Chrome 登录数据目录
  • 创建计划任务窃取 SAM 相关内容

这个案例说明,真实攻击者通常不会只用一种抓取手法,而是内存、注册表、浏览器、保存凭据一起试。

公开来源:

3. Windows 现场排查命令模板

下面这组命令适合在已授权的应急现场快速确认“是否存在 LSASS 导出、保存凭据枚举、浏览器登录数据异常访问”。

进程创建与可疑命令行

# 查询最近 3 天内与 lsass 转储、凭据抓取相关的 4688 事件
$start=(Get-Date).AddDays(-3)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688; StartTime=$start} |
  Where-Object {
    $_.Message -match 'procdump|comsvcs\.dll|rundll32|mimikatz|nanodump|dumpert|lsass'
  } |
  Select-Object TimeCreated, Id, ProviderName, Message

查找落地的转储文件

# 查找常见凭据转储文件
Get-ChildItem -Path C:\ -Recurse -Force -ErrorAction SilentlyContinue |
  Where-Object {
    $_.Name -match 'lsass.*\.(dmp|tmp|zip|cab)$|sam.*\.save$|security.*\.save$|ntds.*\.dit$'
  } |
  Select-Object FullName, Length, CreationTime, LastWriteTime

枚举本地保存凭据与常见登录数据目录

cmdkey /list

Get-ChildItem "$env:LOCALAPPDATA\Google\Chrome\User Data" -Force -ErrorAction SilentlyContinue |
  Select-Object FullName, LastWriteTime

Get-ChildItem "$env:LOCALAPPDATA\Microsoft\Edge\User Data" -Force -ErrorAction SilentlyContinue |
  Select-Object FullName, LastWriteTime

反查可疑计划任务和服务

schtasks /query /fo LIST /v | findstr /i "mimikatz procdump rundll32 comsvcs lsass dump"
sc query state= all | findstr /i "dump mimikatz cred lsass"

4. Linux 现场排查命令模板

Linux 侧更多是私钥、历史命令、配置文件和口令材料泄露,适合先从以下几类证据入手:

# 查 SSH 私钥、公钥和授权文件
find /root /home -maxdepth 3 \( -name "id_rsa" -o -name "id_ed25519" -o -name "authorized_keys" \) -type f -ls 2>/dev/null

# 查历史命令中的明文口令和登录材料
grep -RInE 'sshpass|mysql .*-p|redis-cli .*-a|curl .*-u |token=|password=' /root/.bash_history /home/*/.bash_history 2>/dev/null

# 查近期打包过的私钥、配置和凭据文件
find /tmp /var/tmp /dev/shm /home /root -type f \( -name "*.zip" -o -name "*.7z" -o -name "*.tar.gz" \) -mtime -7 -ls 2>/dev/null

# 查谁最近访问过 .ssh 与配置文件
find /root/.ssh /home/*/.ssh /etc -type f -atime -3 -ls 2>/dev/null

5. 一条可直接复用的排查思路

如果你怀疑 Windows 主机发生了凭据抓取,建议按下面顺序落地:

  1. 先查 4688 是否出现 procdump, rundll32 comsvcs.dll, mimikatz, cmdkey /l
  2. 再查磁盘上是否出现 .dmp, .cab, .zip, ntds.dit, SAM 导出文件
  3. 再看浏览器登录数据目录、最近文件、Prefetch 是否与时间窗一致
  4. 最后追后续登录,判断材料是否已经被复用

这套方法基本就是把公开案例里的攻击链倒过来执行一遍。


0x08 三个常见误区

1. 只盯明文密码

很多攻击并不需要明文密码。Hash、Ticket、Cookie、私钥都可能直接成为“可用身份”。

2. 看到抓取工具就直接下结论

工具存在不等于材料一定被成功拿到,更不等于已经被复用。必须继续往后追登录和横向结果。

3. 只做改单点密码

如果事件里涉及:

  • 域账号
  • SSO
  • 浏览器会话
  • SSH 私钥
  • 数据库与云平台 Key

那么仅改一个 Windows 登录密码远远不够。


0x09 处置与分析要同步推进

认证材料事件的特殊性在于:它通常要求分析和处置几乎同时发生。

建议优先同步做:

  • 高权限账号口令轮换
  • Ticket / Session 失效
  • Cookie 强制下线
  • 私钥吊销与替换
  • 服务账号和 API Key 轮换

否则即便你已经看懂了攻击链,攻击者也可能仍在用旧材料持续活动。


0x0A 建议的交付结构

认证材料事件适合整理为如下表格:

时间证据源事件关联身份/材料结论
10:02:11进程日志可疑内存转储行为lsass.exe疑似抓取系统凭据
10:04:33文件时间生成转储文件C:\ProgramData\a.dmp认证材料已被导出
10:09:20登录日志异地登录成功domain\admin材料被复用
10:12:05横向日志访问多台服务器domain\admin横向移动成立
10:18:17处置建议强制失效与轮换域账号 / Token / 私钥需立即阻断

这样的结构适合在报告中同时支撑技术结论和应急处置建议。


0x0B 总结

凭据抓取与认证材料分析的关键,不只是“有没有人抓密码”,而是要完整证明:

  • 材料从哪里被拿走
  • 拿走的是什么类型
  • 是否已经被复用
  • 复用后扩大到了哪些系统

当你能把进程、文件、登录、会话和横向行为统一到同一条链上时,认证材料就不再只是某个孤立 IOC,而会成为解释整起入侵如何扩散的核心钥匙。