RDP会话连接的简要背景
如果你之前使用过远程桌面连接或者远程终端服务,那么你一定知道只有拥有账户密码才能进行登录。那么,你知道不用密码也可以进行登录吗?继续往下看吧。
在你的任务管理器查看机器上面的用户,然后尝试用tsadmin.msc,或者在终端使用tscon.exe登录。如果你不输入密码他会显示错误。
尝试无凭证劫持会话的技巧
下面就是这些技巧了。从2011年Benjamin Delpy和这周五Alexander Korznikov发布的文章中,我们了解到当你在SYSTEM权限下使用tscon.exe的话,你可以不用使用密码连接任意一台机器。他不会显示任何提示,直接连接到用户的桌面。我相信这是微软实现会话的方式,并且这种方式已经工作好多年了。
现在,你也许会想:“如果我现在是系统权限,我就可以做任何事情了”
对的,举个例子,你可以读取到服务器内存,并且得到用户的密码。当然,这和使用tscon.exe登录用户界面相比这是一个漫长的过程。得到系统权限不是关键,
关键的是如何将攻击做的快而且动静小。攻击者感兴趣的是利用这个技术可以干什么,而不是开一个没有用的玩笑。所以,这是一个很棒的技术。
强大功能
1. 它可以登录到离线的机器。如果机器是在3天之内注销的,尽管它现在是离线状态,我们也可以进行登录。
2. 它可以解锁会话。如果一个用户暂时离开他的计算机并且对他的机器,你可以使用这个漏洞进行解锁登录。
3. 他同样适用于终端。所以,你可以劫持RDP,同样可以劫持终端。
4. 你可以连接任何一台机器,所以举个例子,如果他是一个帮助台,你可以进行劫持登录,不过如果它是一个域管,那同样也可以进行登录。因为可以登录离线的机器,这就成为一个简单到令人难以置信漫游内网的方法。
5. 你可以通过很多种方法进行提权,比如使用win32k SYSTEM exploits。很明显,任何进行提权的方法在这都可以使用的。
6. 这种攻击方法没有额外的工具。没有在磁盘写入任何东西,没有绕过任何杀毒软件。
7. 除非你知道正在攻击你,否则你不会有任何察觉。
8. 这种攻击方法可以远程工作。即使您未登录到该服务器,也可以在远程计算机上接管会话。
提权
如果你现在已经是administrator,你可以通过启动一个新服务进行提权:
实质上它是很容易,只需使用quser命令获取你想要劫持的会话ID和自己的SESSIONNAME。然后运行tscon进行会话ID劫持。你自己的会话将被替换为被劫持的会话。默认情况下,服务将作为SYSTEM运行。
如果你是在攻击目标,最后一定要删除服务。
这是在windows server 2012 R2做得一个实验:
其他方法:
1. 可以使用计划任务获取SYSTEM并运行命令。只要设置立即执行计划命令,并且作为具有交互特权的SYSTEM运行。
2. 使用任何可以使用的方法,比如粘滞键提权,有的时候甚至不用登录。
3. 其他exp。
内网漫游
大多数组织通过其内部网络允许远程桌面,Windows管理工作的方式就是如此。此外,RemoteApp使用RDP。因此,这是一个很好的方式来漫游内网,你可以作为其他用户出现在组织日志中,而不是自己。
为无凭证登录设置后门
远程桌面连接密码爆破是一个很棘手的问题。任何人只要设置一个RDP登录蜜罐,几秒过后就会被发现,并且出现很多登录失败的记录。只要他们发现端口开启,接下来就是成千上万的暴力破解。
更糟糕的是,当我开启RDP蜜罐,当他们登录之后,他们会使用下面的方法创建后门。
根据调查,在线超200个机器使用这些方法被设置后门。这就说明,你现在不需要任何信息就可以对他们进行会话劫持,甚至不需要尝试进行登录。
这很糟糕,考虑到shodan显示有数百万RDP设备在线,并且云服务器数量还在持续增加,我想,这一定会产生很大的问题.
设置后门方法1-粘滞键
这里的概念很简单 – Windows支持一个名为粘滞键的功能,它是一个内置于操作系统中的可访问性功能,可以通过控制台或者远程桌面上登录。
如果你设置了Sethc.exe(粘滞键)去生成一个cmd.exe,那么如果你登录不进去这个系统你就可以使用这个后门来获取系统权限。你可以通过将sethc.exe替换为cmd.exe,这种方法需要重启,并且需要进行交互。或者使用下面命令设置注册表:
REG ADD "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssethc.exe" /t REG_SZ /v Debugger /d “C:windowssystem32cmd.exe” /f
哈哈~这台机器已经被我们种下了后门,只需要进行远程登录,在登录界面敲击几下F5就可以进行登录。
设置后门方法2-Utilman
这种方法实际上和上面方法一样,只是后门换成了utilman.exe。在登录页面,按下windows+U键,你就可以得到一个SYSTEM权限的终端。
REG ADD "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsutilman.exe" /t REG_SZ /v Debugger /d “C:windowssystem32cmd.exe” /f
发现存在后门的主机
一个很好的工具,只需要输入 IP范围,他就可以找到已经存在后门的主机,工具地址:
https://github.com/ztgrace/sticky_keys_hunter
通过在线扫描,发现大量的RDP主机已经被种植了后门。
mimikatz模块
项目地址:
https://github.com/gentilkiwi/mimikatz/releases
攻击方法如图:
防御方法
1. 操作系统——使用Windows Server 2016。尤其是微软在2016版本的服务器上面对远程桌面连接做的改进使这种攻击很难成功。我猜想微软已经通过发现之前的问题,知道了这一领域是非常容易被攻击。
2. 组策略——我强烈建议您立即或在用户断开连接后尽快使用组策略注销断开连接的会话。这在IT领域并不是很流行,但是风险确实是存在的。在真实环境中攻击者完全可以通过一个内置的命令劫持或多或少的主机。我同样也会将闲置的用户注释掉。
3. 不要在外网暴露你的RDS/RDP服务——如果你现在正在这样做,我强烈建议你实现多因素身份验证。您可以使用Microsoft RD Gateway或Azure多重身份验证服务器等功能来获得非常低成本的多因素身份验证。如果你正在把RPD服务暴露在外网,并且发现有人创建了一个本地用户,或者你的域用户非常容易被猜到,那么你的系统很快就会被攻击下来。相信我,我曾经见过惨痛的这种案例。
取证
令人惊讶的是会话劫持很难被发现。有一个事件日志(Microsoft——Windows终端服务——本地会话管理器/操作)记录会话连接,但它似乎没有区分正常用户连接和正在使用的tscon.exe
,我已经通过查看每一个事件日志,不能看到任何表明正在受到攻击。这实际上是一个主要问题,我建议微软添加某种事件日志记录这种攻击。
我建议您使用可以记录这种攻击的工具,就像:Microsoft OMS, Windows Event Forwarding, Splunk 等等。
举个例子,服务创建和定时任务产生都需要被日志记录。并且,你还需要查找到Mimikatz的依赖程序。
FAQ
1.Q:这不是一个新漏洞。
A:java和宏都不是新的,不过他们会被利用。飞在雷达下的飞机不代表是没有用的。
2.Q:如果你有了系统权限,那么你就能控制整个系统。
A:正确。你可以键入一个命令,并获得用户的解锁的桌面,即使他们一周前去度假,并且攻击没有日志记录吗?现在你可以。