DominicBreuker / stego-toolkit

このプロジェクトは、 hackthebox.eu のようなCTFプラットフォームで見つけられるようなステガノグラフィのチャレンジを解くのに役立つ Dockerイメージです。イメージには、多くの一般的なツール (以下のリストを参照) と、簡単なものをチェックするのに使用できるいくつかのスクリーニング スクリプトがプリインストールされています (たとえば、check_jpg.sh image.jpg を実行して JPG ファイルのレポートを取得します)。

Docker build status

Hack The Box

Usage

最初に Docker をインストールしてください (How to).コンテナ内には data フォルダがマウントされており、そこに分析するファイルを置くことができます。

スクリプトを使用しない場合は、次の手順に従ってください。

  1. Build image (docker build -t <image_name> .) or pull from Docker hub (docker pull dominicbreuker/stego-toolkit)
  2. ファイルを /data (docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash)
  3. CLI tools and screening scripts on your files: ex.使用。 例えば、クイックレポートを作成するために check_jpg.sh image.jpg を実行したり、さまざまなツールやパスワードで隠されたデータを抽出してみるために brute_jpg.sh image.jpg wordlist.txt を実行したりします
  4. GUI ツールを実行したい場合は、以下の 2 つの方法のいずれかを使用します。
  • start_ssh.sh を実行し、X11 転送でコンテナに接続する
  • start_vnc.sh を実行し、ブラウザ経由でコンテナのデスクトップに接続する

詳細については、以下のセクションをチェックしてください:

  • どんなツールがインストールされているか? ここをクリック
  • ファイルを自動的またはブルートフォースですばやくスクリーニングするために実行できるスクリプトは何ですか? ここがポイント
  • Steganography のさまざまなサンプルを使用して、それらを破ることができるかどうかを確認するにはどうしたらよいですか。 こちらへ
  • コンテナ内で GUI ツールを実行するには? こちらへ

Demo

docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bashで開始。作業ディレクトリ /data でコンテナシェルにドロップされます。

animated demo gif

Tools

多くの異なるLinuxとWindowsツールがインストールされています。コマンドラインで使用できるツールもあれば、GUIサポートが必要なツールもあります!

コマンドラインインターフェースツール

これらのツールはコマンドラインで使用できます。コンテナを起動し、チェックしたいステガノグラフィーファイルをマウントするだけです。

を調べる

ツール 説明 使い方
ファイル どんなファイルがあるのかチェック file stego.jpg
exiftool メディアファイルのメタデータを調べる exiftool stego.jpg
binwalk 他のファイルが埋め込まれているかどうか調べる binwalk stego.jpg
文字列 ファイル内に読みやすい文字があるか調べる strings stego.jpg
最前面 埋め込み/付加ファイルから切り出す foremost stego.jpg
pngcheck PNG ファイルの詳細を取得する (または他のファイルであることを確認する) pngcheck stego.png
identify GraphicMagick ツールによりファイルがどの種類のイメージであるかが確認されます。 画像が破損しているかどうかもチェックします。 identify -verbose stego.jpg
ffmpeg ffmpeg はオーディオファイルの整合性をチェックし、情報やエラーを報告するために使用されます ffmpeg -v info -i stego.mp3 -f null - 。 ファイルを再コード化し、結果を捨てる

ステガノグラフィー検出ツール

ファイル内のステガノグラフィーを検出するために設計されたツールです。多くは、統計的なテストを行います。しかし、興味深い不規則性を見つけた場合、何を探すべきかのヒントを提供することがあります。

