记一次勒索软件样本分析
字数 2898 2025-08-24 07:48:10

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

1. 样本概况

  • 样本类型: .NET编写的勒索软件
  • 保护方式: 使用.NET Reactor进行打包混淆
  • 家族名称: CryptNet勒索软件
  • 攻击特点: 数据泄露与文件加密相结合的双重勒索攻击
  • IOC:

2. 初始分析准备

2.1 解混淆工具

使用**.NET Reactor Slayer**对样本进行解混淆处理,以便后续分析。

2.2 分析工具

推荐使用dnSpy进行静态分析,配合动态调试工具。

3. 主要功能分析

3.1 单一实例控制

  • 创建互斥锁,名称为当前机器名称
  • 确保计算机中只有一个实例运行
  • 降低被检测的风险
  • 实现方式:通过互斥锁检查,布尔值flag控制

3.2 勒索信息解密

  • 使用smethod_15函数对处理过的字符串进行解码和替换
  • 解密后内容包含:
    • 勒索软件标题:"CRYPTNET RANSOMWARE"
    • 赎金说明
    • .onion网站链接
    • 受害者唯一ID

3.3 文件加密机制

3.3.1 加密目标选择

  • 获取系统中所有驱动器信息(固定磁盘、移动磁盘、CD-ROM等)
  • 对不同驱动器采用不同处理方式:
    • 非系统盘:通过Task.Factory.StartNew异步启动加密任务
    • 系统盘
      • 定义排除目录数组array
      • 获取系统盘根目录下所有子目录
      • 跳过排除目录中的项目
      • 对其余目录异步启动加密任务

3.3.2 文件加密实现

加密算法特点

  1. 使用生成的256位密钥和IV,通过AES CBC模式加密文件
  2. 使用硬编码RSA密钥对生成的AES密钥进行加密
  3. 将加密后的AES密钥附加到加密文件中

硬编码RSA公钥

<RSAKeyValue>
  <Modulus>8TO8tQQRyFqQ0VShtSpLkDqtDVsrxS8SfdOsqRAj8mWF7sVoGzyZMcv501DF6iZUdKYsFDlaSMnuckG9+MJmD2ldZwU/0H6Xztkta1BkJWSO2qHg2JAGDp9ZsFGP1wDR9oRb1w7wtBe7Db3wf7q848+qKPWiTP/2R/jlR4evW73M65Jdo9uOzQnbmvw+blsloXeszuYlW2nCcwQ7WarzAK29UmM9ZHS0/lqzU0KHNU+DvyfGwmMJgtb2HN6GFGXq9Z0n3dNBCQVzdUl2G/7fLAMoFbJeExn5USZdFHr2ygheTilo/shmfq7tcPCZM8C4zqBtb0Nbct0f/M48+H920Q==</Modulus>
  <Exponent>AQAB</Exponent>
</RSAKeyValue>

目标文件扩展名
勒索软件会加密以下扩展名的文件(部分列举):

