今回から、「ハッキング・ラボのつくりかた 完全版 仮想環境におけるハッカー体験学習」を参考書として、セキュリティについて学んでいきます。
今回は、ParrotOS というペネトレーションテスト(サイバー攻撃手法でシステムに侵入を試みることでセキュリティレベルを評価する取り組み)向けの OS の環境構築を行います。
同じく、ペネトレーションテスト向けの OS として、Kali Linux がありますが、今回の参考書では ParrotOS が使われています。理由は、Kali Linux は、UI が大きく変わる傾向があり、本に書かれてることが使えなくなる可能性が高いためと書かれていました。
それでは、やっていきます。
参考文献
はじめに
冒頭にも言った通り、今回は、ParrotOS のインストールと環境構築を行います。
ParrotOS(OVA)のインストール
ParrotOS をインストールする方法として、一般的なのは、ISO ファイルをダウンロードして、イチからインストールを行う方法だと思います。
しかし、今回は、OVA を選択しました。理由は、インストール作業が不要であることと、VirtualBox 向けに最適化している、と書かれていたためです。
この記事に、OVA でインストールした結果や、問題があった場合はその内容を書きますので、参考になればと思います。
ParrotOS(OVA)ダウンロード
ParrotOS の公式サイトです。
parrotsec.org
では、早速ダウウンロードします。
その後、Virtual → Security → AMD64 を選び、Download をクリックし、VirtualBox と出るので、クリックします。
ダウンロードしたファイルは、約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)に減らしました。
設定が決まれば完了をクリックします。
ソフトウェアの使用許諾の確認が出るので、問題なければ同意するをクリックします。
しばらくインポートに時間がかかります。完了すると、VirtualBox に Parrot OS Security Edition が追加されていると思います。
VirtualBox の設定や、Ubuntu の初期設定については、以下の記事に細かく書いています。良かったら参考にしてください。
daisuke20240310.hatenablog.com
daisuke20240310.hatenablog.com
起動する前に、ホスト(Windows10)からアクセスできるように、ネットワークにホストオンリーアダプタを追加しておきます。ネットワークと書かれたところをクリックします。
アダプター1 は NAT が設定されているので、アダプター2 をクリックして、ネットワークアダプターを有効化にチェックを入れて、ホストオンリーアダプタを選択して、OK をクリックします。
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 をクリックします。
キーボードの設定
次に、キーボードの設定を行います。System → Preferences → Hardware → Keyboard をクリックします。
Layouts を開き、Add をクリックします。Country で、Japan を選びます。すると、Variants が Japanese になります。Add をクリックします。
Japanese が追加されたと思いますので、もともとあった English (US) は Remove をクリックして削除しておきます。その後、Close をクリックして閉じます。
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 をインストールしました。
次回から、ハッキング・ラボのつくりかた 完全版 仮想環境におけるハッカー体験学習 を読みながら、セキュリティの理解を進めていきたいと思います。
最後になりましたが、エンジニアグループのランキングに参加中です。
気楽にポチッとよろしくお願いいたします🙇
今回は以上です!
最後までお読みいただき、ありがとうございました。