本文讲的是
APT攻击中会使用合法程序吗?,
这几天,在我研究过程中我发现了下面这样一个文件:
MD5 5e81bd134168d7d8c91b96d88b5e0fd0
SHA1 a632371b2aa54709d4bf6b0f28cb1904cb8864bc
在这一软件信息中可以看到它是由SlavaSoft公司制作的HashCalc程序,不过也可能不会这一公司制作的。
在SlavaSoft公司网站主页上可以看到这一软件,对其说明如下:
一个快速简易的计算器,可以计算文件,文本文档,以及哈希字符串的消息摘要,校验码,以及HMAC。这一工具提供了13种最常用的hash,以及校验算法以便进行将计算。
我手上的这一文件确实具有这样的功能。
通过静态分析,并没有发现一些有趣的东西,只是在.text段中是允许写入的,这在一些函数库中是很常见的。当我进行动态分析时,几乎试遍了所有的功能,也没有发现一些可疑的行为。
这时我就有点困惑了,从这一点看确实这一文件是没有问题的,如果没有足够的时间去分析它,我相信每个人都会和我说一样的话的。
在我调试这一软件之前,我想从官网上将文件下载下来,然后和我手中的文件进行比较。但是当文件正在被分析时,无法和另外一个文件进行比较。所以在这种情况我有两种选择,完成分析,或者调试整个程序。如果程序很大,我们需要花费非常长的时间对它进行调试,如果我们想立即获得结果,几乎是不可能的。
在这种情况下,我已经有了原始的文件,只需要比较该文件是不是多了一些隐藏的功能,让我们看看吧~
他们都有相同的程序入口点:
除了.text段外,其余段的md5值都是相等的:
通过比较.text段,我们可以发现该部分的最后一个字节存在不同:
如果我们通过hiew反编译这些字节,我们可以读到一些汇编指令:
因为想调试这一段代码,所以在第一个说明处放置一个断点,也许这一代码可能执行也可能不执行,甚至这不是一串代码。
放置断点后,运行后程序无任何异常,任何功能都可以正常使用。下面几张图是我测试过程中使用的功能,设置断点并不影响使用:
下一张图中,当我想从文件中得到hash值时,这一程序停止了:
现在到达了我们设置之前断点的地方,这一段代码正在尝试对自身解密,下图是加密的shellcode:
对shellcode进行解密,只是单纯的与7进行亦或:
解密之后的shellcode:
解密之后的shellcode就回有些有趣的东西:
- SLAVA
- kernel32
- ANNA (Anna Chapman???)
- CreateEventA
- .PhysicalDrive0
- ALISA
- KATI
- ntdll
shellcode如下:
这一段shellcode会执行以下步骤:
1. 对自身进行解码
2. 调整权限
3. 它会创建一个名为SLAVA的时间,如果事件没有创立,那么就会返回之前代码,因此这一代码是等待事件的创立。
4.接下来shellcode会将.PhysicalDrive0的前512个字节进行覆盖,当这一扇区覆盖之后计算机将无法启动。
5. 对本身进行加密,从而隐藏恶意代码。
6. 返回原始代码
如果你还记得文章第一张图片,这一恶意软件只被一个杀毒软件检测到。
结论:
在文件大小大于50M的情况下,除非恶意软件激活时,否则很难找到恶意代码的。也许我们可以得到原始的文件,我们可以比较两者的差异,但是在某些情况下是不可能的。我们必须要花很长时间或者金钱去找到恶意代码。这一文件可能是apt攻击中,等待第三方事件的软件。那么是谁制作的?为什么要制作他?他们是否是使用一种工具对它进行制作?所以如果我们有机会,我们必须比较手中的文件和官网上的文件,但是当我们没有原始文件时,会发生什么呢?
原文发布时间为:2017年7月27日
本文作者:xnianq
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。