[JavaWeb]RASP技术分析
简介
RASP全称Runtime application self-protection。简单来说就是在程序关键代码或者jvm内核的关键位置进行动态HOOK,等程序运行到该位置时才会进行检测,从相对而言的根入手,避免层层转换,绕过,因为RASP更有效的在于对底层的关键处进行HOOK。而WAF一般是在程序运行前,对数据流进行分析过滤,也就很容易存在被绕过的可能。
优点很明显。。。缺点嘛就是会降低程序运行的效率。但也不能做到绝对的防御,因为相对于java而言,jvm始终还是一层外包裹,只要恶意代码突破了外包裹,到达了更深入的层次,照样能利用(这大概就是攻防一直存在,而且越来越往底层去的原因吧。
知识前置
SAST&DAST&IAST
DAST:动态应用程序安全测试(Dynamic Application Security Testing)技术在测试或运行阶段分析应用程序的动态运行状态。它模拟黑客行为对应用程序进行动态攻击,分析应用程序的反应,从而确定该Web应用是否易受攻击。
SAST:静态应用程序安全测试(Static Application Security Testing)技术通常在编码阶段分析应用程序的源代码或二进制文件的语法、结构、过程、接口等来发现程序代码存在的安全漏洞。
IAST:交互式应用程序安全测试(Interactive Application Security Testing)是2012年Gartner公司提出的一种新的应用程序安全测试方案,通过代理、VPN或者在服务端部署Agent程序,收集、监控Web应用程序运行时函数执行、数据传输,并与扫描器端进行实时交互,高效、准确的识别安全缺陷及漏洞,同时可准确确定漏洞所在的代码文件、行数、函数及参数。IAST相当于是DAST和SAST结合的一种互相关联运行时安全检测技术
JavaAgent和JVMTI-JVM Tool Interface
JVMTI是提供给用户的接口,相当于windows中的进程控制一样,系统(这里是JVM)会隔一段时间进行主动调用。
JavaAgent作用提供premain
Process Attach
和window中运行时的线程注入相似,就是在jvm程序运行时,通过attach附加到进程就ok。
启动时加载instrument agent过程:
创建并初始化 JPLISAgent;
监听 VMInit 事件,在 JVM 初始化完成之后做下面的事情:
创建 InstrumentationImpl 对象 ;
监听 ClassFileLoadHook 事件 ;
调用 InstrumentationImpl 的loadClassAndCallPremain方法,在这个方法里会去调用 javaagent 中 MANIFEST.MF 里指定的Premain-Class 类的 premain 方法 ;
解析 javaagent 中 MANIFEST.MF 文件的参数,并根据这些参数来设置 JPLISAgent 里的一些内容。
运行时加载instrument agent过程:
通过 JVM 的attach机制来请求目标 JVM 加载对应的agent,过程大致如下:
创建并初始化JPLISAgent;
解析 javaagent 里 MANIFEST.MF 里的参数;
创建 InstrumentationImpl 对象;
监听 ClassFileLoadHook 事件;
调用 InstrumentationImpl 的loadClassAndCallAgentmain方法,在这个方法里会去调用javaagent里 MANIFEST.MF 里指定的Agent-Class类的agentmain方法。
Passive插桩模式-细节分析
既然是对关键函数进行hook,那么对一些敏感的什么runtime之类的,怎么能进行选择性hook,而不至于影响正常业务?如果是利用premain机制,那么runtime肯定会影响正常业务的使用,而且还会影响程序运行效率;所以猜测是对输入流前后进行动态hook,而对于正常程序内部业务则不进行hook。
Referer
https://www.aqniu.com/learn/46910.html
https://xz.aliyun.com/t/7005
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本