导语:apt中木马会伪装成正常程序吗?

这几天,在我研究过程中我发现了下面这样一个文件:

MD5   5e81bd134168d7d8c91b96d88b5e0fd0
SHA1  a632371b2aa54709d4bf6b0f28cb1904cb8864bc

g8owF1VPQg6K1UQ5zk30_VT.PNG

在这一软件信息中可以看到它是由SlavaSoft公司制作的HashCalc程序,不过也可能不会这一公司制作的。

1adrTWATqm1PgQGobCww_cap1.JPG

在SlavaSoft公司网站主页上可以看到这一软件,对其说明如下:

一个快速简易的计算器,可以计算文件,文本文档,以及哈希字符串的消息摘要,校验码,以及HMAC。这一工具提供了13种最常用的hash,以及校验算法以便进行将计算。

我手上的这一文件确实具有这样的功能。

N6c4blWHRRC8GHTiax2x_Captura.JPG

通过静态分析,并没有发现一些有趣的东西,只是在.text段中是允许写入的,这在一些函数库中是很常见的。当我进行动态分析时,几乎试遍了所有的功能,也没有发现一些可疑的行为。

这时我就有点困惑了,从这一点看确实这一文件是没有问题的,如果没有足够的时间去分析它,我相信每个人都会和我说一样的话的。

在我调试这一软件之前,我想从官网上将文件下载下来,然后和我手中的文件进行比较。但是当文件正在被分析时,无法和另外一个文件进行比较。所以在这种情况我有两种选择,完成分析,或者调试整个程序。如果程序很大,我们需要花费非常长的时间对它进行调试,如果我们想立即获得结果,几乎是不可能的。

在这种情况下,我已经有了原始的文件,只需要比较该文件是不是多了一些隐藏的功能,让我们看看吧~
他们都有相同的程序入口点:

VvrsAc00QviTsxuYv3V2_optional_header.PNG

除了.text段外,其余段的md5值都是相等的:

CTyGfNgRtmU7KZowrEfe_sections.PNG

通过比较.text段,我们可以发现该部分的最后一个字节存在不同:

5elZ6xKpTy6M5dofTffD_bindiff.PNG

如果我们通过hiew反编译这些字节,我们可以读到一些汇编指令:

HIhXIW5hRKxoKfQifD0g_hiew.PNG

因为想调试这一段代码,所以在第一个说明处放置一个断点,也许这一代码可能执行也可能不执行,甚至这不是一串代码。
放置断点后,运行后程序无任何异常,任何功能都可以正常使用。下面几张图是我测试过程中使用的功能,设置断点并不影响使用:

下一张图中,当我想从文件中得到hash值时,这一程序停止了:

nuR025BxQXGc7SDv2M7m_running4.PNG

现在到达了我们设置之前断点的地方,这一段代码正在尝试对自身解密,下图是加密的shellcode:

fGio4fmvQ2SYQwq7Ixh6_ofuscated.PNG

对shellcode进行解密,只是单纯的与7进行亦或:

7AQN5uhlT1SATL7NrihR_deofuscate_func.PNG

解密之后的shellcode:

O9T7qfUqQD6Mqv0u9NWi_deofuscated_focused.PNG

解密之后的shellcode就回有些有趣的东西:

- SLAVA
- kernel32
- ANNA (Anna Chapman???)
- CreateEventA
- .PhysicalDrive0
- ALISA
- KATI
- ntdll

shellcode如下:

pvIDbRdLQuCHBaeYPr7C_shellcode.PNG

这一段shellcode会执行以下步骤:

1. 对自身进行解码
2. 调整权限

5nX9tsAMQiya4289J5yw_rtadjustprivilege.PNG

3. 它会创建一个名为SLAVA的时间,如果事件没有创立,那么就会返回之前代码,因此这一代码是等待事件的创立。

OekI2Yv7Sky5KKsj1m3Y_getLastError.PNG

4.接下来shellcode会将.PhysicalDrive0的前512个字节进行覆盖,当这一扇区覆盖之后计算机将无法启动。

MkYUredRHuWsJ026urez_WriteFileStack.PNG

5. 对本身进行加密,从而隐藏恶意代码。

smxNme4yQGJSqVHs2mus_ofuscate_again.PNG

6. 返回原始代码

r7ol1p6UQ1qx3myV0Jbs_original_code.PNG

如果你还记得文章第一张图片,这一恶意软件只被一个杀毒软件检测到。

结论:

在文件大小大于50M的情况下,除非恶意软件激活时,否则很难找到恶意代码的。也许我们可以得到原始的文件,我们可以比较两者的差异,但是在某些情况下是不可能的。我们必须要花很长时间或者金钱去找到恶意代码。这一文件可能是apt攻击中,等待第三方事件的软件。那么是谁制作的?为什么要制作他?他们是否是使用一种工具对它进行制作?所以如果我们有机会,我们必须比较手中的文件和官网上的文件,但是当我们没有原始文件时,会发生什么呢?

源链接

Hacking more

...