内网漫游:通过RDP劫持向远程系统执行任意代码

远程桌面协议(RDP)被广泛应用于管理员的内部网络。该协议允许系统所有者以及管理员远程管理其Windows环境。然而,RDP在为我们带来方便的同时,也为虎视眈眈的攻击者打开了一扇窗,攻击者常会利用该协议肆意的在内部网络中漫游。以下攻击,可让攻击者获取凭据劫持其他用户的RDP会话,并向那些使用RDP作为验证机制的受感染工作站远程系统执行任意代码。

RDP中间人攻击

中间人攻击是攻击者用于获取凭据常用的手段和方式。对RDP会话执行此攻击,攻击者将能轻松地获取到可用于内网渗透的域帐户的明文密码。Seth是一种可以帮助你自动执行RDP中间人攻击的工具,无论目标是否启用了网络级身份验证(NLA),它都将为你完美的执行。我们只需提供四个必要参数即可:

  1. 以太网接口
  2. 攻击者的IP
  3. 受害者工作站的IP(客户端)
  4. 目标RDP主机(服务器)的IP
./seth.sh eth0 10.0.0.2 10.0.0.3 10.0.0.1

成功执行后,该工具将在后台执行一系列的步骤,以确保攻击的成功实施。以下是执行的相关流程:

  1. 欺骗ARP回复
  2. 启用IPv4流量转发,将流量从受害主机重定向到攻击者机器,然后再转发到目标RDP服务器。
  3. 配置一个iptable规则拒绝SYN数据包,以防止直接的RDP认证。
  4. 捕获目标主机的SYN数据包。
  5. 克隆SSL证书。 重新配置iptables规则,以将流量从受害工作站路由到目标RDP主机。
  6. 阻止到端口88的流量,以将Kerberos身份验证降级到NTLM。

步骤1-3将在受害者身份验证之前执行。尝试通过RDP向目标服务器进行身份验证的用户将会收到以下消息:

当用户建立连接时,其凭据将以明文形式显示给攻击者。

RDP Inception

RDPInception是MDSec发现的一种攻击方式。其主要是基于“启动(Startup)”程序,也就是利用大家熟知的“启动项”目录,强制登录进入RDP访客计算机执行恶意代码。为此,MDSec还开发了RDPInception的PoC验证程序,一个简单的批处理脚本。在攻击者已经获得访问权限的工作站上执行批处理脚本,攻击者将会获取到一个shell。

如果提权用户(管理员或域管理员)尝试通过RDP与已感染的主机进行身份验证,则批处理脚本将会被系统上的其他用户复制。

批处理脚本将会在工作站每次启动时执行,以实现后门持久化。

当通过RDP向受感染主机验证的提权用户重启他的机器时,代码将被执行。

新的Meterpreter会话将在管理员的主机上,通过RDP服务的滥用被打开,而不需要直接攻击该系统。

active Meterpreter sessions列表,将验证攻击者是否可以在两个系统上访问。

RDP会话劫持

如果攻击者在目标系统上获得本地管理员访问权限,则可能劫持其他用户的RDP会话。这也解决了攻击者对该用户的凭据需求。这项技术最初是由Alexander Korznikov发现的,在他的博客中已有描述。

可使用的可用会话列表可以在Windows任务管理器中的“Users“选项卡中查看。

也可以从命令提示符中获取相同的信息。

query user

创建一个使用系统级权限执行tscon的服务,将劫持ID为3的会话。

sc create sesshijack binpath= "cmd.exe /k tscon 3 /dest:rdp-tcp#0"
net start sesshijack

当服务启动时,用户“test”可以在不知道他密码的情况下使用netbiosX的会话。

Mimikatz也支持这种技术。 第一步是检索终端服务会话列表。

ts::sessions

尝试直接使用会话1将失败,因为Mimikatz并未以SYSTEM权限执行。因此,下列命令将会将token从本地管理员提升到SYSTEM。这样一来,当再次使用其他会话时,将不需要提供用户的密码。

ts::remote /id:1
privilege::debug
token::elevate

再次执行以下命令,将成功劫持netbiosX用户的会话。

ts::remote /id:1

*参考来源:pentestlab,FB小编 secist 编译,转载请注明来自FreeBuf.COM

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-05-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杂文共赏

使用DCHQ自动部署和管理Docker Cloud /虚拟Java微服务

本文演示了一个在云或虚拟平台上,用于自动化部署和管理Docker Java微服务应用程序的解决方案。我们通过扩展现有项目Chris Richardson的示例—...

21940
来自专栏技术翻译

使用Kubernetes和Ambassador API Gateway部署Java应用程序

在本文中,您将学习如何将三个简单的Java服务部署到Kubernetes(通过新的Docker for Mac / Windows集成在本地运行),并通过Kub...

94120
来自专栏哎_小羊

初试 minikube 本地部署运行 kubernetes 实例

目录 kubernetes 介绍 环境、软件准备 kubectl 安装 minikube 安装 部署运行实例 1、kubernetes 介绍 Kuberne...

99350
来自专栏写代码的海盗

Docker学习总结之Run命令介绍 Operator exclusive options

Docker学习总结之Run命令介绍 本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢!...

33750
来自专栏散尽浮华

分享一例测试环境下nginx+tomcat的视频业务部署记录

需求说明: 在测试环境下(192.168.1.28)部署一套公司某业务环境,其中: 该业务前台访问地址: http://testhehe.wangshibo.c...

259100
来自专栏禅林阆苑

csxiaoyao.com整站第二次迁移记录

csxiaoyao的主页( csxiaoyao.com / csxiaoyao.cn / victorsun.cn / sunshinestudio.cn )从...

652310
来自专栏黑泽君的专栏

如何在win10上连接苹果无线键盘

Step 2: 用户在"Apple Wireless Keyboard (文本)"上左键单击;

4.4K20
来自专栏点滴积累

Docker跨主机网络——overlay

前言 在Docker网络——单host网络一文中,我为大家总结了Docker的单机网络相关知识和操作,单机网络比较容易。本文我为大家总结Docker跨主机通信相...

51650
来自专栏散尽浮华

Docker网络解决方案-Calico部署记录

Calico简单简介 Calico是一个纯三层的协议,为OpenStack虚机和Docker容器提供多主机间通信。Calico不使用重叠网络比如flannel和...

1.1K100
来自专栏轻量级微服务

Docker Swarm 进阶: 节点标签与服务

constraints 可以匹配 node 标签和 engine 标签,engine.labels 适用于 Docker Engine 标签,如操作系统,驱动程...

14130

扫码关注云+社区

领取腾讯云代金券