关键词:Prynt Stealer、RAT、后门

1. 概述

Prynt Stealer 是一个通过.NET编写的信息窃取恶意软件,主要功能包括:获取目标系统中浏览器、VPN/FTP客户端、即时通讯程序和游戏类程序中存储的凭证信息。包括Prynt Stealer在内的信息窃取恶意软件通过构建器(builder)进行配置,来简化部署过程。来自Zscaler ThreatLabz的安全研究人员发现,Prynt Stealer的构建器包含了一个后门,该后门在Prynt Stealer恶意软件家族的各类变体中均有出现,其功能是将恶意软件使用者收集的敏感信息副本,发送至一个由构建器开发者控制的Telegram频道中。这种“螳螂捕蝉,黄雀在后”的网络犯罪行为,导致目标系统的敏感信息落入多个不同攻击者的手中,增加了由于信息泄露而产生的后继多次网络攻击的风险。本文将重点介绍 Prynt Stealer 恶意软件的基本功能、关联的其他恶意软件以及 Prynt Stealer 构建器中的后门。

2.Prynt Stealer 的起源

Prynt Stealer 受到了各类开源恶意软件家族的启发,直接从其他开源恶意软件代码库中复用了一些代码。Prynt Stealer 在开发过程中主要参考了AsyncRAT(一个多功能RAT)和StormKitty(信息窃取器),而AsyncRAT可以调用StormKitty。在Prynt Stealer 中,AsyncRAT 提供的大多数功能被禁用,同时将C&C(命令与控制服务器)的地址设置为“127.0.0.1”这种本地回送地址。Prynt Stealer 中嵌入了一个证书,如表1所示:

表 1 Prynt Stealer中嵌入的证书信息

"issuer": "CN=WorldWind Stealer",

"subject": "CN=WorldWind Stealer",

"to_date": "9999-12-31T23:59:59",

"version": "v3",

"from_date": "2021-07-13T04:51:06",

"serial_number": 852016614067188563094399707801818649

该证书中“通用名称”字段(CN,Common Name)的值,“WorldWind Stealer”,也是一个由Prynt Stealer恶意软件开发者所出售的恶意软件的名字。

3. 关联的恶意样本比较

Prynt Stealer的开发者在源自于AsyncRAT的配置代码中,添加了两个新字段用于通过Telegram进行数据外渗。图1左侧显示了Prynt Stealer 的配置代码,而右侧则是AsyncRAT的配置代码。

图 1 Prynt Stealer 通过Telegram进行数据外渗的配置代码

Prynt Stealer负责向Telegram发送数据的代码主要源自于StormKitty,但进行了部分修改。图2左侧显示的是Prynt Stealer的“UploadFile”函数,右侧展示的则是StormKitty的“SendSystemInfo”函数。两者的主要区别在于字段名称及顺序发生了变化,以及减少了不良网站检测的相关字段。

图 2 Prynt Stealer与StormKitty的数据外渗代码对比

4. Prynt Stealer细节修改

反检测技术

Prynt Stealer仅使用了AsyncRAT中的一个对抗分析方法:创建一个线程,调用AsyncRAT静态构造函数中调用名为“processChecker”的函数,用于在主函数发送被盗数据后执行。该函数的具体代码如图3所示:

图 3 Prynt Stealer 进程检查器线程的代码

Prynt Stealer 通过这个函数持续监控受害者的进程列表。如果检测到以下进程,Prynt Stealer将停止与Telegram C2 通道通信:

  • taskmgr

  • processhacker

  • netstat

  • netmon

  • tcpview

  • wireshark

  • filemon

  • regmon

  • cain

Telegram 下载命令

Prynt Stealer 会创建一个线程,使用Telegram getUpdates API 轮询下载文件,代码如图4所示。这个功能仅将文件保存在目标系统上,并不会执行其他操作。

图 4 Prynt Stealer的Telegram下载命令

“众包”的被盗数据

Prynt Stealer从各种应用程序中窃取数据,并将信息发送到Telegram频道。一般而言,Prynt Stealer的Telegram频道配置通过图5中的构建器进行配置。

图 5 Prynt Stealer 构建器界面

然而,Prynt Stealer的构建器中存在一个后门:被盗数据文件的副本也发送到Prynt Stealer作者在代码中嵌入的另一个Telegram频道地址,如图6所示。

图 6 被盗数据的副本将发送至恶意软件作者控制的Telegram频道

5. Prynt Stealer的变种

来自ThreatLabz的安全研究人员已经确定了至少另外两个Prynt Stealer的变种,被称为WorldWind和DarkEye。他们极大可能是由同一作者编写,之间存在细微差异。图7显示了ThreatLabz捕获的这三个恶意软件样本的占比。

图 7 去年Prynt Stealer、WorldWind和DarkEye的在野样本占比

Prynt Stealer和WorldWind都由同一作者在以下网站上出售:

表 2 恶意软件出售网站地址

