2017年最佳算法提名勒索软件(sega)分析
字数 1712 2025-08-25 22:58:56

Sega勒索软件深度分析与防御教学文档

一、概述

Sega勒索软件是2017年出现的一种新型加密勒索软件,采用了先进的加密算法和反检测技术,其独特的三方加密机制使其在当时极具威胁性。本教学文档将全面分析Sega勒索软件的技术特点、加密机制和防御方法。

二、技术特点

1. 核心加密机制

Sega勒索软件采用了独特的"三方角色"加密模型:

  • 入侵者(相当于女主):持有固定的公钥
  • 系统(相当于男主):生成临时密钥对
  • 文件(相当于小三):每个文件生成独立密钥对

2. 使用的加密算法

算法 用途
Curve25519 密钥协商
ChaCha20 文件加密
MurmurHash 函数名混淆
SHA1 字符串生成
Base64 数据编码
Salsa20 CC地址解密

3. 反分析技术

  • 跳转混淆:使用push XXX; CALL XX模式
  • 内存加载:动态加载关键代码
  • SMC(Self-Modifying Code):自修改代码
  • 多态字符串生成:基于机器特征生成唯一字符串

三、详细技术分析

1. 反混淆处理

跳转混淆处理

混淆函数特征十六进制:

51 52 8B 54 24 0C 8B 4C 24 08 81 C1 FF 00 00 00 29 D1 41 41 89 4C 24 08 5A 59 C2 04 00

反混淆IDA Python脚本关键部分:

def process_jmp(push_ea, to_ea):
    i = idautils.DecodeInstruction(push_ea)
    if i.get_canon_mnem() == 'push':
        jmp_start_ea = NextHead(push_ea)
        code_distance = to_ea - jmp_start_ea - 5
        x86_nop_region(push_ea, jmp_start_ea)
        code_distance = code_distance & 0xffffffff
        code_distance = '%08x' % code_distance
        distance_len = len(code_distance)
        ret_str = []
        temp_buf = code_distance[::]
        for i in range(distance_len/2):
            bytes = temp_buf[-2::]
            ret_str.append(bytes)
            temp_buf=temp_buf[:-2:]
        fill_value = 'E9%s' % ''.join(ret_str)
        buf = binascii.unhexlify(fill_value)
        idaapi.patch_many_bytes(jmp_start_ea, buf)

2. CC地址生成

CC地址存储在文件尾部,解密过程:

  1. 读取文件尾部的密钥与密文
  2. 使用ChaCha20算法解密

解密示例Python代码:

from Crypto.Cipher import ChaCha20
secrect = '\x2E\x4B\x59\xD7\xA3\x9B\xFC\xBC\x3E\xA1\xCD\x70\x60\xBF\xB9\xBB\x15\xF7\xEB\x9F\xBA\xE3\x3E\xE0\x4B\x34\x4E\xF1\x6B\x7E\x06\xDF'
cipter_code = '\x1D\xA3\xF3\x7D\xB2\x3D\x85\x66\x9D\x67\x2B\xDA\x6A\x9A\x51\x58\x64\x4A\x4F\x03\xC1\x1B\x7D\x11\xE8'
nonce = '\x00\x00\x00\x00\x00\x00\x00\x00'
cipher = ChaCha20.new(nonce=nonce ,key=secrect)
print cipher.decrypt(cipter_code)

3. 字符串生成算法

GenStrByID(unsigned int str_len, char str_id)算法流程:

  1. 获取注册表中的machine_id
  2. 将str_id和machine_id进行SHA1运算
  3. 对SHA1结果进行Base64编码
  4. 从Base64结果中截取指定长度字符
  5. 替换非法字符:
    • "+" → "a"
    • "/" → "b"

4. 文件遍历机制

  • 使用ZwQueryDirectoryFile而非常规的FindFirstFile/FindNextFile
  • 文件后缀名白名单检查
  • 文件夹白名单检查

四、加密机制详解

1. 加密过程

  1. 入侵者与系统协商密钥

    • 系统生成随机私钥(s_secret1)
    • 使用入侵者硬编码的公钥(i_public)和s_secret1计算出共享密钥1
    • 系统公钥(s_public1)保存在临时文件前0x20字节
  2. 系统与文件协商密钥

    • 使用共享密钥1作为系统私钥(s_secret2)
    • 生成系统公钥(s_public2)保存在临时文件后0x20字节
    • 与文件公钥(f_public)协商出共享密钥2
  3. 文件加密

    • 使用共享密钥2作为ChaCha20密钥加密文件
    • 文件公钥(f_public)保存在加密文件尾部
    • 重命名文件为.sega后缀

2. 解密限制

  • 只有入侵者能计算共享密钥1
  • 共享密钥1是计算共享密钥2的必要条件
  • 因此只有入侵者能解密文件

五、其他恶意行为

  1. IPGA算法

    • 动态生成0x2000个IP地址
    • 向这些IP发送感染用户信息
  2. 地理区域判断

    • 通过GetKeyboardLayoutList获取键盘布局信息
    • 判断用户所在地区
  3. 持久化与破坏

    • 自删除原始文件
    • 删除用户还原镜像
    • 添加启动项实现持久化

