用 Yara 对红队工具 "打标"(三)——免杀类规则提取(二)
字数 1218 2025-08-06 18:07:56

Yara规则提取红队免杀工具特征(三) - 补充篇

1. 前言

本文是"用Yara对红队工具打标"系列的第四篇,作为第三篇"免杀类规则提取"的补充内容,重点介绍如何从免杀类红队工具中提取有效的Yara规则特征。

2. 免杀工具特征提取方法论

2.1 静态特征分析

  1. 字符串特征提取

    • 查找工具特有的字符串模式
    • 包括但不限于:函数名、变量名、错误信息、版权信息等
    • 注意处理Unicode字符串和编码变体
  2. 二进制模式识别

    • 识别独特的字节序列
    • 查找工具特有的导入函数表
    • 分析PE头特征
  3. 代码段特征

    • 识别独特的代码片段
    • 查找特定算法的实现方式
    • 分析控制流模式

2.2 动态行为特征

  1. API调用序列

    • 记录工具特有的API调用顺序
    • 关注敏感API的组合使用
  2. 注册表操作

    • 分析工具对注册表的修改模式
    • 记录特定的注册表键值
  3. 文件系统操作

    • 识别工具创建/修改的文件路径
    • 分析文件操作序列

3. Yara规则编写技巧

3.1 基础规则结构

rule RedTeam_Tool_Evasion_Example {
    meta:
        description = "检测红队免杀工具特征"
        author = "YourName"
        date = "2022-11-24"
        reference = "内部研究"
    
    strings:
        $str1 = "EvasionTool" nocase
        $str2 = { 4D 5A 90 00 03 00 00 00 }  // 特定PE头
        $str3 = "GetProcAddress" wide
        $code1 = { 55 8B EC 83 EC ?? 56 57 8B 7D 08 }
    
    condition:
        uint16(0) == 0x5A4D and 
        (2 of ($str*) or $code1)
}

3.2 高级特征提取技术

  1. 模糊匹配技术

    • 使用通配符(?)匹配可变字节
    • 结合跳转指令处理代码变形
  2. 熵值分析

    • 检测高熵代码段(常见于加密/混淆)
    • 实现示例:
      rule High_Entropy_Section {
          condition:
              for any i in (0..pe.number_of_sections-1) : (
                  pe.sections[i].entropy > 7.0
              )
      }
      
  3. 导入表特征

    • 检测特定DLL的组合导入
    • 示例:
      rule Suspicious_Imports {
          condition:
              pe.imports("advapi32.dll") and
              pe.imports("kernel32.dll") and
              pe.imports("ws2_32.dll") and
              not pe.imports("user32.dll")
      }
      

4. 免杀工具特有特征提取

4.1 常见免杀技术特征

  1. 进程注入特征

    • 查找CreateRemoteThread等API引用
    • 检测常见的注入技术代码模式
  2. API混淆特征

    • 识别动态解析API的代码模式
    • 检测GetProcAddress的非常规使用
  3. 反调试技术

    • 检测IsDebuggerPresent等反调试API
    • 识别时间差检测等反调试技术

4.2 规则优化技巧

  1. 减少误报

    • 结合多个特征点进行判断
    • 使用排除条件过滤合法软件
  2. 提高检测率

    • 提取核心算法特征而非表面特征
    • 关注工具特有的实现方式而非通用技术
  3. 性能考虑

    • 将高概率特征放在规则前面
    • 避免过于宽泛的匹配模式

5. 实战案例

5.1 检测某免杀工具规则示例

rule RedTeam_Evasion_Tool_X {
    meta:
        description = "检测X免杀工具变种"
        author = "YourName"
        date = "2022-11-24"
        reference = "内部样本分析"
    
    strings:
        $str1 = "XEvasionTool" nocase wide
        $str2 = "DynamicAPIResolver" ascii
        $code1 = { 8B ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 85 C0 74 ?? 68 ?? ?? ?? ?? E8 }
        $code2 = { 60 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? 57 83 CD FF EB }
    
    condition:
        uint16(0) == 0x5A4D and
        filesize < 500KB and
        (pe.imports("kernel32.dll") and pe.imports("ntdll.dll")) and
        (2 of ($str*) or all of ($code*))
}