ツール ファイルの種類 説明 使い方
stegoVeritas 画像(JPG、JPEG、A4、A5、A6、A7、A8)、 画像は、”StegoVeritas “と呼ばれます。 PNG、GIF、TIFF、BMP) シンプルなものから高度なものまで、さまざまなチェックが可能です。 stegoveritas.py -hをチェックする。 メタデータのチェック、多数の変形画像の作成とディレクトリへの保存、ブルートフォースLSB、…。 stegoveritas.py stego.jpg ですべてのチェックを実行
zsteg 画像 (PNG, BMP) 各種 LSB stego を検出します。 また、openstego と Camouflage ツール zsteg -a stego.jpg ですべてのチェックを実行します
stegdetect Images (JPG) Stego ツールが使用されたかどうかを調べるために統計テストを実行します (jsteg, outguess, jphide, …). 詳細は man stegdetect を参照してください。 stegdetect stego.jpg
stegbreak 画像 (JPG) JPG画像用の猛烈なクラッカーです。 7783>, jphide, jsteg をクラックできると言っています。 stegbreak -t o -f wordlist.txt stego.jpg, outguess は -t o, jphide は -t p, jsteg は -t j を使ってください

実際に steganography を行うツール

メッセージを隠して後からそれを明らかにするのに使えるツールです。どんなツールが使われたのか、どんなパスワードが正しいのか、ヒントがあれば、これらのツールを試してみてください。いくつかのツールは、このDockerイメージで利用可能なブルートフォーススクリプトでサポートされています。

ツール ファイルの種類 説明 隠す方法 復元方法
AudioStego Audio(MP3) 動作の詳細はこちらのブログ記事で hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 hideme stego.mp3 -f && cat output.txt
jphide/jpseek 画像(JPG) ここからかなり昔のツールになりますが、このツールを使ってみました。 ここでは、オリジナルのものがずっとクラッシュしていたので、ここからのバージョンがインストールされています。 インタラクティブにパスフレーズを要求してきます! jphide cover.jpg stego.jpg secret.txt jpseek stego.jpg output.txt
jsteg 画像 (JPG) LSB stego tool. メッセージを暗号化しません。 jsteg hide cover.jpg secret.txt stego.jpg jsteg reveal cover.jpg output.txt
mp3stego Audio (MP3) 古いプログラムです。 メッセージを暗号化し、そして隠します (3DES 暗号化!)。 Wine で動作する Windows ツールです。 WAV入力が必要です(特定のWAVファイルではエラーが出るかもしれません。) 重要:絶対パスのみ使用! mp3stego-encode -E secret.txt -P password /path/to/cover.wav /path/to/stego.mp3 mp3stego-decode -X -P password /path/to/stego.mp3 /path/to/out.pcm /path/to/out.txt
openstego 画像 (PNG) LSB stego algorithm (Check out this blog)がある。 openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png openstego extract -sf openstego.png -p abcd -xf output.txt (-xf を省くと元の名前のファイルを作成します!)
outguess Images (JPG) “redundant bits” to hide data を使用します。 ここから取得したold=outguess-0.13とパッケージレポジトリから取得したnew=outguessの2つのバージョンがあります。 outguess -k password -d secret.txt cover.jpg stego.jpg outguess -r -k password stego.jpg output.txt
spectrology オーディオ (WAV) オーディオファイルのスペクトログラムに画像をエンコードする。 TODO GUIツールを使う sonic-visualiser
stegano イメージ (PNG) 様々な(LSBベースの)方法でデータを隠蔽することが可能です。 また、いくつかのスクリーニング・ツールも提供します。 stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.png or stegano-red hide --input cover.png -m "secret msg" --output stego.png or stegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.png for various Generators (stegano-lsb-set list-generators) stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt or stegano-red reveal -i stego.png or stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt
Steghide Images (JPG, BMP) and Audio (WAV, AU) Versiatual and mature tools to encrypt and hide data.STEHIDE (画像) (JPG) (BD) (音声) (WAV) (AU) (JPG) (BMP) (AU) (BMP) (AU) (BMP)(BMP)。 steghide embed -f -ef secret.txt -cf cover.jpg -p password -sf stego.jpg steghide extract -sf stego.jpg -p password -xf output.txt
cloackedpixel Images (PNG) LSB stego LSB stego 画像用ツール cloackedpixel hide cover.jpg secret.txt password 作成 cover.jpg-stego.png cloackedpixel extract cover.jpg-stego.png output.txt password
LSBSteg 画像(PNG.LS) 画像のためのツール。 BMP, …) の圧縮されていないフォーマット 非常に素晴らしく読みやすい Python コードのシンプルな LSB ツール LSBSteg encode -i cover.png -o stego.png -f secret.txt LSBSteg decode -i stego.png -o output.txt
f5 画像 (JPG) F5 Steganographic Algorithm with detailed info on the process f5 -t e -i cover.jpg -o stego.jpg -d 'secret message' f5 -t x -i stego.jpg 1> output.txt
stegpy Images (PNG, GIF, BMP, WebP), Audio (WAV) LSB方式による簡易ステガノグラフィープログラム stegpy secret.jpg cover.png stegpy _cover.png

