浅谈RASP技术攻防之基础篇
字数 1633 2025-08-18 11:38:08

RASP技术攻防基础教学文档

一、RASP技术概述

1.1 定义

RASP(Runtime Application Self-Protection)是一种新型应用安全保护技术,由Gartner在2014年提出。它将保护程序像疫苗一样注入到应用程序中,与应用程序融为一体,能实时检测和阻断安全攻击,使应用程序具备自我保护能力。

1.2 核心特性

  • 实时检测和阻断安全攻击
  • 无需人工干预即可自动防御
  • 拦截从应用程序到系统的所有调用
  • 直接在应用程序内验证数据请求
  • 适用于Web和非Web应用程序
  • 不影响应用程序设计

二、RASP与WAF对比

2.1 主要区别

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

2.2 技术差异示例

对于SQL注入攻击:

  • WAF:基于规则拦截请求参数中的可疑内容
  • RASP:在SQL语句预编译阶段检测实际执行的SQL语句

三、RASP技术实现原理

3.1 实现方式

Java实现

  • 通过Java Agent实现
  • 使用ASM等字节码修改框架
  • 三种机制:
    • Agent_OnLoad
    • Agent_OnAttach
    • Agent_OnUnload

PHP实现

  • 通过开发PHP扩展库实现

.NET实现

  • 通过IHostingStartup(承载启动)实现

3.2 通用原理

RASP技术主要对编程语言的危险底层函数进行hook,通过拦截系统调用来实现安全防护。

四、Java RASP实现详解

4.1 核心技术

  • Instrumentation API:提供类定义动态改变和操作能力
  • ASM框架:用于字节码操作和修改

4.2 实现步骤

  1. 编写premain函数
  2. 添加自定义Transformer实现ClassFileTransformer接口
  3. 使用ASM框架修改字节码
  4. 在关键点插入检测逻辑

4.3 代码示例

// 自定义Transformer
public class MyTransformer implements ClassFileTransformer {
    @Override
    public byte[] transform(ClassLoader loader, String className, 
                          Class<?> classBeingRedefined, 
                          ProtectionDomain protectionDomain, 
                          byte[] classfileBuffer) {
        // 字节码修改逻辑
    }
}

// premain函数
public static void premain(String agentArgs, Instrumentation inst) {
    inst.addTransformer(new MyTransformer());
}

4.4 字节码修改示例

