今回は、HTB(Hack The Box)の用意したTier 0のマシン「Fawn」を攻略していきます。

「Fawn」は、ファイル転送プロトコル(FTP)の脆弱性について学習できるマシンです。

まずは、問題を解く前に、FTPについて概要だけでも調べておくと良いでしょう。


なお、本記事では、Kali LinuxからHTBへVPN接続して、マシンを攻略します。

まだ、環境構築が済んでいない方は、以下の記事をご覧ください。


サイバーセキュリティ入門‐環境構築編1|VirtualBoxの導入

サイバーセキュリティ入門‐環境構築編2|Kali Linuxの導入と初期設定

サイバーセキュリティ入門‐環境構築編3|HTBのアカウント作成とVPN接続


※本サイトでは、HTBの記事作成ガイドラインに沿って、記事を作成しています。

1.「Fawn」の学習準備

学習ページにアクセスする

まずは、HTB Labsにログインしましょう。

https://i.gyazo.com/624fd77b8084f6e3082a7126de064898.png

次に、「Starting Point」タブをクリックし、

https://i.gyazo.com/335816fd9813e40e9c04459a23a77c36.png

「Tier 0 - Foundations」タブを開きます。

https://i.gyazo.com/67fb9418a81b0815c5eea6d7648f91e6.png

下にスクロールして、マシン一覧から、「Fawn」を探してクリックします。

https://i.gyazo.com/4d1fbd5294cdc9c617af826cf6c9c057.png

すると、今回学習に使う「Fawn」の学習ページが表示されます。

https://i.gyazo.com/a847aaecf397074c00560f2c68afbefe.png

マシンを起動する

では、「Fawn」のマシンを起動しましょう。

「Meow」の学習タスクのリスト上部の「Start Machine」をクリックします。

https://i.gyazo.com/e2f34035967c796b68fbfd5de30a9225.png

マシンの起動には5分ほど時間がかかるので、「Machine is spawning. Please stand by…」と表示されている間は、操作せずに待っていましょう。


マシンの起動に成功すると、IPアドレスが表示されます。

このIPアドレスは、マシンの攻略に必要なので、メモしておきましょう。

https://i.gyazo.com/cfc59ac8c6221db0f3ffe7314a8dadde.png

VPN接続する

マシンの起動に成功したら、VPN接続しましょう。

以前に、HTBにVPN接続している場合は、デスクトップの画面右上のネットワーク設定から「VPN Connections」を開き、以前追加したVPNをクリックして接続します。

https://i.gyazo.com/340f0ccb7ee785f386adaa3ea4a00535.png

無事に接続できていれば、ネットワーク設定アイコンの右側に、鍵のマークとIPアドレスが表示されます。

※「VPN connection has been successful established」という表示も出る場合があります。

https://i.gyazo.com/48ade16df952bbe98e46496cc58cc983.png

まだ、VPN接続の設定が済んでいない方は、「Connect with OpenVPN」をクリックしてVPN接続用の設定ファイルを、ダウンロードしましょう。

https://i.gyazo.com/5f6830664e2570c8677b3de4644c8df0.jpg

その後の手順は、前回の記事(サイバーセキュリティ入門‐環境構築編3|HTBのアカウント作成とVPN接続)を参考にしてください。

※「Connect with Pwnbox」から「Pwnbox」を起動して、学習を進めることもできます。


VPN接続が確立されると、以下のような表示に変わります。

https://i.gyazo.com/f124697dc0b736552eab9b2be156bf52.jpg

回答時の注意点

HTBのVPNに接続する際、フルトンネル(全ての通信が強制的にHTBにルーティングされる)になることがあります。

そうした場合、Webブラウザで開いている学習ページへのアクセスも「HTB内部ネットワーク経由」になり、接続が不安定になる場合があります。

その結果、「Task」や「Submit Flag」の送信時、通信エラーが発生する場合があります。


「Task」や「Submit Flag」の送信に失敗する場合は、以下の方法を試してみてください。


  • 一度VPN接続を切ってから、Task等を送信する
  • Kali Linux側のブラウザではなく、Windows側のブラウザで、Task等を送信する


3.Task1「What does the 3-letter acronym FTP stand for?」

設問の意味は、「FTPという3文字の略語の正式名称はなんですか?」です。


FTP(ファイル転送プロトコル)とは、ネットワーク上でファイルを送受信するための通信プロトコル(決まりごと)のことです。

FTPは古くからある通信プロトコルであり、Webサイトの公開や更新、ソフトウェア配布などに使用されています。


Task1の正解は「File Transfer Protocol」です。


4.Task2「Which port does the FTP service listen on usually?」

設問の意味は、「FTPは通常、どのポートで待機していますか?」です。


Task2の正解は「21」です。

5.Task3「FTP sends data in the clear, without any encryption. What acronym is used for a later protocol designed to provide similar functionality to FTP but securely, as an extension of the SSH protocol?」

設問の意味は、「FTPはデータを暗号化せずに平文で送信します。FTPと同様の機能を提供し、より安全に通信するために設計された、SSHを拡張して作られたプロトコルの略称はなんですか?」です。


Task3の正解は「SFTP」です。


SFTP(SSH File Transfer Protocol)とは

SFTPは、SSHで安全な通信路(トンネル)を作り、そのトンネル内で、ファイル操作をするプロトコルです。

なお、名前にFTPと付いていますが、技術的にはSSHを拡張して作られており、FTPの仕組みとは異なります。


6.Task4「What is the command we can use to send an ICMP echo request to test our connection to the target?」

設問の意味は、「ターゲットへの接続をテストするために、ICMPエコー要求を送信するには、どのようなコマンドを使用しますか?」です。