市场网站恶意软件名称当前状态
http://shop.prynt[.]marketWorldWind不可用
http://market.prynt[.]marketPrynt Stealer不可用
http://venoxxxx[.]xxxPrynt Stealer可用

这些网站的屏幕截图如图8所示,当前已无法访问:

图 8 恶意软件销售的截图

而其他各种网站和犯罪论坛都提供了Prynt Stealer的破解版本,代码已被不同账户上传到GitHub上。Prynt Stealer(存在Telegram后门的版本)也在一些Telegram频道上免费提供,如图9所示。

图 9 在Telegram频道上免费提供的Prynt Stealer

功能与代码比较

表3显示了Prynt、WorldWind和DarkEye之间的特征比较。总体而言,WorldWind和DarkEye间的差异非常微小,主要区别包括:日志中的预置文本、代码变量和一些设置文件的位置,功能上几乎相同。

表 3 Prynt 及变体的特征对比

PryntWorldWindDarkEye
AsyncRAT

存在

(未使用)

存在

(未使用)

使用

Clipper

(剪切板功能)

存在

(未使用)

存在

(未使用)

使用

Keylogger

(键盘记录器功能)

存在

(未使用)

存在

(未使用)

使用

ProcessChecker

Anti-Analysis

(反分析功能)

使用不存在不存在

StomKitty Stealing

(StormKitty窃取器)

使用使用使用

HideConsoleWindow

(隐藏Console窗口)

使用不存在不存在
特权提升使用不存在不存在
复制到指定路径使用不存在不存在
通过计划任务进行持久化使用不存在不存在
通过.bat脚本进行自删除使用不存在不存在
检测网络连接使用不存在不存在
通过RtlSetProcessIsCritical保护进程使用不存在不存在
通过设置SetThreadExecutionState为0x80000003来防止睡眠使用不存在不存在

表4比较了StormKitty、Prynt Stealer、WorldWind和DarkEye之间的字段名称差异。

表 4 Prynt 及关联恶意软件中的字段差异

StormKitty

Prynt

WorldWind

DarkEye

😹 *StormKitty - Report:*

\\ud83d\\udc63 *Prynt Stealer New Results:*

\\ud83c\\udf2a *WorldWind Pro - Results:*

\\ud83d\\ude39 *DARK-EYE - Report:*

🏦 *Banking services*

\\ud83c\\udfe6 *Banks*

\\ud83c\\udfe6 *Bank Logs*

\\ud83c\\udfe6 *Banking services*

💰 *Cryptocurrency services*

\\ud83d\\udcb0 *Crypto*

\\ud83d\\udcb0 *Crypto Logs*

\\ud83d\\udcb0 *Cryptocurrency services*

🍓 *Porn websites*

N/A

\\ud83c\\udf53 *Freaky Logs*

\\ud83c\\udf53 *Porn websites*

🌐 *Browsers:*

\\ud83d\\udcb5 *Stealer Data:*

\\ud83c\\udf10 *Logs:*

\\ud83c\\udf10 *Browsers:*

🗃 *Software:*

\\ud83d\\udc63 *Installed Software:*

\\ud83d\\uddc3 *Software:*

\\ud83d\\uddc3 *Software:*

🧭 *Device:*

\\ud83d\\udc63 *Local Device:*

\\ud83e\\udded *Device:*

\\ud83e\\udded *Device:*

📄 *File Grabber:*

\\ud83d\\udc63 *Files:*

\\ud83d\\udcc4 *File Grabber:*

\\ud83d\\udcc4 *File Grabber:*

N/A

\\ud83d\\udc63 Solen Useing Prynt Stealer\\n\\n \\ud83d\\udc63 Developed By @FlatLineStealerUpdated\\n\\n \\ud83d\\udc63 Or Join The Channel @pryntdotmarket

Telegram Channel: @x0splinter

N/

6.构建器中的后门

图10显示了 Prynt Stealer构建器中的后门执行过程。

图 10 Prynt Stealer builder后门执行和感染流程

Prynt Stealer构建器软件包括以下文件:

  • Stub.exe - 构建器使用的 Prynt stub

  • Prynt Stealer.exe - Builder 可执行文件

  • Prynt Stealer sub.exe - 非托管 PE 文件

  • Prynt.exe - 下载和执行DarkEye Stealer的后门

Stub.exe - 构建器使用的 Prynt stub

Prynt stub 枚举文件 sub.exe中的资源,并根据RCData资源部分中的设置执行操作,如图11所示。

图 11 Prynt stub 枚举文件 sub.exe中的资源

sub.exe通过Celesty Binder生成,字符串“C:\\Users\\DarkCoderSc\\Desktop\\Celesty Binder\\Stub\\STATIC\\Stub.pdb”提供了证据。此二进制文件以明文形式将嵌入的有效载荷存储在“RBIND”资源下。在这个示例中,有效载荷将被下载至%TEMP%文件夹并执行,如图12所示。

