マルチメディア ステガノグラフィー の原理と検知について

01.概要

ステガノグラフィー (Steganography)は、画像や動画などのように見えるところに秘密を隠す隠匿方法である。古代ギリシャから密かにメッセージをやり取りする方法として使用され、9・11テロ当時、オサマ・ビンラディンがテロ犯とメッセージをやり取りする際にステガノグラフィーが使用され、世界的に問題視されるようになった。

デジタル時代が来てからステガノグラフィーも様々な方法で進化した。特にハッカーは単純に秘密のメッセージをやり取りする目的以外に不正コードを隠す際、ステガノグラフィー方法を使用している。

過去のステガノグラフィーは写真の中にデータを操作し、隠匿する方法を使用していた。最近はサイズが大きいデータを隠すために動画やオーディオなどを利用してデータを隠匿する。さらにマルチメディアの発展によって、一般人も手軽に超高画質の動画が作れて、動画自体のサイズも大きくなっているため、ステガノグラフィーは、そのデメリットでもあった表示されているメッセージに比べてファイルのサイズが大きくなる問題を隠すことができるようになった。
そのため、動画のステガノグラフィーは隠匿するデータが大きい場合、最適な隠匿場所として利用されている。
専用の機器など要らず、仮想のボリューム(Volume)を作成し、動画のステガノグラフィーを作る方法と、これを類推する方法について整理したいと思っている。

動画のステガノグラフィーはスペースを活用した方法と、周波数を活用した方法があり、動画を活用する方法を実施するためには徹底的に準備された動画と時間が必要である。そのため、検知される確率は下がったが、専門家ではないと実際に使用は難しかった。

方法動画ステガノグラヒィー方法の説明
スペースステガノグラヒィー映像のピクセル値を利用してステガノグラヒィーの映像を作成 人の目の限界を活用して空間の内にLBS(最下位ビット)を変造
周波数ステガノグラヒィーJPEG圧縮の際、DCT(Discrete Cosine Transform)以降、量子化をしたLSB(最下位ビット)を操作してデータを隠す方法 JPEG圧縮の際、行われる体表的な動画ステガノグラヒィー方法

02.マルチメディア ステガノグラフィー

マルチメディアステガノグラヒィーは動画ファイルの中に隠しボリュームデータが埋め込まれる、今回の検証では「VeraCrypt」を用いたもので検証を行う。

1)VeraCrypt

VeraCryptは暗号化された仮想のボリューム(Volume)を作成し、ボリュームに保存されているデータを保護する暗号化プログラムである。VeraCryptでボリュームに保存されているデータにアクセスするためにはVeraCryptプラグラムが必要で、ボリュームを作成する際のパスワードを入力してマウントする。

VeraCryptの機能である隠しボリューム(Hidden Volume)は既に暗号化されたボリューム以外に、追加で隠しボリュームを作成することを意味している。図1-1のように一般ボリューム(Normal Volume)は隠しボリュームがない暗号化されているボリュームを意味し、図1-2のように隠しボリュームは一般ボリュームのスペースに追加された暗号化ボリュームを意味している。
隠しボリュームのメリットは存在の確認ができないことである。その理由は隠しボリュームが分からない場合、その領域は一般ボリュームのランダムなデータに埋め込められ、隠しボリュームとランダムに埋め込まれているデータの区別ができないためである。

VeraCryptはパスワードが入力されたら復号化を実施し、万が一パスワードが間違った場合は隠しボリュームを暗号化する。一般ボリュームはDecoyで適当に難しいパスワードを設定し隠しボリュームはパスワードの難易度を上げ、データを精巧に隠すことができる。

一般ボリューム
【▲ 図1-1 一般ボリューム(Normal Volume)の構造】
隠しボリューム
【▲ 図1-2 隠しボリューム(Hidden Volume)の構造】
隠しボリュームマウント
【▲ 一般ボリューム(Normal Volume)と隠しボリューム(Hidden Volume)のマウント】

2)MP4ファイル ステガノグラフィー の原理

よく見られているMP4の正式な名称はMPEG-4 part 14で、メディアコンテナフォーマット標準で高画質の動画を高い圧縮率で保存及び再生する技術である。MP4ファイルフォーマットは大きく、ヘッダー、メディアデータ、メディアヘッダーで構成され、ファイルの構造はデータとメタデータボックスで構造されている。

MP4ファイル構造
【▲ MPEG-4 Fileのデータ構造(Boxes/Atoms)】
ヘッダー説明
ftypファイルの互換性を確認するファイルタイプボックス
moovメディアの全てのデータを保存するムービーボックス(movie box)
mvhdムービーヘッダーボックス(movie header box)
mdat実際にメディアを保存するメディアデータボックス(media data box)
trak特定メディアのメタ情報
stsdトラックのデコーディングに必要なコーデック情報(sample description box)
sttsサンプルの時間(time-tosample box)
stszChunk内のサンプルのサイズ(sample size box)
stscChunk内のサンプルの数(sample to chunk box)
stcoChunkの位置(chunk offset box)

3)VeraCrypt ステガノグラフィー 方法

MP4ファイル構造の中でメディアデータ領域を修正し、データを隠匿する。VeraCryptで作ったコンテナファイルから外部ボリュームヘッダーとヘッダーバックアップ領域を削除し、MP4のメディアデータ領域を挿入する。メディアデータ領域に既存メディアデータを正常に実行させるために、仮のデータ(Fake Data)を隠しボリューム(Hidden Volume)ヘッダーの前に追加する。

