在里面Kronos分析的前一部分,我们看了一看Kronos的安装过程,并解释了这个恶意软件用来保持更隐蔽的技巧的技术细节。现在,我们将继续研究Kronos可以执行的恶意操作。

分析样品

特别感谢@ shotgunner101@chrisdoman.分享样品。

配置和目标

克罗诺斯被称为银行业的特洛伊木马。为了启用和配置这个功能,机器人可以从它的CnC下载额外的配置文件。获取后,它以加密的形式存储在安装文件夹中。(值得注意的是,当配置通过网络发送时,它使用AES CBC模式进行加密——但当它存储在磁盘上时,使用的是ECB模式的AES。)

下面可以看到kronos的安装文件夹的示例% APPDATA % /微软.文件夹名称进一步用作植物.两个存储文件,可执行文件和配置文件,都有相同的名称,只是扩展名不同:

在这里你可以看到捕获的配置文件在解密的形式:

https://gist.github.com/malwarezone/d6de3d53395849123596f5d9e68fe3a3#file-config-txt.

配置的格式遵循着名宙斯恶意软件所定义的标准。

Config指定将注入目标网站的外部脚本以及注射的位置。下面可以看到样本目标的配置的片段 -韦尔斯法尔戈银行

在给定示例中,注入的脚本是figrabber.js.

它驻留在攻击者的服务器上:

目前的配置目标是几家银行,而且还窃取了谷歌,推特和Facebook等流行服务的凭据。

事实上,如果我们打开被恶意软件攻击的网站,我们可以看到注射已经完成。在配置中定义的代码片段被植入到合法网站的源代码中。以下是一些例子:

Facebook:

花旗银行:

注入的脚本负责打开额外的弹出窗口,试图钓鱼用户和窃取他/她的个人数据:

富国银行(Wells Fargo):

更多案例,以及它们在感染前与正常场地行为的比较,在视频上展示:

该表单定制以适合每个页面的主题。但是,其内容对于每个目标是相同的。总的来说,攻击不是很复杂,可能对更高级的用户看起来可能会怀疑。它纯粹基于社会工程 - 试图说服用户输入银行业务所需的所有个人数据:

下载

除了感染浏览器并窃取数据外,Kronos还提供了一个下载功能。在我们的测试期间,它下载了一个新的可执行文件并保存在其中%临时%.有效负载存储在具有与主要安装目录中相同的目录中的附加目录中:

下载的有效载荷:

6F7F79DD2A2BF58BA08D03C64EAD5CED.——nCBngA.exe

有效载荷从Kronos CnC下载:

......在未加密的形式:

在分析的情况下,下载的有效载荷只是kronos bot的更新。然而,相同的特征也可以用于获取和部署其他恶意软件系列。

命令和控制(CNC)服务器

在分析的情况下,使用的克罗斯快速通量技术对于其CNC。每次都将域名解析为不同的IP。例如,域hjbkjbhkjhbkjhl.info已解决到从下面给出的池中随机挑选的IP地址:

77.122.51.88 77.122.51.88 89.25.31.94 89.185.15.235 91.196.93.112 176.32.5.207 188.25.234.208 109.121.227.191

观察与CnC的沟通,我们观察到对现场的询问connect.php.,带有一个可选参数一个

connect.php  - 初始信标connect.php?a = 0  - 将数据发送到CNC Connect.php?a = 1  - 下载配置表单CNC

CNC面板

多亏了CnC面板的代码泄露到网上,我们可以对所有的功能和它们的实现有更多的了解。与大多数恶意软件面板一样,Kronos面板是用PHP编写的,并使用MySQL数据库。文件概述:

事实证明,机器人总共有三个命令:

  • a = 0.-发送抓取的页面内容
  • a = 1-获取配置文件
  • a = 2- 发送Logged Windows

下面我们可以看到面板代码的相关碎片(内部实施)connect.php.),负责解析和存储由各个命令上传的数据。

