样本分析: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>00000001Global\\<<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创建进程快照 - 通过
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 目标文件类型
加密扩展名列表包括:
.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 加密流程
- 以读取模式打开目标文件(
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解决方案
- 保持系统和软件更新
- 禁用宏脚本执行
-
应急响应:
- 准备事件响应计划
- 定期测试恢复流程
- 保留关键系统快照