Steganography GUI tools

以下のすべてのツールにはGUIがついていてコマンドラインでは使用不可です。これらを実行するには、コンテナ内でX11サーバを利用可能にする必要があります。

  • run start_ssh.sh でSSHサーバを起動する。 その後 X11 転送で接続します。 ホスト上にX11サーバが必要です!
  • run start_vnc.sh でVNCサーバ+クライアントを起動します。 その後、ブラウザでポート 6901 に接続すると、Xfce デスクトップが表示されます。 ホストへの依存はありません!

あるいは、コンテナ内で X11 を利用できるようにする他の方法を見つけます。 多くの異なる方法が可能です (たとえば、UNIX ソケットをマウントする)。

ツール ファイルタイプ 説明 開始方法
ステグ 画像(JPG、TIFF, PNG、BMP) 多くのファイルタイプを扱い、様々な方法を実装しています steg
Steganabara(元のリンクは壊れています) 画像(???) 何か見つかるまで画像を相互変換する steganabara
Stegsolve 画像 (???) 画像を相互変換、配色の個別表示、… stegsolve
SonicVisualiser Audio (???) オーディオファイルを波形で視覚化、スペクトログラムを表示、……. sonic-visualiser
Stegosuite 画像 (JPG, GIF, BMP) 画像中のデータを暗号化し隠すことが可能です。 stegosuite
OpenPuff 画像、オーディオ、ビデオ(多くのフォーマット) 長い歴史を持つ洗練されたツールです。 現在もメンテナンス中。 Windows で動作するツール。 openpuff
DeepSound オーディオ (MP3, WAV) Mr. Robot 自身も信頼するオーディオステゴ・ツール。 Wine で動作する Windows ツール (非常にやっかい、VNC が必要で仮想デスクトップで動作、MP3 は DLL がないため壊れている!) deepsound VNC セッションのみ
cloackedpixel-analyse 画像 (PNG) LSB stego visualization for PNG – 画像中の不審なランダム LSB 値 (0 と近い値、2 と近い値) を検出するのに、このツールを使用することである程度までは検出可能です。5 に近い値は暗号化されたデータが埋め込まれていることを示すかもしれません) cloackedpixel-analyse image.png

スクリーニング スクリプト

上記の多くのツールは GUI との相互作用を必要としません。そのため、いくつかのワークフローを自動化することで、隠されたメッセージを含む可能性のあるファイルの基本的なスクリーニングを簡単に行うことができます。

それぞれのファイルタイプに対して、2種類のスクリプトがあります:

  • XXX_check.sh <stego-file>: 基本的なスクリーニングツールを実行してレポートを作成します (+ 場合によっては、レポートがファイルになったディレクトリ)
  • XXX_brute.sh <stego-file> <wordlist>: ステゴファイルからワードリスト (cewl, john および crunch はリストを作成するためにインストールされます – 小さいリストを維持) を使用してさまざまなツールで隠れたメッセージを抽出しようと試みます。

以下のファイルタイプをサポートしています:

  • JPG: check_jpg.h および brute_jpg.sh (ブルートランニング steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)
  • PNG: check_png.h および brute_png.sh (ブルートランニング openstego および stegoveritas.py -bruteLSB)

Wordlist generation

上記のブルートフォーススクリプトはワードリストが必要です。rockyouのような巨大な標準単語リストを使っても、あまり意味がないように思われます。より可能性の高いシナリオは、パスワードが何であるか直感的に分かるが、正確には分からない場合です。