.myd, .ndf, .qry, .sdb, .sdf, .tmd, .tgz, .lzo, .txt, .jar, .dat, 
.contact, .settings, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .odt, 
.jpg, .mka, .mhtml, .oqy, .png, .csv, .py, .sql, .indd, .cs, .mp3, 
.mp4, .dwg, .zip, .rar, .mov, .rtf, .bmp, .mkv, .avi, .apk, .lnk, 
.dib, .dic, .dif, .mdb, .php, .asp, .aspx, .html, .htm, .xml, .psd, 
.pdf, .xla, .cub, .dae, .divx, .iso, .7zip, .pdb, .ico, .pas, .db, 
.wmv, .swf, .cer, .bak, .backup, .accdb, .bay, .p7c, .exif, .vss, 
.raw, .m4a, .wma, .ace, .arj, .bz2, .cab, .gzip, .lzh, .tar, .jpeg, 
.xz, .mpeg, .torrent, .mpg, .core, .flv, .sie, .sum, .ibank, .wallet, 
.css, .js, .rb, .crt, .xlsm, .xlsb, .7z, .cpp, .java, .jpe, .ini, 
.blob, .wps, .docm, .wav, .3gp, .gif, .log, .gz, .config, .vb, .m1v, 
.sln, .pst, .obj, .xlam, .djvu, .inc, .cvs, .dbf, .tbi, .wpd, .dot, 
.dotx, .webm, .m4v, .amv, .m4p, .svg, .ods, .bk, .vdi, .vmdk, .onepkg, 
.accde, .jsp, .json, .xltx, .vsdx, .uxdc, .udl, .3ds, .3fr, .3g2, 
.accda, .accdc, .accdw, .adp, .ai, .ai3, .ai4, .ai5, .ai6, .ai7, .ai8, 
.arw, .ascx, .asm, .asmx, .avs, .bin, .cfm, .dbx, .dcm, .dcr, .pict, 
.rgbe, .dwt, .f4v, .exr, .kwm, .max, .mda, .mde, .mdf, .mdw, .mht, 
.mpv, .msg, .myi, .nef, .odc, .geo, .swift, .odm, .odp, .oft, .orf, 
.pfx, .p12, .pl, .pls, .safe, .tab, .vbs, .xlk, .xlm, .xlt, .xltm, 
.svgz, .slk, .tar.gz, .dmg, .ps, .psb, .tif, .rss, .key, .vob, .epsp, 
.dc3, .iff, .opt, .onetoc2, .nrw, .pptm, .potx, .potm, .pot, .xlw, 
.xps, .xsd, .xsf, .xsl, .kmz, .accdr, .stm, .accdt, .ppam, .pps, .ppsm, 
.1cd, .p7b, .wdb, .sqlite, .sqlite3, .db-shm, .db-wal, .dacpac, .zipx, 
.lzma, .z, .tar.xz, .pam, .r3d, .ova, .1c, .dt, .c, .vmx, .xhtml, .ckp, 
.db3, .dbc, .dbs, .dbt, .dbv, .frm, .mwb, .mrg, .txz, .mrg, .vbox, .wmf, 
.wim, .xtp2, .xsn, .xslt

加密实现细节

  1. 文件处理流程

    • 通过Directory.GetFiles获取指定目录下所有文件
    • 遍历文件,通过Path.GetFileName获取文件名并与目标扩展名列表比对
    • 修改文件属性:如果是只读文件,通过fileInfo.Attributes = FileAttributes.Normal移除只读属性
  2. 加密方式选择

    • 文件大小小于524288字节:调用Class0.smethod_6进行完整加密
    • 文件大小大于524288字节:调用Class0.smethod_4进行分段加密
    • 递归处理子目录中的文件
  3. 小文件加密(smethod_6)

    • 使用File.ReadAllBytes读取所有字节到数组
    • 生成随机加密密钥(text)和初始向量IV(text2)
    • 使用fileStream.SetLength(0L)清空文件内容
    • 使用AesCryptoServiceProvider创建AES加密对象(CBC模式)
    • 将加密内容写入原文件,末尾附加标识符
  4. 大文件分段加密(smethod_4)

    • 通过fileStream.Position设置文件指针位置
    • 从指定位置读取指定长度的数据
    • 调用Class0.smethod_5对数据进行加密
    • 将加密后的数据写回原位置
    • 循环处理,直到加密整个文件

3.4 桌面背景修改

  • 通过smethod_12函数实现
  • 获取屏幕分辨率
  • 使用Bitmap生成图像
  • 将图像保存为JPEG格式
  • 调用Windows API SystemParametersInfo设置桌面背景
    • 参数20U表示SPI_SETDESKWALLPAPER
    • 参数3U表示更新INI文件

3.5 备份功能禁用

3.5.1 服务停止

  • 首先检查当前用户是否为管理员
  • 定义一组服务名称数组,包含备份和虚拟化相关服务:
    • veeamVeeamDeploymentSvc:Veeam备份软件相关服务
    • BackupExecVSSProvider:Veritas Backup Exec的VSS提供程序
    • vss:Windows卷影复制服务(Volume Shadow Copy Service)

3.5.2 命令执行

通过smethod_10执行以下命令:

  1. 删除卷影复制

    cmd.exe "/C vssadmin delete shadows /all /quiet & wmic shadowcopy delete"
    
  2. 禁用系统恢复功能

    cmd.exe "bcdedit /set {default} bootstatuspolicy ignoreallfailures & bcdedit /set {default} recoveryenabled no"
    
  3. 删除备份目录

    cmd.exe "wbadmin delete catalog -quiet"
    

3.6 正常服务禁用

  • 通过smethod_13函数实现
  • 定义一组进程名称数组
  • 使用Process.GetProcessesByName查找具有给定名称的所有进程
  • 尝试使用process.CloseMainWindows关闭这些进程

