DEFCON Conference27。受益于macOS的黑客产品。 第二部分

DEFCON Conference27。受益于macOS的黑客产品。 第一部分

该漏洞利用程序从远程黑客C&C服务器接收到带有恶意代码的文件后,便继续执行该文件。 使用内置的ditto命令解压缩恶意软件存档,然后通过NS API执行恶意软件存档时,它使用相同的SDF方法。 因此,Windall使用标准的内置引导程序。



此外,后门配备了自动清算逻辑,因此,每次恶意软件启动时,它都会与黑客服务器联系并询问是否应将其卸载。 如果C&C服务器以代码“ 1”响应,则程序将自身删除,从而停止间谍软件活动。



这是一项非常有用的功能,它使攻击者可以远程“消毒”目标,而不会留下任何干预痕迹。 现在,我将展示如何根据自己的需要重制该病毒。



首先,让我们谈谈对漏洞利用的校对。 创建一个可以自动下载包含恶意应用程序的ZIP文件的黑客网页非常简单。 如前所述,Safari默认情况下会自动将ZIP存档解压缩,因此,如果我们在实现某些URL处理程序的恶意软件中放置一个恶意应用程序,Mac OS将在用户启动该应用程序之前自动对其进行注册。

恶意网页然后可以请求此已注册的用户URL,这将导致应用程序启动。 通常,会弹出一个警告窗口,但用户单击按钮时却不注意它。

因此,您将看到重新设计的漏洞利用的演示以及一个警告窗口,其中“ Final_Presentation”是从Internet下载的应用程序,询问用户是否确定要在计算机上打开它?

单击“打开”按钮是导致弹出窗口的第二个请求,如果用户单击其中显示的应用程序图标,我们将看到该恶意软件已自动安装在系统上。



苹果公司存在一个逻辑缺陷,您无需修补操作系统即可感染系统,并且该缺陷在最新版本的macOS中仍然有效。 现在我们已经重新利用了漏洞,让我们来谈谈重新构建恶意软件。



我们的第一步是替换C&C服务器的内置地址,以便利用程序可以联系我们的服务器并从中下载转换后的恶意软件。 不幸的是,地址已经加密,但这并没有打扰我们。 我们决定让恶意软件始终加载动态库。 然后,一旦在恶意进程的地址空间中启动了我们的库,我们就可以从原则上修改恶意软件,以便在使用该服务器进行连接之前,该恶意软件在运行期间会拦截C&C服务器的解密地址。 让我们仔细看看这个过程。

让我再次提醒您-我们的目标是通过指定我们自己的C&C服务器来重新配置恶意软件,以便该恶意软件可以重新连接到我们的基础结构。



因此,将动态库加载到了恶意软件地址空间中,我们替换了解密过程,或者应用了Swizzle。 这种高效而强大的API替换方法称为Yoop。

幻灯片显示,我们以某种方式替换了解密功能,只要恶意软件调用它,它实际上就会在我们的库中调用我们的解密方法。 我不知道解密算法是什么以及它如何工作,坦率地说,我不在乎,但是在替换之后,我可以看到这种加密的结果。 因此,如果原始的加密方法将解密后的C&C服务器地址返回给我,我可以简单地将自己的C&C服务器嵌入恶意软件逻辑中。 这使我们可以用我们的服务器透明地替换解密的C&C服务器。

现在,我向库中添加了一些调试消息,以便在运行转换后的恶意软件时,我们可以看到在执行过程中如何替换C&C服务器地址。 在命令行终端窗口中,您可以看到经过原始解密方法的库如何检测到此答案来自C&C服务器,该服务器的地址现已解密。



由于我们不希望我们的程序引用原始恶意软件的逻辑,因此我们只需放弃此功能并返回到自己的程序即可。 当然,我们必须始终确保后门正在访问我们的C&C服务器,而不是原始APT组的服务器。

我们需要编写C&C服务器,因为现在恶意软件将连接到该服务器,并且我们需要提供与该协议的“对话”,以正确地使恶意软件复杂化。



Windtall后门的主要功能是收集和提取用户文件,因此首先我们需要将此功能添加到C&C服务器。 通过POST请求检索文件,因此我们只写了几行Python代码,以允许我们保存从受感染主机检索并发送给我们的文件。

您会在屏幕上看到我们的C&C服务器如何接收从受攻击计算机提取的文件。



在左侧,您可以看到网络请求是如何传入的,而在右侧-我们的服务器如何将它们写入文件系统。 这意味着我们现在支持恶意软件从受感染主机提取所有类型文件的功能。

我们还调整了C&C服务器以支持Windtall的下载和执行功能。 我们注意到,此恶意软件执行了2个请求。



第一个请求涉及获取要下载的文件名,第二个请求我们必须使用要下载的文件的特定字节来响应。 恶意软件会将所有内容保存到我们指定的文件中,然后将其解压缩并执行。 我再重复一遍-使用Python只需花几行,这很简单,因为它使用了许多内置库。

一旦这样做,我们就有机会“迷惑”植入物。 让我们看看它的实际作用。 我们看到了恶意软件如何连接到C&C服务器,因为我们成功更改了原始服务器的地址,并执行了赋予它的任务-它下载了Calculator应用程序。



