LatentBot是一个用Delphi编写的多模块木马,从2013年开始就有了。最近,我们捕获并剖析了RIG Exploit Kit分发的一个样本。

主要可执行文件是一个持久的僵尸网络代理,它下载了其他模块并报告了对其命令和控制服务器的执行活动。根据已安装的模块,LateNtBot具有各种功能,包括:

  • 作为一个键盘记录器和窗体抓取器
  • 偷饼干
  • 从受害者系统运行袜子代理
  • 远程访问攻击者(VNC /远程桌面)

在这篇文章中,我们将通过分解几层模糊和加密来描述这些模块,以揭示它们的真实性质。

分析样品

下载模块,注入Svchost.

行为分析

部署后。原始示例安装自身并从原始位置删除样本。它注射了Svchost.初始模块(60 c3232b90c773ed9c4990da7cc3bbdb).该模块执行另一个注入(模块:b622a0b443f36d99d5595acd0f95ea0e) -进入internetexplorer (iexplore.exe.):

注入的模块iexplore.exe.process负责与CnC建立连接并下载子模块。

在这个阶段,LatentBot创建两组注册表项:

... \ Software \ Google \ Update \ Network \ Secure

在命名为“0”的密钥中,存储初始PE文件:

另一个,添加了加密密钥:

...\ \ Adobe \ Adobe Acrobat软件

关键下的数据““通过自定义算法加密,典型的延迟塔,将进一步描述(它可以通过专用的应用程序).解码后,它给出了恶意软件所安装的路径,即:

C:\用户\ tester \ appdata \ local \ microsoft \ windows \ shfdnoh.exe

如果CNC处于活动状态并且BOT管理下载子模块,则运行将注入新实例Svchost.

主模块已使用参数部署:-l mxn4viazcd.

此参数指定机器人所属的组ID(也由潜在Bot的自定义加密加密)。

MxN4ViazcD - - - >第1组

此外,与新模块相关的注册表项被添加到:

... \ Software \ Google \ Update \ Network \ Secure

解密的模块名称是非常描述性的:

ftufju5xp3c  - >Formgrab.hdtWD3zyxMpSQB - - - >Bot_Enginel551X + rNDh3B4A - >Found_CoreQdG8eO0qHI8 / Y1G - >send_reportQdW / DoI2F9J - >安全RRrIibQs + WzRVv5B + 9 iiys + 17 huxid - >remote_desktop_serviceVRWVBM6UtH6F + 7 ucwkbkpb - >vnc_hide_desktopw97grmo  - >袜子

一些模块正在受害者机器上收集数据,并以加密的形式将它们保存在%TEMP%目录中:

此外,它们正被上传到CnC。

坚持

潜在机器人的基本持久性很简单。初始样本被复制到:

当地C \[当前用户]\ AppData \ \微软\ Windows \ < random_name > . exe

它在每次系统启动时都被执行,这多亏了一个简单的Run键:

运行主模块后,它负责解密来自注册表并加载它们的所有子模块。

网络通信

通过发送信标,机器人开始与CNC的通信。如果标志成功,它就开始在加密表单中下载其他模块。他们假装是。压缩文件:

信标由两种算法编码:Latent的自定义加密算法和Base64算法:

qwrsn2srdjlxuuddyvp0atbmuzl2cstzy0por3vkwlntc3q1vzduwlj2shz6qjjjhnetutfo3runobvlokzjmbde0twxbuxr2nxdxelbtsk1aednanvrlavdzdfvhzg5ik0jwcep3nkfxvtlvc3jywpka3vztnlsbue =

Base64解码:

Adl7k + v9qQGCaZti0LS9vq + scJNGudZSmst5W7nZRvHvzB2a4KnLZ7EChmYN + 2 ll14mlaqtv5wqzpmjmzx3z5teiwstuadnh + BppJw6AWU9UsrIajJkusNyRmA

