恶意代码分析实战-Labs

· 2 分钟 · 恶意分析

#恶意分析

目录

1

1-1

  1. 先将文件Hash上传 VirusTotal 查看信息

img

img

  1. 使用 PEStudio 查看文件信息,可以知道编译时间

img

  1. 查看节区表信息,认为没有进行加壳或混淆

img

  1. 查看导入表,发现有使用网络传输的模块,和遍历本地文件的模块,认为可能是泄露本地信息的恶意行为。

img

  1. 在 strings 中可以看到有一个形似 kernel32.dll 的 kerne132.dll。

img

  1. 在 strings 中可以看到有一个IP地址。

img

  1. 根据以上信息认为是一个 Uploader 或者是一个 Downloader

1-2

  1. 上传至 VirusTotal 查看报告

img

  1. 使用 DIE 和 PEStudio 都可以看到,DIE 检测到有 UPX 壳,而 节区表中的节区名为 UPX0 UPX1 是明显的 UPX 加壳特征。使用 UPX 官方软件脱壳即可。

img

img

  1. 查看导入表,可以发现主要有创建和维持服务以及访问网络有关,这表明这个恶意软件是一个 Downloader 的可能性较大。

img

  1. 可以通过 Strings 知道,它访问了一个 http://www.malwareanalysisbook.com 来获取信息,可以假设此为一个提供其它恶意代码的网页,并且要注意是否存在名为 MalService 的服务。

img

1-3

  1. 上传至 VirusTotal 查看报告,显然这个 lab 已经有一段历史了,许多杀软已经将其列为 Malware 之中,尽管在作者编写时只有少量的威胁报告。

img

  1. 使用 DIE 和 PEStudio 查看文件信息,发现其中检测到可能加壳,而且区段没有名字。观察节区其实可以发现它和 UPX 加壳后的程序的表现几乎一样,推测是 UPX 加壳后删去了段名(尽管答案说明这推测并不正确,这个程序是使用 FSG packer 加密的)。恢复段名后发现仍然无法使用 UPX 脱壳,这可能说明删去了更多的信息,将其放入 x32dbg 尝试手动脱壳后,能够恢复出更多的信息,尽管看上去我没能将其完全脱壳,但是可以看到 PEStudio 给出了合适的恢复出来的 Strings。

img

img

  1. 对这个网页的访问 http://www.malwareanalysisbook.com/ad.html 可以作为一个 indicator 说明该设备可能遭到入侵。

1-4

  1. 被大部分报告为病毒程序

img

  1. PEStudio 和 DIE 查看基础信息,看起来似乎没有任何加壳或混淆的迹象,除了资源文件中似乎还有一个 PE 文件,我们使用 PEStudio 将其 dump 为一个 lab01-04.dump。

img

  1. 程序分别编译于 Fri Aug 30 22:26:59 2019 和 Sun Feb 27 00:16:59 2011。

img

  1. 这两个程序使用了许多危险的函数,例如 寻找特权 和 执行文件等, 对于另一个隐藏的PE文件,还有一个下载资源的函数。初步认为这个程序可能是一个 Downloader and executer.

img

  1. 应当着重检查是否有访问 http://www.practicalmalwareanalysis.com/updater.exe 的记录,或检查是否存在 \system32\wupdmgrd.exe winup.exe 之类的程序存在或执行。

  2. 如同前面所描述,这个资源文件是一个 PE 文件,并且具有从上述网页下载和执行的功能。


3-6 被吃了 ~

7

7-1

首先使用 PEStudio 查看信息,发现似乎没有进行加壳或混淆,导入表和字符串发现可疑内容。

img

img

尝试运行以获得一些信息,发现程序只有一个黑窗口,并没有提供其他信息,在不分析程序的情况下使用ida进行简单动调,并且跳过报错。可以观察到 Autoruns 中发现了一个新注册的服务,正式我们先前找到的可疑字符串之一。那么注册成服务便是这个程序持久化的方法,同时也是其基于主机的特征。

img

同时,我们注意到 procman 中也提示了它对 inetsim 的访问,我们查看 Wireshark 可以知道,它在这里请求了 www.malwareanalysisbook.com 的地址,这可以作为该程序的网络特征。

556 71.844498742 10.0.0.3 10.0.0.2 DNS 103 Standard query response 0x2929 A www.malwareanalysisbook.com A 10.0.0.3

img

然后,我们对其进行进一步分析。使用 IDA 对其进行逆向。可以看到它将 MalService 和 sub_401040 绑定,并传递给 StartServiceCtrlDispatcherA 函数,这个函数会将传递的每一组 lpServiceStartTable 注册到服务控制管理器中。跟进 sub_401040 可以看到,首先尝试打开互斥量 HGL345,如果成功则运行主逻辑:打开服务控制管理器并创建服务实现持久化驻留。

