登陆 注册

CVE-2019-0708技术分析(RDP-RCE)

桑云信息安云 2019-05-25 CVE-2019-0708技术分析漏洞剖析

微软补丁今年5月(2019年)附带针对关键RDP RCE漏洞的补丁,CVE-2019-0708远程桌面执行漏洞存在于远程桌面服务(RDP)预身份验证中,并且不需要用户交互Microsoft将其描述为“Wormable”所以我们可以看到新的Wannacry击中了世界!不幸的是,我们所知道的世界并不像我们想象的那样安全,而且在已知的互联网扫描仪(如shodan.iocensys.io等)中威胁大于公众网络

Shodan表示IPv4中有近400万RDP

我认为威胁超过那个数字!我们有RDP服务在其他端口上运行,而且这个号码本身并不是实时号码,但是从我自己的互联网扫描仪“Falcon-Claw”数据来自爬虫在过去24小时显示8057271 RDP主机在过去24小时在线,但它是不是博客是我的扫描仪是否更好,然后shodan

最近24小时直播RDP

所以攻击范围真的很大,我们所知道的世界有点风险,因为他们的易受攻击的系统暴露在互联网上有很多关键环境,所以让我们进入并理解这个错误!在这个博客中,我们将分析补丁并区分一些dll并尝试了解正在发生的事情!

作为大多数安全研究人员,我一直在用RDP尝试一些东西,因为它是好钱!例如zerodium为这样的漏洞利用支付大约1m $!所以它真的很好,但是我会选择正常的补丁分析过程,但事实上我已经跳过了很多东西,因为我已经知道我在找什么

顺便说一下,我们很快就会发现一些威胁狩猎家伙在未来几周内抓住这个漏洞 如果他们还没有!

安全更新

Microsoft提供2种格式的更新

  • XP / 2K3系统的exe格式

  • Windows 7 +的msu(独立更新)格式

但是我会选择“Windows 7 for x64-based System Service Pack 1”更新进行分析,因为我将讨论如何从Microsoft下载的更新中提取修补的dll,exe和驱动程序

KB4499175分析

KB4499175,我将分析它,我们将提取文件,我们将只收集有趣的东西,因为更新补丁其他错误,我们只是对RDP的东西感兴趣,也许网络驱动程序和Dll如果有什么

提取补丁

如果你试图用expand.exe解压缩它会很乱,但是我会建议一个PowerShell工具来提取补丁文件但是我已经使用这个工具一段时间了,因为输出真的很好组织PatchExtract125.ps1你可以通过msu文件通过-Patch,并尝试在空文件夹中执行!

./PatchExtract125.ps1 -Patch downloaded_update.msu
补丁文件
Get-ChildItem -Recurse -Filter *.dll|Export-Csv -Path all_dlls.csv
Get-ChildItem -Recurse -Filter *.sys|Export-Csv -Path all_sys.csv
Get-ChildItem -Recurse -Filter *.exe|Export-Csv -Path all_exe.csv

现在我们提取了我们可以在文件中写注释的文件,比如这个驱动程序负责视频内容,并且没有任何与dDP或与RDP服务相关的可执行文件相关或链接的内容

司机快速查看

我们的范围是RDP - Pre Auth我们将首先考虑驱动程序,也许我们将从那里开始,所以开始记录每个驱动程序功能及其工作方式,并尝试将有趣的驱动程序放在列表上以执行差异,但我不知道如果有一个列表知道驱动程序功能等所有我在互联网上看到的只是网站告诉你嘿你讨厌蓝屏吗?所以只是谷歌的驱动程序名称不会获得任何东西,但你可以尝试这个例如

peauth.sys site:microsoft.com

保持你的研究只在微软博客等你会得到有用的信息也保持努力cuz也许当你试图了解一个错误或补丁也许你可以得到其他的!

从0到差异

所以范围有点大,但我们仍然需要寻找一个快速的东西来节省时间,我已经看到用中文写的关于diffd termdd.sys的博客,他们发现有点好东西!但我不确定,我仍然不确定该漏洞是否可以降落在那里!但

