AutoPentest-DRL是基于深度强化学习(DRL)技术的自动渗透测试框架。该框架为给定的网络确定最合适的攻击路径,并且可以用于通过渗透测试工具(例如Metasploit)在该网络上执行模拟攻击。AutoPentest-DRL由日本石川县日本高级科学技术研究院(JAIST)的网络范围组织和设计(CROND)NEC授予的主席开发。
AutoPentest-DRL的概述如下所示。该框架可以使用网络扫描工具(例如Nmap)来查找目标网络中的漏洞。否则,将使用用户输入。MulVAL攻击图生成器用于确定潜在的攻击树,然后以简化的形式将其馈送到DQN决策引擎中。可以将作为输出产生的攻击路径输入到渗透测试工具(例如Metasploit)中,以对实际目标网络进行攻击,或者将其与逻辑网络一起使用,例如用于教育目的。另外,拓扑生成算法用于生成用于训练DQN的多个网络拓扑。
接下来,我们提供有关如何设置和使用AutoPentest-DRL的简要信息。有关详细信息,请参阅我们也提供的《用户指南》。
为了使用AutoPentest-DRL,需要一些外部工具,如下所示:
MulVAL:AutoPentest-DRL使用的攻击图生成器,以生成给定网络的可能攻击路径。有关安装说明,请参见MulVAL页面。MulVAL应该安装在repos/mulvalAutoPentest-DRL文件夹的目录 中。您还需要/etc/profile按照此处的说明配置文件 。
Nmap:AutoPentest-DRL用于确定给定实际网络中的漏洞的网络扫描程序。nmap下面给出了在Ubuntu上安装所需的命令:
sudo apt-get install nmap
Metasploit:AutoPentest-DRL使用的渗透测试工具,在实际目标网络上实际执行DQN引擎提出的攻击。要安装Metasploit,您可以使用Metasploit网站上提供的安装程序。另外,我们使用 pymetasploit3RPC API与Metasploit进行通信,并且需要Penetration_tools/pymetasploit3按照其作者的 说明将该工具安装在目录中 。
AutoPentest-DRL主要是在Ubuntu 18.04 LTS操作系统上开发的;其他操作系统可能可以工作,但尚未经过测试。为了设置AutoPentest-DRL,请使用 发布 页面下载最新版本,并将源代码存档解压缩到您要使用它的主机上的所选目录(例如,主目录)中。
AutoPentest-DRL是用Python实现的,它需要多个程序包才能运行。requirements.txt发行版中包含的文件可用于通过以下命令安装必需的软件包,这些命令应从AutoPentest-DRL/ 目录中运行:
$ sudo -H pip install -r requirements.txt
最后一步是安装数据库,其中包含有关真实主机和漏洞的信息。为此,请database.tgz从发行页面下载命名的资产文件,然后将其解压缩到Database/目录中。
为了在示例网络拓扑上使用逻辑攻击模式,请从终端窗口运行以下命令:
$ python3 ./AutoPentest-DRL.py logical_attack
该文件中描述了此攻击模式下使用的逻辑网络拓扑MulVal_P/logical_attack.P,其中包括有关服务器,服务器连接及其漏洞的详细信息。可以按照MulVAL文档中描述的语法修改此文件。
在逻辑攻击模式下,不进行实际攻击,仅提供最佳攻击路径作为输出。通过参考文件中MulVAL生成的攻击图的可视化,mulval_results/AttackGraph.pdf您可以详细研究攻击步骤。下图提供了此类输出的示例。
有关AutoPentest-DRL的研究背景,请参阅以下文章:
Z. Hu,R. Beuran,Y. Tan,“使用深度强化学习的自动渗透测试”,IEEE欧洲安全和隐私研讨会,研讨会(EuroS&PW 2020),网络范围应用和技术研讨会(CACOE’20),热那亚,意大利,2020年9月7日,第2-10页。
有关此项目的贡献者列表,请参阅发行版中包含的文件CONTRIBUTORS。
下载AutoPentest-DRL