
AutoPentest-DRL: 深層強化学習を用いた自動ペネトレーションテスト
AutoPentest-DRLは、深層強化学習(DRL)技術に基づいた自動侵入テストフレームワークです。AutoPentest-DRLは、与えられた論理ネットワークに対して最も適切な攻撃経路を決定することができ、またNmapやMetasploitなどのツールを介して実際のネットワークに対して侵入テスト攻撃を実行するためにも使用できます。このフレームワークは教育目的を意図しており、ユーザーが侵入テストの攻撃メカニズムを学習できるようになっています。AutoPentest-DRLは、石川県にある北陸先端科学技術大学院大学(JAIST)のサイバーレンジ組織・設計(CROND)NEC寄附講座によって開発されています。
AutoPentest-DRLの概要を以下に示します。このフレームワークは、脆弱性情報を含む論理ターゲットネットワークに関するユーザー入力を受け取ります。あるいは、既知のトポロジを持つ実際のターゲットネットワーク上の実際の脆弱性を見つけるために、Nmapを使用してネットワークスキャンを行うこともできます。次に、MulVAL攻撃グラフジェネレータを使用して潜在的な攻撃ツリーを決定し、それらを簡略化した形でDRLエンジンに送ります。出力として生成された攻撃経路は、多数の論理ネットワークにおける攻撃メカニズムの研究に使用できます。また、このフレームワークは、Metasploitなどの侵入テストツールと攻撃経路を使用することもでき、ユーザーが実際のターゲットネットワーク上で攻撃がどのように実行されるかを研究することを可能にします。

次に、AutoPentest-DRLのセットアップと使用方法に関する簡単な情報を提供します。操作の詳細については、別途用意しているユーザーガイドを参照してください。
AutoPentest-DRLを使用するには、いくつかの外部ツールが必要です。論理ネットワークに関する基本機能については、以下が必要です:
repos/mulvalディレクトリにインストールする必要があります。また、こちらで説明されているように、/etc/profileファイルを設定する必要があります。一部のシステムでは、以下のコマンドを使用してepstopdfツールもインストールする必要がある場合があります:
sudo apt install texlive-font-utils
AutoPentest-DRLを実際のネットワークで使用する予定がある場合は、以下も必要です:
nmapをインストールするために必要なコマンドは以下の通りです:
sudo apt install nmap
pymetasploit3を使用しており、このツールは、作成者の指示に従ってPenetration_tools/pymetasploit3ディレクトリにインストールする必要があります。AutoPentest-DRLは主にUbuntu 18.04 LTSオペレーティングシステム上で開発されました。他のOSでも動作する可能性はありますが、テストされていません。AutoPentest-DRLをセットアップするには、リリースページから最新バージョンをダウンロードし、ソースコードアーカイブを使用するホスト上の任意のディレクトリ(例えばホームディレクトリ)に展開してください。
AutoPentest-DRLはPythonで実装されており、実行にはいくつかのパッケージが必要です。配布物に含まれるrequirements.txtファイルを使用して、AutoPentest-DRL/ディレクトリから以下のコマンドを実行することで必要なパッケージをインストールできます:
$ sudo -H pip install -r requirements.txt
AutoPentest-DRLは、サンプルの論理ネットワークトポロジ上で、AutoPentest-DRL/ディレクトリからターミナルで以下のコマンドを実行することで、すぐに使用できます:
$ python3 ./AutoPentest-DRL.py logical_attack
この論理攻撃モードでは実際の攻撃は行われず、AutoPentest-DRLはファイルMulVal_P/logical_attack_v1.Pに記述された論理ネットワークトポロジの最適な攻撃経路のみを決定します。出力された経路をMulVALによって生成された攻撃グラフの可視化(ファイルmulval_results/AttackGraph.pdf)と比較することで、論理的な攻撃手順を詳細に研究できます。
実際のネットワークに対する侵入テストを実施する際に使用する実際の攻撃モードを含む、AutoPentest-DRLの操作の詳細については、ユーザーガイドを参照してください。
このプロジェクトへの貢献者のリストについては、配布物に含まれるCONTRIBUTORSファイルを参照してください。