浅谈RASP技术攻防之基础篇
字数 1816 2025-08-26 22:11:28

RASP技术攻防基础教学文档

一、RASP技术概述

1.1 定义

RASP(Runtime Application Self-Protection)是Gartner在2012年提出的应用安全保护技术,它将保护程序注入到应用程序中,使应用程序具备实时检测和阻断安全攻击的能力。

1.2 核心特性

  • 与应用程序融为一体
  • 实时检测和阻断攻击
  • 无需人工干预
  • 适用于Web和非Web应用程序
  • 不影响应用程序设计

二、RASP与WAF对比

2.1 主要区别

特性 RASP WAF
检测位置 应用程序内部 网络边界
检测依据 请求上下文 流量规则
误报率
绕过难度 相对较低

2.2 示例对比

对于SQL注入攻击:

  • WAF:基于规则匹配请求参数中的危险字符
  • RASP:在SQL语句预编译阶段检测实际执行的SQL语句

三、RASP技术实现

3.1 各语言实现方式

3.1.1 Java实现

  • 技术基础:Java Agent + ASM字节码操作框架
  • 关键机制:
    • Agent_OnLoad
    • Agent_OnAttach
    • Agent_OnUnload
  • 核心API:Instrumentation接口

3.1.2 PHP实现

  • 技术基础:PHP扩展开发
  • 开源参考:
    • xmark
    • taint

3.1.3 .NET实现

  • 技术基础:IHostingStartup(承载启动)

3.2 Java RASP实现示例

3.2.1 基本流程

  1. 编写premain函数
  2. 实现ClassFileTransformer接口
  3. 使用ASM修改字节码

3.2.2 关键代码示例

// 自定义Transformer实现
public class MyTransformer implements ClassFileTransformer {
    @Override
    public byte[] transform(ClassLoader loader, String className, 
                          Class<?> classBeingRedefined, 
                          ProtectionDomain protectionDomain, 
                          byte[] classfileBuffer) {
        // 使用ASM修改字节码
        ClassReader cr = new ClassReader(classfileBuffer);
        ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS);
        ClassVisitor cv = new MyClassVisitor(cw);
        cr.accept(cv, ClassReader.EXPAND_FRAMES);
        return cw.toByteArray();
    }
}

// 自定义ClassVisitor
class MyClassVisitor extends ClassVisitor {
    public MyClassVisitor(ClassVisitor cv) {
        super(Opcodes.ASM5, cv);
    }
    
    @Override
    public MethodVisitor visitMethod(int access, String name, String desc, 
                                   String signature, String[] exceptions) {
        MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions);
        if (name.equals("目标方法名")) {
            return new MyMethodVisitor(mv);
        }
        return mv;
    }
}

// 自定义MethodVisitor
class MyMethodVisitor extends MethodVisitor {
    public MyMethodVisitor(MethodVisitor mv) {
        super(Opcodes.ASM5, mv);
    }
    
    @Override
    public void visitCode() {
        // 插入检测代码
        mv.visitMethodInsn(Opcodes.INVOKESTATIC, "com/example/Detector", 
                         "check", "()V", false);
        super.visitCode();
    }
}

四、国内外RASP产品

4.1 国外产品

公司/产品 官网
Micro Focus https://www.microfocus.com
Prevoty https://www.prevoty.com/
Waratek https://www.waratek.com/
OWASP AppSensor http://appsensor.org/
Contrast Security https://www.contrastsecurity.com/

4.2 国内产品

产品/公司 官网 特点
灵蜥 http://www.anbai.com 防御完善,版本2.0
OpenRASP https://rasp.baidu.com 百度开源,社区活跃
云锁 https://www.yunsuo.com.cn 主打微隔离技术
安数云 http://www.datacloudsec.com 实时防护系统

五、RASP应用场景

5.1 安全防护

  • 0day防御
  • 攻击拦截
  • 参数净化

5.2 辅助功能

  • 代码审计
  • 攻击溯源
  • 日志监控
  • 会话管理

5.3 DevOps整合

  • 执行路径追踪
  • 上下文查询
  • 属性详细信息

六、RASP技术缺陷

  1. 兼容性问题:不同语言版本可能导致产品无法通用
  2. hook点遗漏:关键拦截点不熟悉会导致防御绕过
  3. 特定攻击防护:对CSRF、SSRF等仍需结合其他技术
  4. 性能影响:字节码修改可能影响应用性能

