首页
社区
课程
招聘
[翻译]MacOS平台一个古老的恶意软件INIT29的分析
2020-5-14 11:15 7838

[翻译]MacOS平台一个古老的恶意软件INIT29的分析

2020-5-14 11:15
7838

上一篇文章中,我介绍了我设置的“经典” Mac OS仿真器。 我设置模拟器的目的之一是能够查看和分析感染旧版Mac OS的病毒。 我认为研究旧病毒很有趣的原因有二。 首先,它很好地概述了68k汇编。 其次,这提供了一个研究恶意软件历史的有趣角度。 我决定研究的第一个病毒称为INIT 29。

概述

下面是Disinfectant 3.7.1的帮助文件对此病毒的简短描述:

INIT 29病毒于1988年底首次出现。我们对其起源了解不多。 第二个较小的变异出现在1994年3月。两种类型之间没有显着差异。 原始型称为“ INIT 29 A”。 该变型称为“ INIT 29 B”。

INIT 29具有极强的感染性。 它迅速传播。 与Scores和nVIR不同,系统不必运行应用程序即可被感染,而且INIT 29可以感染几乎所有文件,包括应用程序,系统文件和文档文件。 文档文件可以被感染,但没有传染性。 该病毒只能通过系统文件和应用程序文件传播。

感染的应用

使用ResEdit可以轻松识别感染了INIT 29病毒的应用程序。 如下图:

 

App Jump Table

 

病毒的第一个指示是恰好712个字节的CODE资源。 第二个指示可以在跳转表中看到。 每个可执行文件都有一个包含跳转表的ID为0的CODE资源。 如果是小型应用程序,则表中可能只有一两个条目。 通常,当编译器构建应用程序时,它将顺序创建CODE资源,并且类似地,跳转表也将以线性方式进行布局。 跳转表中的第一个条目指向可执行文件的主要入口点。 然而对于上面的跳转表,跳转表中的第一个条目实际上指向ID为3的CODE资源。基于资源名称,你可以看到ID 1的名称为“ Main”,且包含最多的代码,这应该是应用程序的入口点,但是INIT 29病毒已修改了跳转表入口以指向自身。

 

下图显示了一部分病毒代码。 您可以看到它如何将原始跳转表条目保存到ID为1的CODE资源中。

 

App Virus CODE Resource

 

运行受感染的应用程序时,它将调用UseResFile并传递refNum值为零。 这将检索系统资源文件。 然后,它将在INIT资源部分中创建一个ID为29的新条目。这也是病毒名称的来源。 病毒会将其所有712字节自身复制到此INIT资源中。 然后,当系统下次启动时,将执行此代码。

感染的系统文件

使用ResEdit也很容易识别受感染的系统文件。 我们可以在模拟器中运行受感染的应用程序,然后在病毒启动前后使用ResEdit比较系统文件。

 

System File Infection

 

左侧是病毒启动前的应用程序,右侧是病毒启动后。 你可以看到,在运行了受感染的应用程序之后,现在有了ID为29,大小为712字节的新 INIT资源。 如果我们反汇编病毒代码,则可以看到以下内容:

 

INIT 29 Code

 

INIT代码很短,它调用传入$A997的GetTrapAddress来获取当前OpenResFile函数的地址。 它将检查是否已打补丁,如果尚未打补丁,则会保存指向原始函数的指针。 然后,它在系统堆上分配712个字节,并在那里复制其自身。 最后,它调用SetTrapAddress将其自身安装为新的OpenResFile函数。

被劫持的OpenResFile

OpenResFile是重要的系统API, Finder每次打开文件或运行可执行文件时,都要调用OpenResFile查找有关该文件的信息。由于使用频率很高,所以病毒利用它也非常容易感染其他文件。劫持的OpenResFile版本首先调用该函数的原始操作系统版本。这将加载资源文件并将其设置为当前资源。然后,病毒会查看该文件是否有任何CODE资源。如果该文件没有任何CODE资源,则该病毒会创建ID为29的INIT资源,并将其712字节复制到其中。这样会导致文档文件包含病毒代码,但无法感染其他任何文件。如果打开的资源确实具有CODE资源,则病毒会尝试查找要使用的空闲ID。它将使用最低的空闲ID来创建新的资源条目,并将其712字节复制到其中。之后,它将打开ID为0的CODE资源,并修补跳转表以指向刚创建的新资源。这导致应用程序在下次尝试感染系统文件时开始运行病毒代码。

总结

通过INIT 29病毒尝试感染打开的每个资源文件,可以很容易地看出为什么Disinfectant帮助文件称该病毒为“极具传染性”。 在大多数情况下,该病毒是无害的,只会感染文件。 但是,由于它确实劫持了应用程序的启动,因此有可能在启动程序时注意到速度变慢。特别有趣的是,这个病毒仅用712字节的代码就能完成这么多的工作。

IOCs

Indicator Type Context
36ff546b093706c98524657e69b124b4bb8ff763b02ee5a7df3281d5ff7a8d91 SHA256 Init29.A
b40e63e0ae669ed362370e0b05e20067c1e3d285f2532927ee58a5dea275571a SHA256 Init29.C
b0318fa75edd599ca739e774fe7a4dcacd2b5e60bcf7830ed45adbbaaacad83a SHA256 Init29.C
2c08b750c30cbd36827f2ccc01546e4fe3aa5ef86b4fd7a9b65038540849feb8 SHA256 Init29.C
 

翻译:看雪翻译小组 一壶葱茜

 

校对:看雪翻译小组 Nxe

 

原文地址:https://knight.sc/malware/2020/05/02/init-29.html


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回