样本分析:phobos勒索软件样本分析学习
字数 2250 2025-08-20 18:18:05

Phobos勒索软件样本分析教学文档

1. 样本基本信息

  • 文件大小: 61KB
  • MD5: ca52ef8f80a99a01e97dc8cf7d3f5487
  • 文件类型: EXE可执行文件
  • 病毒家族: Phobos勒索软件

2. 持久化机制分析

2.1 注册表持久化

  • 使用RegOpenKeyExW打开Run注册表项
  • %AppData%\Local目录下创建自身副本
  • 创建基于可执行文件名称命名的注册表项,指向新创建的可执行文件

2.2 互斥锁创建

  • 创建两个互斥锁防止重复感染:
    • Global\\<<BID>><Volume serial number>00000001
    • Global\\<<BID>><Volume serial number>00000000

3. 系统信息收集

3.1 系统环境检测

  • 使用GetTickCount()获取系统启动时间
  • 使用GetLocaleInfoW获取系统默认语言环境
  • 使用GetModuleFileNameW获取当前进程路径
  • 使用GetVersion提取系统主/次版本号

3.2 权限提升检测

  • 调用OpenProcessToken打开当前进程访问令牌
  • 使用GetTokenInformation验证令牌是否被提升

3.3 系统驱动器检测

  • 展开环境变量%systemdrive%获取Windows目录所在驱动器

4. 破坏性操作

4.1 删除系统恢复功能

通过创建新线程执行以下命令:

vssadmin delete shadows /all /quiet
wmic shadowcopy delete
bcdedit /set {default} bootstatuspolicy ignoreallfailures
bcdedit /set {default} recoveryenabled no
wbadmin delete catalog -quiet

4.2 禁用防火墙

执行命令:

netsh advfirewall set currentprofile state off
netsh Firewall set opmode mode=disable

5. 进程终止策略

5.1 特权提升

  • 使用LookupPrivilegeValueW获取"SeDebugPrivilege"权限的LUID
  • 调用AdjustTokenPrivileges启用该权限

5.2 终止关键进程

终止可能锁定文件的进程列表包括:

  • 数据库相关: msftesql.exe, sqlagent.exe, sqlbrowser.exe, sqlservr.exe
  • 邮件客户端: thebat.exe, thunderbird.exe
  • Office组件: excel.exe, winword.exe, powerpnt.exe
  • 其他: steam.exe, mysqld.exe, oracle.exe

5.3 进程枚举方法

  • 使用CreateToolhelp32Snapshot创建进程快照
  • 通过Process32FirstWProcess32NextW枚举进程
  • 使用TerminateProcess终止目标进程

6. 网络共享加密

6.1 网络资源枚举

  • 使用WNetOpenEnumW启动已连接资源枚举(RESOURCE_CONNECTED)
  • 通过WNetEnumResourceW继续枚举

6.2 IP地址获取

  • 调用GetIpAddrTable获取IPv4地址映射表
  • 使用ntohl将IP地址从网络序转换为主机序

6.3 网络连接测试

  • 创建TCP套接字(AF_INET, SOCK_STREAM, IPPROTO_TCP)
  • 尝试通过445端口连接网络主机以加密可用共享

7. 文件加密机制

7.1 目标文件类型

加密扩展名列表包括:

.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

7.2 加密流程

  1. 以读取模式打开目标文件(GENERIC_READ, FILE_SHARE_DELETE | FILE_SHARE_WRITE | FILE_SHARE_READ, OPEN_EXISTING)
  2. 使用GetFileSizeEx获取文件大小
    • 大于1.5MB的文件部分加密
    • 小于等于1.5MB的文件全部加密
  3. 使用ReadFile读取文件内容
  4. 应用自定义AES加密算法
  5. 使用WriteFile写入加密后内容
  6. 未加密文件被0覆盖后删除

7.3 自定义AES实现

  • 加密逻辑位于sub_4062A6函数
  • 自定义AES加密算法在sub_40646A实现
  • 不依赖Windows API,独立实现
  • 使用硬编码的AES密钥

7.4 RSA公钥使用

  • sub_XX1A76函数中解密用于加密文件AES256密钥的RSA公钥

8. 线程与进程控制

8.1 线程创建

  • 使用DuplicateTokenEx创建新访问令牌
  • 在新令牌的安全上下文中运行新线程

8.2 管道通信

  • 使用CreatePipe创建两个匿名管道
  • 设置HANDLE_FLAG_INHERIT使读取句柄可继承
  • 创建"cmd.exe"进程通过管道执行命令

8.3 驱动器枚举

  • 使用GetLogicalDrives获取可用磁盘驱动器的位掩码
  • 创建线程遍历网络共享和驱动器寻找加密目标

9. 事件同步

  • 使用CreateEventW创建两个未命名事件对象
  • 用于同步线程活动