img

img

完成注册后试图等待到2100年,并尝试启动20个线程来使用IE访问目标地址,即 www.malwareanalysisbook.com,结束后再进行等待,至此便分析完成整个程序的逻辑。

img

7-2

和 7-1 一样,在基础静态分析过程中发现了类似的信息,我们跳过基础分析阶段,直接使用 IDA 打开对其进行分析。首先,它初始化了 Ole 环境,然后通过两个 ID 创建了一个 COM 实体。

img

对这个id跟入,可以看到这两个 ID,我们进一步解析和搜索,{0002DF01-0000-0000-C000-000000000046}, {D30C1661-CDAF-11D0-8A3E-00C04FC9E26E}。显然这试图在使用 IWebBrowser2 的自动窗口访问功能。

img

img

继继续向下分析代码可以看到:程序先用 SysAllocString 将目标 URL http://www.malware... 分配为 COM 所用的 BSTR 字符串,然后通过 CoCreateInstance 返回的接口指针 ppv 取得其虚函数表。并调用 vtable 中偏移 +0x2C 的方法(对应 IWebBrowser2 的 Navigate/Navigate2)传入该 BSTR 及若干 VARIANT 参数以导航到目标 URL。

img

如果使用动调跟入 edx 可以看到有一排函数,跟入我们的目标函数可以查看到它的 vtable 结构。

img

所以这是一个没有持久化驻留的程序,只使用了 COM 来进行目标地址的访问,在访问结束后程序就停止了运行。

7-3

一看说明就知道这个题目会相对更有难度一些。根据描述,这个程序含有 dll 文件,且 “运行时可能发生改变” 的说明我想也很有帮助。先抛开所有的关注的问题,我们逐步对程序进行分析。首先查看 Strings 这可能含有一些重要信息,例如我们又和 kerne132.dll 见面了。还有一个可疑的ip地址 127.26.152.13。

img

接下来,查看它的导入表信息。似乎写满了 “危险” 两个字 —— 网络通信、文件遍历…

img

为了便于分析,先把ip改一下,这样后续如果有请求会直接发送到我们的另一个虚拟机上,再使用 IDA 打开这两个程序,对基本流程进行分析(后续改成了ip 10.0.0.3,此处笔误多加了个0)。

img

img

首先我们观察 Lab07-03.dll 的 DllMain 函数,似乎它的主要行为就是同目标地址进行通信,不断发送 hello 并等待返回,然后对返回的信息进行分类和处理,其中关注的是通过 CreateProcessA 提供了一个操作的终端。

img

然后再去查看 Lab07-03.exe 的 main 函数,嗯,看起来比 dll 复杂许多,也说明我选择先分析dll文件是正确的。抛开复杂的参数处理过程,将核心关注在 “调用了哪些外部函数?” 和 ”可能进行了哪些操作?” 这两点。首先,创建了一个 Kernel32.dll,当然,这个 K 是大写的,而在系统中正常的 kernel32.dll 的 k 是小写。大概率这里是创建或读取了这两个文件,并且进行了处理,并且最后将其复制到 kerne132.dll 处。

img

img

在前面的逻辑运行结束后,还会遍历整个 C:\ 目录寻找 exe 资源,并且进行处理。不纠结细节,记住这些内容,启动 procmon 和 netcat 并运行程序。

img

img

似乎没有获得有效结果,以管理员权限重试一次。看得出来,它的运行消耗了一些时间并且翻遍了我的文件,甚至还写了一些东西,这很坏了。我忘记提前运行 procexp,而现在似乎已经无法正确运行了,但是 procmon 可以帮助我们看到足够多有用的信息。

img

img

根据procmon的提示可以发现这个路径下多了个 kerne132.dll,可以作为明显的本机遭到入侵的标志,使用ida的bindiff插件进行比对,这个文件和刚刚打开的 Lab07-03.dll 有着100%的相似度,说明程序将 Lab07-03.dll 复制到了这个路径。

img

我们随机打开一个合适的 .exe 文件。发现其导入表竟然导入了我们刚刚创建的 kerne132.dll,这个特征简直比 kerne132.dll 本身的存在更加明显。那我们可以得知,Lab07-03.exe 的作用是将 Lab07-03.dll 复制到 kerne132.dll 处,然后对C盘中所有 .exe 进行遍历和修改,插入对 kerne132.dll 的引用实现持久化。

img

当我们任意执行一个受感染的程序后,可以看到在另一台部署的虚拟机上收到了 hello 的信息,这也足以证明受感染的程序运行了恶意的payload,并大概率提供了一个远程shell给攻击者。

img

对于移除,可以编写相同代码修复所有exe代码入口点,并删除 kerne132.dll 文件。

8

← 返回文章列表