土日の勉強ノート

AI、機械学習、最適化、Pythonなどについて、技術調査、技術書の理解した内容、ソフトウェア/ツール作成について書いていきます

VirtualBoxにParrotOS(OVA)をインストールする

今回から、「ハッキング・ラボのつくりかた 完全版 仮想環境におけるハッカー体験学習」を参考書として、セキュリティについて学んでいきます。

今回は、ParrotOS というペネトレーションテスト(サイバー攻撃手法でシステムに侵入を試みることでセキュリティレベルを評価する取り組み)向けの OS の環境構築を行います。

同じく、ペネトレーションテスト向けの OS として、Kali Linux がありますが、今回の参考書では ParrotOS が使われています。理由は、Kali Linux は、UI が大きく変わる傾向があり、本に書かれてることが使えなくなる可能性が高いためと書かれていました。

それでは、やっていきます。

参考文献

はじめに

冒頭にも言った通り、今回は、ParrotOS のインストールと環境構築を行います。

ParrotOS(OVA)のインストール

ParrotOS をインストールする方法として、一般的なのは、ISO ファイルをダウンロードして、イチからインストールを行う方法だと思います。

しかし、今回は、OVA を選択しました。理由は、インストール作業が不要であることと、VirtualBox 向けに最適化している、と書かれていたためです。

この記事に、OVA でインストールした結果や、問題があった場合はその内容を書きますので、参考になればと思います。

ParrotOS(OVA)ダウンロード

ParrotOS の公式サイトです。

parrotsec.org

では、早速ダウウンロードします。

ParrotOSのダウンロードページ
ParrotOSのダウンロードページ

その後、Virtual → Security → AMD64 を選び、Download をクリックし、VirtualBox と出るので、クリックします。

ParrotOS(OVA)のダウンロード
ParrotOS(OVA)のダウンロード

ダウンロードしたファイルは、約7.6GB でした。

このキャプチャに、ユーザ:parrot、パスワード:parrot と書かれていますが、正しくは、ユーザ:user、パスワード:parrot です。

ParrotOS(OVA)のインポート

既に VirtualBox が入っていて、OVAファイルと関連付けがされていれば、ダウンロードしたファイル(Parrot-security-6.1_amd64.ova)をダブルクリックするとインポートできます。

もし、OVAファイルの関連付けがされてない場合は、VirtualBox のメニューのファイル→仮想アプライアンスのインポートで同じことが出来ます。

インポートすると、以下のような画面になります。

CPU と RAM は、おそらく、可能な限り大きく設定するようになっているようです。しかし、参考書を見ると、仮想マシンを複数起動して実験するようなので、それぞれ半分ずつ(CPU:8→4、RAM:8192→4096)に減らしました。

設定が決まれば完了をクリックします。

OVAファイルのインポート
OVAファイルのインポート

ソフトウェアの使用許諾の確認が出るので、問題なければ同意するをクリックします。

ライセンスの確認
ライセンスの確認

しばらくインポートに時間がかかります。完了すると、VirtualBox に Parrot OS Security Edition が追加されていると思います。

ParrotOSがインポートされた
ParrotOSがインポートされた

VirtualBox の設定や、Ubuntu の初期設定については、以下の記事に細かく書いています。良かったら参考にしてください。

daisuke20240310.hatenablog.com

daisuke20240310.hatenablog.com

起動する前に、ホスト(Windows10)からアクセスできるように、ネットワークにホストオンリーアダプタを追加しておきます。ネットワークと書かれたところをクリックします。

アダプター1 は NAT が設定されているので、アダプター2 をクリックして、ネットワークアダプターを有効化にチェックを入れて、ホストオンリーアダプタを選択して、OK をクリックします。

ホストオンリーアダプタの追加
ホストオンリーアダプタの追加

ParrotOSを起動して設定する

早速 ParrotOS を起動してみました。なかなかカッコいいデスクトップですね。

ParrotOSを起動した
ParrotOSを起動した

それでは設定していきます。

ParrotOSの基本的な設定を行う

ParrotOS に関する設定を行っていきます。