10. 防御建议

  1. 备份策略:

    • 实施3-2-1备份规则(3份副本,2种介质,1份离线)
    • 保护备份不被勒索软件访问
  2. 系统加固:

    • 禁用不必要的服务
    • 限制用户权限
    • 启用UAC
  3. 安全监控:

    • 监控可疑的进程创建
    • 检测大量文件修改操作
    • 监控注册表修改
  4. 网络防护:

    • 限制SMB(445端口)访问
    • 实施网络分段
    • 监控异常网络连接
  5. 终端防护:

    • 部署EDR解决方案
    • 保持系统和软件更新
    • 禁用宏脚本执行
  6. 应急响应:

    • 准备事件响应计划
    • 定期测试恢复流程
    • 保留关键系统快照
Phobos勒索软件样本分析教学文档 1. 样本基本信息 文件大小 : 61KB MD5 : ca52ef8f80a99a01e97dc8cf7d3f5487 文件类型 : EXE可执行文件 病毒家族 : Phobos勒索软件 2. 持久化机制分析 2.1 注册表持久化 使用 RegOpenKeyExW 打开Run注册表项 在 %AppData%\Local 目录下创建自身副本 创建基于可执行文件名称命名的注册表项,指向新创建的可执行文件 2.2 互斥锁创建 创建两个互斥锁防止重复感染: Global\\<<BID>><Volume serial number>00000001 Global\\<<BID>><Volume serial number>00000000 3. 系统信息收集 3.1 系统环境检测 使用 GetTickCount() 获取系统启动时间 使用 GetLocaleInfoW 获取系统默认语言环境 使用 GetModuleFileNameW 获取当前进程路径 使用 GetVersion 提取系统主/次版本号 3.2 权限提升检测 调用 OpenProcessToken 打开当前进程访问令牌 使用 GetTokenInformation 验证令牌是否被提升 3.3 系统驱动器检测 展开环境变量 %systemdrive% 获取Windows目录所在驱动器 4. 破坏性操作 4.1 删除系统恢复功能 通过创建新线程执行以下命令: 4.2 禁用防火墙 执行命令: 5. 进程终止策略 5.1 特权提升 使用 LookupPrivilegeValueW 获取"SeDebugPrivilege"权限的LUID 调用 AdjustTokenPrivileges 启用该权限 5.2 终止关键进程 终止可能锁定文件的进程列表包括: 数据库相关: msftesql.exe , sqlagent.exe , sqlbrowser.exe , sqlservr.exe 等 邮件客户端: thebat.exe , thunderbird.exe Office组件: excel.exe , winword.exe , powerpnt.exe 等 其他: steam.exe , mysqld.exe , oracle.exe 等 5.3 进程枚举方法 使用 CreateToolhelp32Snapshot 创建进程快照 通过 Process32FirstW 和 Process32NextW 枚举进程 使用 TerminateProcess 终止目标进程 6. 网络共享加密 6.1 网络资源枚举 使用 WNetOpenEnumW 启动已连接资源枚举( RESOURCE_CONNECTED ) 通过 WNetEnumResourceW 继续枚举 6.2 IP地址获取 调用 GetIpAddrTable 获取IPv4地址映射表 使用 ntohl 将IP地址从网络序转换为主机序 6.3 网络连接测试 创建TCP套接字( AF_INET , SOCK_STREAM , IPPROTO_TCP ) 尝试通过445端口连接网络主机以加密可用共享 7. 文件加密机制 7.1 目标文件类型 加密扩展名列表包括: 7.2 加密流程 以读取模式打开目标文件( GENERIC_READ , FILE_SHARE_DELETE | FILE_SHARE_WRITE | FILE_SHARE_READ , OPEN_EXISTING ) 使用 GetFileSizeEx 获取文件大小 大于1.5MB的文件部分加密 小于等于1.5MB的文件全部加密 使用 ReadFile 读取文件内容 应用自定义AES加密算法 使用 WriteFile 写入加密后内容 未加密文件被0覆盖后删除 7.3 自定义AES实现 加密逻辑位于 sub_4062A6 函数 自定义AES加密算法在 sub_40646A 实现 不依赖Windows API,独立实现 使用硬编码的AES密钥 7.4 RSA公钥使用 在 sub_XX1A76 函数中解密用于加密文件AES256密钥的RSA公钥 8. 线程与进程控制 8.1 线程创建 使用 DuplicateTokenEx 创建新访问令牌 在新令牌的安全上下文中运行新线程 8.2 管道通信 使用 CreatePipe 创建两个匿名管道 设置 HANDLE_FLAG_INHERIT 使读取句柄可继承 创建"cmd.exe"进程通过管道执行命令 8.3 驱动器枚举 使用 GetLogicalDrives 获取可用磁盘驱动器的位掩码 创建线程遍历网络共享和驱动器寻找加密目标 9. 事件同步 使用 CreateEventW 创建两个未命名事件对象 用于同步线程活动 10. 防御建议 备份策略 : 实施3-2-1备份规则(3份副本,2种介质,1份离线) 保护备份不被勒索软件访问 系统加固 : 禁用不必要的服务 限制用户权限 启用UAC 安全监控 : 监控可疑的进程创建 检测大量文件修改操作 监控注册表修改 网络防护 : 限制SMB(445端口)访问 实施网络分段 监控异常网络连接 终端防护 : 部署EDR解决方案 保持系统和软件更新 禁用宏脚本执行 应急响应 : 准备事件响应计划 定期测试恢复流程 保留关键系统快照