5.2 规则解释

  1. meta部分:提供规则的描述信息
  2. strings部分
    • $str1: 工具名称的Unicode和ASCII变体
    • $str2: 工具特有的功能模块名称
    • $code1/code2: 工具核心功能的代码特征
  3. condition部分
    • 检查PE文件头
    • 限制文件大小范围
    • 检查必要的DLL导入
    • 组合多个特征点进行判断

6. 总结与最佳实践

  1. 特征提取原则

    • 关注工具特有的实现而非通用技术
    • 提取核心算法特征而非表面字符串
    • 组合多个特征点提高准确性
  2. 规则维护建议

    • 定期更新规则以适应工具变种
    • 建立规则验证流程减少误报
    • 分类管理不同工具家族的规则
  3. 性能优化

    • 将高概率特征放在规则前面
    • 避免过于复杂的正则表达式
    • 合理使用条件组合

通过本文介绍的方法,可以有效地从免杀类红队工具中提取特征并编写高质量的Yara规则,为威胁检测提供有力支持。

Yara规则提取红队免杀工具特征(三) - 补充篇 1. 前言 本文是"用Yara对红队工具打标"系列的第四篇,作为第三篇"免杀类规则提取"的补充内容,重点介绍如何从免杀类红队工具中提取有效的Yara规则特征。 2. 免杀工具特征提取方法论 2.1 静态特征分析 字符串特征提取 : 查找工具特有的字符串模式 包括但不限于:函数名、变量名、错误信息、版权信息等 注意处理Unicode字符串和编码变体 二进制模式识别 : 识别独特的字节序列 查找工具特有的导入函数表 分析PE头特征 代码段特征 : 识别独特的代码片段 查找特定算法的实现方式 分析控制流模式 2.2 动态行为特征 API调用序列 : 记录工具特有的API调用顺序 关注敏感API的组合使用 注册表操作 : 分析工具对注册表的修改模式 记录特定的注册表键值 文件系统操作 : 识别工具创建/修改的文件路径 分析文件操作序列 3. Yara规则编写技巧 3.1 基础规则结构 3.2 高级特征提取技术 模糊匹配技术 : 使用通配符(?)匹配可变字节 结合跳转指令处理代码变形 熵值分析 : 检测高熵代码段(常见于加密/混淆) 实现示例: 导入表特征 : 检测特定DLL的组合导入 示例: 4. 免杀工具特有特征提取 4.1 常见免杀技术特征 进程注入特征 : 查找CreateRemoteThread等API引用 检测常见的注入技术代码模式 API混淆特征 : 识别动态解析API的代码模式 检测GetProcAddress的非常规使用 反调试技术 : 检测IsDebuggerPresent等反调试API 识别时间差检测等反调试技术 4.2 规则优化技巧 减少误报 : 结合多个特征点进行判断 使用排除条件过滤合法软件 提高检测率 : 提取核心算法特征而非表面特征 关注工具特有的实现方式而非通用技术 性能考虑 : 将高概率特征放在规则前面 避免过于宽泛的匹配模式 5. 实战案例 5.1 检测某免杀工具规则示例 5.2 规则解释 meta部分 :提供规则的描述信息 strings部分 : $str1: 工具名称的Unicode和ASCII变体 $str2: 工具特有的功能模块名称 $code1/code2: 工具核心功能的代码特征 condition部分 : 检查PE文件头 限制文件大小范围 检查必要的DLL导入 组合多个特征点进行判断 6. 总结与最佳实践 特征提取原则 : 关注工具特有的实现而非通用技术 提取核心算法特征而非表面字符串 组合多个特征点提高准确性 规则维护建议 : 定期更新规则以适应工具变种 建立规则验证流程减少误报 分类管理不同工具家族的规则 性能优化 : 将高概率特征放在规则前面 避免过于复杂的正则表达式 合理使用条件组合 通过本文介绍的方法,可以有效地从免杀类红队工具中提取特征并编写高质量的Yara规则,为威胁检测提供有力支持。