4. 整体执行流程

  1. 创建单一实例
  2. 解密并显示勒索信息
  3. 遍历驱动器,对不同盘符采用不同加密策略
    • 非系统盘:直接异步加密
    • 系统盘:排除关键目录后异步加密
  4. 更改桌面背景为勒索信息
  5. 检查管理员权限,若具备则:
    • 停止备份相关服务
    • 删除卷影副本
    • 禁用系统恢复功能
    • 删除备份目录
  6. 终止正常服务进程

5. 分析注意事项

  1. 环境隔离

    • 必须在虚拟环境中进行分析
    • 确保物理机与虚拟机完全隔离
  2. 快照管理

    • 分析前创建完整快照
    • 该勒索软件可能导致虚拟机无法正常恢复
    • 可能影响物理机(如报告中所述)
  3. 防护措施

    • 禁用共享文件夹
    • 禁用剪贴板共享
    • 确保网络隔离
  4. 调试技巧

    • 重点监控文件系统操作
    • 关注加密密钥生成过程
    • 跟踪网络通信行为

6. 防御建议

  1. 预防措施

    • 定期备份重要数据,并离线存储
    • 限制用户权限,避免使用管理员账户日常操作
    • 禁用不必要的服务(如远程桌面、文件共享等)
  2. 检测措施

    • 监控异常文件加密行为
    • 关注大量文件属性修改操作
    • 检测vssadmin等备份工具的非正常使用
  3. 响应措施

    • 发现感染立即隔离系统
    • 不要支付赎金
    • 从干净备份恢复系统
  4. 技术防护

    • 部署行为检测型杀毒软件
    • 启用文件扩展名过滤
    • 限制PowerShell和CMD的使用权限

7. 解密可能性分析

由于该勒索软件使用:

  1. 随机生成的AES密钥(每次加密不同)
  2. 硬编码的RSA公钥加密AES密钥
  3. 私钥由攻击者持有

在没有私钥的情况下,目前没有公开的有效解密方法。可能的恢复途径:

  1. 从内存转储中提取AES密钥(如果系统未重启)
  2. 查找未加密的临时文件或备份
  3. 等待安全厂商发布解密工具(如果密钥被泄露或算法存在漏洞)

8. 扩展分析方向

  1. 网络通信分析

    • 跟踪.onion网站的连接行为
    • 分析可能的C2通信机制
  2. 传播方式研究

    • 初始感染途径
    • 可能的漏洞利用
  3. 同源分析

    • 与其他已知勒索软件的代码相似性
    • 可能的发展演变路径
  4. 防御绕过技术

    • 反调试、反沙箱技术
    • 持久化机制
