关键词: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[.]market | WorldWind | 不可用 |
http://market.prynt[.]market | Prynt Stealer | 不可用 |
http://venoxxxx[.]xxx | Prynt Stealer | 可用 |
这些网站的屏幕截图如图8所示,当前已无法访问:
图 8 恶意软件销售的截图
而其他各种网站和犯罪论坛都提供了Prynt Stealer的破解版本,代码已被不同账户上传到GitHub上。Prynt Stealer(存在Telegram后门的版本)也在一些Telegram频道上免费提供,如图9所示。
图 9 在Telegram频道上免费提供的Prynt Stealer
功能与代码比较
表3显示了Prynt、WorldWind和DarkEye之间的特征比较。总体而言,WorldWind和DarkEye间的差异非常微小,主要区别包括:日志中的预置文本、代码变量和一些设置文件的位置,功能上几乎相同。
表 3 Prynt 及变体的特征对比
Prynt | WorldWind | DarkEye | |
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 | 恶意样本 |
d8469e32afc3499a04f9bcb0ca34fde63140c3b872c41e898f4e31f2a7c1f61f | Prynt Stealer |
f15e92c34dd8adfcd471d726e88292d6698217f05f1d2bcce8193eb2536f817c | Prynt 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。