このプロジェクトは、 hackthebox.eu のようなCTFプラットフォームで見つけられるようなステガノグラフィのチャレンジを解くのに役立つ Dockerイメージです。イメージには、多くの一般的なツール (以下のリストを参照) と、簡単なものをチェックするのに使用できるいくつかのスクリーニング スクリプトがプリインストールされています (たとえば、check_jpg.sh image.jpg
を実行して JPG ファイルのレポートを取得します)。
Usage
最初に Docker をインストールしてください (How to).コンテナ内には data
フォルダがマウントされており、そこに分析するファイルを置くことができます。
スクリプトを使用しない場合は、次の手順に従ってください。
- Build image (
docker build -t <image_name> .
) or pull from Docker hub (docker pull dominicbreuker/stego-toolkit
) - ファイルを
/data
(docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash
) - CLI tools and screening scripts on your files: ex.使用。 例えば、クイックレポートを作成するために
check_jpg.sh image.jpg
を実行したり、さまざまなツールやパスワードで隠されたデータを抽出してみるためにbrute_jpg.sh image.jpg wordlist.txt
を実行したりします - 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
でコンテナシェルにドロップされます。
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 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 -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
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
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: クリック
- 美しいポスターとしてのファイルフォーマットの説明:クリック