PenGymy论文阅读

ops/2025/1/19 6:08:01/

这里发现idea被人家先发了,没办法,资料收集的不够全面,现在来学习一下这个项目

这篇论文的贡献如下:

总的来说,他的主要工作是构建逼真的仿真环境,然后根据这个仿真环境生成真实的靶场,使得这个智能体能够在这个真实的环境去互动。下面来逐渐解析他的工作,我尽量详细一点

1、背景和动机

        这种项目是在网络攻防中,攻防双方攻击者处于暗面,防御者处于明面,这时候受到攻击后应急处理多少会造成损失,那么要是可以提前预测攻击者的攻击路径,并提前防御的话,那么就能够节省很多工作。在安全领域叫做攻击路径预测。但是网络环境复杂化,要是网络高度敏感脆弱,攻击方式也多,导致攻击方式多样化。提前部署需要经验丰富的防御者,来识别这些潜在的攻击路径。修补这些路径的优先级也有所考虑。由于时间问题,暴力穷举也不是那么实惠。人们想要找到智能代理去做到这件事情。

        强化学习,就是这玩意智能体能够去自己试错,得到反馈去调整。诶不错哦。下面是他们的建模示意图。

        然后他们说,前面的搭大家做的仿真环境,需要的资源有限,大体说的是不够逼真把,和实际的结果还是有点区别的。要么就是前面做的动作比较少,看来他很自信。

2、论文工作

2.1 靶场部分

        前面说了,他实现了搭建自定义靶场环境,然后能在这个真实环境中交互,显然会比仿真环境更加真实。2018年Beuran等人描述使用 CyRIS模块来自动创建靶场环境。这篇论文就讲设计一个PenGym模块,把渗透测试场景(仿真环境)转换成为CyRIS描述,去创建这样一个网络靶场。作者强调:我们的实施涵盖主机配置和网络连接,包括网桥和虚拟接口。

2.2 PenGym框架

        这里说明下,前面的PenGym模块是这个框架的一部分。这个框架作者声称已将 PenGym 扩展为 RL 渗透测试代理的全自动、有效和现实的训练框架。它支持网络流量发现和基于主机的漏洞利用操作,包括 NASim 中的所有操作。

        他有两种模式,文章中用的词是simulation mode and an emulation mode.,一种算是更加逼真的仿真环境,另外一种就是前面说的包含着PenGym模块,将会创建靶场的真实环境。

        我们主要还是看这个PenGym模块的模式,他的流程是,首先从动作空间中挑选动作,然后应该会有一个模块去转换一下,变成实际执行的动作去执行,这里也就是他说的一个叫做状态/动作模块之类的东西,然后这个模块获取到了这个返回再返回给仿真环境。

2.3 智能体动作

        宣称是有六类动作空间的

2.4 动作优化

        执行的时间可能会比较长,作者对动作进行了两种优化,执行的动作所撰写的脚本使用了nmap等工具,这里使用了一些参数来节约时间,比方说:包括:-Pn、-n、-T5、--min-parallel 和 --max-parallel。此外,还提供了当前方案中可用的端口,以避免扫描不可用的端口,从而节省时间。
        第二就是在获取了主机权限后获取到足够的信息后停止对该主机的自动检查。文中是这样描述:
 Stopping conditions are determined to finish the Metasploit job earlier for these actions. This job will terminate once all shell information is obtained. However, some information is not required for subsequent actions. Stopping the job early can reduce execution time while preserving the functionality of the shell object.

  • 当 Metasploit 成功获得目标系统的 shell 后,它会收集相关信息。在某些情况下,并不是所有收集到的信息都对后续操作是必需的。
  • 通过在获取到所有必要的 shell 信息后及时停止作业,可以有效缩短执行时间。

2.5 训练时间优化

        作者觉得在优化训练阶段,一个动作获取到的信息可以重复利用,可以把他存起来

后续是作者一些实验方面的工作了  主要就是用三个环境训练的智能体相互在其他两个环境中测试下  感兴趣的可以阅读原文看一下  下面打算对这个项目进行复现 喜欢的话可以点点关注 交流一下

        


http://www.ppmy.cn/ops/151294.html

相关文章

Golang Gin系列-3:Gin Framework的项目结构

在Gin教程的第3篇,我们将讨论如何设置你的项目。这不仅仅是把文件扔得到处都是,而是要对所有东西的位置做出明智的选择。相信我,这些东西很重要。如果你做得对,你的项目会更容易处理。当你以后不再为了找东西或添加新功能而绞尽脑…

【Linux】线程全解:概念、操作、互斥与同步机制、线程池实现

🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚一、线程概念 📖 回顾进程 📖 引入线程 📖 总结 &a…

MySQL 数据库的备份和恢复(Linux)

数据丢失对任何企业来说都是致命的,而 MySQL 数据库作为大多数企业数据存储的核心,其备份与恢复的重要性不言而喻。尤其是在 Linux 环境下,如何高效、稳定地进行 MySQL 数据库的备份与恢复,成为数据库管理员的必修课。今天&#x…

e2studio开发RA0E1(16)----配置RTC时钟及显示时间

e2studio开发RA0E1.16--配置RTC时钟及显示时间 概述视频教学样品申请完整代码下载硬件准备参考程序新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_UARTA_Open()函数原型回调函数user_uart_callba…

Docker部署Spring Boot + Vue项目

目录 前提条件 概述 下载代码 打开代码 Docker创建网络 MySQL容器准备 MySQL数据库配置 启动MySQL容器 测试连接MySQL 初始化MySQL数据 Redis容器准备 修改Redis配置 启动redis容器 部署后端 后端代码打包 上传jar包到Linux 创建Dockerfile 构建镜像 运行后…

【数据分享】1929-2024年全球站点的逐月平均气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据!本次我们为大家带来的就是具体到气象监…

OpenTelemetry 实践指南:历史、架构与基本概念

背景 之前陆续写过一些和 OpenTelemetry 相关的文章: 实战:如何优雅的从 Skywalking 切换到 OpenTelemetry 实战:如何编写一个 OpenTelemetry Extensions 从一个 JDK21OpenTelemetry 不兼容的问题讲起 这些内容的前提是最好有一些 OpenT…

HTML5教程(中)

HTML5 浏览器支持 HTML5 浏览器支持 目前市面上的浏览器有很多版本,你可以让一些较早的浏览器(不支持HTML5)支持 HTML5。 HTML5 浏览器支持 现代的浏览器都支持 HTML5。 此外,所有浏览器,包括旧的和最新的&#xff…