本文翻译自:https://blog.malwarebytes.com/threat-analysis/2018/08/reversing-malware-in-a-custom-format-hidden-bee-elements/


恶意软件通常由许多组件组成,比如宏和脚本就是比较常见的恶意下载器。一些功能是通过shellcode实现的。还有更复杂的元素和核心模块,即原生Windows可执行文件格式——PE文件。

原因很简单,在PE文件中实现复杂的功能比在shellcode中要容易得多。PE格式有定义好的结构,也有更多的灵活性。有一些头文件就定义了应该加载哪些导入、何时应该加载,以及重定位的应用等。PE格式也是编译Windows应用的默认生成格式,其结构之后被Windows加载器用于加载和执行应用。当恶意软件作者开发定制的加载器时,大多会选择PE格式。

但也会有一些例外的情况,比如与Hidden Bee相关的payload。研究人员在分析Hidden Bee的payload时发现有两个释放的payload并不是PE格式。其结构组织良好、并且比常见的shellcode要复杂得多。下面对其格式进行分析。

概览

第一个payload(扩展名为.wasm)是一个加载器,负责下载和解压Cabinet文件:

第二个payload是从Cabinet文件中解压的:

与大多数shellcode相比,其并不是从代码开始的,而是从头文件。比较两个模块,可以看出两个头的结构相同。

Headers

下面解释header中不同域的意义:

两个payload的第一个域都是DWORD: 0x10000301,研究人员未发现对应的模块号,因此,研究人员猜测这是格式识别号。

接着是与加载导入相关的元素的偏移量。第一个0x18指向DLL列表,第二个0x60看起来更加神秘,可以理解未在IDA中加载该模块。下图可以看到这些域的交叉引用:

可以看出被用作IAT,即用导入函数的地址来填充:

下一个值是DWORD (0x2A62),如果在IDA中追踪,就可以看到指向一个新函数的开始:

点击收藏 | 0 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