潜在的自定义解码:

论坛?Datael = US-70-789548274695&ver = 5015&ver = 5015&os = 5&acs = 1&x64 = 0&gr = group 1&wondam = mxmgkuusrfqdotm

如我们所见,它包含有关受感染机器的数据,以及组名和一个随机令牌。

但是,并非所有通信都是加密的。一些进一步的请求非常详细。每个操作的名称由字符串中的字母标识为大写字母。例子:

客户端通过HELLO命令向服务器发送信号。作为回报,CnC会给它一个cookie,进一步用作ID。客户端和服务器之间发布的内容是加密的:

分析流量,我们可以发现机器人发送到CNC一些被盗的数据,包装为机柜格式。内部内容通过自定义加密算法进行加密,典型为延期,稍后将描述。文件上载使用HTTP PUT方法

内部

潜伏机器人的原始样本,是在活动中分发的,带有一个密码器。在移除第一层之后,我们得到一个带有以下sections结构的加载器:

所有使用的字符串都是模糊的-特定的字符串块被移动到连续的变量:

主要元素的基本作用是注入svchost.exe..在纪念svchost.exe.,另一个PE文件被解压缩并加载:

如果我们转储这个文件,就能找到另一个阶段。从这个元素开始,潜伏机器人的所有其他部分都有一些共同的模式。它们是用Delphi编写的,它们的字符串被同一组函数混淆了。例子:

为了破坏这种混淆,我准备了一个专门的IDA脚本(latent_dec.py.).没有使用其他混淆技术,因此在应用它之后,代码看起来更加理解:

另一件事,典型的atpentbot的作品是相关模式下的资源。当前的样本配有2个资源:CFG和R.两个都是加密的:

此元素解包另一个模块(b622a0b443f36d99d5595acd0f95ea0e),这一次被注入Iexplore..新模块的资源结构与前一个模块类似。它的CFG文件包含字符串加密的算法典型的bot:

该元素的配置包含bot组ID和CnC地址:

MxN4ViazcD -> Group 1 j5kmNVnZPcAt18wWBH3kfMOzGQ6ENA -> http://104.232.32.101/

模块

LatentBot的主要元素是一个下载和管理模块的引擎。LatentBot的每个模块都有一些不同的任务要做。总的来说,它具有典型的RAT病毒和窃取者的功能。对于不同的示例,下载的子模块是不同的。在分析的元素中,获取了以下名称的元素:

  • Formgrab-128521-2
  • bot_engine - 641712 - 8
  • found_core - 147200 - 2
  • send_report-325310-77
  • 安全-945874-2
  • remote_desktop_service-828255-2
  • VNC_HIDE_DESKTOP-590642-47
  • 袜子-400578-2

让我们看看其中一些......

BOT_ENGINE模块

作为名称状态,这是机器人的主模块。它负责与C&C的通信并加载插件。

它指纹环境并将收集的数据发送到CNC。

“tkNFKRA”- >“版本= '“tA8OqC”——>“os =”“t4M5zB”——>“av = "“t4c85aF”——>“acs =“tct4rwD”- >“x64 =“tgszOD”- >“gr =“tMc36A“- >”,= W4“t89KWAf3QyCh”- >“插件=“to8KKL6mYGs8”- >“&errcode =“t08rKTC”——>“bk = 1”“t08rKXC”——>“bk = 0 ' ' tEMeVgHimC”——>“注意= 1”“tEMeVgHinC”——>“注意= 0 ' ' tsMSYj / L ' - > ' dom = 1”“tsMSYjvL”- >“dom = 0”'tw9sex5WXDzsMB' -> '& socklog =' 'tk9H0psjw5Wv' -> '&vncpass=' 'tkNGWE8KNC+N' -> '&vidtype='

示例 - 检查安装的AV产品:

专用函数包含已选中的目录的长列表,即。

该模块通过执行各种命令,给予攻击者对受害者环境的远程控制,例如:

