Salim Bitam

CUBA 勒索软件恶意软件分析

Elastic Security 对 CUBA 勒索软件家族进行了深入的技术分析。 这包括恶意软件功能以及防御对策。

阅读时长 16 分钟恶意软件分析
CUBA Ransomware Malware Analysis

摘要

作为 Elastic Security 持续威胁检测和监控工作的一部分,我们最近观察到 CUBA 勒索软件威胁组织(内部追踪为 REF9019)发起的勒索软件入侵。 本报告将详细介绍部署在网络内部以加密受害者文件的勒索软件的内部工作原理。 CUBA 勒索软件为攻击者提供了灵活的加密企业本地和网络共享文件的能力。 CUBA 使用 ChaCha20 密码算法进行对称加密,并使用 RSA 加密来保护 ChaCha20 密钥。 CUBA 采用多线程实现更快的加密,并使用资源访问同步来避免文件损坏。

在此分析中,我们将描述以下内容

  • 操作模式
  • 进程和服务终止
  • 卷的枚举
  • 线程实现
  • 文件加密和使用的算法
  • MITRE ATT&CK 映射
  • YARA 规则
  • 入侵指标

静态分析

| | | | --------------- | ---------------------------------------------------------------- | --- | | SHA256 打包 | 0f385cc69a93abeaf84994e7887cb173e889d309a515b55b2205805bdfe468a3 | | SHA256 解包 | 3654af86dc682e95c811e4fd87ea405b627bca81c656f3a520a4b24bf2de879f | | 文件大小 | 135168 字节 | | 文件类型: | 可执行文件 | | Imphash: | CA5F4AF10ABC885182F3FB9ED425DE65 | | 编译时间 | 2022 年 3 月 9 日 22:00:31 | UTC | | 熵值 | 6.582 |

区段

名称虚拟地址虚拟大小原始大小熵值MD5
.text0x004010000x13B5F0x13C006.608931B22064E9E214BF59A4E07A6CA9109
.rdata0x004150000xA71C0xA8005.855F6F97411BCD64126A96B08BA9AE1E775
.data0x004200000x16B00xC003.45003B1B11B4531BB656E43A8B457D4A5F7
.rsrc0x004220000x1E00x2004.704F754ADBD7F5D6195FD6D527001CAB98C
.reloc0x004230000x12000x12006.57308B0994DAECAAAA4173B388A80CC52FE

有关 CUBA 勒索软件活动和相关恶意软件分析的信息,请查看我们的博客文章,其中详细介绍了这一点

导入

GetProcessImageFileNameW
EnumProcesses
NetApiBufferFree
NetShareEnum
GetIpNetTable
PathFindFileNameW
FindFirstFileExW
FindFirstFileW
FindNextFileW
WriteFile
SetFileAttributesW
MoveFileExW
FindFirstVolumeW
TerminateProcess
GetEnvironmentStringsW
OpenProcess
GetCurrentProcessId
CreateProcessW
GetVolumePathNamesForVolumeNameW
FindNextVolumeW
GetCurrentThreadId
RaiseException
GetModuleHandleExW
OpenProcessToken
CryptAcquireContextA
CryptGenRandom
CryptReleaseContext
AdjustTokenPrivileges
LookupPrivilegeValueA
ControlService
ChangeServiceConfigW
PathAddBackslashW
GetCPInfo
GetOEMCP
IsValidCodePage
lstrcpynW
InterlockedDecrement
FindClose
CreateFileW
Sleep
lstrcatW
CloseHandle
CreateThread
lstrcpyW
lstrcmpW
ReadFile
GetFileSizeEx
EnterCriticalSection
GetCurrentProcess
GetModuleFileNameW
LeaveCriticalSection
GetCommandLineA
WaitForSingleObject
GetLastError
SetEvent
GetDiskFreeSpaceExW
ResetEvent
GetWindowsDirectoryW
SetFilePointerEx
ExitProcess
CreateEventA
lstrcmpiW
GetTickCount
DeleteCriticalSection
QueryPerformanceCounter
SetStdHandle
FreeEnvironmentStringsW
GetCommandLineW
DecodePointer
GetStringTypeW
GetProcessHeap
FlushFileBuffers
GetConsoleCP
HeapSize
WriteConsoleW
InitializeCriticalSection
UnhandledExceptionFilter
SetUnhandledExceptionFilter
IsProcessorFeaturePresent
InitializeCriticalSectionAndSpinCount
WaitForSingleObjectEx
CreateEventW
GetModuleHandleW
GetProcAddress
IsDebuggerPresent
GetStartupInfoW
GetSystemTimeAsFileTime
InitializeSListHead
RtlUnwind
SetLastError
EncodePointer
TlsAlloc
TlsGetValue
TlsSetValue
TlsFree
FreeLibrary
LoadLibraryExW
GetFileType
GetStdHandle
MultiByteToWideChar
WideCharToMultiByte
GetACP
HeapFree
HeapAlloc
LCMapStringW
HeapReAlloc
GetConsoleMode
CharLowerW
GetKeyboardLayoutList
wsprintfW
CloseServiceHandle
OpenSCManagerW
OpenServiceW
QueryServiceStatusEx

