洞态IAST实现思路分享及讨论

素十八师傅之前对洞态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页面,输入项目名称,应用启动时,将自动将探针绑定至对应的项目中

img

  • 方式二,启动应用时,指定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的收集,是否有更好的方式呢? 极简简约动态分割线本周六快手联合火线 举办线下「观火」白帽沙龙活动 ↓扫描二维码火速了解解码未来活动banner

【火线Zone】

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

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

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

指纹识别简约卡片动态二维码 (2)

引导分享点赞在看GIF引导三连

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是洞态IAST内网私有化部署的详细方案: 1. 确认服务器环境 首先需要确认部署洞态IAST的服务器环境是否符合洞态IAST的要求。具体要求可以参考洞态IAST官方文档。需要注意的是,服务器环境需要满足以下要求: - 操作系统:CentOS 7.2及以上版本,或者Ubuntu 16.04及以上版本。 - 内存:至少8GB。 - 硬盘:至少100GB,建议使用SSD硬盘。 - CPU:建议使用4核及以上的CPU。 2. 下载离线包 在确认服务器环境符合要求之后,需要下载洞态IAST的离线包。可以在洞态IAST官方网站上下载,或者联系洞态IAST的销售团队获取。 需要注意的是,离线包的大小较大,下载可能需要一定的时间和带宽。 3. 安装数据库 洞态IAST需要使用数据库来存储扫描结果等信息,因此需要先安装数据库。可以选择使用MySQL或者PostgreSQL等关系型数据库。 安装过程可以参考数据库官方文档。 4. 安装洞态IAST 在安装洞态IAST之前,需要确认服务器已经安装了Java环境。可以通过以下命令检查: ```bash java -version ``` 如果没有安装Java环境,则需要先安装Java环境。 在安装洞态IAST之前,需要在服务器上创建一个新的非root用户,并授权该用户访问数据库。 然后将下载的离线包上传到服务器,并解压缩到指定目录。进入解压缩后的目录,执行以下命令: ```bash ./install.sh ``` 接着按照提示进行安装,需要输入数据库连接信息、管理员账号密码、安装路径等信息。 安装完成后,可以使用以下命令启动洞态IAST: ```bash systemctl start iast.service ``` 5. 配置代理 如果部署在内网环境中,可能需要配置代理才能让洞态IAST访问外网。可以在洞态IAST的安装目录下的`iast.properties`文件中进行配置,将代理地址和端口号填入即可。 需要注意的是,如果代理需要进行身份验证,则需要在配置文件中同时填入用户名和密码。 6. 配置扫描信息 在进行应用程序扫描之前,需要配置扫描信息。可以通过洞态IAST的Web界面进行配置。 登录洞态IAST的Web界面,进入“扫描管理”页面,点击“新建扫描任务”,填写扫描任务的相关信息。需要注意的是,需要填写正确的应用程序地址和端口号,才能保证扫描结果的准确性。 7. 进行应用程序扫描 在配置好扫描信息之后,就可以进行应用程序扫描了。可以在洞态IAST的Web界面中查看扫描结果。 需要注意的是,扫描过程可能会占用较多的服务器资源,因此建议在空闲时间进行扫描,并根据具体情况进行资源调整。 以上就是洞态IAST内网私有化部署的详细方案,希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值