CryptNet勒索软件样本分析教学文档 1. 样本概况 样本类型 : .NET编写的勒索软件 保护方式 : 使用.NET Reactor进行打包混淆 家族名称 : CryptNet勒索软件 攻击特点 : 数据泄露与文件加密相结合的双重勒索攻击 IOC : MD5: 733a808bc1be9d56026fd39b6e587ce4 SHA1: 323c2d8db7a1104a6631f420b3dfa98f693058a0 SHA256: 2e37320ed43e99835caa1b851e963ebbf153f16cbe395f259bd2200d14c7b775 ANY.RUN沙箱链接: https://app.any.run/tasks/95d0f6d2-f8c1-4cff-ab4c-e804df757dc1/ 2. 初始分析准备 2.1 解混淆工具 使用** .NET Reactor Slayer** 对样本进行解混淆处理,以便后续分析。 2.2 分析工具 推荐使用 dnSpy 进行静态分析,配合动态调试工具。 3. 主要功能分析 3.1 单一实例控制 创建互斥锁,名称为当前机器名称 确保计算机中只有一个实例运行 降低被检测的风险 实现方式:通过互斥锁检查,布尔值flag控制 3.2 勒索信息解密 使用 smethod_15 函数对处理过的字符串进行解码和替换 解密后内容包含: 勒索软件标题:"CRYPTNET RANSOMWARE" 赎金说明 .onion网站链接 受害者唯一ID 3.3 文件加密机制 3.3.1 加密目标选择 获取系统中所有驱动器信息(固定磁盘、移动磁盘、CD-ROM等) 对不同驱动器采用不同处理方式: 非系统盘 :通过 Task.Factory.StartNew 异步启动加密任务 系统盘 : 定义排除目录数组 array 获取系统盘根目录下所有子目录 跳过排除目录中的项目 对其余目录异步启动加密任务 3.3.2 文件加密实现 加密算法特点 : 使用生成的256位密钥和IV,通过AES CBC模式加密文件 使用硬编码RSA密钥对生成的AES密钥进行加密 将加密后的AES密钥附加到加密文件中 硬编码RSA公钥 : 目标文件扩展名 : 勒索软件会加密以下扩展名的文件(部分列举): 加密实现细节 : 文件处理流程 : 通过 Directory.GetFiles 获取指定目录下所有文件 遍历文件,通过 Path.GetFileName 获取文件名并与目标扩展名列表比对 修改文件属性:如果是只读文件,通过 fileInfo.Attributes = FileAttributes.Normal 移除只读属性 加密方式选择 : 文件大小小于524288字节:调用 Class0.smethod_6 进行完整加密 文件大小大于524288字节:调用 Class0.smethod_4 进行分段加密 递归处理子目录中的文件 小文件加密( smethod_6 ) : 使用 File.ReadAllBytes 读取所有字节到数组 生成随机加密密钥(text)和初始向量IV(text2) 使用 fileStream.SetLength(0L) 清空文件内容 使用 AesCryptoServiceProvider 创建AES加密对象(CBC模式) 将加密内容写入原文件,末尾附加标识符 大文件分段加密( smethod_4 ) : 通过 fileStream.Position 设置文件指针位置 从指定位置读取指定长度的数据 调用 Class0.smethod_5 对数据进行加密 将加密后的数据写回原位置 循环处理,直到加密整个文件 3.4 桌面背景修改 通过 smethod_12 函数实现 获取屏幕分辨率 使用 Bitmap 生成图像 将图像保存为JPEG格式 调用Windows API SystemParametersInfo 设置桌面背景 参数 20U 表示 SPI_SETDESKWALLPAPER 参数 3U 表示更新INI文件 3.5 备份功能禁用 3.5.1 服务停止 首先检查当前用户是否为管理员 定义一组服务名称数组,包含备份和虚拟化相关服务: veeam 和 VeeamDeploymentSvc :Veeam备份软件相关服务 BackupExecVSSProvider :Veritas Backup Exec的VSS提供程序 vss :Windows卷影复制服务(Volume Shadow Copy Service) 3.5.2 命令执行 通过 smethod_10 执行以下命令: 删除卷影复制 : 禁用系统恢复功能 : 删除备份目录 : 3.6 正常服务禁用 通过 smethod_13 函数实现 定义一组进程名称数组 使用 Process.GetProcessesByName 查找具有给定名称的所有进程 尝试使用 process.CloseMainWindows 关闭这些进程 4. 整体执行流程 创建单一实例 解密并显示勒索信息 遍历驱动器,对不同盘符采用不同加密策略 非系统盘:直接异步加密 系统盘:排除关键目录后异步加密 更改桌面背景为勒索信息 检查管理员权限,若具备则: 停止备份相关服务 删除卷影副本 禁用系统恢复功能 删除备份目录 终止正常服务进程 5. 分析注意事项 环境隔离 : 必须在虚拟环境中进行分析 确保物理机与虚拟机完全隔离 快照管理 : 分析前创建完整快照 该勒索软件可能导致虚拟机无法正常恢复 可能影响物理机(如报告中所述) 防护措施 : 禁用共享文件夹 禁用剪贴板共享 确保网络隔离 调试技巧 : 重点监控文件系统操作 关注加密密钥生成过程 跟踪网络通信行为 6. 防御建议 预防措施 : 定期备份重要数据,并离线存储 限制用户权限,避免使用管理员账户日常操作 禁用不必要的服务(如远程桌面、文件共享等) 检测措施 : 监控异常文件加密行为 关注大量文件属性修改操作 检测vssadmin等备份工具的非正常使用 响应措施 : 发现感染立即隔离系统 不要支付赎金 从干净备份恢复系统 技术防护 : 部署行为检测型杀毒软件 启用文件扩展名过滤 限制PowerShell和CMD的使用权限 7. 解密可能性分析 由于该勒索软件使用: 随机生成的AES密钥(每次加密不同) 硬编码的RSA公钥加密AES密钥 私钥由攻击者持有 在没有私钥的情况下,目前没有公开的有效解密方法。可能的恢复途径: 从内存转储中提取AES密钥(如果系统未重启) 查找未加密的临时文件或备份 等待安全厂商发布解密工具(如果密钥被泄露或算法存在漏洞) 8. 扩展分析方向 网络通信分析 : 跟踪.onion网站的连接行为 分析可能的C2通信机制 传播方式研究 : 初始感染途径 可能的漏洞利用 同源分析 : 与其他已知勒索软件的代码相似性 可能的发展演变路径 防御绕过技术 : 反调试、反沙箱技术 持久化机制