字符串

Good day. All your files are encrypted. For decryption contact us.
Write here [email protected]
reserve [email protected]
jabber [email protected]
We also inform that your databases, ftp server and file server were downloaded by us to our servers.
If we do not receive a message from you within three days, we regard this as a refusal to negotiate.
Check our platform: http://cuba4ikm4jakjgmkezytyawtdgr2xymvy6nvzgw5cglswg3si76icnqd.onion/
* Do not rename encrypted files.
* Do not try to decrypt your data using third party software,
  it may cause permanent data loss.
* Do not stop process of encryption, because partial encryption cannot be decrypted.
!! READ ME !!.txt

代码分析

入口点

恶意软件首先使用 GetKeyboardLayout API 获取受害者的活动输入区域设置标识符。 当机器支持的语言列表中包含俄语时,该进程会使用简单的命令行删除并终止自身:c:\system32\cmd.exe c/ del PATH_TO_BINARY,而不加密文件系统。

命令行选项

威胁行动者根据以下命令行参数加入了 4 种不同的操作

  • network 关键字
  • IP 关键字
  • path 关键字
  • local 关键字

Network 关键字参数

当指定 network 关键字时,恶意软件使用 GetIpNetTable Windows API 检索机器的地址解析协议 (ARP) 表,并枚举 ARP 表中每个 IP 的共享,此信息被添加到链表中,该链表将由加密功能访问,这将在下文详细讨论。

IP 关键字参数

通过在命令行中将 IP 地址指定为第一个参数,恶意软件将继续枚举和加密为指定的 IP 找到的每个共享。

Path 关键字参数

恶意软件将加密本地目录内容或作为命令行第一个参数提供的文件。

Local 关键字参数

local 关键字用于加密机器上的每个本地卷,并且由于恶意软件通过其 ID 定位卷,因此它可以加密已挂载和未挂载的卷。

进程终止

CUBA 首先获取 SeDebugPrivilege,然后使用通用的 Windows API 终止硬编码的进程和服务列表(有关列表,请参见附录 [1], [2])。 对于某些服务,恶意软件首先尝试禁用该服务 - 由 TerminateProcesses::TerminateServiceByName 函数的第二个参数指示。 这主要是为了防止可能锁定文件而无法进行外部更改的应用程序(例如数据库)干扰加密过程。

本地卷枚举

恶意软件枚举所有本地卷,并为每个大于 1GB 的卷将该卷的 GUID 保存在自定义链表中。 勒索软件利用 CriticalSection 对象来访问此链表,以实现同步目的,因为多个线程访问同一资源。 这有助于避免两个线程同时加密同一文件,即会导致文件损坏的竞争条件。

多线程加密同步

在准备加密列表后,CUBA 勒索软件会生成以以下定义的结构为参数的加密线程。 根据命令行参数,恶意软件会启动 4 个用于本地加密的线程或 8 个用于网络加密的线程。

当一个线程完成其任务时,它会递减计数器,直到计数器达到 0:lpParameter-\>NumberOfThreadRunning。 当最后一个线程完成时,它会调用 SetEvent API 向程序发出任务已完成的警报,这将自行删除并终止恶意软件。

加密实现

恶意软件利用对称加密算法 ChaCha20 来加密文件,并利用非对称加密算法 RSA 来保护 ChaCha20 密钥和初始化向量 (IV)。 作者利用开源 SSL/TLS 库 WolfSSL 的自定义版本来实现此功能。 其他样本 (2957226fc315f71dc22f862065fe376efab9c21d61bbc374dde34d47cde85658) 使用 libtomcrypt 库实现了类似的功能。 可能存在此处未描述的其他实现。

勒索软件会分配一个称为块的大型自定义结构,其中包含所有必需的加密信息。 然后,它使用 wc_InitRsaKey 初始化 RsaKey 结构,并使用 wc_RsaPublicKeyDecode 解码 DER 格式的嵌入式 4096 位 RSA 公钥,并将其保存到 block.PubRsaKey。

文件枚举

每个线程从链表中获取一个条目,并开始从卷的根目录开始递归地枚举文件。 如果是特定目录,则递归调用相同的函数,但特定目录除外(有关列表,请参见附录)。 否则,它将忽略勒索说明文件 !! READ ME !!.txt 以及具有特定扩展名的文件(有关列表,请参见附录)。

恶意软件使用 WolfSSL 函数 wc_RNG_GenerateBlock 随机生成 44 个字节。 其中的前 32 个字节用作 ChaCha20 密钥,另外 12 个字节用作 IV,然后调用一个函数来初始化 ChaCha20 结构 block.chacha20_KeyIv,该结构稍后将用于加密文件内容。 此时,勒索软件已准备好开始加密和写入文件。