'/ tkvxgfblb' - >'testapi''slx6nffi' - >'get_id''5j5en0wp9a' - >'重启''4fea7fftrci' - >'shutdown''nxry + d / e' - >'logoff''slx6nlvh9et / qqi2eupf9d'- > 'get_label_engine' 'slx6nLVh9Et / qOCYBWP'  - > 'get_label_load' 'slx6n7kxqMcKNsq0UkmG'  - > 'get_plugin_list' '7hfCrPhOfgfTX28h8TZS'  - > 'plugin_stop_all' '7hfCrPhOfkfbTM6EplCNCN1d'  - > 'plugin_restart_all' '7hfCrPhOfg + PtNcXVAc8JLsPUA'  - > 'plugin_clear_storage''41l3p17Xus / kRtagq7ObrZEM / WucXWH ' - > 'stop_engine_and_plugins' '+ FJV1v6mXl5SW7r8cB'  - > 'uninstall_all' 'slx6njktomFaQ0F'  - > 'get_version' '7hfCrPhOfgfTX2M'  - > 'plugin_stop' '7hfCrPhOfkfbTM6EplC'  - > 'plugin_restart'' 7hfCrPhOfgfTX28h8bppqx + BZM / CQDXSnB“ - > 'plugin_stop_and_uninstall' '7hfCrPhOf4vfz5NHktwwJB'  - > 'plugin_uninstall' '7hfCrPhOfgfTZiCd'  - > 'plugin_start' '7hfCrPhOfgfTZiCdhJwYvUM'  - > 'plugin_start_auto' '7hfCrPhOfgfTX28h83I9CD'  - > 'plugin_stop_autox' 'slx6n7kxqMcKNsazBUKWvC'  - > 'get_plugin_start' 'o5SQ6EkjlBwmdJhahA'  ->'clear_cookies'

示例 - 窃取和清除Cookie的功能的片段:

完成任务后,它还发送有关操作状态的报告:

安全模块

该模块对各种安全产品执行扩展环境检查。查看资源,我们可以找到三个元素:dfx,vbl,fdl包含典型方式加密的字符串列表:

解密它们提供了广泛的选中路径列表:DFX.轮式侦察车,和模块(EXE,DLL,SYS):FLD.

Formgrab模块

与其他模块相比,这个模块不包含字符串或API混淆。

我们可以发现它抓取窗口字段的内容:

敲击键盘:

foud_core模块

这是唯一已用C ++代替Delphi编写的模块。它附带了Visual Studio添加到Windows项目中的默认图标。

它是原始名称是Installer.exe,它导出各种功能,可用于将注入到64位应用程序中:

它具有与其他模块不同的各种功能,即缺少字符串混淆。通过调试字符串报告执行的操作,它将在二进制中作为打开文本存储在二进制中,即

2017年2月的这个可执行点的编译时间戳:2017年:02:28 18:21:01 + 01:00。在过去几年中未观察到此元素,因此可能确实增加了今年,以扩展LateNtBot的注射能力到64位进程。

结论

LatentBot已经存在好几年了,但是,看看我们可以发现的模块,它仍然在积极地维护。分布式包是新旧模块的混合。

这个机器人的作者在恶意软件开发中并不是很进一步。他们在Delphi中编程并使用一些现成的模板。此外,他们使用的混淆可以很容易地击败。然而,他们提供了一个非常丰富的特征和易于扩展的机器人,因此它仍然构成了严重的威胁。

附录

https://www.cert.pl/news/single/latentbot-modularny-i-silnie-zaciemniony-bot/-波兰CERT on LatentBot(2016年12月)

https://www.fireeye.com/blog/threat-research/2015/12/latentbot_trace_me.html——《火眼大战LatentBot》

https://cys-centrum.com/ru/news/module_trojan_for_unauthorized_access- CYS CENTRUM报告(2015)


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