今回は、HTB(Hack The Box)Labの「Starting Point」のTier 0マシン「Dancing」を攻略していきます。

「Dancing」は、SMB(Server Message Block)を題材にしたマシンです。

マシンを攻略する前に、SMBについて簡単に調べておくと、効率的に学習を進められます。


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

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


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

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

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


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

1.「Dancing」の学習準備

まずは、以下の手順に従って、「Dancing」の学習準備を済ませましょう。



上記の手順は、別の「Starting Point」マシン攻略でも流れは共通です。

今回初めて「HTBのマシン攻略」に触れるという方は、以下の記事で学習準備について詳しく解説しているので、参考にしてください。


サイバーセキュリティ入門‐実践編1|実際にHTBのマシン「Meow」を攻略してみよう


回答時の注意点

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

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

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


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


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


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

設問の意味は、「SMBという略語の正式名称は何ですか?」です。


Task1の正解は「Server Message Block」です。


SMBは、主にWindowsで使われる通信プロトコルです。

SMBを使うことで、ネットワークを介して、ファイル共有やプリンターへの接続ができます。


3.Task2「What port does SMB use to operate at?」

設問の意味は、「SMBはどのポートを使用しますか?」です。


Task2の正解は「445」です。


4.Task3「What is the service name for port 445 that came up in our Nmap scan?」

設問の意味は、「ポートスキャンで検出された445番ポートのサービス名は何ですか?」です。


この設問は、実際にマシンに接続して答えを見つけます。

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

$ nmap -sV {IPアドレス} 

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


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

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

上記の「445/tcp  open  microsoft-ds?」から、「445番ポートが解放されており、そこでmicrosoft-dsというサービスが稼働している」ということが分かりました。

よって、Task3の正解は「microsoft-ds」です。


5.Task4「What is the 'flag' or 'switch' that we can use with the smbclient utility to 'list' the available SMB shares on Dancing?」

設問の意味は、「Dancing(マシン)で利用可能なSMB共有を一覧表示するために、smbclientユーティリティで使用できるコマンドは何ですか?」です。


ターミナルで、以下のコマンドを実行して、smbclientユーティリティで使用できるコマンド一覧を表示してみましょう。

$  smbclient -?


すると、以下のように表示されます。

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

「-L, --list=HOST Get a list of shares available on a host」という記述から、「-Lというコマンドで、ホスト上で利用可能なSMB共有のリストを取得できる」ということが分かりました。

よって、Task4の正解は「-L」です。


6.Task5「How many shares are there on Dancing?」

設問の意味は、「Dancing(マシン)で利用可能なSMB共有は、いくつありますか?」です。


先ほどTask4でヘルプを見た結果、「-L」というコマンドで、利用可能なSMB共有のリストを出せることが分かりました。

では、実際にターミナルで、以下のコマンドを実行してみましょう。

$  smbclient -L{IPアドレス}


すると、以下のように表示され、パスワードの入力を求められます。

https://i.gyazo.com/65cb08dcab2f394ec25d3b42e7d42c9d.png

しかし、パスワードはわかりません。

とりあえず、適当な文字列を入力してみましょう。

すると、認証に成功し、以下のようなリストが表示されます。

https://i.gyazo.com/3eafa34de09511d1793b085afadaeaca.png

リストからは、「ADMIN$」「C$」「IPC$」「WorkShares」の4つが利用可能であることが分かります。

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


7.Task6「What is the name of the share we are able to access in the end with a blank password?」

設問の意味は、「パスワードなしでアクセスできる共有ディレクトリの名前は何ですか?」です。


では、先ほど取得した利用可能なSMB共有のリストを使って、各共有ディレクトリに、パスワードなしでアクセスできるか実際に試してみましょう。

https://i.gyazo.com/9dbdd663e8edf63cb4dc1fc3f7630486.png

ターミナルを開いて、以下のコマンドを各Sharenameで実行します。

$ smbclient  //{IPアドレス}/{Sharename}


すると「WorkShares」だけは以下の通り、空欄あるいはパスワードなしで、接続できることが分かりました。

https://i.gyazo.com/19315a7da94732b13792e8b8c489ec54.png

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


Sharenameの末尾の「$」について

Sharenameの末尾に、「$」がついているものと、ついていないものがあります。

「$」の有無の違いは以下の通りです。


  • 「$」がついている:「隠し共有」と呼ばれるディレクトリ。ファイルパスを直接指定しないと表示されない。
  • 「$」がついていない:通常共有。


上記でいえば、「ADMIN$」「C$」「IPC$」が隠し共有で、「WorkShares」が通常共有です。


8.Task7「What is the command we can use within the SMB shell to download the files we find?」

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


Task7の正解は「get」です。

9.Submit Flag

まずは、以下のコマンドで、SMBに接続します。

$ smbclient  //{IPアドレス}/WorkShares


では「ls」コマンドで、現在のディレクトリ(カレントディレクトリ)にどのようなフォルダやファイルがあるか、調べてみましょう。

すると、以下のようなリストが表示されます。

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

上記からは、カレントディレクトリには、「Amy.J」「James.P」という2つのディレクトリが存在することが分かります。


ではまず、「Amy.J」ディレクトリに何があるか調べてみましょう。

以下のコマンドで、「Amy.J」ディレクトリに移動できます。

cd "/Amy.J"


先ほどと同様に「ls」コマンドを実行すると、以下のようなリストが表示されます。

https://i.gyazo.com/4584ba53c12fbe15a2f9a2125654c236.png

リストをみると「worknotes.txt」というテキストファイルが存在するようなので、以下のコマンドで、中身を確認してみましょう。

more worknotes.txt


すると、以下のように、テキストファイルの内容が表示されます。

中身は、課題に関係ないようなので、「q」と入力して表示を終了しましょう。

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

では、以下のコマンドで、元(1つ上の階層)のディレクトリに、戻りましょう。

cd "../"


次は「James.P」ディレクトリに何があるか調べます。

以下のコマンドで、「James.P」ディレクトリに移動しましょう。

cd "/James.P"


続いて「ls」コマンドで何があるか調べます。

すると、以下のようなリストが表示されます。

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

目当ての「flag.txt」が見つかりました。

「more」コマンドで、「flag.txt」の中身を確認すると、以下のようなランダム文字列が記載されていました。

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

このランダム文字列(今回であれば「5f61c10dffbc77a704d76016a22f1664」)を、「Submit root Flag」に入力すれば、「Dancing」マシンの攻略完了です。

お疲れ様でした。


10.あとがき

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


  • SMB(Server Message Block)の基礎知識
  • SMBの脆弱性を利用した侵入方法


などを学習しました。

今回使用した「cd」「ls」といったコマンドは、LinuxOSのディレクトリ操作でよく使うもので、覚えておきましょう。

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