基于 RDP 协议识别主机操作系统版本与用户名
2022-8-30 14:33:0 Author: paper.seebug.org(查看原文) 阅读量:33 收藏

作者:阿布@墨云科技VLab Team
原文链接:https://mp.weixin.qq.com/s/91g9szVMDyXC17u6Vx453A

RDP协议(Remote desktop protocol)

RDP(remote desktop protocol)桌面远程传输协议,是一个多通道的协议,可以让用户连接上提供微软终端机服务的电脑。RDP协议大部分被应用在Windows操作系统中,当然也包括linux,freebsc,mac os x在内的其他系统。公司员工在出差或者居家办公期间,可以使用远程桌面软件访问其办公计算机,这样一来提高了办公效率,但也带来了很多安全风险隐患。如果攻击者通过RDP协议获取到目标主机的操作系统版本、用户名多维度信息,便可以直接搜索操作系统版本相应的漏洞并利用其实施密码爆破,大大提高了黑客获取目标主机操控权限的概率。

基于RDP协议的识别方法

识别方法概述

当前最普遍的操作系统识别方法主要是基于规则匹配的方法。例如:利用Nmap扫描目标主机,通过获取网络中传输和接收的数据包信息与它已经创建的规则库进行特征匹配,进行快速识别。但目标主机所处的网络环境会影响数据包信息质量,导致操作系统版本识别准确率较低;另外,单靠Nmap等扫描工具探测维度不够,获取信息有限,无法获取目标主机用户名信息。

解决思路

以虚拟的攻,促真实的防。站在攻击者的角度,解决问题的思路如下:通过RDP协议获取到目标主机的远程桌面登录截图,利用目标检测算法获取目标主机的操作系统版本和用户名位置。考虑到用户名字符存在多种多样的形式,我们将识别到的用户名位置在宽、高上分别设置一定的像素偏差,然后将其裁剪出来,利用ocr模型识别出具体的字符。最后,汇总每个主机的操作系统版本与用户名信息进行返回。

图片

图1 基于RDP协议获取操作系统版本和用户名流程

实现方法

1.数据准备

我们主要针对Windows操作系统编写脚本,获取开启RDP服务的Windows主机的登录截图,目前主要支持的操作系统版本包括Windows7_Profession、Windows7_Enterprise、Windows7_ulimate、Windows_Server_2008_Standard、Windows_Server_2008_Enterprise、Windows_Server_2008_Datacenter、Windows_Server_2012、Windows_Server_2008_R2_Standard、Windows_Server_2008_R2_Enterprise、Windows_Server_2008_R2_Datacenter、Windows_Server_2008_R2_Foundation、Windows_Server_2008_R2_Web_Service、Windows_Server_2012_R2、Windows10/Windows11/Windows_Server_2016/2019一共14个类别。其中Windows_Server_2016和Windows_Server_2019都是基于Windows 10内核开发的,所以我们将它们归为一类。同时,训练数据为经过人工挑选大量具有代表性的图片,使得模型的泛化能力得以保证。下图是我们基于RDP协议获取到的Windows7_Enterprise的截图,从图中可以看到目标主机的操作系统版本和用户名。

图片

图2 基于RDP协议获取到的用户登录界面

2.目标检测算法

提到目标检测算法,就不得不说Yolo系列,目前Yolo系列已经更新至V7版本,但考虑到算法稳定性问题,我们采用Yolo V5算法对RDP截图进行识别训练。Yolo系列算法的本质相同,主要原理如下:

图片

图3 yolo算法案例图

将输入图片分割成SxS网格,每个单元格(grid cell)负责去检测中心点落在该格子内的目标,如上图中的红色grid cell就负责预测“狗”这个对象。其次在不同的算法中每个grid cell又会生成多个bounding box,简称bbox,每个bbox又有置信度计算方法,其置信度大小一共包含两个部分具体计算公式如下:

其中,表示边界框含有目标的可能性大小,如果该边界框是背景时为0,当边界框包含目标时为1;表示预测框和真实框的交并比。表示第个bbox的置信度,取值范围从0到1,表征边界框匹配目标的好坏程度

每个grid cell最终的预测值为大小的张量,其中B表示bbox的个数,每个bbox预测值包括它的中心坐标(x,y)和(w,h),也就是边界框相对于整个图片的宽高比例,以及该bbox的边框置信度c;C表示每个bbox预测包含所有类别的概率值。其总的损失函数如下:

图片

整个公式由三部分组成,第一部分为绿色方框中的内容,表示第i个网格中的第j个bbox是否负责这个Object,称为坐标预测;第二部分为红色方框中的内容,分别是含有Object的bbox的置信度预测与不含Object的bbox的置信度预测,统称置信度预测;第三部分为蓝色方框中的内容,表示是否有Object中心落在网格i中,称为类别预测。分别为权重系数。

跟常见的机器学习任务一样,训练模型的最终目的是为了使上述的损失函数不断减小,让目标检测任务从预测方框预测类别两个维度不断逼近真实的标签数据,从而达到训练效果。经过实验,最终的预测结果如下图所示。

图片

图4 基于rdp方法识别结果图

3.OCR识别

在得到用户名位置后,根据经验判断,将预测框的位置在图片宽度基础上误差设置为0-5个像素值,在高度基础上误差设置为0-3个像素值,然后将其裁剪下来,利用我们已有的ocr模型进行识别,得到最终的操作系统版本类别和用户名信息。同时,支持多个用户名识别。

4.实验结果

为保证测试结果准确性,实验分别对每个类别的600-1000张图片进行测试,最后进行人工核查,得到实验结果如下表所示。在用户名方面,测试的准确率为98%左右。

类别 准确率
Windows7_Profession 99.8%
Windows7_Enterprise 99.6%
Windows7_ulimate 99.8%
Windows_Server_2008_R2_Standard 94.5%
Windows_Server_2008_R2_Enterprise 98.7%
Windows_Server_2008_R2_Datacenter 99%
Windows_Server_2008_R2_Foundation 100%
Windows_Server_2008_R2_Web_Service 100%
Windows_Server_2012_R2 98.2%
Windows_Server_2008_Standard 100%
Windows_Server_2008_Enterprise 100%
Windows_Server_2008_Datacenter 100%
Windows_Server_2012 100%
Windows10/Windows11/Windows_Server_2016/2019 98%

基于rdp方法实验结果

总结

目前,网络安全风险验证过于依赖人工方式,多以白帽黑客进行人工渗透测试为主,交付方式、工作效率、标准化程度、行为及数据可控性存在多方面不足。同时,网络安全缺乏有效验证手段,尽管企业投入了大量资金购买各类安全系统及设备,也很难科学、准确地验证自身安全控制的有效性及安全投入的合理性。

网络安全攻防技术必将愈发体现出人工智能及机器学习介入的影响,未来的网络安全将会越来越多地出现AI vs AI的攻防局面,墨云将一直专注人工智能在攻防安全领域的应用研究,打造智能化产品体系,为用户提供全方位的信息安全服务。


Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1954/



文章来源: https://paper.seebug.org/1954/
如有侵权请联系:admin#unsafe.sh