远程下载和执行应用程序的能力意味着我们可以在用户计算机上安装其他工具或其他恶意软件示例。 这无限扩大了使用重新设计的黑客软件的潜力。

最后,让我们的服务器能够远程删除恶意软件。 如果来自FBI的人员闯入您的大门,那么自我毁灭功能将非常有用。 一键单击-病毒本身将自己从所有受感染的系统中删除。



间谍软件会定期与我们联系,询问是否有必要将其删除,如果有必要,我们仅用代码“ 1”响应,然后将其从系统中完全卸载。

另一个演示将对此进行演示。 您会看到我们的恶意软件具有模仿Power Point文档的自己的橙色徽标,但实际上,它是一个隐藏的系统目录。



在它再次向C&C服务器发送销毁请求后,我们回答了一个,橙色图标从程序目录中消失了,并且应用程序本身停止了与我们的“交谈”,因为它执行了自毁操作。



因此,我们已经展示了如何重新配置​​了macOS恶意软件的一些样本,现在让我们讨论如何保持未被检测到。 由于我们正在重做macOS内置保护和第三方防病毒软件检测并阻止的已知恶意程序,因此我们需要以某种方式解决此问题。

如何不被发现


首先,让我们讨论一下macOS内置的病毒检测和控制程序,例如XProtect,MRT病毒清除工具和证书吊销检查。



乍一看,这看起来很成问题,因为这些程序可以阻止我们在任何Mac上转换的间谍软件。 因此,您需要考虑如何绕过保护措施,因为如果我们被精心设计的恶意软件所困,而Apple阻止了它,那将是一次彻底的失败。

首先让我们看一下XProtect。 这是一个基于病毒库的简单防病毒扫描程序,内置在最新版本的macOS中。



它会根据病毒检测规则,在用户首次启动计算机之前扫描用户在计算机上下载的文件。 在屏幕上,我们看到了OSX.KeRanger.A病毒签名的扫描,我们对其进行了重新分析。

我们编写了一个名为UXProtect的简单实用程序,该实用程序使您可以通过UI用户界面检查这些签名,并可以随时扫描文件以查看病毒签名。 由于XProtect仅使用签名检测引擎,因此非常容易解决。 让我们仔细看看KeRanger病毒的特征。



我们看到一组恶意软件签名的指示,您只需要重新排序或修改这些说明中的任何一条即可绕过。 更改指令的几个字节会导致签名不再与检测参数匹配。 例如,我们将要从缓冲区读取的字节数从0x400更改为0x300。 这不会影响病毒的功能,但是一旦我们更改了扫描程序检查与签名匹配的字节数,我们便完全排除了XProtect对这种威胁做出反应的可能性。

现在是进行另一个演示的时候,您将在此处看到KeRanger的两个示例。 我们再次使用受感染的BitTorrent客户端。 屏幕的左侧是该病毒的原始黑客副本,右侧是其重新设计的版本,该版本为了获取加密密钥与我们的C&C服务器通信。 此外,已对其进行了修改以规避XProtect保护。



您会看到原始病毒的实例被系统阻止而无法启动,并且唯一允许的操作是删除。



如果我们发布了重新设计的KeRanger版本,则系统仅报告它是从Internet下载的,并询问我们是否真的要启动它。



如果单击“打开”,则勒索软件将悄悄安装在系统中,并立即开始加密所有用户文件。



保护Mac的另一种方法是验证证书签名。 GateKeeper安全功能不会阻止大多数签名的macOS二进制文件,这就是黑客为大多数现代Mac恶意软件提供签名的原因。 另一方面,一旦检测到签名病毒,Apple只会撤销其签名证书。 这意味着该恶意软件无法在任何Mac上运行。

例如,我们有一个Windtall病毒二进制文件,其签名证书已被Apple吊销。 这意味着,即使我们重新剖析并将其应用于新系统,我们仍将无法启动。 因此,我们只是尝试通过删除签名证书本身来绕过证书吊销过程。



然后,我们使用转换后的恶意软件的未签名副本或为它提供不同的合法签名证书,这很容易获得。

为了实际删除证书,Apple本身提供了一个名为Code Sign的实用程序,其中包含未记录的remove-signature标志或“ remove signature”。 如果您对恶意软件执行此操作,Apple根本不会关注已吊销的签名证书。

我们还可以使用相同的实用程序,使用codesign -s“ Developer ID Applikation:”命令对应用程序进行重新签名。 这将导致重新签名的Windtall不再被macOS阻止。

最后,我们继续使用MRT,这是Mac操作系统的最新版本上提供的内置病毒清除工具。 它与XProtect相似,但是它会扫描系统上已安装的恶意软件,并在检测到该恶意软件时自动对其进行检测。 与XProtect不同,其签名嵌入在自己的二进制文件中。 Apple经常使用此工具删除它认为对您的计算机不安全的合法应用程序。 这些通常是包含已知漏洞的应用程序。



