读取不到 hash 怎么绕过
方法一:绕过 EDR/AV 和 LSAProtection
这是最常见的挑战。大多数攻击者会使用 Mimikatz,但它常常被安全软件检测到
- 使用定制或混淆的工具:
- Mimikatz 的变种: 寻找或自己编译 Mimikatz 的混淆版本(如
P-Code
、Minidump
)。这些版本可能没有被 EDR/AV 的签名库收录 - 不依赖 Mimikatz 的替代工具: 尝试使用其他开源工具,如
LaZagne
或DonPAPI
。这些工具采用不同的技术来提取凭据,可能绕过某些防御
- Mimikatz 的变种: 寻找或自己编译 Mimikatz 的混淆版本(如
- 使用内存转储(Memory Dumping)
procdump.exe
: 这是微软官方的工具,可以合法地转储进程内存。你可以使用它来转储 LSASS 进程,然后在另一台安全的机器上用 Mimikatz 的sekurlsa::minidump
模块离线分析- 注意: 尽管
procdump
是官方工具,但许多 EDR/AV 已经对其进行了监控。你需要小心使用 - 手动转储: 也可以使用 Powershell 或 C# 编写代码,直接调用
MiniDumpWriteDump
API 来转储 LSASS 进程。这比使用现成的工具更隐蔽
- 进程注入与内存补丁
- 通过注入到合法的进程(如
svchost.exe
)中,然后从该进程内部转储 LSASS 内存,可以绕过一些基于进程行为的监控 - PPL(Protected Process Light) 绕过:如果目标启用了 PPL,传统的注入方式会失败。可以尝试利用一些已知漏洞或驱动程序来提升权限并绕过 PPL。例如,使用一些内核驱动加载工具,在内核模式下操作
- 通过注入到合法的进程(如
方法二:不直接读取哈希,而是获取明文密码
如果哈希实在无法获取,可以考虑获取用户的明文密码
- 键盘记录(Keylogging):
- 部署一个键盘记录程序(如
PowerSploit
中的Get-Keystrokes
),记录用户在登录或输入密码时的按键 - 优点: 可以获取明文密码,且绕过了哈希的保护机制
- 缺点: 实时性差,需要等待用户输入密码,并且容易被杀毒软件检测
- 部署一个键盘记录程序(如
- Hooking
- 通过在登录或凭据输入过程中,
Hook
相关的 WinAPI 函数(如LsaLogonUser
),可以截取到明文密码或哈希 - 优点: 实时性高,可以在用户登录时立即获取凭据
- 缺点: 实现复杂,需要编写专门的代码,且容易被 EDR/AV 拦截
- 通过在登录或凭据输入过程中,
方法三:利用其他机制获取凭据
除了 LSASS,凭据还可能存储在其他地方
- 注册表(Registry)
- 某些应用程序(如 Putty、TeamViewer 等)可能会将连接密码以加密或明文形式存储在注册表中。可以使用
LaZagne
或其他专用工具扫描注册表 - 例如:
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
下可能会存储自动登录的明文密码
- 某些应用程序(如 Putty、TeamViewer 等)可能会将连接密码以加密或明文形式存储在注册表中。可以使用
- 服务凭据(Service Credentials)
- 许多服务使用服务账户运行,这些账户的凭据通常存储在服务配置中。如果权限足够,可以枚举这些服务并尝试读取其配置
- 浏览器、邮件客户端和 FTP 客户端
- 浏览器(如 Chrome、Firefox)、邮件客户端(如 Outlook)和 FTP 客户端(如 FileZilla)通常会缓存用户的明文密码
- 可以使用
Mimikatz
的dpapi::
模块或专门的工具来解密这些存储的凭据