样本分析:phobos勒索软件样本分析学习

样本基本信息 基本信息: 文件大小:61kb MD5:ca52ef8f80a99a01e97dc8cf7d3f5487 文件类型:exe 病毒家族:Phobos 基础分析-持久化 该勒索软件带有加密配置,可以使用硬编码的AES...

样本基本信息

image-20240914172625919

基本信息:

  • 文件大小:61kb
  • MD5:ca52ef8f80a99a01e97dc8cf7d3f5487
  • 文件类型:exe
  • 病毒家族:Phobos

基础分析-持久化

image-20240914173428122

该勒索软件带有加密配置,可以使用硬编码的AES密钥解密,加密逻辑在sub_4062A6中。

sub_40646A

image-20240914173648086

该勒索软件自定义实现的AES加密算法,不需要依赖WIndows API。

image-20240914173748589

回到入口,该勒索软件使用GetTickCount()检索自系统启动以来经过的毫秒数:

image-20240914173838232

GetLocaleInfoW 函数用于获取操作系统的默认语言环境 (0x800 = LOCALE_SYSTEM_DEFAULT , 0x58 = LOCALE_FONTSIGNATURE )。

image-20240914174510006

二进制文件通过调用 GetModuleFileNameW 函数检索当前进程的可执行文件的路径,如下图:

image-20240919064647684