在加密文件之前,Cuba 勒索软件会附加一个 1024 字节的标头,前 256 个字节是字符串 FIDEL.CA 和一些 DWORD 字节值,接下来的 512 个字节是使用公钥 RSA 加密的 ChaCha20 密钥/IV,其余部分用 0 填充。

在开始加密之前,恶意软件会通过比较文件的前 8 个字节与头字符串 FIDEL.CA 来双重检查文件是否已被加密。如果相等,恶意软件将终止如下所述的加密过程。

然后,CUBA 写入 1024 字节的头,如果文件大于 2 MB,它会从文件中一次读取 1 MB 的数据,并使用 ChaCha20 密码对其进行加密。否则,它将一次性读取并加密整个内容。

恶意软件以 1 MB 的块加密文件,并且根据文件的大小,它会跳过预设数量的字节。这样做主要是为了加快大型文件的加密过程,下表对此进行了说明。

文件大小数据块大小跳过大小
小于 2 MB所有文件内容0 MB
小于 10 MB1 MB4 MB
小于 50 MB1 MB8 MB
小于 200 MB1 MB16 MB
小于 10 GB1 MB200 MB
大于 10 GB1 MB500 MB

最后,它将通过添加扩展名 .cuba 来重命名文件。

MITRE ATT&CK 技术

使用 MITRE ATT&CK® 框架,技术和子技术表示对手如何通过执行某个操作来实现战术目标。

附录

终止的进程列表

  • sqlagent.exe
  • sqlservr.exe
  • sqlwriter.exe
  • sqlceip.exe
  • msdtc.exe
  • sqlbrowser.exe
  • vmwp.exe
  • vmsp.exe
  • outlook.exe
  • Microsoft.Exchange.Store.Worker.exe

终止的服务列表

  • MySQL
  • MySQL80
  • SQLSERVERAGENT
  • MSSQLSERVER
  • SQLWriter
  • SQLTELEMETRY
  • MSDTC
  • SQLBrowser
  • vmcompute
  • vmms
  • MSExchangeUMCR
  • MSExchangeUM
  • MSExchangeTransportLogSearch
  • MSExchangeTransport
  • MSExchangeThrottling
  • MSExchangeSubmission
  • MSExchangeServiceHost
  • MSExchangeRPC
  • MSExchangeRepl
  • MSExchangePOP3BE
  • MSExchangePop3
  • MSExchangeNotificationsBroker
  • MSExchangeMailboxReplication
  • MSExchangeMailboxAssistants
  • MSExchangeIS
  • MSExchangeIMAP4BE
  • MSExchangeImap4
  • MSExchangeHMRecovery
  • MSExchangeHM
  • MSExchangeFrontEndTransport
  • MSExchangeFastSearch
  • MSExchangeEdgeSync
  • MSExchangeDiagnostics
  • MSExchangeDelivery
  • MSExchangeDagMgmt
  • MSExchangeCompliance
  • MSExchangeAntispamUpdate

排除的目录

  • \windows\
  • \program files\microsoft office\
  • \program files (x86)\microsoft office\
  • \program files\avs\
  • \program files (x86)\avs\
  • $recycle.bin\
  • \boot\
  • \recovery\
  • \system volume information\
  • \msocache\
  • \users\all users\
  • \users\default user\
  • \users\default\
  • \temp\
  • \inetcache\
  • \google\

排除的文件扩展名

  • .exe
  • .dll
  • .sys
  • .ini
  • .lnk
  • .vbm
  • .cuba

YARA 规则

Elastic Security 创建了 YARA 规则来识别 CUBA 勒索软件活动。

rule Windows_Ransomware_Cuba {
    meta:
        os = "Windows"
        arch = "x86"
        category_type = "Ransomware"
        family = "Cuba"
        threat_name = "Windows.Ransomware.Cuba"
        Reference_sample = "33352a38454cfc247bc7465bf177f5f97d7fd0bd220103d4422c8ec45b4d3d0e"

    strings:
       $a1 = { 45 EC 8B F9 8B 45 14 89 45 F0 8D 45 E4 50 8D 45 F8 66 0F 13 }
       $a2 = { 8B 06 81 38 46 49 44 45 75 ?? 81 78 04 4C 2E 43 41 74 }
     $b1 = "We also inform that your databases, ftp server and file server were downloaded by us to our     servers." ascii fullword
       $b2 = "Good day. All your files are encrypted. For decryption contact us." ascii fullword
       $b3 = ".cuba" wide fullword

    condition:
        any of ($a*) or all of ($b*)
}

观察结果

在我们的调查中观察到的原子指标。

指标类型备注
32beefe2c5e28e87357813c0ef91f47b631a3dff4a6235256aa123fc77564346SHA256CUBA 勒索软件
0f385cc69a93abeaf84994e7887cb173e889d309a515b55b2205805bdfe468a3SHA256CUBA 勒索软件
bcf0f202db47ca671ed6146040795e3c8315b7fb4f886161c675d4ddf5fdd0c4SHA256CUBA 勒索软件

工件

工件也可以通过组合的 zip 包以 ECS 和 STIX 格式下载。