博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为逃避检测而取消持久性:KPOT v2.0信息窃取恶意软件分析
阅读量:4173 次
发布时间:2019-05-26

本文共 5476 字,大约阅读时间需要 18 分钟。

概述

KPOT Stealer是一种信息窃取类型的恶意软件,该恶意软件可以从Web浏览器、即时通信、电子邮箱、VPN、RDP、FTP、加密货币软件和游戏中提取帐户信息和其他数据。

Proofpoint的研究人员从2018年8月开始,发现有攻击者开始通过电子邮件活动和漏洞利用工具包分发KPOT Stealer(如下图所示)。此外,Flashpoint Intel的研究人员在2018年9月发现了针对Javv加密货币钱包用户的恶意软件。

2018年11月至2019年5月期间,分发KPOT Stealer的漏洞利用工具包动:

为逃避检测而取消持久性:KPOT v2.0信息窃取恶意软件分析

最近,攻击者开始提供更新版本的恶意软件,本文分析了其中一起恶意活动及在恶意活动中使用的恶意软件。这一较新版本的恶意软件,正在各种地下黑客论坛中出售,其名称被标注为“KPOT v2.0”,价格约为100美元。

在俄罗斯的某地下黑客论坛中,我们找到了KPOT v2.0的商品,同时还包含标明其价格变化的历史信息:

为逃避检测而取消持久性:KPOT v2.0信息窃取恶意软件分析

恶意活动分析

我们在各种电子邮件恶意活动中,都观察到了KPOT的存在。例如,下面的内容体现了攻击者所使用的策略、技术和过程(TTP),其中包括使用文档和相同Payload域名的另一个恶意软件家族——Agent Tesla的活动。

KPOT恶意活动发送的恶意邮件:

为逃避检测而取消持久性:KPOT v2.0信息窃取恶意软件分析

· 发件人:ernandes <webmaster@henrynet.ca>

· 主题: payment-Bank transfer(付款 – 银行转账)

· 日期:2019年4月30日(星期二)

· 附件:“Bank transfer copy.doc”(银行转账复制版本)

利用CVE-2017-11882漏洞(公式编辑器漏洞)的RTF文档附件:

为逃避检测而取消持久性:KPOT v2.0信息窃取恶意软件分析

在上述示例中,附件是一个LCG Kit变种RTF文档,它利用CVE-2017-11882公式编辑器漏洞,通过bit.ly短地址链接服务下载中间下载工具:

· hxxps://bit[.]ly/2GK79A4 -> hxxp://internetowe[.]center/get/udeme.png

随后,下载工具从各种paste.ee链接中获取包含经过Base64编码后Payload的部分PowerShell脚本:

· hxxps://paste[.]ee/r/BZVbl (在PowerShell脚本中,包含用于反射DLL注入的附加二进制文件)

· hxxps://paste[.]ee/r/mbQ6R (经过Base64编码后的Payload)

· hxxps://paste[.]ee/r/OsQra (PowerShell脚本的后半部分)

其中,Payload是KPOT Stealer配置:

· C2:hxxp://5.188.60[.]131/a6Y5Qy3cF1sOmOKQ/gate.php

· XOR密钥:Adx1zBXByhrzmq1e

恶意软件分析

KPOT Stealer是一个使用C/C++语言编写的信息窃取类型恶意软件,专注于窃取各种软件应用程序和服务的帐户信息以及其他数据。该名称来源于早期版本恶意软件中使用的命令与控制(C&C)面板:

为逃避检测而取消持久性:KPOT v2.0信息窃取恶意软件分析

本文着重对较新版本的C&C面板进行分析,下图为登录屏幕截图。可以看出,可供识别的标志已经被删除。

新的命令与控制面板:

为逃避检测而取消持久性:KPOT v2.0信息窃取恶意软件分析

字符串

在大多数恶意软件中,重要的字符串都会被加密。在这里,每个加密的字符串都存储在一个8字节结构的数组中,每个结构包含:

1. 异或密钥(WORD)

2. 字符串长度(WORD)

3. 指向加密字符串的指针(DWORD)

每个加密的字符串都可以通过XOR密钥与其进行异或操作来实现解密。在参考中,[1]是一个IDA Python的片段,可用于解密分析样本中的字符串,在[2]中则包含解密字符串列表。

Windows API调用

KPOT Stealer通过哈希运算,解析它在运行时使用的大多数Windows API函数。该恶意软件所使用的散列算法被称为MurmurHash[3]。在我们所分析的样本中,使用0x5BCFB733作为种子(Seed)。下表包括使用的一些哈希值列表,以及其对应的Windows API名称:

· 0xEC595E53 GetModuleFileNameW

· 0x68CCF342 CreateStreamOnHGlobal

· 0xCF724FBB GetVolumeInformationW

· 0xB6B1AD4A InternetOpenW

· 0x6EAB51D socket

命令与控制

KPOT使用HTTP进行命令与控制。URL组件存储为加密字符串。在我们分析的样本中,URL为hxxp://bendes[.]co[.]uk/lmpUNlwDfoybeulu/gate.php。该恶意软件还支持.bit的C&C域名,这些域名目前被越来越普遍地使用。

有两种类型的请求会被发送到C&C服务器中。第一个是对C&C服务器的GET请求,如下图所:

为逃避检测而取消持久性:KPOT v2.0信息窃取恶意软件分析

来自C&C的响应内容经过Base64编码,并且使用硬编码密钥进行XOR异或操作,改密要被存储为加密字符串。在我们分析的样本中,密钥为“4p81GSwBwRrAhCYK”。其明文响应内容的示例如下:

1111111111111100__DELIMM__A.B.C.D__DELIMM__appdata__GRABBER__*.log,*.txt,__GRABBER__%appdata%__GRABBER__0__GRABBER__1024__DELIMM__desktop_txt__GRABBER__*.txt,__GRABBER__%userprofile%\Desktop__GRABBER__0__GRABBER__150__DELIMM____DELIMM____DELIMM__

这些数据之间由“__DELIMM__”进行分隔,可以拆分为以下类型的数据:

1. 一个位字符串,指示要运行的命令。

2. 受害者的外网IP地址。

3. “GRABBER rules”(GRABBER规则)指定要搜索和投放的文件。

在运行任何命令之前,恶意软件会首先检查受害者是否位于任何独立国家联合体(CIS)[5]。如果属于,恶意软件将会退出,而无需进行任何进一步操作。该恶意软件检查的特定语言如下图所示:

为逃避检测而取消持久性:KPOT v2.0信息窃取恶意软件分析

恶意软件进行这种类型的国家检查非常常见,因为威胁行为者通常会避免对独联体国家发动攻击。

在运行命令后,恶意软件将向C&C服务器发送POST请求:

为逃避检测而取消持久性:KPOT v2.0信息窃取恶意软件分析

POST数据使用上面GET响应中使用的硬编码XOR密钥进行XOR加密。我们对其进行解密,发现其中包含分为不同部分的各类数据。在每个部分,都有一个起始分隔符,例如“FFFILEE:”或“SYSINFORMATION:”,并且还有一个结束分隔符,例如“_FFFILEE_”或“_SYSINFORMATION_”。其中包括:

1. 大小为62字节的结构中,包含如下内容:

(1) 进程Token是否已经提升权限

(2) 进程完整性级别

(3) Windows版本

(4) 语言环境

(5) Bot ID

2. 其他系统信息包括:

(1) Windows版本

(2) 主机GUID

(3) 外网IP

(4) CPU情况

(5) RAM内存

(6) 显示器信息

(7) 主机名称

(8) 用户名

(9) 本地时间

(10) GPU情况

(11) 键盘布局

(12) 已安装的软件

3. 命令输出

4. 投放的文件

命令和功能

上面的GET响应中,第一个组成部分是一个16为的字符串,例如“1111111111111100”。其中,每个“1”都表示相应命令功能的启用,而每个“0”则表示相应命令功能的关闭。与之相对应,在C&C面板中提供了一个可访问的配置文件,其中提供了字符串每一位与命令名称之间的映射关系(如下图所示)。安全研究人员在对早期版本进行研究的过程中,也发现了这一功能:

为逃避检测而取消持久性:KPOT v2.0信息窃取恶意软件分析

这些命令能够提供以下功能:

1. 从Chrome浏览器中窃取Cookie、密码和自动填写数据;

2. 从Firefox浏览器中窃取Cookie、密码和自动填写数据;

3. 从Internet Explorer中窃取Cookie;

4. 窃取各种加密货币相关的文件;

5. 窃取Skype帐户信息;

6. 窃取Telegram帐户信息;

7. 窃取Battle.net帐户信息;

8. 窃取Internet Explorer密码;

9. 获取屏幕截图;

10. 窃取各种FTP客户端帐户信息;

11. 窃取各种Windows凭据;

12. 窃取各种Jabber客户端帐户信息;

13. 删除恶意软件自身;

14. (我们无法找到引用最后一个命令位的代码)。

尽管没有特定的命令位来控制下面这些功能,但恶意软件还会查找各种VPN工具、RDP配置文件、Microsoft Outlook中的用户帐户信息,并进行窃取。