由于MRT像XProtect一样使用签名,因此也可以绕开它。 我们再次使用MRT转储,因为签名是内置在二进制文件本身中的,并且能够查看所有签名,包括Fruitfly病毒签名。 我们想知道MRT是否可以检测到我们转换后的恶意软件副本?



我们开始研究Fruitfly的内置签名,发现它的检测基于两件事:安装病毒的路径和下载的.plist文件。 这意味着,如果我们更改恶意软件的路径或名称,MRT将无法检测到它。 正如我所说,结果,避开这种保护非常简单。

我们发现避开第三方防病毒软件也并不困难,因为即使在用户已经安装了防病毒软件的系统上,您也可以运行转换后的病毒。



关于这个主题有很多话题,我不想详细介绍,但是总的来说,传统的防病毒产品都是基于签名验证的,例如Apple防病毒软件,这意味着可以用相同的方法来规避它们。

例如,我使用了相同的Fruitfly,记住它也是一个Perl脚本,并将其通过免费的Perl Obfuscator在线实用程序传递,该实用程序旨在使Perl脚本难以阅读并将其检测到的可能性降低为零。 自然,它起作用了。 但是,您可以采用更巧妙的方式,特别是如果您使用基于二进制的恶意软件。 您可以将其打包到存档中,使用加密器,甚至在内存中执行,即在RAM中进行无文件下载和病毒执行。

几年前,在BlackHat会议上讨论了这些技术,得出的结论是,即使Mac用户在系统上安装了第三方防病毒软件,它仍然无法检测到重新编程的恶意软件。 对于macOS用户来说,这是个坏消息,因为我们知道经验丰富的黑客会使用转换后的恶意软件。 通常,整个更改归结为更改了几个字节的代码或命令行参数,这使得可以控制计算机以将其用于自己的目的。 此外,大多数macOS内置防病毒工具和第三方防病毒软件都无法检测到转换后的威胁。

由于此重新设计的软件只是一个稍作重做的原始间谍软件,因此,我将戴上“白帽子”,告诉您如何仍然可以找到它们。

重新配置软件检测


众所周知,基于签名的防病毒软件无法应对转换后的恶意软件。 因此,我们应注意此类恶意软件的异常,异常,恶意行为。

我们必须尝试检测它,这不是通过众所周知的病毒签名,而是通过观察它在系统中的行为。 我们已确保您重新制作著名的间谍软件时,其基本功能和用途保持不变。

如果我们重新制作Ransomware勒索软件木马,它仍将加密您的文件,并且重新设计的后门将继续收集文件并将其发送到间谍服务器。
在上面的幻灯片上,我显示了系统的功能或功能,应该对其进行监视并对其活动进行监视。 其中包括应用程序的“持久性”,异常的麦克风或摄像头活动,下载或传输文件,未经授权的屏幕捕获,键盘拦截症状,合成点击器和文件加密。 这甚至可以检测到重新定位的恶意软件。

让我们谈谈毅力。 当我说“持久性”时,是指在计算机上安装间谍软件后,它将在每次重新启动系统后自动自动启动。 这是macOS或Windows的任何恶意软件的功能-努力实现恶意目标。

我们可以通过观察“持久”应用程序的行为来简单地控制文件系统,如果文件系统发生更改,则将其通知用户或系统管理员。

现在,我想演示如何检测原始或重塑的Windtall病毒的活动,该病毒的特征在于未经授权访问麦克风或网络摄像头Mac。



许多Mac恶意软件都访问网络摄像头或麦克风,以监视受感染系统的用户。 为了检测这种病毒活动,我们可以在macOS系统中每次打开摄像机和麦克风时进行注册,以便用户自动接收有关此事件的通知。 , FruitFly, , Zoom, .

. , .



macOS – Event Taps. , . .

FruitFly, , , – «» .



, macOS, . . , macOS , . , .

Objective-See, - macOS. , . , , .



, – , , « ».



, Digita Security, . : . Apple, , .

, . , , , , macOS.

, . , Windtall, , Safari , .



, URL , - URL. Windtall, , .

FruitFly , , - . , , , Apple, - .

, FruitFly , . , . template . , .

因此,如果系统中发生相互关联的可疑事件,我们应该仔细观察它们。在以上示例中,我演示了行为启发式技术如何检测甚至复杂的,重新设计的macOS安全威胁。

最后,我想宣布2020年2月在夏威夷举行的年度Mac安全会议,并邀请您参加。




一点广告:)


感谢您与我们在一起。 你喜欢我们的文章吗? 想看更多有趣的资料吗? 通过下订单或向您的朋友推荐以支持我们,开发人员的云VPS从4.99美元起为Habr用户提供30%的折扣,这是我们为您发明的入门级服务器的独特模拟: 关于VPS(KVM)E5-2650 v4的全部真相(6核心)10GB DDR4 240GB SSD 1Gbps from $ 20或如何共享服务器? (RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

戴尔R730xd便宜2倍? 只有我们有2台Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100电视在荷兰起价199美元 戴尔R420-2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB-$ 99起! 阅读有关如何构建基础架构大厦的信息。 使用价格为9000欧元的Dell R730xd E5-2650 v4服务器的上等课程?

Source: https://habr.com/ru/post/zh-CN474590/


All Articles