freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

CVE-2022-44666 Windows Contact漏洞钓鱼利用分析
绿盟科技 2023-08-04 11:00:08 264388

0x00 背景

Windows Contact是一种文件类型,用于存储和管理Windows操作系统中的联系人信息。它是一种通用的联系人数据格式,包含个人或组织的姓名、地址、电话号码、电子邮件地址等联系信息。

此漏洞早在19年就公开发布过0day公告,Windows在处理 Contact 文件时存在特定缺陷,在联系人文件中构建的数据可能会导致 Windows 显示危险的超链接。用户界面无法提供足够的危险指示,攻击者可以利用此漏洞在当前用户的上下文中执行代码。

2022年12月13日,微软针对该漏洞发布了补丁,但是该补丁仍然能够被绕过,影响范围包括最新的Windows系统版本,攻击者通过社会工程学手法诱导用户交互,将导致目标主机失陷。

0x01 漏洞成因分析

首先对公开poc进行分析,发现其在syslink控件中,直接调用了payload.lnk文件,

由于其是个进程创建事件,为了方便定位漏洞位置,直接上调试器,在进程创建函数也就是在SHELL32!ShellExecuteExW中下断点,定位堆栈如下。

可以看出进程创建发生在wab32.dll中的SafeExecute函数中。

分析函数功能,函数首先判断URL是否为本地文件(通过UrlIsW函数),如果是,则调用AESAttemptExecute尝试以管理员权限运行文件并返回执行结果;否则,使用ShellExecuteExW函数打开URL对应的应用程序(如果在系统中没有找到该应用程序,则返回错误代码),并返回执行结果。在microsoft文档中对其也有解释,

所以该函数本质上就是提供了执行程序的功能,只是对href中的值没有做足够的过滤,导致其可以执行我们的自定义程序,而这也为我们后续提供其绕过过滤带来了可能性。

0x02 漏洞绕过分析

对补丁进行diff,发现主要在fnSummaryProc→SafeExecute函数的路径上添加了判断,现在在调用SafeExecute前,会判断href字段是否是网络地址,如果不是,则进入IsInternetAddress函数判断地址是否合法后调用SafeExecute。

可能是为了兼容其他协议,IsInternetAddress这里在判断字段中如果存在@,则调用IsDomainName函数判断是否有域名,那么我们构造一个名为@payload.lnk的文件,依然符合域名规范,从而绕过。

于是绕过方式就比较简单,只要将我们即将执行的程序带有@字段,则可实现绕过,经过测试,目前最新版本的windows依然存在此问题。

0x03 钓鱼利用风险

利用手法赏析

进入文件资源管理器的联系人界面,即可新建Contact文件,如图,保存创建好的Contact文件后通过文本编辑器,可以查看Contact文件对应的原始xml内容。

图:创建并查看Contact文件内容

利用该漏洞在Contact文件中的<c:Address>标签处构造恶意payload,如图,用户点击被恶意修改后的邮件地址信息,即可触发漏洞,打开对应路径下的恶意文件。

图:Contact文件触发漏洞打开本地恶意文件

由于该漏洞需要在用户打开文件后诱导其点击才能触发,所以首先想到的就是需要想办法消除Contact文件中的html标签,如图,Contact文件中可显示的内容长度是固定的,只需要通过加入足够长的字符即可隐藏多余的标签显示,为了使Contact文件更具诱导性,下面的例子中通过在文件名中插入长空格和内容简单修改,让受害者误以为是简历文件,点击后将触发漏洞。

图:伪装成简历的恶意Contact文件

利用可行性

相比用户点击触发,该方式最大的问题其实是默认打开程序限制:当打开.contact的默认程序不为Windows Contact程序时,文件会被显示为空白图标,并且触发漏洞时,还会丢失文件的运行目录,导致无法打开相对路径下的文件。下图中,利用远程共享文件的方式解决了相对路径读取问题,并且通过 jar文件,绕过远程可执行文件的异常弹框告警问题。

图:通过远程共享文件的形式打开Contact

除了使用上面的方式,还可以利用Word 文档和LDAP协议远程加载构造好的恶意payload,能实现的效果如图:当打开Word文档时,自动打开恶意Contact文件,这种方式可以解决非默认打开方式时的图标显示和路径读取问题。

图:利用Word 文档和LDAP协议远程加载Contact

图:LDAP服务端构造的恶意代码

0x04 攻击验证

绿盟一体化终端安全管理系统(UES)通过对系统行为的实时监控和深度分析,能够精确识别出与CVE-2022-44666漏洞相关的异常行为模式。一旦发现有可疑的漏洞利用行为,UES将第一时间发出警报,并提供相应的处置措施,帮助管理员及时做出反应并采取必要的防护措施。

参考文献

https://www.zerodayinitiative.com/advisories/ZDI-19-121/

https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-44666

https://github.com/j00sean/CVE-2022-44666

# 钓鱼攻击 # 漏洞分析 # 漏洞利用 # 钓鱼技术
本文为 绿盟科技 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
M01N Team
绿盟科技 LV.10
绿盟科技官方账号
  • 1637 文章数
  • 335 关注者
《网络安全2025:冲刺“十四五”》发布
2025-04-01
《2025网络安全趋势报告》发布
2025-04-01
攻防演练竟成“翻车现场”,是哪个环节没盯住?
2025-04-01
文章目录