更新:这个特洛伊木马也在名称中闻名yebot.和蒂朗。据博士,这个家庭至少从2012年流通。它是首次在名称Moker下描述的Ensilo,2015年。//谢谢@Kafeine.对于提示

在前段时间,我们观察了难看的迷路效果的罕见,有趣的恶意软件。其代码描绘了它是由专业人士编写的。研究表明它是一种样本Moker.木马(阅读更多这里)。但是,很长一段时间,我们找不到与工作CNC的样本,以便进行更深入的研究。最后,我们发现了这样的样本 - 本文将深入潜入其能力。

分析样品

下载的模块:

8997B9365C697E757F5A4717EC36FB2D-pluginj382dew1i.exe.

FAF2135DC5311B034D31191694A52BBD-kb1080030.exe.

参考样品(从2015年起)

分配方法

我们发现Moker特洛伊木马通过漏洞利用套件分发 - 在恶意的运动中,以及从黑客网站下降。示例 - Rig-V EK Dropping Moker:

行为分析

恶意软件将自己注入了Svchost.,然后联系CNC服务器。

网络通信

通信已加密。典型的信标方式是将请求发送到地址: .php?img =
发送请求的示例:

获取/nnn04722.php?img=1 http / 1.1用户代理:mozilla主机:bitmixc.ml

服务器响应加密内容(机器人将其保存在注册表项中)。然后它在其他应用程序中注入自己并发送进一步的请求,包括受感染机器的数据,即:

获取/nnn04722.php?page=< pustername> _ &s =  p = &err = 

在下面的情况下,响应结果是PE文件(机器人的更新版本)由XOR与字符'C'混淆。

服务器通过发送一些加密内容或数字来响应:

= 

坚持

Moker通过在注册表中添加RUN键来实现其持久性。此方法起初可能非常简单。但是,恶意软件的作者隐藏了一个合法的Microsoft应用程序后面的真实可执行文件 - rundl32.exe。谢谢这个技巧,注意它更难 - 一种流行的工具,用于检查持久应用程序,sysinternals'autoruns.,默认情况下,不会显示此类键,假设它们是无害的。(通过清除默认选项“隐藏Windows条目”,可以启用“查看它们”。)

Moker示例删除在当前用户的主目录中:

如果我们仔细看看样本,我们可以看到它与原始的相比之下,它已经略微修改 - 一些加密信息已被删除:

事实证明,在进一步的研究之后(参见“内部”部分),这些字节包含CNC地址,由特殊标签前缀。从可执行文件中删除的信息不会丢失,而是存储在其他地方 - 在为存储恶意软件配置而创建的一个注册表项中。

恶意软件创建的其他密钥保存在“.. \ clsid \ {448d3b34-8d3b-3b34-8d3b-48d3448d3b34}“:

注册表项的完整转储可用这里

事实证明,从可执行文件中删除的加密的CNC地址在注册表中仍然存在,在“5”中,在“5”中仍然存在:

与来自原始示例中的数据进行比较:

另一个键“6”存储PE文件(从注册表中转储的可执行文件可在此处提供:91F754C3FC475AED93E80575BB503C73)。

关键“7”存储在初始信标后从CNC下载的数据:

与服务器响应的内容进行比较:

关键“10”包含下载模块的名称:

新模块存储在programdata.

在运行密钥的帮助下也会添加其持久性(以与先前描述的情况类似的方式):

里面

Moker由两个主要模块组成。这阶段1,这是一个下载者,而s2.,这是一个包含核心恶意功能的DLL。下载器将自己注入,以及未包装的shellcode进入svchost.exe.。下面的屏幕截图显示了受感染的内存页面的示例svchost.exe.

注入的shellcode负责将初始信标发送到CNC。然后,如果CNC处于活动状态,则将主DLL下载并注入其他过程。在测试期间,Moker DLL中的所有32位应用程序都在介质完整性模式中感染。

阶段1

让我们在代码中潜入,从滴管开始 - 即阶段1.这是用于启动完整感染过程的二进制文件 - 最初由利用套件提供。每个样本都被一些抑制器包装(加密器对各种样本不同,所以我们不会在此描述该图层)。

击败一个抑制次数的短管后,我们得到另一个PE文件 - 用典型的Moker典型的布局。这部分 。文本,即在正常情况下是PE的第一个部分,以防Moker为第二名:

部分。数据在原始文件中非常小,但它在虚拟图像中扩展。所以,我们可以怀疑更多的东西未包装在那里:

混淆执行流程

该模块的内部结构非常有趣。它具有基于VEV的执行的自修改代码(矢量异常致命器)。执行开始从安装处理程序:

指示用于代码的各个地方。它们的作用是通过触发异常来扰乱执行的连续性。然后,执行被重定向到先前安装的处理程序。根据触发异常的指令的变体,上下文是以几种方式之一更改:

上下文修补程序用于混淆执行流程。由于这个技巧,对代码的静态分析几乎是不可能的 - 所有发生变化。

JMP EAX.(例外处理程序中的第一个案例)用于部署API调用。它被触发在al,(参见下面的示例):

