浅谈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 实现步骤
- 编写premain函数
- 添加自定义Transformer实现ClassFileTransformer接口
- 使用ASM框架修改字节码
- 在关键点插入检测逻辑
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技术缺陷
- 语言和版本兼容性问题
- 关键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关键系统调用来实现安全检测和防护。