七、技术参考

7.1 关键文章

7.2 开源参考

八、总结

RASP技术通过将安全防护能力注入到应用程序运行时环境中,实现了从内部保护应用程序的目标。相比传统WAF,RASP具有更低的误报率和更高的防御精度。虽然目前仍处于发展阶段,但RASP技术已经展现出在应用安全领域的巨大潜力,特别是在0day防御、攻击溯源等方面具有独特优势。

实现RASP需要深入理解目标语言的底层机制,如Java的Instrumentation API、ASM字节码操作,PHP的扩展开发等。随着技术的不断成熟,RASP有望成为应用安全防护的标准组件之一。

RASP技术攻防基础教学文档 一、RASP技术概述 1.1 定义 RASP(Runtime Application Self-Protection)是Gartner在2012年提出的应用安全保护技术,它将保护程序注入到应用程序中,使应用程序具备实时检测和阻断安全攻击的能力。 1.2 核心特性 与应用程序融为一体 实时检测和阻断攻击 无需人工干预 适用于Web和非Web应用程序 不影响应用程序设计 二、RASP与WAF对比 2.1 主要区别 | 特性 | RASP | WAF | |------|------|-----| | 检测位置 | 应用程序内部 | 网络边界 | | 检测依据 | 请求上下文 | 流量规则 | | 误报率 | 低 | 高 | | 绕过难度 | 高 | 相对较低 | 2.2 示例对比 对于SQL注入攻击: WAF:基于规则匹配请求参数中的危险字符 RASP:在SQL语句预编译阶段检测实际执行的SQL语句 三、RASP技术实现 3.1 各语言实现方式 3.1.1 Java实现 技术基础:Java Agent + ASM字节码操作框架 关键机制: Agent_ OnLoad Agent_ OnAttach Agent_ OnUnload 核心API:Instrumentation接口 3.1.2 PHP实现 技术基础:PHP扩展开发 开源参考: xmark taint 3.1.3 .NET实现 技术基础:IHostingStartup(承载启动) 3.2 Java RASP实现示例 3.2.1 基本流程 编写premain函数 实现ClassFileTransformer接口 使用ASM修改字节码 3.2.2 关键代码示例 四、国内外RASP产品 4.1 国外产品 | 公司/产品 | 官网 | |----------|------| | Micro Focus | https://www.microfocus.com | | Prevoty | https://www.prevoty.com/ | | Waratek | https://www.waratek.com/ | | OWASP AppSensor | http://appsensor.org/ | | Contrast Security | https://www.contrastsecurity.com/ | 4.2 国内产品 | 产品/公司 | 官网 | 特点 | |----------|------|------| | 灵蜥 | http://www.anbai.com | 防御完善,版本2.0 | | OpenRASP | https://rasp.baidu.com | 百度开源,社区活跃 | | 云锁 | https://www.yunsuo.com.cn | 主打微隔离技术 | | 安数云 | http://www.datacloudsec.com | 实时防护系统 | 五、RASP应用场景 5.1 安全防护 0day防御 攻击拦截 参数净化 5.2 辅助功能 代码审计 攻击溯源 日志监控 会话管理 5.3 DevOps整合 执行路径追踪 上下文查询 属性详细信息 六、RASP技术缺陷 兼容性问题 :不同语言版本可能导致产品无法通用 hook点遗漏 :关键拦截点不熟悉会导致防御绕过 特定攻击防护 :对CSRF、SSRF等仍需结合其他技术 性能影响 :字节码修改可能影响应用性能 七、技术参考 7.1 关键文章 JVMTM Tool Interface javaagent加载机制分析 ASM官方操作手册 7.2 开源参考 OpenRASP javaweb-codereview xmark taint 八、总结 RASP技术通过将安全防护能力注入到应用程序运行时环境中,实现了从内部保护应用程序的目标。相比传统WAF,RASP具有更低的误报率和更高的防御精度。虽然目前仍处于发展阶段,但RASP技术已经展现出在应用安全领域的巨大潜力,特别是在0day防御、攻击溯源等方面具有独特优势。 实现RASP需要深入理解目标语言的底层机制,如Java的Instrumentation API、ASM字节码操作,PHP的扩展开发等。随着技术的不断成熟,RASP有望成为应用安全防护的标准组件之一。