1. 项目概述:对抗EDR环境下的凭据提取技术
在攻防对抗日益激烈的今天,终端检测与响应(EDR)系统已成为企业安全防御体系的核心组件。攻击者一旦突破边界防护,如何在EDR的监控下隐蔽地开展后续操作就成为关键挑战。其中,LSASS进程内存中的凭据信息是攻击者最希望获取的高价值目标之一,而传统的DumpLsass方法早已被各大EDR厂商纳入监控范围。
这个项目聚焦于通过系统调用(Syscall)直接调用底层API的技术路线,结合动态行为混淆技术,实现对抗EDR检测的凭据提取方案。与常规工具相比,其核心创新点在于:
- 通过非标准方式调用敏感API,规避EDR的hook检测
- 运行时动态生成关键代码,打乱行为特征
- 采用多阶段内存操作,最小化可疑痕迹
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术原理深度解析
2.1 LSASS凭据存储机制
Windows系统将登录凭据加密后存储在LSASS进程内存中,主要包括:
- 明文密码(当启用WDigest时)
- NTLM哈希
- Kerberos票据
- 会话密钥
这些敏感信息以特定的内存结构存储,通过逆向分析可以定位关键数据结构。传统工具如Mimikatz就是通过注入LSASS进程读取这些内存区域实现的。
2.2 EDR检测机制剖析
主流EDR产品通常通过以下方式检测凭据窃取行为:
- API调用监控:Hook敏感API如MiniDumpWriteDump
- 进程行为分析:检测LSASS进程的异常内存读取
- 签名检测:已知攻击工具的特征匹配
- 异常内存操作:对关键系统进程的写入操作
2.3 Syscall直接调用技术
传统API调用会经过ntdll.dll中的存根函数,而EDR通常在此处植入检测逻辑。直接通过系统调用号发起Syscall可以:
- 绕过用户态的API hook
- 避免触发EDR的行为检测规则
- 减少在日志中留下痕迹
实现要点包括:
- 动态获取系统调用号(SSN)
- 正确设置调用上下文
- 处理参数传递和返回值
3. 实现方案与核心代码
3.1 动态SSN解析
c复制// 通过PEB遍历获取ntdll导出表
PPEB pPeb = (PPEB)__readgsqword(0x60);
PLIST_ENTRY pListHead = &pPeb->Ldr->InMemoryOrderModuleList;
PLIST_ENTRY pListEntry = pListHead->Flink;
while (pListEntry != pListHead) {
PLDR_DATA_TABLE_ENTRY pEntry = CONTAINING_RECORD(pListEntry, LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks);
if (wcscmp(pEntry->BaseDllName.Buffer, L"ntdll.dll") == 0) {
// 解析导出表获取SSN...
break;
}
pListEntry = pListEntry->Flink;
}
3.2 直接系统调用实现
asm复制mov r10, rcx
mov eax, SSN_NtReadVirtualMemory
syscall
ret
3.3 内存操作规避技巧
- 使用NtMapViewOfSection映射LSASS内存而非直接读取
- 分多次读取关键数据结构,避免完整dump
- 在内存中重组数据,不产生完整的dump文件
4. 对抗检测的进阶策略
4.1 动态代码生成
通过以下方式实时生成关键代码:
- 分配可执行内存区域
- 写入基础指令模板
- 动态填充系统调用号等参数
- 设置内存保护属性
c复制PVOID pCode = VirtualAlloc(NULL, codeSize, MEM_COMMIT, PAGE_READWRITE);
// 写入指令...
DWORD oldProtect;
VirtualProtect(pCode, codeSize, PAGE_EXECUTE_READ, &oldProtect);
4.2 行为混淆技术
- 随机延迟:在关键操作间插入随机时延
- 虚假API调用:混入无害的系统调用
- 多阶段执行:将敏感操作拆分为多个看似无关的步骤
5. 实战注意事项
5.1 环境适配问题
不同Windows版本需注意:
- 系统调用号的变化(特别是Win10/Win11大版本更新)
- LSASS内存结构的偏移量差异
- 特定缓解措施(如PPL保护)
5.2 检测规避有效性验证
建议通过以下方式测试:
- 在测试环境运行并捕获EDR日志
- 检查安全产品的告警事件
- 分析产生的网络流量和进程行为
5.3 操作风险控制
- 避免在生产环境直接测试
- 控制执行频率和时机
- 准备应急退出方案
6. 防御视角的缓解措施
从蓝队角度,可采取以下防御方案:
- 启用LSASS的PPL(Protected Process Light)保护
- 配置敏感API调用的深度监控
- 部署基于异常行为的检测规则
- 限制调试权限的使用范围
重要提示:本文所述技术仅限用于合法安全测试和防御研究,未经授权对系统进行此类操作可能违反法律法规。
