素十八师傅之前对洞态IAST的源码进行了一波深入分析,吐槽了一些地方,首先感谢师傅的精心研究及Diss,其中存在的问题已经基本解决,遗留的问题也在解决中,本文将对分析文章中存在的误解及疑问进行解答。

感谢素十八师傅对洞态IAST代码的分析,文章地址:[> 洞态IAST源码分析及Diss][0]

根据师傅的分析以及提出的疑问,将逐部分进行解答。本文将回答下面3个问题:

  • 洞态IAST开源的java agent应该如何使用?
  • 检测引擎如何区分应用?
  • SCA实现原理

一、如何编译并使用本地Java Agent

通过调试发现自己编译 core 和 inject 没用,他的 agent 无论如何还是会从官网上自己下载这两个 jar 包并放到 temp 目录下,不知道是故意的还是写出来的 bug,因为如果从官网上下载,也只是下载 agent,在运行时动态下载 core 和 inject,应该是最开始打算试用,没打算开源?? -- 作者:素十八

洞态IAST - Java探针分析

洞态IAST的agent部分由agent.jar、iast-core.jar和iast-inject.jar三部分组成。其中:

  • agent.jar用于存放配置、定期拉取云端信息、下载并加载核心检测引擎iast-core.jar和iast-inject.jar
  • iast-inject.jar用于注入至BootStrap ClassLoader,后续在目标应用中调用iast-core.jar中的数据采集方法
  • iast-core.jar是核心jar包,存储数据采集、数据预处理、数据上报等功能

探针启动时,由agent.jar检测当前的启动模式,规则如下:

  • debug模式为false,从云端下载检测引擎并启动
  • debug模式为true,检测本地临时目录中是否存在核心检测引擎
  • 存在,加载本地检测引擎并启动
  • 不存在,从云端下载检测引擎并启动

综上,如果想要试用自己编译的agent,需要指定启动模式为debug-Ddebug=true并将iast-core.jar和iast-inject.jar复制到临时目录中。

编译及配置方法:

仅需四步即可实现修改Agent代码并使用云端环境:

  1. 拉取代码:git clone https://github.com/HXSecurity/DongTai-agent-java.git2. 根据需求,修改agent-java中的代码

  2. 编译Agent

3.1 登陆火线--洞态IAST云端,前往部署页面获取Token和云端服务地址

3.2 将Token和云端服务地址写入iast-agent/src/main/resources/iast.properties文件

3.3 运行maven clean package编译agent

  1. 拷贝检测引擎到临时目录

  2. 运行应用(以SpringBoot应用为例):java -javaagent:/path/to/iast-home/release/iast-agent.jar -Ddebug=true -jar app.jar

二、关于应用识别/区分

检测引擎是如何区分应用的呢? -- 作者:素十八

检测引擎识别应用(项目)存在自动识别和手动配置两种方案,刚开始,我们研究了自动识别应用名称的若干种实现方案,后来发现准确度很难保证,因此最终选择了手动配置的方案。

  1. 洞态IAST支持两种方式配置应用名称:
  • 方式一,通过部署IAST页面,输入项目名称,应用启动时,将自动将探针绑定至对应的项目中

  • 方式二,启动应用时,指定JVM参数-Dproject.name=<project.name>,如下:

    java -Dproject.name=<project.name> -jar app.jar

  1. 【讨论】IAST自动识别项目名称的可选方案
  • ContextPath
  • 当前Request请求所在的物理路径

三、SCA实现原理

一个优秀的 IAST 一定有 SCA 一类的功能,简单的实现都是通过收集客户段组件信息,发送到云端通过匹配 CPE,并链接到对应的 CVE/CWE/CNNVD 等 -- 作者:素十八

洞态IAST的SCA功能实现主要分为三部分:

  • 收集并上报JavaWEB应用中使用的第三方组件
  • 与Maven官方组件库匹配,获取精确的版本信息
  • 与漏洞库对接梳理漏洞(漏洞库数据来源于国内外公开的优质SCA漏洞数据,未通过cpe处理)
  1. 收集JavaWEB中第三方组件的方案

根据Java中的类加载机制可知,JVM在加载应用代码类的同时会加载类中引用的第三方组件类。根据这一特性,在IAST中获取第三方组件类所在的jar包位置,计为path1,然后读取path1目录下所有的jar包;最后用SHA-1算法计算Jar包的哈希值,并上报至云端

  1. 云端与Maven官方组件库匹配

云端根据SHA-1哈希值与Maven组件库进行匹配,获取对应的groupId、artifactId和版本信息

  1. 云端与漏洞库对接

根据组件的版本信息后,与组件漏洞库对比,判断是否存在漏洞

【讨论】关于SCA的收集,是否有更好的方式呢? 本周六快手联合火线 举办线下「观火」白帽沙龙活动 ↓扫描二维码火速了解

【火线Zone】

火线Zone是[火线安全平台]运营的封闭式社区,社区成员必须在[火线安全平台]提交有效漏洞才能申请免费加入,符合要求的白帽子可联系[火小表妹]免费加入~

我们不希望出现劣币驱逐良币的结果,我们不希望一个技术社区变成一个水区!

欢迎具备分享精神的白帽子加入火线Zone,共建一个有技术氛围的优质社区!