// 方法重写示例
MethodVisitor mv = cv.visitMethod(access, name, desc, signature, exceptions);
mv.visitCode();
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "TestInsert", "hello", "(I)V", false);
mv.visitInsn(Opcodes.RETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();

五、RASP应用场景

5.1 安全防护

  • 0day防御
  • 攻击溯源
  • 漏洞拦截

5.2 开发运维

  • 代码审计
  • 性能监控
  • 日志分析

5.3 其他应用

  • 会话管理
  • 请求管理
  • 安全过滤

六、RASP技术缺陷

  1. 语言和版本兼容性问题
  2. 关键hook点遗漏可能导致绕过
  3. 部分攻击类型(如CSRF、SSRF)仍需依赖正则防护
  4. SQL语句解析可能不够精确

七、国内外RASP产品

7.1 国外产品

  • Micro Focus Application Defender
  • Prevoty
  • Waratek Application Security Platform
  • OWASP AppSensor
  • Shadowd
  • Immun
  • Contrast Security
  • Signal Sciences
  • BrixBits

7.2 国内产品

  • 灵蜥(安百科技)
  • OneRasp(蓝海讯通,已下线)
  • OpenRasp(百度开源)
  • 云锁
  • 安数云WEB应用实时防护系统

八、学习资源

8.1 参考文档

  • JVMTM Tool Interface
  • javaagent加载机制分析
  • JVM源码分析之javaagent原理完全解读
  • ASP.NET Core中使用承载启动程序集

8.2 开源项目

  • OpenRasp(百度)
  • javaweb-codereview(园长)
  • xmark(PHP RASP)
  • taint(PHP RASP)

8.3 相关技术

  • APM(应用性能监控)
  • Skywalking
  • NewRelic

九、总结

RASP技术仍处于发展阶段,尚未形成明确的功能边界。其核心价值在于将安全防护能力内置于应用程序运行时环境,提供更精准的防护。通过结合APM等技术,可以扩展出更多应用场景。不同语言的实现方式虽有差异,但核心思想都是通过hook关键系统调用来实现安全检测和防护。

RASP技术攻防基础教学文档 一、RASP技术概述 1.1 定义 RASP(Runtime Application Self-Protection)是一种新型应用安全保护技术,由Gartner在2014年提出。它将保护程序像疫苗一样注入到应用程序中,与应用程序融为一体,能实时检测和阻断安全攻击,使应用程序具备自我保护能力。 1.2 核心特性 实时检测和阻断安全攻击 无需人工干预即可自动防御 拦截从应用程序到系统的所有调用 直接在应用程序内验证数据请求 适用于Web和非Web应用程序 不影响应用程序设计 二、RASP与WAF对比 2.1 主要区别 | 特性 | RASP | WAF | |------|------|-----| | 检测位置 | 应用程序内部 | 网络边界 | | 检测依据 | 请求上下文 | 流量规则 | | 误报率 | 低 | 高 | | 绕过难度 | 高 | 相对较低 | 2.2 技术差异示例 对于SQL注入攻击: WAF:基于规则拦截请求参数中的可疑内容 RASP:在SQL语句预编译阶段检测实际执行的SQL语句 三、RASP技术实现原理 3.1 实现方式 Java实现 通过Java Agent实现 使用ASM等字节码修改框架 三种机制: Agent_ OnLoad Agent_ OnAttach Agent_ OnUnload PHP实现 通过开发PHP扩展库实现 .NET实现 通过IHostingStartup(承载启动)实现 3.2 通用原理 RASP技术主要对编程语言的危险底层函数进行hook,通过拦截系统调用来实现安全防护。 四、Java RASP实现详解 4.1 核心技术 Instrumentation API:提供类定义动态改变和操作能力 ASM框架:用于字节码操作和修改 4.2 实现步骤 编写premain函数 添加自定义Transformer实现ClassFileTransformer接口 使用ASM框架修改字节码 在关键点插入检测逻辑 4.3 代码示例 4.4 字节码修改示例 五、RASP应用场景 5.1 安全防护 0day防御 攻击溯源 漏洞拦截 5.2 开发运维 代码审计 性能监控 日志分析 5.3 其他应用 会话管理 请求管理 安全过滤 六、RASP技术缺陷 语言和版本兼容性问题 关键hook点遗漏可能导致绕过 部分攻击类型(如CSRF、SSRF)仍需依赖正则防护 SQL语句解析可能不够精确 七、国内外RASP产品 7.1 国外产品 Micro Focus Application Defender Prevoty Waratek Application Security Platform OWASP AppSensor Shadowd Immun Contrast Security Signal Sciences BrixBits 7.2 国内产品 灵蜥(安百科技) OneRasp(蓝海讯通,已下线) OpenRasp(百度开源) 云锁 安数云WEB应用实时防护系统 八、学习资源 8.1 参考文档 JVMTM Tool Interface javaagent加载机制分析 JVM源码分析之javaagent原理完全解读 ASP.NET Core中使用承载启动程序集 8.2 开源项目 OpenRasp(百度) javaweb-codereview(园长) xmark(PHP RASP) taint(PHP RASP) 8.3 相关技术 APM(应用性能监控) Skywalking NewRelic 九、总结 RASP技术仍处于发展阶段,尚未形成明确的功能边界。其核心价值在于将安全防护能力内置于应用程序运行时环境,提供更精准的防护。通过结合APM等技术,可以扩展出更多应用场景。不同语言的实现方式虽有差异,但核心思想都是通过hook关键系统调用来实现安全检测和防护。