命令#0(a = 0.):

命令# 2 (a = 2):

发送到bot的配置由以下代码准备:

命令# 1 (a = 1):

我们还可以非常清楚地看到配置如何加密 - 使用CBC模式中的AES,其中键是BotID的第一个16个字节的MD5(它确认研究人员通过逆向工程发现的Lexsi实验室)。

但是,AES不是KRONOS使用的唯一加密算法。其他命令在ecb模式下使用河豚:

命令#0(a = 0.):

命令# 2 (a = 2):

在所有情况下,都有一个变量叫做唯一身份用作钥匙。这唯一身份只不过是植物,它在XOR编码表单中的每个POST请求中发送。

你可以在这里找到相应的Python脚本来解码适当的请求和响应:

https://github.com/hasherezade/malware_analysis/tree/master/kronos.

Kronos还具有添加某些插件的选项,扩展核心功能:

正如我们可以得出的那样,插件能够以某种间谍功能扩展Krono,例如VNC(用于查看桌面)和记录键入的击键。

解密沟通

在准备好的脚本(可用)的帮助下这里),我们可以解密Kronos机器人和CnC服务器之间通信的重要元素。让我们假设我们有一个PCAP文件,其中包含捕获的流量。

植物质

我们需要开始获取克罗斯植物,因为我们知道它将用于导出加密密钥。我们将在机器人向其CnC(74字节长)发送的请求中找到它:

在转储请求之后,我们可以使用下面的脚本来解码它:

./kronos_beacon_decoder.py --infile dump1.bin.

作为输出,我们将获得解码的信标,包括:

  1. 配置文件的哈希(如果目前没有配置文件,则此部分将填充“X”字符)
  2. 植物质

例子:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX{117BB161-6479-4624-858B-4D2CE81593A2}

所以,在演示的情况下植物是{117BB161-6479-4624-858B-4D2CE81593A2}

配置

有了BotId,我们可以移动来解密配置。它是对a = 1要求:

来自CNC的加密响应的请求示例:

在转储响应之后,我们可以使用另一个脚本来解码它,将BotId作为参数:

./kronos_a1_decoder.py --datafile dump2.bin --botid {117bb161-6479-4624-858b-4d2ce81593a2}

结果,我们将获取配置文件。解码配置的示例:
https://gist.github.com/malwarezone/a7fc13d4142da0c6a67b5e575156c720#file-config-txt.

发送报告

有时我们可以在请求a = 0或a = 2中找到向CNC报告的Kronos Bot报告:

加密请求的示例:

发现kronos的数据究竟是什么,如果我们转储数据并使用专用脚本,则不困难:

./kronos_a02_decoder.py——datafile dump3.bin——botid {117BB161-6479-4624-858B-4D2CE81593A2}

解码报告示例:
https://gist.github.com/malwarezone/a03fa49de475dfbdb7c499ff2bbb3314#file-a0_req-txt

结论

在代码质量方面,Kronos以体面的方式编写,但它的功能没有什么小说。虽然机器人在地下论坛上得到了良好的评论在美国,就受欢迎程度而言,它总是落后。可能它相对较高的价格是它输给竞争对手的重要因素。

附录

参见:

克罗诺斯恶意软件的内部-第一部分

无法显示此视频,因为您的功能性饼干目前已禁用。

要启用它们,请访问我们的隐私政策并搜索cookie部分。选择“点击这里”打开隐私偏好中心并选择“功能饼干”在菜单中。您可以将标签切换回“活跃”或通过移动标签来禁用“不活跃。”点击“保存设置”。


这是一篇由Hasherezade撰写的客座文章,他是一个对InfoSec有浓厚兴趣的独立研究员和程序员。她喜欢详细说明恶意软件并与社区分享威胁信息。在Twitter上检查她hasherezade和她的个人博客:https://hshrzd.wordpress.com