Kali Linux 2023.3 Release (Internal Infrastructure & Kali Autopilot)

# はじめに
2023年8月23日、[Kali Linux 2023.3 Release (Internal Infrastructure & Kali Autopilot)](https://www.kali.org/blog/kali-linux-2023-3-release/)の通りにKaliの新しいリリースが公開されています。

今回のリリースでは、インフラストラクチャの再構築や9個の新しいツールが追加されました。詳細については、上記公式のブログ記事を参照。

本記事では、今回大幅に見直しが行われたKali Autopilotについて記載しています。

## アップデート方法
公式ドキュメントの[Updating Kali](https://www.kali.org/docs/general-use/updating-kali/)を踏まえて、Kaliのアップデート方法を以下に記載します。

前提として、`/etc/apt/sources.list`が適切に設定されていることを確認した上で以下のコマンドを実行します。

`$ sudo apt update`
`$ sudo apt full-upgrade -y`

上記コマンド実行後、OS再起動を行います。
OS再起動後、`/etc/os-release`ファイルを参照してディストリビューションのバージョンが更新されたことを確認します。

```console
VERSION_ID="2023.3"
VERSION="2023.3"
VERSION_CODENAME=kali-rolling
```

## Kali Autopilot
**Kali Autopilot**は、サイバーセキュリティの研究、トレーニング、チャレンジラボ、CTFイベントをサポートする攻撃自動化フレームワークです。

サイバー攻撃に対するレジリエンスを高めるために、シナリオに基づいたトレーニングなどに役立つと思います。

https://www.kali.org/tools/kali-autopilot/

Kali Autopilotに関する詳細は、gitlabの[kali-autopilot](https://gitlab.com/re4son/kali-autopilot/)から確認できます。

Kali Autopilotの使用方法について、ワークフローに沿って以下の流れで解説します。

1. kali-autopilotの起動
1. 攻撃スクリプトの作成・保存
1. 攻撃スクリプトの実行
1. 攻撃スクリプトの管理

### パッケージのインストール
以下のコマンドを実行して、パッケージのインストールを行います。

`$ sudo apt install kali-autopilot`

### kali-autopilotの起動
検索ボックスからkali-autopilotを検索して起動します。

![スクリーンショット 2023-08-25 22.37.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/8e9f4744-42f3-3faa-0f8e-0a403dffc4a1.png)

以下のような画面が表示されます。

![スクリーンショット 2023-08-25 22.37.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/37c4c2bf-54cc-a561-b23c-dd73f705cf00.png)

### 攻撃スクリプトの作成・保存
Attack Scripts、Scripted Attack Sequenceを入力します。
Variablesは、ターゲットとなるホストのIPアドレスやポート番号などを入力することで、変数として使用できます。

変数を使用する場合は、`{}`でVariablesに指定したNameを囲んで入力します。
例えば、nmapを例にすると`nmap {host}`といったような指定ができます。

スクリプトを編集後、画面下部の「Genarate」ボタンを押します。
また、画面中央に「OK」が表示されるので「OK」ボタンを押します。

![スクリーンショット 2023-08-25 23.22.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/42e70f78-aeec-246e-670b-a0ac954c1e7a.png)

`~/kali-autopilot`配下のディレクトリには、以下のファイルやディレクトリが作成されます。
`kali-autopilot.db`は、SQLiteで使用されるdatabaseファイルです。

```console
-rw-r--r-- 1 kali kali 36864  8æ 25 23:20 kali-autopilot.db
drwxr-xr-x 2 kali kali  4096  8æ 25 23:22 test
```

::: note
kali-autopilotで定義可能なアクションは、[User Guide](https://gitlab.com/re4son/kali-autopilot/-/wikis/User-Guide)から確認できます。
また、[Purple-Hub](https://gitlab.com/kalilinux/kali-purple/purple-hub)からサンプルの攻撃スクリプトが取得できます。本記事執筆時点では、juice-shopとDWVA用のスクリプトがあります。
:::

### 攻撃スクリプトの実行
上記Attack Scriptsで指定した名前のディレクトリに移動して、以下のコマンドを実行します。

`$ python3 test.py`


```console

[26/Aug/2023:00:06:04] ENGINE Listening for SIGTERM.
[26/Aug/2023:00:06:04] ENGINE Listening for SIGHUP.
[26/Aug/2023:00:06:04] ENGINE Listening for SIGUSR1.
[26/Aug/2023:00:06:04] ENGINE Bus STARTING
[26/Aug/2023:00:06:04] ENGINE Started monitor thread 'Autoreloader'.
[26/Aug/2023:00:06:04] ENGINE Serving on http://0.0.0.0
[26/Aug/2023:00:06:04] ENGINE Bus STARTED
```

ブラウザを起動してローカルホストにアクセスします。
認証画面が表示されるため、UsernameとPasswordに`offsec/offsec`を入力してサインインします。

![スクリーンショット 2023-08-26 0.14.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/13c48ac3-0df2-11a7-d7e2-f05a2cca6ff1.png)

サインイン後、以下のような画面が表示されます。

![スクリーンショット 2023-08-26 0.14.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/fdb6bd4b-fc87-f5cb-1949-c3ed9643dcb1.png)

### 攻撃スクリプトの管理
攻撃スクリプトは、ブラウザから制御可能です。

APIをリクエストして、攻撃を実行することができます。
以下の例では、`/set`を使用して任意の攻撃ステージを設定しています。

例えば、複数のステージを設定している場合は、最後のステージの値に`-`を付けることで、連続的に実行できます。


![スクリーンショット 2023-08-26 0.16.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/12ac1c52-b5a9-4e80-cebe-c9f329a0b02a.png)

ターミナルでスクリプトを実行しているログを参照すると、攻撃スクリプトで設定した`nmap`の出力が確認できました。

```console
[26/Aug/2023:00:11:54] ENGINE Listening for SIGTERM.
[26/Aug/2023:00:11:54] ENGINE Listening for SIGHUP.
[26/Aug/2023:00:11:54] ENGINE Listening for SIGUSR1.
[26/Aug/2023:00:11:54] ENGINE Bus STARTING
[26/Aug/2023:00:11:54] ENGINE Started monitor thread 'Autoreloader'.
[26/Aug/2023:00:11:54] ENGINE Serving on http://0.0.0.0
[26/Aug/2023:00:11:54] ENGINE Bus STARTED
127.0.0.1 - - [26/Aug/2023:00:12:04] "GET / HTTP/1.1" 401 1747 "" "R"
127.0.0.1 - offsec [26/Aug/2023:00:14:37] "GET / HTTP/1.1" 200 185 "" "R"
127.0.0.1 - offsec [26/Aug/2023:00:15:33] "GET /set HTTP/1.1" 200 25 "" "R"
127.0.0.1 - offsec [26/Aug/2023:00:16:36] "GET /set?mutex=1 HTTP/1.1" 200 29 "" "R"
[*] Running command: nmap <ip address>
Starting Nmap 7.94 ( https://nmap.org ) at 2023-08-26 00:16 JST
Nmap scan report for <ip address>
Host is up (0.0031s latency).
```

:::note
APIの説明については、gitlabのWikiの[Web API](https://gitlab.com/re4son/kali-autopilot/-/wikis/Web-Api)から確認できます。
:::

# おわりに
kali-autopilotはこれからも開発が盛んになると思われるため、引き続き今後のアップデートを期待したいと思います。

仮想マシンでもKali Linuxを動かすことはできますが、不自由なくパフォーマンスを発揮するためには自作PCなどで動かすのもお勧めです。

以前書いた以下の記事では、自作PCにKali Linuxを導入及び構築する方法について記載しています。

- [自作PCの組み立て方　ベアメタルで構築するKali Linux【PC組み立て編】](https://qiita.com/Brutus/items/4d6da6a989f2a64ec9a2)
- [自作PCの組み立て方　ベアメタルで構築するKali Linux【構築編】](https://qiita.com/Brutus/items/a35654b7644fb358b9cd)