Rasp学习
2022-03-14 18:29:34 6 举报
AI智能生成
RASP的介绍、底层原理、工作流程、以及技术难点
作者其他创作
大纲/内容
是什么
RSAP将自身注入到应用程序中,与应用程序融为一体,实时监测、阻断攻击,使程序自身拥有自保护的能力。
特点:无需编码时进行任何的修改,只需进行简单的配置即可
举例:WAF大部分是基于规则去拦截的(也有小部分WAF是带参数净化功能的),也就是说,如果你的请求参数在他的规则中存在,那么waf都会对其进行拦截,这样会导致误报率大幅提升,但是RASP技术可以做到在应用程序将sql语句预编译的时候,RASP可以在其执行之前将其拦截下来进行检测,如果sql语句没有危险操作,则正常放行,不会影响程序本身的功能。如果存在恶意攻击,则直接将恶意攻击的请求进行拦截或净化参数。
总结:WAF通过规则的语句还会进入到数据库(全靠规则、比较死)
RASP在预编译后进入数据库前进行监测(能结合上下文、更灵活)
RASP在预编译后进入数据库前进行监测(能结合上下文、更灵活)
注入方法
Servlet Filter: 在请求响应路径上,只能对http报文过滤处理
JVM重构: 植入JVM内部, 基于JVM的安全控制层实现RASP容器。需要对JVM非常熟悉,难度很大。国外waratek采用这种方法
Java Instrument: 最普遍的做法(主要了解怎么改注入方法的原理)
图示
子主题
需要解决的问题:
1、如何注入检测代码(java_agent 插桩)
2、在哪些访问控制点注入(Transformer写需要被hook的条件,比如哪些类,哪些方法等)
3、注入之后如何检测攻击(每种攻击监测方式不同)
4、检测到攻击后如何处理
2、在哪些访问控制点注入(Transformer写需要被hook的条件,比如哪些类,哪些方法等)
3、注入之后如何检测攻击(每种攻击监测方式不同)
4、检测到攻击后如何处理
Rasp技术实现(底层原理)
RASP技术实现实质是在不接触应用源码的情况下,对函数进行Hook操作,本模块内容利用JVM接口(Java Instrument)对字节码进行操作
对字节码进行操作(基础知识)
1、ASM(性能最高)
* 一个JAVA字节码分析、创建和修改的开源应用框架
* 允许开发者自由的在一个已经编译好的类中添加新的方法,或者是修改已有的方法。
* 允许开发者自由的在一个已经编译好的类中添加新的方法,或者是修改已有的方法。
优点:可以用JVM指令直接操作字节码,更灵活;性能高;功能丰富
缺点:需要了解jvm指令和class文件结构技术要求高
缺点:需要了解jvm指令和class文件结构技术要求高
2、Javassist
* 一个开源的分析、编辑和创建Java字节码的类库。
* 允许开发者自由的在一个已经编译好的类中添加新的方法,或者是修改已有的方法。
* 允许开发者自由的在一个已经编译好的类中添加新的方法,或者是修改已有的方法。
优点:简单,直接使用java编码的形式,而不需要了解虚拟机指令,就能动态改变类的结构,或者动态生成类。
缺点:性能略低于ASM。百度产品OpenRasp利用此方法进行开发
缺点:性能略低于ASM。百度产品OpenRasp利用此方法进行开发
3、JDK反射
动态代理虽然灵活性高,但仍然需要使用相关的类库,进行动态代理的配置,并融合到应用的源代码中,不是理想的解决方案。
基本架构
子主题
rasp整体流程
1、启动流程
1、启动时首先会进入 javaagent 的 premain 函数,该函数会在 main 函数之前预先执行。
2、初始化字节码转换模块给load class 操作进行插桩操作,当类加载的时候会先进入 agent 进行处理hook指定函数
2、启动后hook流程
简述上述两张图的流程:
1、.因为启动时候进行了插桩操作,当有类被 ClassLoader 加载时候,所以会把该类的字节码先交给自定义的 Transformer 处理
1、.因为启动时候进行了插桩操作,当有类被 ClassLoader 加载时候,所以会把该类的字节码先交给自定义的 Transformer 处理
2、自定义 Transformer 会判断该类是否为需要 hook 的类,如果需要会将该类交给ASM字节码处理框架进行处理。
3、ASM框架会将类的字节码依照事件驱动模型逐步解析每个方法,当触发了我们需要hook的方法,我们会在方法的开头或者结尾插入进入检测函数的字节码
4、把hook好的字节码返回给transformer从而载入虚拟机
技术难点
利用java_agent插桩:https://www.cnblogs.com/liboware/p/12391510.html
javaAgent是运行方法之前的拦截器关键方法
核心:transform内设置要监控的类,需要hook的方法
Transformer判断需要被hook的方法
在transform方法中进行关键函数hook,实现我们的防护程序
hook过程中,ASM如何注入保护逻辑
先学习ASM字节码操作框架相关方法:https://www.jb51.net/article/103709.htm
各种攻击形式应对的保护方法(具体做法)
子主题
0 条评论
下一页