调用CreateFIleW寻找一个文件(0x80000000 = GENERIC_READ,0x3 = OPEN_EXISTING

image-20240919064816040

接着它使用GetVersion方法提取系统的主版本号和此版本号: image-20240919065108447

image-20240919065142597

如上图,还调用OpenProcessToken API打开与当前进程关联的访问令牌,之后用 GetTokenInformation验证令牌是否被提升。

环境变量“%systemdrive%”被展开,显示了包含Windows目录的驱动器:

image-20240919065430250

该勒索软件还创建了俩个互斥锁:

image-20240919070509754

分别是Global\\<<BID>><Volume serial number>00000001Global\\<<BID>><Volume serial number>00000000

通过GetouduuleHandle获取了Kernel.dll的模块句柄。

image-20240919070732563

勒索软件还会使用到GetShellWindow函数获取Shell桌面窗口的句柄,通过GetWindowThreadProcessId函数来检索创建窗口的进程,例如explorer.exe。如果检索到窗口,会使用OpenProcess方法来打开文件句柄。

image-20240919071154441

在上图中,DuplicateTokenEx API 用于创建一个新的访问令牌,该令牌复制上面提到的令牌。勒索软件在新创建的令牌的安全上下文中运行,它创建一个新线程,该线程将在sub_264B85函数中运行以下命令:

  • vssadmin delete shadows /all /quiet – 删除所有卷影副本
  • wmic shadowcopy delete – 删除所有卷影副本
  • bcdedit /set {default} bootstatuspolicy ignoreallfailures – 如果启动、关机或检查点失败,则忽略错误
  • bcdedit /set {default} recoveryenabled no – 禁用自动修复
  • wbadmin delete catalog -quiet – 删除计算机上的备份目录
  • netsh advfirewall set currentprofile state off – 禁用当前网络配置文件的防火墙
  • netsh Firewall set opmode mode=disable – 禁用防火墙

image-20240919071545264

image-20240919073058897

接着往下走:

image-20240919073300939

该进程将其可执行文件复制到“%AppData%\Local”目录。

RegOpenKeyExW 用于打开 Run 注册表项。该勒索软件通过创建一个基于可执行文件名称命名的条目来建立持久性,该条目指向新创建的可执行文件:

image-20240919073500354

image-20240919080027966

以下是该勒索软件的加密目标:

fdb sql 4dd 4dl abs abx accdb accdc accde adb adf ckp db db-journal db-shm db-wal db2 db3 dbc dbf dbs dbt dbv dcb dp1 eco edb epim fcd gdb mdb mdf ldf myd ndf nwdb nyf sqlitedb sqlite3 sqlite

线程活动

sub_XX22EE 函数

image-20240919080216345

image-20240919080310087

恶意软件打开与当前进程关联的访问令牌(0x20 = TOKEN_ADJUST_PRIVILEGES),LookupPrivilegeValueW 方法用于提取代表“SeDebugPrivilege”权限的本地唯一标识符(LUID),之后通过调用 AdjustTokenPrivileges 来启用上述权限。

以下进程将被终止,因为它们可能会锁定要加密的文件:

msftesql.exe sqlagent.exe sqlbrowser.exe sqlservr.exe sqlwriter.exe oracle.exe ocssd.exe dbsnmp.exe synctime.exe agntsvc.exe mydesktopqos.exe isqlplussvc.exe xfssvccon.exe mydesktopservice.exe ocautoupds.exe agntsvc.exe agntsvc.exe agntsvc.exe encsvc.exe firefoxconfig.exe tbirdconfig.exe ocomm.exe mysqld.exe mysqld-nt.exe mysqld-opt.exe dbeng50.exe sqbcoreservice.exe excel.exe infopath.exe msaccess.exe mspub.exe onenote.exe outlook.exe powerpnt.exe steam.exe thebat.exe thebat64.exe thunderbird.exe visio.exe winword.exe wordpad.exe

该恶意软件会对系统中所有进程进行快照,如下图所示。

image-20240919080444820

使用 Process32FirstWProcess32NextW API 枚举进程,再使用TerminateProcess方法停止任何目标进程:

image-20240919080527614

sub_XX239A函数

image-20240919080647541

OpenProcessToken 用于打开与进程关联的访问令牌(0x8 = TOKEN_QUERY),二进制文件通过调用 GetTokenInformation API(0x14 = TokenElevation )再次验证令牌是否被提升。

勒索软件它再次使用“Global\<<BID>><Volume serial number>00000000”互斥名称调用 OpenMutexW 和 CreateMutexW 方法:

image-20240919080821091

sub_XX2161函数(加密网络共享)

image-20240919080851278

image-20240919080920548

勒索软件使用事件来同步线程。它使用 CreateEventW 创建两个未命名的事件对象:

创建完事件对象后提取本地机器的 NetBIOS 名称:

image-20240919080958980

WNetOpenEnumW 用于启动所有当前连接的资源的枚举(0x1 = RESOURCE_CONNECTED),再通过调用 WNetEnumResourceW 函数继续枚举:

image-20240919081027255

该过程通过调用GetIpAddrTable函数获取接口到IPv4地址映射表,如下所示:

image-20240919081105198

这里使用 ntohl 将上面提取的每个 IP 地址从网络顺序转换为主机字节顺序

image-20240919081154510

它还会创建一个 TCP 套接字(0x2 = AF_INET、0x1 = SOCK_STREAM、0x6 = IPPROTO_TCP),尝试通过端口 445 连接到网络上的每个主机,以加密每个可用的网络共享:

image-20240919081245944

sub_XX4B85函数

image-20240919081531784

该进程通过调用 CreatePipe 方法创建两个匿名管道,接着使用 SetHandleInformation (0x1 = HANDLE_FLAG_INHERIT )可以使读取句柄可继承。

勒索软件会创建一个“cmd.exe”进程,该进程将执行多个命令,例如负责禁用防火墙、删除所有卷影副本等的命令通过管道传输到新创建的进程:

image-20240919081645985

sub_XX1CC5函数

image-20240919081753268

此线程不断使用 GetLogicalDrives API 提取代表当前可用磁盘驱动器的位掩码

AES加密

sub_XX1A76函数

image-20240919082132152

这里会解密用于加密文件所用的 AES256 密钥的 RSA 公钥。

它使用多个函数提取当前本地日期和时间、当前进程和线程 ID 以及其他信息:

image-20240919082242318

二进制文件会创建一个新线程,该线程将遍历网络共享和驱动器,以提取要加密的文件:

image-20240919082326047

sub_XX54BF函数

image-20240919090411399

之中的sub_XX8EBE:

勒索软件以读取模式打开要加密的文件(0x80000000 = GENERIC_READ、0x7 = FILE_SHARE_DELETE | FILE_SHARE_WRITE | FILE_SHARE_READ、0x3 = OPEN_EXISTING),如下

image-20240919090444698

它使用 GetFileSizeEx API 检索文件的大小,将大小与 0x180000 字节(1.5MB)进行比较,字节数较大的文件被部分加密,其余文件则被全部加密:

image-20240919090556323

使用一个ReadFile读取文件内容

image-20240919090650652

自定义的AES加密算法:

image-20240919090726403

内容经过AES加密后使用WriteFile写入文件中。

未加密的文件将被0覆盖,然后被删除:

image-20240919091326219

  • 发表于 2024-10-17 09:00:01
  • 阅读 ( 21493 )
  • 分类:漏洞分析

0 条评论

请先 登录 后评论
Sciurdae
Sciurdae

16 篇文章

站长统计