使用Process Monitor

发送简单的未经验证的RDP网络数据包,它将落在2个地方,termdd.sys和ICAAPI.dll,但ICAAPI.dll未触及此补丁..它只是“与TermDD设备驱动程序的DLL接口”

有限的选择

所以现在我们在tremdd.sys的前面,所以我认为这是如何在端点上正常的RDP数据包着陆

tremdd.sys可能具有易受攻击的功能

ICAAPI.dll

在我们考虑diff tremdd.sys之前,一旦你区分它就不会花费太多时间来发现漏洞,但是要在易受攻击的函数内部或附近找到一个断点需要花费太多时间,所以我认为这是一个好主意ICAAPI.dll并了解执行漏洞,您可以轻松编写漏洞!

ICAAPI.dllb

dll开始由“svchost.exe”调用我不确定这个是否是该dll的最新版本,但是22 kb不会花费太多时间来反转,但现在就把它保留下来让我们分享驱动程序,因为这就是全部我们在补丁中得到了什么,让我们优先考虑

Diff termdd.sys

使用diaphora和IDA Pro,我开始看看termdd.sys

termdd.sys diff

_ReconnectStack

我的第一个想法来自_ReconnectStack功能,因为我看到视频来自“某个地方”利用这个bug,看起来攻击者在执行漏洞利用脚本之后进行了一次重新连接操作,并在下一次连接时弹出了一个shell

_ReconnectStack Diff

在右侧是修补的代码!因此,一旦你调用_ReconnectStack并且条件将只调用“ IcaRebindVirtualChannels ”而不是去抛出找到频道和“_IcaBindChannel”所以让我们在我们的计数中采取这个功能,我的意思是他们这样做是有原因的!也许它也可以被利用,但我找到了其他有趣的补丁功能

调用IcaBindChannel

IcabindVirtualChannels

在我们看一下易受影响的功能之前,我们将会看一下那些会让我们了解我们正在寻找什么的修补功能。

修补了通道编号

尝试将通道编号设置为31的补丁,但如果通道名称等于“MS_T120”,那么它会将其设置为其他内容,并且如果您正在查看修补的一侧,则始终突出显示受控参数,因为一旦您'在易受攻击的代码前面,你会知道你在寻找什么,这就是为什么我突出显示频道号,当你看到易受攻击的代码时你会理解更多。

r8d reg应该是31

测试eax并将r8d设置为rbp offet -2,这可能是来自(char_p - 1)的默认整数,如果通道名称不等于MS_T120,

只是意味着这个参数是31或来自(char_p - 1)'rbp-2'的其他int所以它现在是一个受控参数,是时候看看易受攻击的函数了

用stricmp打补丁这样一个关键的bug我不认为这是一个好主意也许它是安全的..

直接传递频道号码
r8d reg是频道号码

所以现在我们知道我们的受控参数是时候检查_IcaBindChannel寻找内存损坏或要利用的东西

我暂时不会谈论技术细节,但也许是从_IcaBindChannel开始的漏洞利用,断点击是启动艺术或BSOD所需的全部内容 但是,如果你有任何问题,请随时联系我 @ wazehell,我会尽快用一些PoC更新这个博客,一旦得到它就可以稳定利用!

谢谢阅读

原文标题:CVE-2019-0708 Technical Analysis (RDP-RCE)

原文地址:https://wazehell.io/2019/05/22/cve-2019-0708-technical-analysis-rdp-rce/

生成海报
已有1条评论
  • 2019-06-17 17:27:13

    你好,请问你会进行文档对比复现吗?想和你沟通学习一下

桑云信息安云

桑云信息安云

乐山桑云信息技术有限公司专注于企业安全与网站、小程序、APP架设,为企业客户提供一站式解决方案,帮助企业快速实现互联网+转型。
247文章数 0评论数
请关注微信公众号
微信二维码
不容错过
Powered By SangYun.Net