KPOT Stealer还能够搜索和删除任意文件。指定要搜索的文件的“Rules”(规则)可以在上面的GET响应中传递。每个规则都有5个组成部分,它们之间使用“__GRABBER__”进行分隔。这些组成部分包括:

1. 规则名称;

2. 文件掩码(使用逗号分隔);

3. 搜索路径;

4. 最小文件大小;

5. 最大文件大小。

分隔不同组成部分的示例规则如下:

['appdata', '*.log,*.txt,', '%appdata%', '0', '1024']

该规则被称为“appdata”,实际上是负责在“%APPDATA”中查找0-1024字节范围内的任何“.log”或“.txt”文件。

我们分析的样本缺乏持久性机制,恶意软件在其C&C服务器中查询它应该执行的命令,随后执行该命令,并将结果传递回C&C,然后退出。这种方法,在其他的信息窃取恶意软件(例如:Pony)中已经出现过,因为这降低了被反病毒软件检测到的几率。

总结

如今,越来越多的恶意软件都开始以运行多种类型应用程序的客户端桌面操作系统为目标,窃取例如Web浏览器、即时通信软件、电子邮箱、VPN、RDP、FTP、加密货币软件和游戏中的凭据或其他数据,并且这一窃取过程也逐渐趋于隐蔽,例如我们现在所分析的KPOT Stealer恶意活动。由于这些恶意工具已经逐步走向商业化,这也就意味着不具备太高技术实力的犯罪分子也能够使用这些复杂的功能,并且威胁参与者可以轻松入手,并按照自己想要的方式修改工具或策略。因此,我们建议广大用户,及时更新厂商发布的最新补丁,保证平台的更新,并提高安全意识,防范社会工程学(例如:钓鱼邮件)所带来的安全性风险。

参考

[1] https://github.com/EmergingThreats/threatresearch/blob/master/kpot_stealer/decrypt_str.py

[2] https://github.com/EmergingThreats/threatresearch/blob/master/kpot_stealer/plaintext_strings.txt

[3] https://en.wikipedia.org/wiki/MurmurHash

[4] https://twitter.com/sysopfb/status/1035177455667957760

[5] https://en.wikipedia.org/wiki/Commonwealth_of_Independent_States

[6] https://www.proofpoint.com/us/threat-insight/post/lcg-kit-sophisticated-builder-malicious-microsoft-office-documents

[7] https://www.recordedfuture.com/ar3s-prison-release/

[8] https://www.flashpoint-intel.com/blog/malware-campaign-targets-jaxx-cryptocurrency-wallet-users/

IoC

SHA-256:

KPOT Stealer(恶意软件分析)

67f8302a2fd28d15f62d6d20d748bfe350334e5353cbdef112bd1f8231b5599d

KPOT Stealer(恶意活动分析)

1f2852eeb1008b60d798f0cbcf09751e26e7980b435635bbef568402b3f82504

Intermediate downloader(恶意活动分析)

36dcd40aee6a42b8733ec3390501502824f570a23640c2c78a788805164f77ce

URL:

KPOT Stealer C&C URL(恶意软件分析)

hxxp://bendes.co[.uk/lmpUNlwDfoybeulu/gate.php

KPOT Stealer C&C URL(恶意活动分析)

hxxp://5.188.60[.]131/a6Y5Qy3cF1sOmOKQ/gate.php

转载地址:http://iycai.baihongyu.com/

你可能感兴趣的文章
Hibernate中的数据的获取策略(fetching)
查看>>
Hibernate中通过HQL/JPQL查询的方式实现动态数据获取
查看>>
Hibernate中通过FetchProfile的方式实现动态数据获取
查看>>
Hibernate中通过JPA entity graph的方式实现动态数据获取
查看>>
Hibernate中的数据获取方式及时机(fetching)
查看>>
Hibernate的二级缓存概述
查看>>
Hibernate二级缓存的全局配置
查看>>
Hibernate应用中通过JPA配置Entity缓存
查看>>
Hibernate中配置二级缓存的并发策略
查看>>
Hibernate的Entity cache(实体缓存)
查看>>
Hibernate中的Query cache(查询缓存)
查看>>
Hibernate的interceptors与events
查看>>
TestNG概述
查看>>
TestNG中测试方法的依赖关系详解
查看>>
TestNG中的运行时测试实例工厂详解
查看>>
TestNG测试的并发执行详解
查看>>
TestNG的监听器概述
查看>>
TestNG的IAnnotationTransformer监听器详解
查看>>
TestNG的IMethodInterceptor监听器详解
查看>>
TestNG的IHookable监听器详解
查看>>