图 12 Sub.exe的资源节中存储了设置信息

DROPIN”值的其他有效选项包括以下内容:

  • %APPDATA%

  • %PROGFILES%

  • %DEFDRIVE%

  • %STARTUPDIR%

  • %LAPPDATA%

  • %使用RDIR%

Prynt Stub 包含两个有效载荷

  • “PRYNT STEALER.EXE” 构建器的二进制文件

  • “SVCHOST.EXE” - LodaRAT 后门

PRYNT STEALER.EXE - 构建器

该构建器是AsyncRAT构建器的修改版本,其修改了UI并在main()方法中添加了一行代码,用于从{Builder Path}/Stub/Prynt.exe运行上述加载程序。

Prynt.exe - 加载器

这是一个由.NET编写的加载器,主要功能是从硬编码的URL地址下载有效载荷并执行,如图13所示。

图 13 加载器代码进行了混淆

从上述地址下载的载荷是DarkEye Stealer,一个Prynt Stealer的变体。研究人员发现,基于DarkEye、Prynt和WorldWind窃取器使用了相同的硬编码Telegram令牌,这暗示了它们可能来自同一个作者。

DarkEye Stealer

DarkEye Stealer是Prynt Stealer的变体,在代码放置方面有一些细微的差异。图14显示了与Clipper、Keylogger等相关的大多数功能设置是直接从AsyncRAT构造函数下复制而来的,如图14所示。

图 14 DarkEye Stealer配置的AsyncRAT设置示例

DarkEye与Prynt和Worldwind的主要区别在于,AsyncRAT相关的代码是通过配置来进行武器化的,而有一些在野发现的早期版本DarkEye Stealer没有包含AsyncRAT组件。

Loda RAT

Loda RAT是基于Autoit的开发的RAT,2017年首次被发现并在多年来一直在不断发展更新。这是一个功能强大的恶意软件,可以窃取各种信息,远程控制目标系统并部署各种攻击载荷。

7. 总结

近年来,许多新兴的恶意软件家族都基于开源项目进一步开发,例如:NjRat,AsyncRAT以及QuasarRAT等。越来越多的开源恶意软件,使得较为初级的攻击者也能更为容易地使用这些恶意软件并进行二次开发。而本文描述的Prynt Stealer在其代码中添加了一个数据外渗后门,从其他使用该恶意软件的犯罪分子手中窃取数据。这种“螳螂捕蝉,黄雀在后”的攻击方式并非首创,如CobainRAT恶意软件也存在这种“黑吃黑”的现象。这种方式会造成被攻击者泄露的敏感信息被更大范围的攻击者使用,极大提高了受害者被不同来源的攻击者进一步攻击的风险。

附录 攻击指标

恶意样本哈希

SHA-256

恶意样本

d8469e32afc3499a04f9bcb0ca34fde63140c3b872c41e898f4e31f2a7c1f61fPrynt Stealer
f15e92c34dd8adfcd471d726e88292d6698217f05f1d2bcce8193eb2536f817cPrynt StealerPrynt Stealer

3b948a0eb0e9bbca72fc363b63ffd3a5983e23c47f14f8296e8559fd98c25094

WorldWind Stealer

bb96db7406566ec0e9305acde9205763d4e9d7a65f257f3d5c47c15f393628ec

DarkEye Stealer

e48179c4629b5ab9e53ccb785ab3ee5eeb2e246e1897154a15fec8fd9237f44b

DarkEye Stealer

(无AsyncRAT的老版本)

9678ca06068b705da310aa2f76713d2d59905b12b67097364160857cd1f90c58

Celesty Binder载荷

654f080d5790054f0cd1a0f9b31cd7a82a4722ff3ce5093acdc31ff154f1ae24

构建器

cb132691793e93ad8065f857b4b1baba92e937cfc3d3a8042ce9109e12d32b4c

LodaRAT

d37d0ae4c5ced373fe1960af5ea494a6131717d1c400da877d9daa13f55439bb

Prynt Stealer Stub

c79aed9551260daf74a2af2ec5b239332f3b89764ede670106389c3078e74d1a

加载器

恶意URL

https://cdn.discordapp[.]com/attachments/523238636561629190/890007970207907871/vltn.exe

DarkEye Stealer

下载地址

bigdaddy-service[.]biz:6606

DarkEye Stealer C2

bigdaddy-service[.]biz:7707

DarkEye Stealer C2

bigdaddy-service[.]biz:8808

DarkEye Stealer C2

daddy.linkpc[.]net:1199

LodaRAT C2

END

参考链接:https://www.zscaler.com/blogs/security-research/no-honor-among-thieves-prynt-stealers-backdoor-exposed

编辑|游奕哲

审校|何双泽、金矢

本文为CNTIC编译整理,不代表本公众号观点,转载请保留出处与链接。

声明:本文来自国家网络威胁情报共享开放平台,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。