このような場合のために、単語リストを生成するツールがいくつか含まれています。 いくつかのパスワード候補で基本ワードリストを作成し、john を使ってそれらの多くのバリエーションを作成します。 広範囲なルール (~x1000) を適用するには john -wordlist:/path/to/your/wordlist -rules:Single -stdout > /path/to/expanded/wordlist を、縮小されたルールセット (~x50) には john -wordlist:/path/to/your/wordlist -rules:Wordlist -stdout > /path/to/expanded/wordlist を使います。

  • crunch: あるパターンを持っていれば、小さなワードリストを生成することができます。 例えば、1984で終わる6文字のパスワードを知っている場合、crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984を使うと、aa1984, ab1984, … zz1984までの26 * 26 = 676個のパスワードが生成されます。 書式はcrunch <min-length> <max-length> <charset> <options>で、テンプレート化オプションを使用しました。 crunchが同梱している文字セットはless /usr/share/crunch/charset.lstをご覧ください。
  • CeWL: ウェブサイトがパスワードに関連していることがわかっている場合、ワードリストを生成することができます。 例えば、ドナルド・トランプの写真に暗号化された隠しメッセージが含まれていると疑われる場合、cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trumpを実行します。 このコマンドはサイトをスクレイピングし、少なくとも8文字以上の文字列を抽出します。
  • Steganography examples

    画像には、それぞれ異なる形式のサンプル画像と音声ファイルが含まれています。

    • /examples/ORIGINAL.jpg
    • /examples/ORIGINAL.png
    • /examples/ORIGINAL.mp3
    • /examples/ORIGINAL.wav

    また、隠しメッセージ(「これは非常に秘密のメッセージです!」)を組み込むために実行できるスクリプト /examples/create_examples.sh が含まれています。「このスクリプトを実行すると、/examples/stego-filesにこれらのファイルがあり、どのツールがメッセージの埋め込みに使われたかを示す名前が表示されます。

    GUI とコンテナ

    デフォルトでは、X11 サーバーが利用できないため、GUI ツールを Docker コンテナで実行することはできません。もし、

    • Linux で実行する場合、おそらく X11
    • Mac OS で実行する場合、Xquartz (brew install Xquartz)
    • Windows で実行する場合、問題があります

    この方法で行きたい場合、SSH による X11 転送を使用します。 コンテナ内でstart_sshを実行してサーバを起動します。コンテナの起動時にポート22を公開することを確認します。

    X11 に依存しないために、イメージには TigerVNC サーバーと noVNC クライアントが付属しています。 これを行うには、コンテナ内で start_vnc.sh を実行してサーバーとクライアントを起動し、コンテナの起動時にポート 6901 を公開していることを確認して docker run -p 127.0.0.1:6901:6901 ...localhost:6901/?password=<the_password> (スクリプトがパスワードを表示します) に進みます。

    Using SSH with X11 forwarding

    animated demo gif - SSH + X11

    GIF 内にはコピー & ペースト用のコマンドを表示しています。

    # in 1st host shelldocker run -it --rm -p 127.0.0.1:22:22 dominicbreuker/stego-toolkit /bin/bash# inside container shellstart_ssh.sh# in 2nd host shell (use it to launch GUI apps afterwards)ssh -X -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@localhost

    Using Browser and VNC

    animated demo gif - Browser + VNC

    Commands in GIF for copy & paste:

    # in 1st host shelldocker run -it --rm -p 127.0.0.1:6901:6901 dominicbreuker/stego-toolkit /bin/bash# inside container shellstart_vnc.sh# in browser, connect with: http://localhost:6901/?password=<password_from_start_vnc>

    Link collection

    Useful Steganography links:

    • you must be surpass the codes….これは、ステガノグラフィーに役立つリンク集です。 Eric Harshbargerのチートシートには、多くの異なるコードが含まれています。
    • ワークフロー、探すべきもの、一般的なツールを説明したチートシート:クリック
    • Forensics CTF guide with lots of ideas for stego challenges: クリック
    • 美しいポスターとしてのファイルフォーマットの説明:クリック

    コメントを残す

    メールアドレスが公開されることはありません。