Encryption 101系列:勒索软件ShiOne案例分析
字数 1372 2025-08-25 22:59:03

勒索软件ShiOne加密机制深度分析

0x00 简介

本文是对勒索软件ShiOne加密机制的详细技术分析,该样本采用C#编写,结合了RSA和AES加密算法。我们将逐层剖析其加密流程,帮助安全研究人员深入理解勒索软件的运作机制。

0x01 加密方式概述

ShiOne采用典型的混合加密策略:

  1. 密钥分发方式:离线预生成密钥并嵌入恶意软件(非对称密钥)
  2. 加密算法组合
    • RSA:用于加密AES密钥(非对称加密)
    • AES:用于实际文件加密(对称加密)
  3. 密钥管理
    • RSA公钥嵌入恶意软件
    • AES密钥动态生成并存储在加密文件中

0x02 加密主函数分析

样本MD5:408a97ac8fb82398187ffe6d4c5937d7

核心加密函数:crtp(string path),该函数为每个文件单独调用,包含完整的加密流程。

关键函数调用链:

  1. CreateSalt(32) - 生成AES密钥
  2. GenerateRandomSalt() - 生成加密salt
  3. Encryption(text) - 使用RSA加密AES密钥
  4. AES_() - 实际文件加密函数

0x03 随机数生成机制

ShiOne使用安全的随机数生成器:

RNGCryptoServiceProvider rNGCryptoServiceProvider = new RNGCryptoServiceProvider();
byte[] array = new byte[size];
rNGCryptoServiceProvider.GetBytes(array);
return Convert.ToBase64String(array);

安全考量

  • 使用RNGCryptoServiceProvider而非System.Random
  • 符合密码学安全随机数标准
  • 每个文件使用独立随机数作为AES密钥基础

0x04 加密流程详解

1. AES密钥生成

string text = Program.CreateSalt(32); // 生成32字节随机数作为AES密钥基础

2. RSA加密AES密钥

string s = Program.Encryption(text); // 使用RSA公钥加密AES密钥

RSA公钥硬编码在恶意软件中,加密后的AES密钥将附加到文件末尾。

3. 文件加密过程

采用AES-CBC模式加密文件:

for (i = 0; i < num; i += array3.Length) {
    int len = fileStream.Read(array2, 0, array2.Length);
    array3 = Program.AES_(array2, bytes, array, len); // 实际加密操作
    fileStream.Seek((long)i, SeekOrigin.Begin);
    fileStream.Write(array3, 0, array3.Length);
}

AES加密参数

  • array2:原始文件数据
  • bytes:CreateSalt生成的随机数(AES密钥基础)
  • array:GenerateRandomSalt生成的salt
  • len:待加密数据长度

4. 文件结构重组

加密完成后,文件按以下顺序写入:

  1. salt值(文件起始位置)
  2. RSA加密的AES密钥
  3. 实际加密数据(包含每个块的IV)

0x05 技术要点总结

  1. 混合加密架构

    • RSA保护AES密钥
    • AES加密实际文件数据
  2. 密钥管理特点

    • RSA密钥对预先生成
    • 仅公钥嵌入恶意软件
    • 私钥由攻击者持有
  3. 加密安全措施

    • 使用密码学安全随机数生成器
    • 每个文件独立AES密钥
    • CBC模式配合动态IV
  4. 文件结构特征

    • 加密文件包含salt、加密密钥和密文
    • 块加密结构保留IV信息

0x06 解密可能性分析

由于ShiOne采用强加密实现:

  • 没有已知的加密算法漏洞
  • RSA私钥不可推导
  • 暴力破解AES密钥不可行

唯一可行解密途径

  1. 获取攻击者持有的RSA私钥
  2. 使用私钥解密文件中的AES密钥
  3. 用AES密钥解密文件内容

0x07 防御建议

  1. 预防措施

    • 定期备份重要数据(3-2-1原则)
    • 禁用不必要的RDP访问
    • 保持系统和软件更新
  2. 检测方法

    • 监控异常的文件加密行为
    • 检测RNGCryptoServiceProvider的异常调用
    • 识别大量文件的修改模式
  3. 应急响应

    • 立即隔离感染主机
    • 保留加密样本用于分析
    • 不要支付赎金(不能保证解密)

本分析为安全研究人员提供了勒索软件加密机制的详细视角,有助于开发更有效的检测和防御方案。

勒索软件ShiOne加密机制深度分析 0x00 简介 本文是对勒索软件ShiOne加密机制的详细技术分析,该样本采用C#编写,结合了RSA和AES加密算法。我们将逐层剖析其加密流程,帮助安全研究人员深入理解勒索软件的运作机制。 0x01 加密方式概述 ShiOne采用典型的混合加密策略: 密钥分发方式 :离线预生成密钥并嵌入恶意软件(非对称密钥) 加密算法组合 : RSA:用于加密AES密钥(非对称加密) AES:用于实际文件加密(对称加密) 密钥管理 : RSA公钥嵌入恶意软件 AES密钥动态生成并存储在加密文件中 0x02 加密主函数分析 样本MD5: 408a97ac8fb82398187ffe6d4c5937d7 核心加密函数: crtp(string path) ,该函数为每个文件单独调用,包含完整的加密流程。 关键函数调用链: CreateSalt(32) - 生成AES密钥 GenerateRandomSalt() - 生成加密salt Encryption(text) - 使用RSA加密AES密钥 AES_() - 实际文件加密函数 0x03 随机数生成机制 ShiOne使用安全的随机数生成器: 安全考量 : 使用 RNGCryptoServiceProvider 而非 System.Random 符合密码学安全随机数标准 每个文件使用独立随机数作为AES密钥基础 0x04 加密流程详解 1. AES密钥生成 2. RSA加密AES密钥 RSA公钥硬编码在恶意软件中,加密后的AES密钥将附加到文件末尾。 3. 文件加密过程 采用AES-CBC模式加密文件: AES加密参数 : array2 :原始文件数据 bytes :CreateSalt生成的随机数(AES密钥基础) array :GenerateRandomSalt生成的salt len :待加密数据长度 4. 文件结构重组 加密完成后,文件按以下顺序写入: salt值(文件起始位置) RSA加密的AES密钥 实际加密数据(包含每个块的IV) 0x05 技术要点总结 混合加密架构 : RSA保护AES密钥 AES加密实际文件数据 密钥管理特点 : RSA密钥对预先生成 仅公钥嵌入恶意软件 私钥由攻击者持有 加密安全措施 : 使用密码学安全随机数生成器 每个文件独立AES密钥 CBC模式配合动态IV 文件结构特征 : 加密文件包含salt、加密密钥和密文 块加密结构保留IV信息 0x06 解密可能性分析 由于ShiOne采用强加密实现: 没有已知的加密算法漏洞 RSA私钥不可推导 暴力破解AES密钥不可行 唯一可行解密途径 : 获取攻击者持有的RSA私钥 使用私钥解密文件中的AES密钥 用AES密钥解密文件内容 0x07 防御建议 预防措施 : 定期备份重要数据(3-2-1原则) 禁用不必要的RDP访问 保持系统和软件更新 检测方法 : 监控异常的文件加密行为 检测RNGCryptoServiceProvider的异常调用 识别大量文件的修改模式 应急响应 : 立即隔离感染主机 保留加密样本用于分析 不要支付赎金(不能保证解密) 本分析为安全研究人员提供了勒索软件加密机制的详细视角,有助于开发更有效的检测和防御方案。