ステガノグラフィー 構造
【▲ 図内の「TrueCrypt」は「VeraCrypt」の前身プラグラム(参考: MP4 Steganograpy:Analyzing and Detecting TCSteg)】
ステガノグラフィー moov
【▲ MP4ステガノグラヒィー】

4)VeraCryptステガノグラフィーの作成

MP4ファイルのメディアデータの領域を修正して隠したいデータを挿入する。再生されているステガノグラフィーファイルを作るためには現在公開されているPythonスクリプトであるtcsteg2.pyを使用する。

ステガノグラフィー スクリプト
【▲ tcsteg2.pyソースコードの一部(参考: keyj.empy.de)】

VeraCryptで作られたボリューム10MBのファイルに準備した動画に挿入し下記の図のボリュームのサイズ通り、ファイルのサイズが増えた。作られた動画は原本動画と一緒に再生され、VeraCryptでマウントも可能である。

ステガノグラフィー 隠しボリューム作成
【▲ ステガノグラヒィーの作成及び隠しボリュームのマウント】

5)VeraCryptステガノグラフィーの分析

MP4 InspectorのツールでMPEG-4 Fileの全般的な比較とデータの構造(Boxes/Atoms)を比較して分析してみた。
原本動画ファイルとステガノグラフィーのファイルを比較すると、両方ともMP4形式のシグネチャーを持ち、同じ再生時間と画質になる。
大きく変更されたところはファイルのサイズと新規でFree Boxが作成され、Boxの数が1つ増えた。

ステガノグラフィー 隠しボリューム検知
【▲ 原本動画(上)のMP4ファイル情報とステガノグラヒィー(下)のMP4ファイル情報】

構造の中、サイズが増加し隠しボリュームにmdat boxが追加されていることが確認できた。

ステガノグラフィー ファイルサイズ
【▲ mdatサイズの増加】

ここで注目が必要なのはMPEG-4 Fileフォーマットの中のstcoヘッダーである。stcoヘッダーはChunkの位置テーブルが入っており、moov(movie box)に位置する。このヘッダーはmdata(メディアデータ)の位置を順次的に参照するためにサンプルをマッピングしている。mdata boxはステガノグラフィーでサイズが増加しいるため、stcoが参照するオフセット値も変更されるようになる。

ステガノグラフィー オフセット
【▲ ステガノグラヒィーのstco値変更】

03.マルチメディア ステガノグラフィー の検知

1)MP4動画のステガノグラフィー検知の原理

動画の中にあるステガノグラフィーを検知することは難しいが、分析を通じて動画の中に隠しボリュームを探す方法は存在する。
下図のようにボリュームが挿入されることで、mdat boxが作成され、動画を通常通り再生させるためにstcoのChunk Offset値が変更されたことが確認できた。

正常的な動画のオフセット位置は65536から172032の間に存在し、図4-13のようにstcoのオフセットのスタート位置が65536から172032の間ではないと当該の動画がステガノグラフィーであることが疑える。

ステガノグラフィー オフセットスタート位置
【▲ 一般ボリューム(Normal Volume)と隠しボリューム(Hidden Volume)の実行】

2)MP4動画のステガノグラフィー検知

動画のファイル構造ビューアがインストールされていない場合、公開されているPythonのスクリプトを利用して分析することができる。
下図は動画のオフセットのスタート位置を探してくれるスクリプトの結果画面である。使用しているスクリプトはmdatのスタートされるオフセットの位置を計算し、当該の動画にステガノグラフィーの使用有無及び隠されているデータのサイズを大略に表示させる。

ステガノグラフィー 分析スクリプト
【▲ python-script-detect-hidden-dataのソースコード】
ステガノグラフィー 解析実行
【▲ python-script-detect-hidden-dataの結果】

04.結論

犯罪が多様に進化されていることでフォレンジックに関するニュースが良く出ている。特に最近はサイバー犯罪が社会的に大きな話題になり、年々増加している。このようなサイバー犯罪が知能的に発展しながら自分に不利なデータを消し、隠すためにステガノグラフィーも注目されている。

ステガノグラフィーは古代から続けられている方法であるが、現在ではデータの暗号化、サイバー犯罪、不正コードの流布など、様々な分野で活用されており、長い間、疑われないように技術も発展している。
ここまで動画のデータを直接隠匿し、隠匿したデータを探す方法に対して調べてみた。
現在持っている動画もステガノグラフィーファイルではないか疑う必要があると思う。

05.参考資料

[1] MP4 Steganography: Analyzing and Detecting TCSteg
https://dl.acm.org/doi/pdf/10.1145/2978178.2978181
[2] アンチフォレンジック分析 – 音声と動画に隠られているメッセージの分析
[3] Real Steganography with TrueCrypt
https://keyj.emphy.de/real-steganography-with-truecrypt/
[4] PreviewFilesmp4.py
https://www.forensicmag.com/product-release/2012/01/python-script-detect-hidden-data
[5] VeraCrypt – Documentation
https://veracrypt.codeplex.com/documentation

セキュリティトレンドやITトレンド、
お知らせなどを配信。

Share:

More Posts

コメント*
お名前*
メールアドレス*

コメント*

お名前*
メールアドレス*

Copyright 2020 © CYBERFORTRESS, INC. All rights Reserved.
Scroll Up