Task4の正解は「ping」です。

7.Task5「From your scans, what version is FTP running on the target?」

設問の意味は、「スキャン結果から判断すると、ターゲットマシンで実行されているFTPのバージョンは何ですか?」です。


この設問では、実際に「Fawn」マシンに対してポートスキャンを実施して、答えを見つけます。

まずは、ターミナルを開いて、以下のコマンドを実行して、ポートスキャンを行いましょう。

$ nmap -sV {IPアドレス}

※「-sV」は、ポートスキャン実行後、開放されているポートのバージョン検出を行うオプションです。


すると、以下のようなスキャン結果が返ってきます。

https://i.gyazo.com/1a3990d42870234c116939ce00340a08.png

スキャン結果からは、「21番ポートが開放されており、FTPのvsftpdというサービスのバージョン3.0.3が稼働している。」と読み取れます。

よって、Task5の正解は「vsftpd 3.0.3」です。


8.Task6「From your scans, what OS type is running on the target?」

設問の意味は、「スキャン結果から判断すると、ターゲットマシンで稼働しているOSの種類は何ですか?」です。


先ほど(Task5)で実行したポートスキャンの結果を見てみましょう。

https://i.gyazo.com/1a3990d42870234c116939ce00340a08.png

「Service Info: OS: Unix」という記述から、このマシンではUnixというOSが動いていることが分かります。

よって、Task6の正解は「Unix」です。


9.Task7「What is the command we need to run in order to display the 'ftp' client help menu?」

設問の意味は、「ftpクライアントのヘルプを表示するコマンドは何ですか?」です。


ftpクライアントのヘルプを表示するコマンドは

ftp -?

です。


実際にターミナルで実行してみましょう。

すると、以下のように、利用可能なオプション一覧が表示されます。

https://i.gyazo.com/0a59fb9d2bad698e7b12a42ccaef668e.png

よって、Task7の正解は「ftp -?」です。


10.Task8「What is username that is used over FTP when you want to log in without having an account?」

設問の意味は、「アカウントなしでFTPでログインできるユーザー名は何ですか?」です。


FTPには、匿名FTP(FTPanonymous)という仕組みがあります。

その名の通り、ユーザー名を「anonymous」とすると、どのようなパスワードでもログインできます。


よって、Task8の正解は「anonymous」です。


11.Task9「What is the response code we get for the FTP message 'Login successful'?」

設問の意味は、「FTPのメッセージ「Login successful」に対応するレスポンスコードは何ですか?」です。


FTPでは、コマンドを打ち込むと、レスポンスコード(サーバーから返ってくる3桁の数字で、通信状態を示す値。)が返ってきます。

ログイン成功時には230が、サーバーから返ってきます。


よって、Task9の正解は「230」です。


12.Task10「There are a couple of commands we can use to list the files and directories available on the FTP server. One is dir. What is the other that is a common way to list files on a Linux system.」

設問の意味は、「FTPサーバーで使用可能なファイルとディレクトリを一覧で表示するコマンドは、いくつかあります。1つはdirです。もう1つは何ですか?」です。


Task10の正解は「ls」です。


13.Task11「What is the command used to download the file we found on the FTP server?」

設問の意味は、「FTPサーバー上で見つけたファイルをダウンロードするコマンドは何ですか?」です。


Task11の正解は「get」です。


14.Submit Flag

まずは、ターミナルを開きましょう。


先ほど実施したポートスキャンの結果から、FTP用に21番ポートが開放されていることが分かっています。

https://i.gyazo.com/1a3990d42870234c116939ce00340a08.png

なので、以下のコマンドで、FTPに接続してみましょう。

$ ftp {IPアドレス}

すると、以下のようにログインユーザー名を求められるので、「anonymous」と入力します。

https://i.gyazo.com/51564c6431fdf1cfee4083c28f755c60.png

次に、ログインパスワードを求められるので、適当な文字列(今回は、0000を入力しました。)を入力しましょう。

https://i.gyazo.com/6959aece6d8b4316243aeae0ff5cde9f.png

ログインに成功すると、以下のようなメッセージが表示されます。

https://i.gyazo.com/52741f917d800c6a1886183743a89218.png

では次に、このFTPサーバーにどのようなファイルやフォルダがあるか「ls」コマンドで、調べてみましょう。

https://i.gyazo.com/4f12362b0d992deebb4aab6411c3edff.png

lsコマンドで、FTPサーバーに「flag.txt」というファイルがあることが分かりました。

では、getコマンドで、このファイルを取得しましょう。

https://i.gyazo.com/faca6907a5fc22a9f29ce4a9c24118bd.png

ダウンロードに成功していれば、ローカルの「kali」に「flag.txt」が存在しているはずです。

では、FTPを「quit」コマンドで、ログアウトして調べてみましょう。

ログアウトすると、デフォルトで現在地が「kali」になっているので、「cat」コマンドで「flag.txt」の中身を確認できます。

https://i.gyazo.com/5f0a05099a95875d12b0e13c5a6e5997.png

あるいは、デスクトップ画面の「File System」からでも、flag.txtの中身を調べられます。

https://i.gyazo.com/7e5fa1b2025a9e5fce9aa58e46558841.png

ファイルの中に記載されているランダムな文字列(今回であれば、035db21c881520061c53e0536e44f815)がflagです。

「Submit root flag」に入力しましょう。


これにて、Tier 0「Fawn」のマシン攻略完了です。

お疲れ様でした。


あとがき

今回は「Fawn」というマシンの攻略を通して、



などを学習しました。

また、前回に引き続き、Nmapを使ったネットワーク調査についても触れました。

今後も引き続き、「Starting Point」のマシンを攻略していくので、ぜひご覧ください。