专栏首页区块链安全技术横向移动之RDP&Desktop Session Hijack

横向移动之RDP&Desktop Session Hijack

文章前言

管理员在内部网络中广泛使用远程桌面协议(rdp),这允许系统所有者和管理员远程管理windows环境,然而RDP可以给攻击者提供各种机会来实施攻击,这些攻击可以用于红队场景中的横向移动,下面的攻击可以让RedTeam获得凭据,劫持其他用户的RDP会话,并对远程系统执行任意代码,这些远程系统将使用RDP作为受感染工作站的身份验证机制。

RDP劫持

实施中间人攻击通常会导致凭据捕获,它正在对RDP会话执行这种攻击,这将允许攻击者为了横向移动的目的而轻易地获得域帐户的纯文本密码,seth是一个工具,无论是否启用网络级身份验证(nla),它都可以自动执行RDP中间人攻击,实施这种攻击需要四个参数:

  • 以太网接口
  • 攻击者的ip
  • 受害主机的ip
  • 目标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证书的克隆
  6. 重新配置iptables规则,将流量从受害工作站路由到目标rdp主机
  7. 阻止到端口88的流量,以将kerberos身份验证降级到ntlm

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

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

PS:该方法笔者在本地未实验成功,因为有SSL强校验,在实战中建议慎用~

RDP Inception

mdsec发现了一种技术,该技术允许攻击者在启动时执行任意代码并通过RDP连接传播,从而在网络内部执行横向移动,整个思路大致如下:

而在渗透测试中,如果我们获得某台服务器C的控制权,而最终目标是PC X,但由于对方高度安全的网络环境限制,我们只有采取RDPInception攻击方式,通过对接入C的服务器B进行攻击控制,之后,对接入B的服务器A进行攻击控制,最终,对接入A的PC X形成攻击控制,整个攻击链如下:

PC X RDP ————> Server A
Server A RDP ————> Server B
Server B RDP ————> Server C

