CryptBot 是一种针对 Windows 操作系统进行信息窃取的恶意软件,在 2019 年被首次发现。它旨在窃取失陷主机的敏感信息,例如浏览器凭据、加密货币钱包、浏览器 Cookie、信用卡信息与屏幕截图等。
恶意软件简介
进程信息
CryptBot 会从常见的浏览器 Chrome、Firefox 和 Edge 窃取信息。
窃取 Firefox 浏览器数据
要检测对存储在浏览器中的个人数据的访问,可以使用:
process_name NOT (“chrome.exe”, ”firefox.exe”, “msedge.exe”, “opera.exe”)ANDfile_access (%LOCALAPPDATA%\\MICROSOFT\\EDGE\\USER DATA\\*,%APPDATA%\\Roaming\\Mozilla\\Firefox\\*,%LOCALAPPDATA%\\Local\\Google\\Chrome\\User Data\\*%LOCALAPPDATA%\\AppData\\Local\\Opera Software\\Opera Stable\*)
(向右滑动,查看更多)
CryptBot 通过“UNINSTALL”注册表树检查系统中已安装的软件:
检查已安装的软件
要检测访问已安装软件列表,可以使用:
reg_key is (“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”)ANDoperation read
(向右滑动,查看更多)
CryptBot 会收集系统信息,包括操作系统安装日期、计算机名称、密钥、CPU 信息:
收集系统信息
要检测读取系统安装日期,可以使用:
reg_key is (“HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION”)ANDreg_name is (“INSTALLDATE”)ANDoperation read
(向右滑动,查看更多)
CryptBot 将收集到的操作系统信息和个人数据发送到 C&C 服务器:
回传数据
要检测连接到 C&C 服务器,可以使用:
network connectAND(domains are (“sginiv12[.]top” or “bytcox01[.]top”)OR (ip == “23[.]217.138.108” and port==80))
(向右滑动,查看更多)
回传数据是通过 HTTP 协议发送的,上传的文件名是随机生成的,但接收路径总是 gate.php 页面。
回传流量
Suricata 也对此进行了告警:
恶意流量告警
要检测恶意流量,可以使用:
network sendANDhttp_verb is “POST” AND location is “gate.php”ANDhttp_content includes (“form-data”, “name=\”files[]\””, “filename”)
(向右滑动,查看更多)
第一次在 %APPDATA%
目录中启动恶意软件时,会创建一个空目录标记 0D445946B53E9551
。该目录允许恶意软件确定之前是否启动过。如果 CryptBot 发现曾经在该主机上启动过,它将立即停止工作。
标记目录
收集的各种信息会存储在 %TEMP%
目录的临时文件中:
临时文件
例如,其中一个文件就是有关用户名与密码的信息,并且以 base64 格式进行存储。
收集的信息
CryptBot 运行完时,会使用 CMD.EXE 在短暂延迟后删除自身:
删除自身
通过 DIE 查看,软件认为该样本文件并未加壳:
静态查看是否存在加壳
通过 Process Hacker 查看进程内存,在一个可读可写可执行的区域内发现了 PE 文件头:
进程转储
PE 文件头也是 Shellcode 的起始位置,恢复寄存器后获取 ImageBase 并将控制权转交给入口点:
反汇编
调试发现,该区域是使用 VirtualAlloc 函数分配的。将 Payload 写入其中并进行异或解密:
异或解密
解密的密钥存储在 .rdata 段中:
解密密钥
通过静态分析确认,恶意软件配置信息位于 .data 段中并且使用异或加密。
密钥与配置
通过 CyberChef 与密钥可以对配置进行解密:
配置解密
配置中可以看到 CryptBot 的目标是什么。
研究人员实现了自动提取解密的脚本,执行结果如下所示:
脚本提取结果
rule CryptBot_ShellCode{meta:author = "Any.Run"SHA256 = "183f842ce161e8f0cce88d6451b59fb681ac86bd3221ab35bfd675cb42f056ac"date = "2023-01-19"description = "Detect CryptBot shellcode in memory"strings:$shellcode = { 4D 5A 45 52 E8 00 00 00 00 58 83 E8 09 50 05 [4] FF D0 C3 }condition:uint16(0) != 0x5A4D anduint16(0) > 0 and$shellcode in (0x20..0x50)}
(向右滑动,查看更多)
rule CryptBot_Config {meta:author = "Any.Run"SHA256 = "183f842ce161e8f0cce88d6451b59fb681ac86bd3221ab35bfd675cb42f056ac"date = "2022-01-19"description = "Detect CryptBot configuration in memory"strings:$s1 = "CookiesEdge"$s2 = "ChromeDB<>_<>"$s3 = "EdgeDB<>_<>"$s4 = "ChromeExt<>_<>"$s5 = "HistoryChrome<>_<>"$s6 = "EdgeExt<>_<>"$s7 = "CookiesFirefox<>_<>"$s8 = "HistoryOpera<>_<>"$s9 = "CookiesOpera<>_<>"$s10 = "FirefoxDB<>_<>"$s11 = "CookiesChrome<>_<>"$s12 = "HistoryFirefox<>_<>"$s13 = "HistoryEdge<>_<>"$s14 = "DesktopFolder<>_<>"$s15 = "ChromeDBFolder<>_<>"$s16 = "ExternalDownload<>_<>"$s17 = "ScreenFile<>_<>"$s18 = "MessageAfterEnd<>_<>"$s19= "HistoryFile<>_<>"$s20 = "FirefoxDBFolder<>_<>"$s21 = "PasswordFile<>_<>"$s22 = " WalletFolder<>_<>"$s23 = "DeleteAfterEnd<>_<>"$s24 = "EdgeDBFolder<>_<>"$s25 = "InfoFile<>_<>"$s26 = "CookiesFile<>"condition:7 of them}
(向右滑动,查看更多)
12d20a973f8cd9c6373929ae14efe123
7f277f5f8f9c2831d40a2dc415566a089a820151
183f842ce161e8f0cce88d6451b59fb681ac86bd3221ab35bfd675cb42f056ac
http://sginiv12[.]top/gate.php
http://bytcox01[.]top/gesell.dat
https://any.run/cybersecurity-blog/cryptbot-infostealer-malware-analysis/
精彩推荐