洞态IAST实现思路分享及讨论相关推荐

  1. 洞态IAST自动检测S2-001漏洞

    一.使用Dongtai-IAST检测S2-001漏洞 1. 启动在线靶场 登陆在线靶场:http://labs.iast.huoxian.cn:8081,启动`S2-001`环境,等待环境启动之后,点 ...

  2. 洞态IAST自动检测S2-007漏洞

    1. 启动在线靶场 登陆 在线靶场,启动S2-007环境,等待环境启动之后,点击访问靶场按钮即可前往靶场环境.该环境来源于vulhub和vulapps 2. 查看检测结果 登陆洞态IAST官方网站,查 ...

  3. 洞态IAST在某互联网甲方的落地实践

    IAST作为开展SDL中黑白盒测试的有效补充,还是很有必要去了解使用的.笔者为了完善公司的SDL流程,调研了开源的IAST产品进行测试和内部推广 刚开始,笔者测试百度OpenRASP的IAST功能(主 ...

  4. 洞态 IAST v1.1.4 新版本来袭,DevSecOps 更进一步

    导语 洞态 IAST 自开源发布以来,一直保持着双周更新一版的节奏不断迭代.项目开启之初,社区小伙伴们参与的积极性很高,为洞态提出了许多建设性意见,也贡献了很多代码,很感谢洞态伙伴们的付出. Dong ...

  5. 洞态IAST Python-agent 内测版 测试

    一.背景 洞态 IAST 首发 Python-agent 尝鲜,验证 Agent 针对路径穿越漏洞的检测能力. 洞态 IAST 的检测方式是扫描运行中的应用程序,将扫描到的漏洞信息发送到云端进行检测处 ...

  6. 精选用户故事|洞态在聚水潭的误报率几乎为0,如何做到?

    亮点锦集: 我个人在实际使用过程中体验到,对于像命令执行和sql注入这类漏洞,洞态能够做到百分百的检测. --Spenser 除了之前关于敏感信息检测这一块有误报,其它基本没有.不过这块儿经过优化之后 ...

  7. 洞态漏洞检出测试第二期:NoSQL LDAP注入漏洞

    ​测试环境 DongTai-Python-agent 版本号:v1.2.0 支持 Python 框架:Flask Python 3.8 NoSQL 注入漏洞 以 JavaScript 注入为例 Jav ...

  8. web渗透--69--洞态IAST部署及使用

    前不久[洞态IAST]正式开源,喜大普奔,此前使用百度开源的OpenRASP-IAST,效果其实很差,可能是平台的问题,也可能是开发写的程序本来就安全,最终一个漏洞都没产出,只能靠二次开发的一些辅助功 ...

  9. 第一届华数杯A题完整思路分享

    A题完整思路分享 第一问: 要想问题做的好,美图肯定少不了.这道题,建模时不但要用数学公式把模型说清楚,还要一些图来帮助别人理解,让别人一眼就看懂你写的东西,话不多说,我们先放一张类似下面的图,记得说 ...

  10. NB-IOT实现万物互联设计思路分享 (从硬件到单片机到云平台)

    NB-IOT实现万物互联 产品设计思路分享 NB-IOT窄带物联网(Narrow Band Internet of Things, NB-IoT),是一种专为万物互联打造的蜂窝网络连接技术.NB-IO ...

最新文章

  1. linux shell unlink,linux shell中,unlink和rm命令有什么区别
  2. #再一次用construct2做游戏
  3. 天津盈克斯机器人科技_柔性视觉选料 机器人摆盘 柔性振动盘
  4. linux的“自动化”
  5. java xfire webservice 异步_[Java教程]Java中使用webservice,简化开发(xfire的webservice)...
  6. dba的前景_运维、测试、程序员,这些技术岗位哪个更有前景?
  7. Expected one result (or null) to be returned by selectOne(), but found: 7
  8. mysql 常用命令
  9. python删除指定日期前的备份文件
  10. 使用 IntraWeb (2) - Hello IntraWeb
  11. springboot~让我习惯了TDD的开发模式
  12. linux更换内核后无法上网,ubuntu 系统升级内核版本后网络不能正常启动问题
  13. Vue 使用 print.js 实现打印组件
  14. 银行业会计人员技能训练系统(含文字录入、小键盘、点钞)
  15. MS Navision专业BBS
  16. 给机器人罗宾写一封英语回信_人教版pep小学英语三年级起点六上单词和习惯用语朗读mp3+文本Unit1...
  17. C语言字母排序不分大小写,如何按字母顺序排序字符串数组(区分大小写,非标准排序规则)...
  18. android手机电池寿命,真正有效延长手机电池寿命的几点建议(iPhone+安卓)
  19. 基于SSM的疫情数据可视化、录入统计系统
  20. 微电子电路——与非门或非门异或门

热门文章

  1. Apache Http Server安全漏洞解决
  2. 笔记本怎样做无线打印服务器,自己的笔记本怎么连打印机_笔记本怎样无线连接打印机...
  3. 微信小程序tap事件中target与currentTarget的区别
  4. Qt Designer的使用
  5. 机器学习——随机森林算法及原理
  6. pyltp实体识别_基于pyltp进行命名实体识别
  7. android ps模拟器 金手指,电脑ps模拟器金手指的使用教程
  8. Petalinux EMMC启动
  9. Excel 快捷键学习笔记
  10. 中兴服务器默认用户名密码是什么,中兴路由器登录地址默认用户名密码