寻找初始向量
我们的方法在很大程度上依赖于外部攻击面的侦察,但是由于空中3万英尺的低速wifi网络,我们发现这有点不切实际。急于破解,我们决定在macOS上查看Zoom的桌面客户端。
我们注意到的第一件事是与Zoom macOS客户端打包在一起的名为ZoomOpener的二进制文件。二进制文件注册了URL处理程序。zoomopener://,并在端口19421上运行本地网络服务器作为守护程序。
对Web服务器的用途/功能感到好奇,我们在拆装器中加载了ZoomOpener并开始四处浏览。很快,我们就能找到名为的端点/launch,经过一番摸索后发现这可能会触发macOS安装程序包的下载和安装。
这听起来像是远程执行代码错误的先兆,我们认为值得进一步研究。我们花了其余的时间来尝试构建概念验证,但运气不佳,发现此功能比我们最初想象的要复杂。
Shubs和Sean在理解Zoom客户端编写的Objective-C方面也遇到了困难,因此他们离开了它,直到我们与团队合作就概念证明进行进一步合作。
幸运的是,降落后我们处于良好的状态。我们对iOS骇客做了很多研究,并且对Objective-C很有经验。
逻辑缺陷
第二天,开始在我们查看ZoomOpener二进制文件。跳水进入反编译,我们发现,当软件更新被触发以正确的端点功能downloadZoomClientForDomain:的ZMLauncherMgr类被称为传递提供给该域launch的端点上的本地Web服务器。
此函数首先检查用户计算机上是否已下载了安装程序包,以及是否存在该包,请使用该类中的installPkg:函数继续进行安装ZMLauncherMgr。
如果未下载任何软件包,则该函数将触发下载,并以提供