DeepSoundの秘密を暴く!deepsound2johnの使い方徹底解説

セキュリティツール

こんにちは! 👋 デジタルフォレンジックやCTF(Capture The Flag)の世界では、情報を隠蔽するテクニック「ステガノグラフィー」がしばしば登場します。その中でも、音声ファイルにデータを隠すツールとして「DeepSound」が知られています。

DeepSoundは、WAVE、FLAC、WMA Lossless、MP3(Windows Vista以降)などのオーディオファイルに、任意のファイルを埋め込むことができるソフトウェアです。埋め込まれたファイルは、AES-256で暗号化することも可能です。これにより、一見すると普通の音楽ファイルのように見えても、実は重要な情報が隠されている、という状況が生まれます。

しかし、もしDeepSoundで隠されたファイルのパスワードがわからなくなってしまったら?あるいは、セキュリティ調査やCTFの問題で、DeepSoundで保護されたファイルに遭遇したら?そんな時に役立つのが、今回ご紹介するdeepsound2johnです。

deepsound2johnは、強力なパスワードクラッキングツールであるJohn the Ripper(JtR)と連携し、DeepSoundでパスワード保護された音声ファイルからパスワードハッシュを抽出し、そのパスワードを解析(クラック)するためのツールです。

この記事では、deepsound2johnの基本的な使い方から、実際の使用例まで、詳しく解説していきます。これであなたもDeepSoundファイルのパスワード解析に挑戦できるようになるはずです!💪

DeepSoundとは? 🤔

deepsound2johnを理解する前に、まずDeepSoundについてもう少し詳しく見てみましょう。

DeepSoundは、jpinsoft.net(現在はGitHubにリポジトリが移行)によって開発された、Windows向けのフリーウェアです。主な機能は以下の通りです。

  • WAVE, FLAC, WMA, APE形式の音声ファイルに任意のファイルを隠蔽(ステガノグラフィー)
  • 隠蔽するファイルをAES-256で暗号化するオプション
  • 音声ファイルやオーディオCDトラックから隠蔽されたファイルを抽出
  • 音声ファイル形式の変換機能 (FLAC, MP3, WMA, WAV, APE, CDA 間の変換)
  • 音声ファイルへの著作権情報の埋め込み用途

DeepSoundでファイルを埋め込む際、パスワードを設定してAES-256暗号化を有効にすることができます。これにより、パスワードを知らない第三者は、たとえDeepSoundツールを持っていても、隠されたファイルを容易には抽出できません。

埋め込めるファイルのサイズは、選択する音声品質(Low, Normal, High)によって制限されます。例えば、”Normal”品質では、キャリアとなる音声ファイルのサイズの約1/4までのファイルを埋め込むことができます。

DeepSound自体は2014年頃にバージョン2.0が登場し、その後も開発が続けられ、2021年には.NET Framework 4.8への対応やUnicodeパスワード対応などを含むバージョン2.1がリリースされています。

注意点: DeepSoundで作成された音声ファイルは、WAVEやFLAC形式であれば、フォーマット変換を行っても埋め込まれたデータは保持されることが多いですが、音量ノーマライズなどの処理を行うとデータが破損する可能性があります。また、MP3などの非可逆圧縮形式に変換した場合もデータが失われる可能性があります。

deepsound2johnの役割と前提条件 🛠️

deepsound2johnは、John the Ripper (JtR) のツール群の一部として提供されているPythonスクリプトです。その主な役割は、DeepSoundで作成され、パスワードで保護された音声ファイル(特にWAVE形式が対象)を解析し、JtRが理解できる形式のパスワードハッシュを抽出することです。

抽出されたハッシュがあれば、あとはJtRの強力なパスワードクラッキング機能を使って、元のパスワードを特定することができます。

