rdp介绍
在企业环境中,员工有时需要来自同行的支持。让我们假设一位新员工刚刚入职,他们可以访问公司Windows操作系统上的技术工具,使他们能够有效地完成工作。其中一些工具可以拦截网络上的数据包,以分析两台主机之间的信息流。其他工具可能是脚本编辑器,允许他们作为面向技术的员工自动执行日常任务。其他人可能允许他们远程连接到运行Linux或Windows的其他主机,以支持他们的队友或客户。
在这种情况下,我们将发现后者中配置错误所涉及的风险。但是,没有必要将这些工具视为恶意或有风险的。远程访问软件表示连接到其他主机以执行操作或提供支持的合法方式。使用任何类型的远程访问工具所涉及的交互可以是基于 CLI 的(命令行界面)或基于 GUI 的(图形用户界面)。这些工具在其基础处使用相同的协议与其他主机进行通信,这是RDP(远程桌面协议)在端口3389 TCP和3389 UDP上运行,包括如何将由该协议中继的信息呈现给最终用户。
CLI-远程访问工具
基于命令行界面的远程访问工具一直存在。一个简单的例子,这是Telnet,在Meow机器中进行了简短的探索。在其最基本的配置中,Telnet是由于缺乏对通过其发送的数据进行安全加密的能力,被认为是不安全的。这意味着能够访问网络TAP(流量接入点)的攻击者可以很容易地拦截通过Telnet连接发送并读取内容,无论是登录凭据、敏感文件还是其他内容。在其他的默认情况下端口23 TCP上运行的Telnet主要被其更安全的对等端所取代,SSH,默认情况下在端口22 TCP上运行。
SSH 使用公钥加密来验证远程主机的身份,并且通信模型基于客户端-服务器体系结构,如前所述,在 FTP、SMB 和其他服务中可以看到。本地主机在建立加密隧道连接之前使用服务器的公钥来验证其身份。建立隧道后,将使用对称加密方法和哈希算法来确保通过隧道发送的数据的机密性和完整性。
但是,Telnet 和 SSH 都只允许最终用户访问所访问的主机的远程终端部分。这意味着这些工具没有附带任何显示投影。为了能够看到远程主机的显示,可以求助于基于CLI的工具,例如 xfreerdp 。像这样的工具被称为远程访问桌面工具 。
这背后的原因,是因为整个桌面可以由启动连接的用户远程控制,就像他们与远程主机一起在房间内一样,使用其键盘,鼠标和显示器与之交互,包括查看图形内容的能力,控制鼠标指针和键盘输入,轻松与Web浏览器交互, 以及更多。
在这种情况下,我们将使用 xfreerdp 连接到目标,以便在屏幕上获取远程桌面投影。
GUI-远程访问工具
基于图形用户界面的远程访问工具比基于 CLI 的远程访问工具更新。尽管本身已经过时,但该技术不断发展,使用户与软件和远程主机的交互对于普通用户来说更容易,更直观。这种类型的工具仅允许远程桌面连接,不需要仅提供终端连接的基于 GUI 的工具,如 Telnet 和 SSH 所示。两个最流行的远程桌面工具是团队视图和Windows的远程桌面连接,以前称为终端服务客户端。
本机运行的更简单的软件有时可能会配置错误,因为在开发与某些操作系统集成的技术工具时,没有经验的用户的用户体验并不总是一个关键因素。以 Windows 的远程桌面连接为例。Microsoft 远程桌面连接在 Windows 上本机运行,这意味着它作为服务预安装了每个 Windows 操作系统,最终用户无需执行除激活服务和设置其参数之外的任何其他操作。这就是一些配置错误出现的地方。
nmap -sV 10.129.177.21
-sV:探测打开的端口以确定服务/版本信息
我们一如既往地从 nmap 扫描开始,从而打开运行 RDP 的端口。我们在启用版本扫描开关的情况下运行了扫描,以确定在目标上的开放端口上运行的所有服务的确切版本,从而评估机器的实际操作系统以及由于过时的软件而导致的任何其他潜在漏洞。
端口 135 TCP : https://www.speedguide.net/port.php?port=135
端口 139 TCP : https://www.speedguide.net/port.php?port=139
端口 445 TCP : https://www.speedguide.net/port.php?port=445
端口 3389 TCP : https://www.speedguide.net/port.php?port=3389
端口 5357 TCP : https://www.speedguide.net/port.php?port=5357
研究发现的端口以了解大局总是一个好主意。对于那些刚刚开始了解网络基础知识并有兴趣一目了然地了解更常见端口的人来说。
查看端口 3389 TCP 的“速度指南”条目,我们认为它很有趣。它通常用于 Windows 远程桌面和远程协助连接(通过 RDP - 远程桌面协议)。我们可以在没有任何有效凭据的情况下尝试连接到这个现成的端口,从而快速检查访问控制中的任何错误配置,从而确认服务是否允许来宾或匿名连接。
如前所述,我们将使用 xfreerdp 从我们的kali虚拟机进行连接。您可以通过在终端中键入命令名称来检查是否安装了 xfreerdp。在下面的屏幕截图中,出于空间考虑,我们省略了大部分输出。
xfreerdp
如果需要安装 xfreerdp,可以继续执行以下命令
apt-get install freerdp2-xll
/v:{target_IP} :指定要连接到的主机的目标 IP。
我们可以首先尝试通过不提供目标 IP 地址以外的任何交换机的任何其他信息来与目标形成 RDP 会话。这将使脚本使用我们自己的用户名作为 RDP 会话的登录用户名,从而测试来宾登录功能。
xfreerdp /v:10.129.177.21
从下面的输出中可以看出,RDP 会话登录机制不接受我们自己的用户名。我们可以尝试无数其他默认帐户,例如user,admin,administrator等等。实际上,这将是一个耗时的过程。但是,为了探索RDP,让我们以Administrator做为用户名来登录
/cert:ignore :向 scrip 指定应忽略所有安全证书用法。
/u:Administrator :将登录用户名指定为“Administrator”。
/v:{target_IP} :指定要连接到的主机的目标 IP。
xfreerdp /v:10.129.177.21 /cert:ignore /u:Administrator
向脚本指定我们希望绕过安全证书的所有要求,以便我们自己的脚本不会请求它们。在这种情况下,目标已经没有期望任何目标。让我们看一下我们需要与xfreerdp一起使用的开关,以便在此场景中成功连接到我们的目标
这次的输出不同,在RDP会话初始化期间,我们被要求提供Administrator的密码 。在我们的例子中,该帐户尚未配置用于登录的密码,为了最终用户的可访问性。这是一个严重的配置事故,将导致我们攻击者毫不费力地获得对机器的访问权限。当系统提示您输入password的时候,我们点击enter,就像上面的输出一样,我们可以点击让过程在没有一个的情况下继续。
在此之后,在加载远程桌面窗口之前,我们的终端上将显示输出。我们正在寻找的标志位于桌面 。