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