这就是为什么,如果我们追踪应用程序所做的API调用,我们可以注意到它们中的大多数是由代码中的相同地址进行的 - 只有目标地址正在发生变化。

不仅是执行流程,还可以动态修改代码本身。我们可以经常找到申请呼叫Virtualalloc.

从主可执行文件复制某些加密代码将其复制到此动态分配的内存中:

然后,它们被专用函数解密:

揭示的代码几乎准备就绪 - 除了需要填写的呼叫地址。您可以在以下片段中看到,临时呼叫点到自己的地址:

这在另一个步骤中修复 - 解码功能返回到另一个代码片段中,该代码片段修改地址:

直到完全显示新的代码并准备被调用(请参阅固定呼叫目标):

当修改函数返回时,执行将归入执行跳转到新代码的行:

揭示的代码是另一层 - 再次分配,解密和调用代码。

提供一些实际功能的代码块始终通过此类代理部署 - 使执行流程更加复杂。

功能

Dropper从防御检查开始执行,确保它不在受控环境中运行。搜索以下注册表项:

“HKEY_LOCAL_MACHINE \\硬件\\ acpi \\ dsdt \\ vbox__”“HKEY_CURRENT_USER \\软件\\ TRUSTEER \\ RAPPORT”“HKEY_LOCAL_MACHINE \\软件\\ Microsoft \\ Windows \\ CurrentVersion \\ uninstall” - > sysanalyzer

如果通过所有检查,应用程序将从磁盘读取它是自己的文件,并在那里搜索一些典型标记。搜索示例:

重要的是,那些标记存在于最外层 - 原始PE文件(不是未包装的一个)。感谢此功能,知道它们允许创建一个非常简单的雅拉规则来识别Moker:

规则mokertrojan {strings:$ key = {3d ff 24 8b 92 c1 d6 9d}条件:ispe和所有它们}

所提到的标记用作指示器,之后存储加密的CNC地址。

另一个功能,典型的Moker是以下格式的互斥:

“全局\\ a0bp- 

互斥锁可防止应用程序不止一次运行。

通过环境检查传递后,Moker Unpacks obercode,具有下载程序的功能,并将其注入(以及初始PE文件)进入Svchost.

第2阶段

如果主DLL被成功下载阶段1,它进一步注入了应用中。示例 - 将Moker DLL注入JUSCHED(Java Update Scheduler):

此模块负责恶意软件执行的所有恶意操作 - 此外,它也与其CNC积极通信。您可以在下面看到从注入的DLL内部发送的示例帖子请求:

如果我们尝试转储注入的DLL,我们可以看到,它是导入的表已被销毁 - 删除了DLL和导入函数的所有名称。但是,使用专用工具我能够恢复它(见更多这里)。

DLL提供了典型的典型特征(他们没有从2015年的最新分析中的Chang,提供这里)。

核心DLL的代码以一种体面的方式编写,表明作者的专业性。然而与滴管相反,这里使用的混淆是相当简单的。大多数字符串和API调用都没有被滥用,或以微不足道的方式混淆。

查看代码内部,我们可以看到对注册表项的引用,在行为分析期间观察到,即:

DLL不仅与CNC通信,还与其使用本地套接字和命名管道的其他注入模块进行通信。下面的一个例子 - 启动本地套接字用于侦听:

解析和执行从IPE读取的命令:

基于命令ID,可以通过管道请求恶意软件来执行一些命令或创建和保存屏幕截图:

在这部分的有趣功能中,它还通过简单的GUI提供对它的功能。它可以用于本地测试,或者。如果攻击者更喜欢通过远程桌面访问受害者机器。

CNC服务器

找到的CNC服务器列表(每种样本一个地址):

http://bitmixc.ml/nnnn04722.php http://bitmixc.ml/msnwiwoq25.php http://matthi.tk/abb6a388.php http://sally33.cf/23mmdw3.php http:// siri5。ml / www9.php.

结论

Moker是一种罕见的恶意软件,但由非常熟练的作者编写。核心模块的编译时间戳是2015-05-03 00:40:11。这表明,自其片刻以来,仍然相同的样本在循环中,只有它们被不同的包装器重新包装。这一事实导致我们得出结论,在2015年的黑色市场上已经生产和销售,之后可能被原始开发商遗弃。

附录

http://blog.ensilo.com/moker-a-new -apt-discovered-within-a-ssensitive-network.- Moker上的Ensilo(从2015年起)

https://breakingmalware.com/malware/moker-part-1-dissecting-a-new --apt-dunder-the-microcucher/- 第1部分

https://breakingmalware.com/malware/moker-part--capabilitiess/- 第2部分

http://www.msreverseengineering.com/blog/2015/6/29/transparent-deobfuscation-with-ida-processor-module-extensions.- Deobfusing Yebot.


这是由Hasherezade,独立的研究员和程序员撰写的客座帖子,具有强烈的Infosec。她喜欢详细说明恶意软件并与社区分享威胁信息。在Twitter上检查她hasherezade.和她的个人博客:https://hshrzd.wordpress.com.