背景
Windows Contact是一种文件类型,用于存储和管理Windows操作系统中的联系人信息。它是一种通用的联系人数据格式,包含个人或组织的姓名、地址、电话号码、电子邮件地址等联系信息。
此漏洞早在19年就公开发布过0day公告,Windows在处理 Contact 文件时存在特定缺陷,在联系人文件中构建的数据可能会导致 Windows 显示危险的超链接。用户界面无法提供足够的危险指示,攻击者可以利用此漏洞在当前用户的上下文中执行代码。
2022年12月13日,微软针对该漏洞发布了补丁,但是该补丁仍然能够被绕过,影响范围包括最新的Windows系统版本,攻击者通过社会工程学手法诱导用户交互,将导致目标主机失陷。
01 漏洞成因分析
首先对公开poc进行分析,发现其在syslink控件中,直接调用了payload.lnk文件,
由于其是个进程创建事件,为了方便定位漏洞位置,直接上调试器,在进程创建函数也就是在SHELL32!ShellExecuteExW中下断点,定位堆栈如下。
可以看出进程创建发生在wab32.dll中的SafeExecute函数中。
分析函数功能,函数首先判断URL是否为本地文件(通过UrlIsW函数),如果是,则调用AESAttemptExecute尝试以管理员权限运行文件并返回执行结果;否则,使用ShellExecuteExW函数打开URL对应的应用程序(如果在系统中没有找到该应用程序,则返回错误代码),并返回执行结果。在microsoft文档中对其也有解释,
所以该函数本质上就是提供了执行程序的功能,只是对href中的值没有做足够的过滤,导致其可以执行我们的自定义程序,而这也为我们后续提供其绕过过滤带来了可能性。
02 漏洞绕过分析
对补丁进行diff,发现主要在fnSummaryProc→SafeExecute函数的路径上添加了判断,现在在调用SafeExecute前,会判断href字段是否是网络地址,如果不是,则进入IsInternetAddress函数判断地址是否合法后调用SafeExecute。
可能是为了兼容其他协议,IsInternetAddress这里在判断字段中如果存在@,则调用IsDomainName函数判断是否有域名,那么我们构造一个名为@payload.lnk的文件,依然符合域名规范,从而绕过。
于是绕过方式就比较简单,只要将我们即将执行的程序带有@字段,则可实现绕过,经过测试,目前最新版本的windows依然存在此问题。
03 钓鱼利用风险
利用手法赏析
进入文件资源管理器的联系人界面,即可新建Contact文件,如图,保存创建好的Contact文件后通过文本编辑器,可以查看Contact文件对应的原始xml内容。
图:创建并查看Contact文件内容
利用该漏洞在Contact文件中的标签处构造恶意payload,如图,用户点击被恶意修改后的邮件地址信息,即可触发漏洞,打开对应路径下的恶意文件。
图:Contact文件触发漏洞打开本地恶意文件
由于该漏洞需要在用户打开文件后诱导其点击才能触发,所以首先想到的就是需要想办法消除Contact文件中的html标签,如图,Contact文件中可显示的内容长度是固定的,只需要通过加入足够长的字符即可隐藏多余的标签显示,为了使Contact文件更具诱导性,下面的例子中通过在文件名中插入长空格和内容简单修改,让受害者误以为是简历文件,点击后将触发漏洞。
图:伪装成简历的恶意Contact文件
利用可行性
相比用户点击触发,该方式最大的问题其实是默认打开程序限制:当打开.contact的默认程序不为Windows Contact程序时,文件会被显示为空白图标,并且触发漏洞时,还会丢失文件的运行目录,导致无法打开相对路径下的文件。下图中,利用远程共享文件的方式解决了相对路径读取问题,并且通过 jar文件,绕过远程可执行文件的异常弹框告警问题。
图:通过远程共享文件的形式打开Contact
除了使用上面的方式,还可以利用Word 文档和LDAP协议远程加载构造好的恶意payload,能实现的效果如图:当打开Word文档时,自动打开恶意Contact文件,这种方式可以解决非默认打开方式时的图标显示和路径读取问题。
图:利用Word 文档和LDAP协议远程加载Contact
图:LDAP服务端构造的恶意代码
04 攻击验证
绿盟一体化终端安全管理系统(UES)通过对系统行为的实时监控和深度分析,能够精确识别出与CVE-2022-44666漏洞相关的异常行为模式。一旦发现有可疑的漏洞利用行为,UES将第一时间发出警报,并提供相应的处置措施,帮助管理员及时做出反应并采取必要的防护措施。
附录 参考文献
【1】https://www.zerodayinitiative.com/advisories/ZDI-19-121/
【2】https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-44666
【3】https://github.com/j00sean/CVE-2022-44666
绿盟科技天元实验室专注于新型实战化攻防对抗技术研究。
研究目标包括:漏洞利用技术、防御绕过技术、攻击隐匿技术、攻击持久化技术等蓝军技术,以及攻击技战术、攻击框架的研究。涵盖Web安全、终端安全、AD安全、云安全等多个技术领域的攻击技术研究,以及工业互联网、车联网等业务场景的攻击技术研究。通过研究攻击对抗技术,从攻击视角提供识别风险的方法和手段,为威胁对抗提供决策支撑。
M01N Team公众号
聚焦高级攻防对抗热点技术
绿盟科技蓝军技术研究战队
官方攻防交流群
网络安全一手资讯
攻防技术答疑解惑
扫码加好友即可拉群
原文始发于微信公众号(M01N Team):CVE-2022-44666 Windows Contact漏洞社工利用分析和检测