返回

文章详情

MSI中心 - 如何在几秒钟内获得系统权限

Hacker News2026年7月4日 00:57

在发现AMD和华硕的OEM软件存在严重漏洞后,我希望通过寻找更多游戏产品中的问题来拓宽我的视野。最终我选择了MSI中心,因为它似乎在他们的所有笔记本电脑和预构建台式机上都预装,这意味着我发现的任何漏洞可能会产生广泛的影响。下载与提取这个过程的第一步是始终下载离线安装程序。许多这些公司要么阻止安装程序在不受支持的硬件上运行,要么只允许安装他们软件的少数选项。一旦你拥有离线安装程序的副本,你需要通过Detect-It-Easy运行它并祈祷。如果你运气好,它可能会告诉你用于打包MSI中心的软件。在我们的案例中,我们很幸运,它告诉我们MSI中心是使用一个叫做Inno Setup的工具打包的。专门为这种情况制作了一个工具,叫做innoextract。在提取安装程序和其中包含的.appxbundle(它只是一个.zip文件)之后,就到了反编译可执行文件的时候。反编译总共有170个可执行文件(包括DLL),其中大部分是使用C#编写的。对于它们,我制作了一个bash脚本,以ilspycmd反编译所有文件。find . ( -name "*.exe" -o -name "*.dll" ) -exec file {} + | grep Mono | wc -l find . ( -name "*.exe" -o -name "*.dll" ) -exec file {} + | grep -v Mono | wc -l 对于剩下的用C++编写的文件,我选择了大约10个最有趣的文件,将它们放入IDA中,然后将它们的完整反编译导出为.c文件。在完成所有这些后,我得出的结论是,文件实在太多,无法逐一查看。相反,我不得不搜索常见的弱点,希望能找到一些东西。我grep的其中一个是CreateNamedPipe。(命名管道是计算机上不同进程相互通信的一种方式。)该漏洞MSI的“笔记本基础设施”服务在引导时生成一个任何经过身份验证的用户都可以交互的命名管道。CreateNativePipeSecurity("D:(A;OICI;GRGW;;;AU)(A;OICI;GA;;;BA)"); CreateNamedPipe("\\.\pipe\MSI_SERVICE_2", PIPE_ACCESS_DUPLEX); 它提供以下可触发的命令:握手要调用/交互以下命令,你需要“注册”你的应用程序。你只需提供一个任意的客户端名称,然后在调用其他命令时将其作为参数提供。注册这允许你以LocalSystem(最高权限)读取、写入和删除任何注册表项。WMI(Windows管理工具)这允许你监控系统硬件,并更改系统设置(例如,Windows Defender设置和排除项)。PC REXE - 以LocalSystem身份运行任何可执行文件及其参数。KEXE - 杀死系统上的任何可执行文件(同样以LocalSystem身份运行)。正如你可能猜到的,向任何授权用户(包括没有本地管理员权限的用户)暴露这些工具是极其危险的。恶意软件可能会滥用这些工具来禁用Windows Defender或获得系统级权限。概念证明(PoC)历史上,MSI主要依靠模糊安全来防止利用。他们创建了一个用于与管道通信的自定义协议,并要求所有消息使用3DES(现今标准下已过时且不安全的密码)进行加密。打开与MSI_SERVICE_2命名管道的连接。使用随机字符串(例如ABCD123)注册一个应用程序。使用3DES加密你的PC:REXE命令,并将客户端名称作为密钥。Notebook Foundation服务尝试通过尝试所有已注册的客户端名称来暴力破解解密,直到其中一个成功。如果解密成功,它便以LocalSystem身份运行有效负载。对于我创建的概念证明,它仅启动cmd.exe以表明可以用来提升权限。然而,恶意软件可能会运行任意的PowerShell命令或脚本。我最近发现这个漏洞也可以通过LAN上的SMB远程触发,导致远程代码执行(RCE)。但是,由于命名管道仅对经过身份验证的用户响应,因此成功利用需要有效的目标计算机登录凭据。报告当我通过他们的PSIRT电子邮件向MSI发送此漏洞的报告时,我收到了令人担忧的回复:远程服务器返回'554 5.2.2 邮箱满;STOREDRV.Deliver.Exception: QuotaExceededException.MapiExceptionShutoffQuotaExceeded;'这基本上意味着接收漏洞报告的邮箱已满,拒绝接受任何额外的电子邮件。它不仅拒绝接受我的漏洞报告,而且可能已经这样有一段时间,拒绝了其他人的漏洞报告,而不仅仅是我的。因为这个原因

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