为了促进这种攻击,mdsec开发了一个批处理脚本(https://github.com/mdsecactivebreach/RDPInception)来实现概念验证,不过该技术在利用时有一个先决条件就是内网其他主机远程连接受感染主机时"本地资源"选项中设置了加载C盘:

之后攻击者可以在已经获得访问权限的主机上执行批处理脚本将获得一个shell

该脚本执行之后将会在已经获得访问权限的WIndow 7主机上和远程连接的主机上同时创建启动项:

之后当远程连接受感染主机的Windows Server 2008重新启动时将会执行恶意载荷:

同时打开一个新的Meterpreter会话:

从而成功获取到Windows Server 2008的权限,由于是启动项所以同时也实现了权限维持,该技巧还有一个好处就是如果当我们初始获得的权限较低,我们可以先运行脚本run.bat,之后当有域管理员用户或者管理员远程RDP登录目标主机时我们可以获得一个高权限的会话,从而间接实现权限提升~

RDP Session Hijacking

如果在目标系统上获得了本地管理员访问权限,攻击者就有可能劫持另一个用户的RDP会话,这消除了攻击者发现该用户凭据的需要,这项技术最初是由alexander korznikov发现的。

在cmd中输入"taskmg"之后可以从"Users"选项卡中的windows任务管理器中检索可用会话列表

从命令提示符可以获得相同的信息

query user

之后我们可以创建一个以系统级权限执行tscon的服务将劫持id为2的会话

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

当服务启动时,我们可以明显的感觉到当前远程登录的操作界面已经发生了变化,之后我们打开CMD发现当前用户已经变为了"Administrator",即用户"Al1ex"在不知道密码的情况下使用Administrator的会话:

mimikatz也支持这种技术,我们这使用Mimikatz从administrator切换为Al1ex用户:

第一步是检索终端服务会话列表

ts::sessions

如果是低权限用户,尝试直接使用会话2将失败,因为mimikatz尚未作为系统权限执行,因此,以下命令会将令牌从本地管理员提升到系统,在不需要知道用户密码的情况下使用另一个会话:

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

再次执行以下命令又回到了熟悉的"Al1ex"用户的会话界面

ts::remote /id:2

Desktop Session Hijacking

Windows允许多个用户在同一时间登录操作系统,但是在某一个时间段内只能由一个用户操作,所有如果有其他用户想要使用同样的主机,那么当前的用户必须退出登录(log out)会话或者使用Switch user功能切换到另一用户,同时保持他们原有的会话在后端运行,当新用户登录后我们可以在任务管理模块看到先前用户的Session会话信息依旧存在,例如:

该会话信息会等待先前的用户再次使用,我们也可以通过在命令行中执行以下命令来查看当前的会话信息:

quser

而RDP也允许通过远程的方式进行连接,当用户由于网络问题断开连接时用户的会话信息依旧会被保存,之后用户可以通过重新连接,Session对于用户来说非常友好,但是正如我们上图中看到的当用户会话被断开时依旧保存之前的记录信息,如果先前登录的用户具备高权限,那么攻击者可以通过会话劫持的方式进行来获得高权限,具体如下所示:

之后键入回车后直接切换会话信息且不用输入前一个用户的登录认证密码:

之后成功劫持Alex用户的Session会话,你可以在此基础上进行各项操作:

参考链接

http://www.korznikov.com/2017/03/0-day-or-feature-privilege-escalation.html

本文分享自微信公众号 - 七芒星实验室(HeptagramSec),作者:Al1ex

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-01

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 横向移动之WinRM横向移动

    "Windows远程管理(WinRM)"是WS-Management协议(Web Services for Management,又名WSMan)的Micros...

    黑白天安全
  • Ctftool:一款功能强大的交互式CTF漏洞利用工具

    除此之外,Ctftool还允许研究人员根据自己的需要来编写一些简单的脚本来实现与CTF客户端或服务器端的自动化交互,以及执行简单的模糊测试任务。

    FB客服
  • 横向渗透之 [RDP]

    也可以通过reg配置文件的方式启动:regedit /s startrdp.reg

    重生信息安全
  • 【实践】如何通过浏览器调用mstsc命令直接访问WINDOWS远程桌面

    本文作为产品技术穿刺任务的一个成功,探索通过浏览器调用本地程序完成远程WINDOWS桌面登录访问的功能。本文包含三部分内容: (1) 介绍WINDOWS自带的...

    辉哥
  • 自研CobaltStrike后渗透插件Erebus

    Erebus-CobaltStrike后渗透测试插件帮你拿到妹子shell还能搞定丈母娘全家

    用户2202688
  • 云考古 | Azure 自建 RDS 让 iPad 跑 Office 97

    苹果一直在尝试把iPad做成电脑,但效果始终不如真正的PC理想。如果能在iPad上运行PC软件,如完整版的Office,那一定是一种非常理想的方式。我小时候电脑...

    Edi Wang
  • 一次渗透实战记录

    前几天在看某个安全会议的PPT,发现里面提了一个漏洞我不怎么了解,但是很有趣,于是就打算通过shodan复现一下。这个漏洞需要对方是windows主机且开启了3...

    HACK学习
  • 实战|记一次完整的实战渗透经历

    由于最近学习内网,打了一些靶场,觉得还是挺枯燥的,就想找一个真实的环境练练手,在hxd的指引下,找了个站去练练手。

    HACK学习
  • CentOS7安装GUI界面及远程连接的实现

    用基于浏览器(webdriver)的selenium技术爬取数据,所以程序需运行在GUI环境下。本文分三个部分简要介绍安装GUI界面及远程连接的步骤。

    砸漏
  • 内网渗透中如何离线解密 RDP 保存的密码

    在内网渗透的过程中可能会遇到目标管理员有远程登陆的记录,有些管理员会有保存密码的习惯,这个时候我们想要扩大横向范围,密码搜集是最重要的。

    渗透攻击红队
  • 内网渗透测试:初探远程桌面的安全问题

    远程桌面对了解内网渗透的人来说可能再熟悉不过了。在渗透测试中,拿下一台主机后有时候会选择开 3389 进远程桌面查看一下对方主机内有无一些有价值的东西可以利用。...

    FB客服
  • 【实战分享】从sql注入到内网漫游

    对于红队队员来说,打点之后最重要的就是横向的内网渗透了,但很多人都卡在了这一步,今天这篇文章就主要讲一讲cobaltstrike和msf的联动,内网渗透的一些小...

    用户6343818
  • 【WEB安全】:CSRF

    I am going to show you how someone can remotely install a simple, persistent fil...

    WEBJ2EE
  • Windows 系统信息收集姿势

    很多新入门的同学在在拿下一台服务器权限后经常会出现不知道做什么的问题,往往就会不管三七二十一提权 exp 一顿砸,在宕机的边缘疯狂试探。

    信安之路
  • MoveKit:一款功能强大的Cobalt Strike横向渗透套件

    MoveKit是一款功能强大的Cobalt Strike横向渗透套件,本质上来说MoveKit是一个Cobalt Strike扩展,它利用的是SharpMove...

    FB客服
  • App自动化测试之Appium环境搭建

    Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。支持多种语言。

    小博测试成长之路
  • 内网学习笔记 | 3、本地工作组信息收集

    wmic 脚本下载地址:https://www.fuzzysecurity.com/scripts/files/wmic_info.rar

    TeamsSix
  • Windows-远程桌面连接客户端

    MultiDesk 是一个选项卡(TAB标签)方式的远程桌面连接 (Terminal Services Client)。

    浅言墨殇笑叹生
  • 提权(1)信息收集

    lonelyvaf

扫码关注云+社区

领取腾讯云代金券