在里面Kronos分析的前一部分,我们看了一看Kronos的安装过程,并解释了这个恶意软件用来保持更隐蔽的技巧的技术细节。现在,我们将继续研究Kronos可以执行的恶意操作。
分析样品
- ede01f7431543c1fef546f8e1d693a85- downloader(带有恶意宏的。doc)
- 2A550956263A22991C34F076F3160B49-主机器人(打包)
特别感谢@ 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.
作为输出,我们将获得解码的信标,包括:
- 配置文件的哈希(如果目前没有配置文件,则此部分将填充“X”字符)
- 植物质
例子:
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以体面的方式编写,但它的功能没有什么小说。虽然机器人在地下论坛上得到了良好的评论在美国,就受欢迎程度而言,它总是落后。可能它相对较高的价格是它输给竞争对手的重要因素。
附录
参见:
这是一篇由Hasherezade撰写的客座文章,他是一个对InfoSec有浓厚兴趣的独立研究员和程序员。她喜欢详细说明恶意软件并与社区分享威胁信息。在Twitter上检查她hasherezade和她的个人博客:https://hshrzd.wordpress.com.
评论