やりたいこと
M1/M2 Mac に VM で Kali Linux を立ち上げ、Nessus から派生した OSS な脆弱性スキャンツール OpenVAS をインストールする。
環境等
- Apple M2 Max
- Ventura 13.4.1 (c)
- UTM 4.2.5 (81)
- Kali Linux 2023.2a
- OpenVAS: 22.4.1
UTM をインストール
VirtualBox の Apple Silicon 用は、Developer Preview で、試してみたけど良くなかったのでやめ(いまダウンロードページに行ったら見当たらない)、UTM を利用することにした。
まずは、UTM をダウンロードする。
サイトからダウンロードすると無料、AppStore からダウンロードすると 10 ドルくらい。どちらも同じもののようだ。ファンになったら寄付もできるよくらいのスタンスが気持ち良い。知らんけど。
インストールで躓くことはないと思われるので、省略。
UTM の使い方は、基本的には、iso イメージを取ってきて、それを実行するだけだ。
インストール中に、パーティションがどうとか諸々あってちょっと不安になるが、Host マシン自体のシステムには何の変更も行われないので、気軽にトライして良い。
Kali Linux をインストールする
まずは、Kali Linux のインストールイメージをダウンロードする。
Apple Silicon (ARM64) のものをダウンロードすれば良い。
どうしても以前の特定のバージョンが欲しい人は、こちらから。
今回は、2023.2a をインストールする。2022.2 以外手順は同じだ。
基本的な手順は、M1 Mac に Kali Linux 2022.2 をインストールする以下動画を参考にした。
この動画の説明に、2022.2 以外は UTM では動かないと書いてあるが、そんなことはないし、apt upgrade するとぶっ壊れて不便なので、最新版を入れる。
2022.2 以外をインストールしようとすると、インストールイメージを起動しても何も進まない。Kali Linux に限らず、こうなってしまう場合の対処方法は、Built-in Terminal で接続する。
イメージをロードしたら、設定で Devices > + New > Serial を追加する。
これでインストールイメージを起動すると Window が 2 つ立ち上がるので、動く方で進めれば良い。
インストールが完了したら、この設定は不要なので、Remove してしまって良い。何かの理由でまた利用したくなったら、再度追加すれば良い。
というわけで、無事インストール完了。upgrade しても平気だ。
OpenVAS をインストール・設定する
まずは、OpenVAS をインストールする。
$ sudo apt install openvas
このあと設定、設定確認の流れだが、失敗する。
$ sudo gvm-setup
と打つと、初っ端で PostgreSQL 関連でエラーが出る。エラーが出てもそのまま進むが、結果失敗するので、止めてしまって良い。最後まで見て、sudo gvm-check-setup
とすると、出来てないと言われるだけ。
Permission を付与する
今回は、ユーザは kali で作ったので、以下 kali で進めるが適宜読み替えてください。
could not change directory to "/home/kali"
エラー内容は、permission がなくて書き込めないというエラー。sudo
なのにと思うが、postgres
ユーザが書き込めないという話しなので、権限を与える。
$ chmod og+rX /home /home/kali
collation version を一致させる。
再度、sudo gvm-setup
をすると今度は別のエラーが出る。
エラーメッセージをメモるのを忘れたが、collation version mismatch
というエラーが出る。ググると、エラーメッセージに HINT がついていて、そこに答えが書いてあるみたいだが、そんなものはなかったような気がする。
この時点で、PostgreSQL は起動しているはずだが、起動していない場合は、起動して入る。
$ sudo systemctl start postgresql
$ sudo -u postgres psql
psql (15.3 (Debian 15.3.0+deb12u1))
\l
で確認すると、postgres, template0, template1
の 3 つの Database が確認できる。gvm-setup
で作成されるはずの gvmd
はまだない。
Collation version を一致させる。
ALTER DATABASE postgres REFRESH COLLATION VERSION;
ALTER DATABASE template1 REFRESH COLLATION VERSION;
template0 だったか template1 だったかアヤフヤ。どっちかは失敗する。このあと作る gvmd は template を元に?作成されるので、ALTER DATABASE は必要ない。
gvmd データベースを作成する
gvm-setup
で作成に失敗したので、手動にて。
$ sudo runuser -u postgres -- /usr/share/gvm/create-postgresql-database
OpenVAS を設定する
これで準備が整ったので、再度
$ sudo gvm-setup
を実行すると、時間はかかるが、今度はうまく行く。
$ sudo gvm-check-setup
...
It seems like your GVM-22.4.1 installation is OK.
admin パスワードを設定する
これで、インストール・セットアップが完了したので、ブラウザで、https://127.0.0.1:9392
にアクセスする。
おー、ちゃんと動いてると思うも、Username? Password?? 設定した覚えないけど…
gvm-setup
コマンドを実行した際に、PostgreSQL に admin
ユーザを作成し、そこでパスワードも設定されているはずなのだが、画面に出てきたかな?出てきていたかも知れないが、メモらなきゃと思うほどはっきりは出てこなかった。
という訳で設定する。sudo gvmd --user=admin --new-password=nimda
と打つと、特にエラーも出ないが Reset には失敗するので、
$ sudo -E -u _gvm gvmd --user=admin --new-password=nimda
これでパスワードのリセットが完了する。
Port List を取り込む
再度ブラウザで https://127.0.0.1:9392
にアクセスし、ログイン。
Scans > Tasks > Task Wizard で自分自身を Scan してみる。
Failed to find port_list ‘33d0cd82-57c6-11e1-8ed1-406186ea4fc5‘
というエラーがでる。
これは公式のドキュメントに解決方法が書いてある。
そのままコピペでやると失敗するので以下で。
$ sudo -E -u _gvm greenbone-feed-sync --type GVMD_DATA
$ sudo -E -u _gvm gvmd --rebuild-gvmd-data=all
これで、全て使えるようになったので、スキャン!
検知された笑
Happy Hacking!