deepsound2johnを使用するための前提条件は以下の通りです。

  1. John the Ripper (JtR) のインストール:deepsound2johnはJtRの一部であるため、JtRがインストールされている必要があります。多くのLinuxディストリビューション(特にKali Linuxなどのペネトレーションテスト用)ではデフォルトで含まれているか、パッケージマネージャで簡単にインストールできます。WindowsやmacOS用のビルドも存在します。JtRにはいくつかのバージョンがありますが、「bleeding-jumbo」ブランチ(開発版)に含まれていることが多いです。 John the Ripper 公式サイト
  2. Python 3 環境: deepsound2johnはPython 3で書かれたスクリプトです。Python 3インタプリタが利用可能である必要があります。
  3. 解析対象の音声ファイル: DeepSoundで作成された、パスワード保護されている可能性のある音声ファイルが必要です。deepsound2johnは主にWAVE (.wav) 形式のファイルを対象としていますが、他の形式(例: MP3)からWAVE形式に変換したファイルでも動作することがあります。(例: ffmpeg -i input.mp3 output.wav

これらの準備が整っていれば、deepsound2johnを使ってパスワード解析を進めることができます。

deepsound2john の基本的な使い方 🚀

deepsound2johnの使い方は非常にシンプルです。基本的なコマンド形式は以下のようになります。

python3 /path/to/deepsound2john.py [対象の音声ファイル.wav] > [出力するハッシュファイル名.txt]

または、JtRの実行ディレクトリ (run ディレクトリなど) にパスが通っていれば、より簡単に実行できる場合もあります。

deepsound2john [対象の音声ファイル.wav] > [出力するハッシュファイル名.txt]

ここで、

  • /path/to/deepsound2john.py は、deepsound2john.py スクリプトが存在する実際のパスに置き換えてください。通常、John the Ripperのインストールディレクトリ内の run ディレクトリにあります。
  • [対象の音声ファイル.wav] には、解析したいDeepSoundのWAVEファイルを指定します。
  • > はリダイレクト演算子で、コマンドの標準出力をファイルに書き込みます。
  • [出力するハッシュファイル名.txt] には、抽出したハッシュを保存するファイル名を指定します。任意の名前で構いません。

例えば、secret.wav というファイルからハッシュを抽出し、hash.txt というファイルに保存したい場合は、以下のように実行します。

deepsound2john secret.wav > hash.txt

スクリプトが正常に動作し、ファイル内にDeepSoundのデータ構造(マジックヘッダーDSCFなど)とパスワードハッシュが見つかれば、hash.txt ファイルに以下のような形式のハッシュが出力されます。

secret.wav:$dynamic_1529$ea007a659e8e59ba2cb9d8fb5119413b718c5517

この出力形式は、John the Ripperが認識できるフォーマットになっています。

  • secret.wav: 元のファイル名(情報として含まれる)
  • $dynamic_1529$: John the Ripperが使用するフォーマット識別子。これはDeepSoundのハッシュ(内部的にはパスワードを特定の形式に変換したもののSHA-1ハッシュ)であることを示します。
  • ea007a659e8e59ba2cb9d8fb5119413b718c5517: 実際のパスワードハッシュ値(16進数表記)
ヒント: deepsound2john スクリプトが見つからない場合は、JtRのインストールディレクトリを探してみてください。多くの場合、/usr/share/john//opt/john/ などの下に run ディレクトリがあります。

もし対象ファイルがDeepSoundファイルでなかったり、破損していたりする場合、deepsound2john はエラーメッセージを出力するか、何も出力しないことがあります。

# 例: DeepSoundファイルではない場合
$ deepsound2john not_a_deepsound_file.wav > hash.txt
not_a_deepsound_file.wav does not appear to be a DeepSound file

この場合は、ファイルが本当にDeepSoundで作成されたものか、またはファイル形式(WAVEであるかなど)を確認してください。他の形式からWAVEに変換した場合は、変換が正しく行われたかも確認しましょう。

John the Ripperでハッシュをクラックする 💥

deepsound2johnでパスワードハッシュを抽出したら、いよいよJohn the Ripper (JtR) の出番です。JtRは様々なモード(単語リスト攻撃、ブルートフォース攻撃など)を駆使して、ハッシュから元のパスワードを特定しようと試みます。

基本的な使い方は以下の通りです。

john [ハッシュファイル名.txt]

例えば、先ほど作成した hash.txt を使ってクラックを開始するには、次のように実行します。

john hash.txt

JtRは自動的にハッシュの形式(この場合は dynamic_1529)を検出し、クラックプロセスを開始します。デフォルトでは、いくつかのクラッキングモード(Single Crack, Wordlist Mode, Incremental Mode)を順番に試します。

クラックが成功すると、パスワードが画面に表示されます。

$ john hash.txt
Using default input encoding: UTF-8
Loaded 1 password hash (dynamic_1529 [SHA1 128/128 AVX 4x])
Cost 1 (iteration count) is 1 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
ragerocks123     (secret.wav)     <-- 発見されたパスワード!
1g 0:00:00:05 DONE (2025-03-31 07:27) 0.1886g/s 1234Kp/s 1234Kc/s 1234KC/s ragerocks..password123
Use the "--show" option to display all of the cracked passwords reliably
Session completed

上記の例では、パスワード ragerocks123 が発見されました。

より効率的にクラックを行うために、パスワードに使われていそうな単語を集めたリスト(Wordlist)を指定することができます。有名なリストとして rockyou.txt などがあります。

john --wordlist=/path/to/wordlist.txt hash.txt

例として、Kali Linuxに含まれる rockyou.txt を使う場合は、以下のようになります。(パスは環境によって異なる場合があります)

john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

単語リスト攻撃は、辞書に載っている単語や、よく使われるパスワードが含まれている場合に非常に効果的です。

一度クラックに成功したパスワードは、JtRのポットファイル(john.pot)に保存されます。後でクラック済みのパスワードを確認したい場合は、--show オプションを使用します。

john --show hash.txt

これにより、hash.txt に含まれるハッシュに対応する、既にクラックされたパスワードが表示されます。

$ john --show hash.txt
secret.wav:ragerocks123

1 password hash cracked, 0 left
成功! ✨: パスワードがクラックできたら、そのパスワードを使ってDeepSoundツールで元の音声ファイルを開き、隠されたファイルを抽出することができます。

実践的な例:CTFシナリオ 🚩

deepsound2john は、特にCTF(Capture The Flag)競技のフォレンジック問題やステガノグラフィー問題で役立つことがあります。ここでは、架空のCTF問題を例に、deepsound2johnとJohn the Ripperを使った解析フローを見てみましょう。

CTFの問題として、mystery_sound.wav という音声ファイルが与えられました。ファイルの説明には「重要な情報が隠されているが、パスワードが必要だ」と書かれています。

まず、ファイルの種類を確認します。

file mystery_sound.wav

出力が WAVE audio … のようになれば、WAVEファイルであることが確認できます。 次に、音声ファイルにデータが隠されている可能性を考え、ステガノグラフィーに関連するツールを疑います。問題文やファイル名から「DeepSound」が使われている可能性が高いと推測します。(実際のCTFでは、strings コマンドやバイナリエディタでファイル内容を確認し、”DSCF”のようなDeepSound特有の文字列を探すこともあります。)

DeepSoundが使われていると仮定し、deepsound2john を使ってパスワードハッシュの抽出を試みます。

deepsound2john mystery_sound.wav > mystery_hash.txt

mystery_hash.txt に以下のようなハッシュが出力されたとします。

mystery_sound.wav:$dynamic_1529$a3eb15172cc7e6090a2eb32e6dc8c3bd30c39a02

抽出したハッシュファイルを使って、John the Ripperでパスワードクラックを開始します。まずはデフォルトモードで試してみます。

john mystery_hash.txt

しばらく待ってもパスワードが見つからない場合は、強力な単語リストを使ってみます。

john --wordlist=/usr/share/wordlists/rockyou.txt mystery_hash.txt

運が良ければ、このステップでパスワードが見つかります。例えば、ctfpassword というパスワードが発見されたとしましょう。

ctfpassword     (mystery_sound.wav)

クラックしたパスワード ctfpassword を使って、DeepSoundツール(Windows環境などが必要)で mystery_sound.wav を開きます。パスワードを入力すると、隠されていたファイル(例えば flag.txt)が表示され、抽出できるようになります。

抽出した flag.txt の中身を確認し、CTFのフラグを獲得します。 🎉

このように、deepsound2john は、DeepSoundで保護された音声ファイルに対するパスワード解析のプロセスにおいて、非常に重要な役割を果たします。

まとめとおわりに

今回は、DeepSoundでパスワード保護された音声ファイルからパスワードハッシュを抽出し、John the Ripperで解析するためのツール deepsound2john の使い方について詳しく解説しました。

deepsound2john は、以下の手順で使用します。

  1. John the Ripper と Python 3 を準備する。
  2. deepsound2john [対象ファイル.wav] > [ハッシュファイル.txt] コマンドでハッシュを抽出する。
  3. john [ハッシュファイル.txt] コマンド(必要に応じて --wordlist オプションなどを追加)でパスワードをクラックする。
  4. クラックしたパスワードを使って、DeepSoundツールで隠されたファイルを抽出する。

このツールは、特にCTF競技やデジタルフォレンジック調査において、DeepSoundによるステガノグラフィーが用いられている場合に非常に有効です。音声ファイルに隠された秘密を解き明かすための強力な武器となるでしょう。

ただし、パスワードクラッキングツールの使用には注意が必要です。必ず法的に許可された範囲で、倫理的な目的にのみ使用してください。他人のファイルやシステムのパスワードを無断で解析することは違法行為となります。

この記事が、deepsound2john を理解し、活用するための一助となれば幸いです。🕵️‍♀️🎶

参考情報

コメント

タイトルとURLをコピーしました