ターミナルのフォントサイズの変更

まず、ターミナルを起動します。フォントが大きいです。

Edit → Profile Preferences をクリックします。

ターミナルの設定を開く
ターミナルの設定を開く

Use the system fixed width font のチェックを外し、Font をクリックして、サイズを 9 に設定しました。

フォントサイズを設定する
フォントサイズを設定する

タイムゾーンの設定

続いて、タイムゾーンを設定します。

デスクトップの左上のメニューの System → Administration → Time and Date をクリックします。

タイムゾーンの設定を開く
タイムゾーンの設定を開く

まず、Unlock をクリックしてパスワード(parrot)を入力すると編集できるようになります。Time zone をクリックすると、世界地図が出るので、日本の東京あたりをクリックすると、Asia/Tokyo に設定してくれます。

設定できたら Lock を押して、Close をクリックします。

Asia/Tokyoを選ぶ
Asia/Tokyoを選ぶ

キーボードの設定

次に、キーボードの設定を行います。System → Preferences → Hardware → Keyboard をクリックします。

キーボードの設定を開く
キーボードの設定を開く

Layouts を開き、Add をクリックします。Country で、Japan を選びます。すると、Variants が Japanese になります。Add をクリックします。

日本語キーボードを選択します
日本語キーボードを選択します

Japanese が追加されたと思いますので、もともとあった English (US) は Remove をクリックして削除しておきます。その後、Close をクリックして閉じます。

Japaneseを有効にする
Japaneseを有効にする

BASHの設定

Ubuntu と違って、~/.bashrc が使われません(ファイル自体はホームディレクトリにあるのに)。

~/.profile は読み込まれるので、ここに ~/.bashrc が読まれるように設定しておきます。

~/.profile の末尾に、以下を追記します。

if [ -f "${HOME}/.bashrc" ]; then
  . "${HOME}/.bashrc"
fi

再度ログインし直せば、~/.bashrc が読み込まれるようになります。

ソフトウェアのインストールと設定を行う

続いて、ソフトウェアの設定を行います。

OpenSSHサーバ

ホスト(Windows10)から SSH で接続するために、OpenSSH server の設定を行います。既にインストール済みのようですが、開始していませんので、自動起動するようにして、開始します。

$ apt list --installed | grep -i openssh

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

openssh-client/parrot6,parrot6-security,now 1:9.2p1-2+deb12u2 amd64 [installed,automatic]
openssh-server/parrot6,parrot6-security,now 1:9.2p1-2+deb12u2 amd64 [installed,automatic]
openssh-sftp-server/parrot6,parrot6-security,now 1:9.2p1-2+deb12u2 amd64 [installed,automatic]

$ systemctl status ssh
○ ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; disabled; preset: enabled)
     Active: inactive (dead)
       Docs: man:sshd(8)
             man:sshd_config(5)

$ sudo systemctl enable ssh
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ssh
Use of uninitialized value $service in hash element at /usr/sbin/update-rc.d line 26, <DATA> line 44.
insserv: warning: current start runlevel(s) (empty) of script `ssh' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (2 3 4 5) of script `ssh' overrides LSB defaults (empty).
insserv: Script `ssh' has overlapping Default-Start and Default-Stop runlevels (2 3 4 5) and (2 3 4 5). This should be fixed.
insserv: warning: current start runlevel(s) (empty) of script `ssh' overrides LSB defaults (2 3 4 5).
Use of uninitialized value $service in hash element at /usr/sbin/update-rc.d line 26, <DATA> line 44.
Created symlink /etc/systemd/system/sshd.service → /lib/systemd/system/ssh.service.
Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.service.

$ sudo systemctl start ssh

これで、Windows10 から SSH で接続できるようになりました。

sambaサーバ

samba は、中途半端な感じでインストールされてる感じでした。stack overflow にも出てましたが、一度削除してインストールすればいいようです。