六、防御措施

  1. 预防措施

    • 使用安全软件防止勒索软件运行
    • 定期备份重要数据
    • 创建免疫文件:C:\Temp\lol.txt
  2. 检测指标

    • 文件后缀变为.sega
    • 出现异常临时文件(包含0x40字节密钥数据)
    • 异常网络连接到动态生成的IP地址
  3. 应急响应

    • 立即隔离感染主机
    • 检查并备份可能的临时文件(包含密钥数据)
    • 不要支付赎金,联系专业安全团队

七、总结

Sega勒索软件代表了当时勒索软件技术的先进水平,其特点包括:

  1. 创新的三方加密机制
  2. 强大的反分析技术
  3. 动态IP生成算法(IPGA)
  4. 精心设计的密钥管理体系

由于该勒索软件采用了Curve25519密钥协商和ChaCha20加密,且丢弃了必要的解密密钥,目前尚无公开的有效解密方法。防御该勒索软件的关键在于预防和早期检测。

Sega勒索软件深度分析与防御教学文档 一、概述 Sega勒索软件是2017年出现的一种新型加密勒索软件,采用了先进的加密算法和反检测技术,其独特的三方加密机制使其在当时极具威胁性。本教学文档将全面分析Sega勒索软件的技术特点、加密机制和防御方法。 二、技术特点 1. 核心加密机制 Sega勒索软件采用了独特的"三方角色"加密模型: 入侵者 (相当于女主):持有固定的公钥 系统 (相当于男主):生成临时密钥对 文件 (相当于小三):每个文件生成独立密钥对 2. 使用的加密算法 | 算法 | 用途 | |------|------| | Curve25519 | 密钥协商 | | ChaCha20 | 文件加密 | | MurmurHash | 函数名混淆 | | SHA1 | 字符串生成 | | Base64 | 数据编码 | | Salsa20 | CC地址解密 | 3. 反分析技术 跳转混淆 :使用 push XXX; CALL XX 模式 内存加载 :动态加载关键代码 SMC(Self-Modifying Code) :自修改代码 多态字符串生成 :基于机器特征生成唯一字符串 三、详细技术分析 1. 反混淆处理 跳转混淆处理 混淆函数特征十六进制: 反混淆IDA Python脚本关键部分: 2. CC地址生成 CC地址存储在文件尾部,解密过程: 读取文件尾部的密钥与密文 使用ChaCha20算法解密 解密示例Python代码: 3. 字符串生成算法 GenStrByID(unsigned int str_len, char str_id) 算法流程: 获取注册表中的machine_ id 将str_ id和machine_ id进行SHA1运算 对SHA1结果进行Base64编码 从Base64结果中截取指定长度字符 替换非法字符: "+" → "a" "/" → "b" 4. 文件遍历机制 使用 ZwQueryDirectoryFile 而非常规的 FindFirstFile/FindNextFile 文件后缀名白名单检查 文件夹白名单检查 四、加密机制详解 1. 加密过程 入侵者与系统协商密钥 : 系统生成随机私钥(s_ secret1) 使用入侵者硬编码的公钥(i_ public)和s_ secret1计算出共享密钥1 系统公钥(s_ public1)保存在临时文件前0x20字节 系统与文件协商密钥 : 使用共享密钥1作为系统私钥(s_ secret2) 生成系统公钥(s_ public2)保存在临时文件后0x20字节 与文件公钥(f_ public)协商出共享密钥2 文件加密 : 使用共享密钥2作为ChaCha20密钥加密文件 文件公钥(f_ public)保存在加密文件尾部 重命名文件为.sega后缀 2. 解密限制 只有入侵者能计算共享密钥1 共享密钥1是计算共享密钥2的必要条件 因此只有入侵者能解密文件 五、其他恶意行为 IPGA算法 : 动态生成0x2000个IP地址 向这些IP发送感染用户信息 地理区域判断 : 通过 GetKeyboardLayoutList 获取键盘布局信息 判断用户所在地区 持久化与破坏 : 自删除原始文件 删除用户还原镜像 添加启动项实现持久化 六、防御措施 预防措施 : 使用安全软件防止勒索软件运行 定期备份重要数据 创建免疫文件: C:\Temp\lol.txt 检测指标 : 文件后缀变为.sega 出现异常临时文件(包含0x40字节密钥数据) 异常网络连接到动态生成的IP地址 应急响应 : 立即隔离感染主机 检查并备份可能的临时文件(包含密钥数据) 不要支付赎金,联系专业安全团队 七、总结 Sega勒索软件代表了当时勒索软件技术的先进水平,其特点包括: 创新的三方加密机制 强大的反分析技术 动态IP生成算法(IPGA) 精心设计的密钥管理体系 由于该勒索软件采用了Curve25519密钥协商和ChaCha20加密,且丢弃了必要的解密密钥,目前尚无公开的有效解密方法。防御该勒索软件的关键在于预防和早期检测。