$sudo apt install samba
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 samba : Depends: python3-samba (= 2:4.17.12+dfsg-0+deb12u1) but it is not going to be installed
         Depends: samba-common (= 2:4.17.12+dfsg-0+deb12u1) but 2:4.20.2+dfsg-6~bpo12+1 is to be installed
         Depends: samba-common-bin (= 2:4.17.12+dfsg-0+deb12u1) but it is not going to be installed
         Depends: samba-libs (= 2:4.17.12+dfsg-0+deb12u1) but 2:4.20.2+dfsg-6~bpo12+1 is to be installed
         Recommends: attr but it is not going to be installed
         Recommends: python3-markdown but it is not going to be installed
         Recommends: samba-vfs-modules but it is not going to be installed
         Recommends: samba-ad-provision but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

$ sudo apt remove samba-common samba-common-bin samba-libs python3-samba

$ sudo apt install samba
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libldb2 : Breaks: samba-libs (< 2:4.19.0~) but 2:4.17.12+dfsg-0+deb12u1 is to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

$ sudo apt remove libldb2

$ sudo apt install samba

なんとかインストールできたようです。設定して動かしてみます。

$ sudo pdbedit -a user
new password:
retype new password:
Unix username:        user
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-1148203777-202800493-3546339059-1000
Primary Group SID:    S-1-5-21-1148203777-202800493-3546339059-513
Full Name:
Home Directory:       \\PARROT\user
HomeDir Drive:
Logon Script:
Profile Path:         \\PARROT\user\profile
Domain:               PARROT
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          Thu, 07 Feb 2036 00:06:39 JST
Kickoff time:         Thu, 07 Feb 2036 00:06:39 JST
Password last set:    Tue, 23 Jul 2024 22:51:39 JST
Password can change:  Tue, 23 Jul 2024 22:51:39 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

$ sudo nano /etc/samba/smb.conf

$ sudo systemctl enable smbd.service
Synchronizing state of smbd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable smbd
Use of uninitialized value $service in hash element at /usr/sbin/update-rc.d line 26, <DATA> line 44.
insserv: warning: current start runlevel(s) (empty) of script `smbd' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `smbd' overrides LSB defaults (0 1 6).
Use of uninitialized value $service in hash element at /usr/sbin/update-rc.d line 26, <DATA> line 44.
Created symlink /etc/systemd/system/multi-user.target.wants/smbd.service → /lib/systemd/system/smbd.service.

$ sudo systemctl start smbd.service

設定して、samba を自動起動するようにして、起動すると、アクセスできました。

nanoエディタのキーバインド変更

使っていて気付いたのですが、nanoエディタのキーバインド(ショートカットキー)が、Ubuntu とは異なります。参考書によると、ParrotOS 独自の設定とのことです。これは最悪でした。

nanoエディタの設定ファイルは、/etc/nanorc にあります。また、/usr/share/nano に、いろいろ設定ファイルがあるようです。

Ubuntu の /etc/nanorc は、/usr/share/nano を参照しているのですが、ParrotOS の /etc/nanorc は、/usr/share/nano を参照していませんでした。

見比べるのも面倒なので、Ubuntu の /etc/nanorc で上書きしました。すると、Ubuntu で使ってるときと同じ感じになりました。これで、だいぶ楽になりました。

netcat

なぜか、netcat(ncコマンド)が入っていませんでした。

netcat は、いくつか種類があるようで、とりえあず、ネットでオススメしていた netcat-openbsd を入れておこうと思います。

$ sudo apt install netcat-openbsd
update-alternatives: using /bin/nc.openbsd to provide /bin/nc (nc) in auto mode

ncコマンドとして使えるようです。

ここまでで、とりあえず使えるようになりました。また、必要に応じて追記します。

おわりに

今回は、ParrotOS という Debian ベースのセキュリティ用の OS をインストールしました。

次回から、ハッキング・ラボのつくりかた 完全版 仮想環境におけるハッカー体験学習 を読みながら、セキュリティの理解を進めていきたいと思います。

最後になりましたが、エンジニアグループのランキングに参加中です。

気楽にポチッとよろしくお願いいたします🙇

今回は以上です!

最後までお読みいただき、ありがとうございました。