LoginSignup
0
0

More than 1 year has passed since last update.

ADSについて調べてみた

Last updated at Posted at 2022-05-31

Windows OSのファイルシステムであるNTFSには
ADS(代替データストリーム)という機能がある。

これは元々、Windows OSがインターネット上からダウンロードしたファイルに
Tagをつけるための機能として備わっていた。

インターネット上からダウンロードしたファイルは、ZoneIdentifierという
データストリームタグをつけて、判別できるようにしている。

例えば、13720110006.pdf というファイルをインターネットからダウンロードしたとすると
13720110006.pdfというファイルが保存される際、13720110006.pdf:Zone.Identifier:$DATA
というデータストリームが作成される。

dirコマンドに /r のオプションをつけることで確認ができる。

C:\Users\****\Downloads>dir /r

 C:\Users\****\Downloads のディレクトリ

2021/01/22  17:43         1,233,916 13720110006.pdf
                                 26 13720110006.pdf:Zone.Identifier:$DATA
               1 個のファイル           1,233,916 バイト
               0 個のディレクトリ  132,648,939,520 バイトの空き領域

データストリームはファイルに付与される情報のため、ファイルそのものを調べても出てこない。
またファイルシステムが付与する情報のため、別のPCなどに移動すると消えてしまう。

データストリームの中身を見るには、< (入力のリダイレクト) を使用する。

例:
13720110006.pdf:Zone.Identifier:$DATA の中身を確認したい場合、

C:\Users\****\Downloads>more < 13720110006.pdf:Zone.Identifier:$DATA
[ZoneTransfer]
ZoneId=3

のようにコマンドを実行することで確認できる。
ZoneId=3 というのは、インターネットからダウンロードしたファイルというのを示している。

■本題

ZoneIdentifierはADSの一種であり、任意のデータストリームを作成することができる。

temp.txt というファイルを作り、任意のデータストリームを作成

C:\Users\kyuta\Downloads>echo This is sample > temp.txt

次にこの temp.txthidden_data というデータストリームを付与する。
やり方はいくつかあるが、最も簡単と思われるやり方が以下

C:\Users\****\Downloads>echo "This is the secret message" > temp.txt:hidden_data

hidden_data に "This is the secret message" というデータを付与した。

temp.txt:hidden_data というデータはHDD上に存在しているが、通常は見えない。

C:\Users\****\Downloads>dir temp.txt
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は C236-DF96 です

 C:\Users\****\Downloads のディレクトリ

2022/05/31  20:46                17 temp.txt
               1 個のファイル                  17 バイト
               0 個のディレクトリ  132,645,076,992 バイトの空き領域

dir /r コマンドで、存在を確認できる。

C:\Users\****\Downloads>dir /r temp.txt
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は C236-DF96 です

 C:\Users\****\Downloads のディレクトリ

2022/05/31  20:46                17 temp.txt
                                 31 temp.txt:hidden_data:$DATA
               1 個のファイル                  17 バイト
               0 個のディレクトリ  132,645,601,280 バイトの空き領域

temp.txt の中身は、元のまま

C:\Users\****\Downloads>type temp.txt
This is sample

hidden_data データストリームに秘密のデータを隠しておける

C:\Users\****\Downloads>more < temp.txt:hidden_data:$DATA
"This is the secret message"

ここまでが導入部分

では実際攻撃に利用される場合はどうか。

悪用を防ぐため、詳細は省くが文字列だけでなくデータそのものを書き込めるため
例えばとあるプログラムのデータ丸ごとこのADSに書いておき、特定のタイミングだけ
データを取り出して実行するようにすれば、見かけ上は存在しない悪意のあるプログラムを
隠すことができる。

このテクニックは、MITRE ATT&CK の以下のタクティクス、テクニックに分類される

Tactic: Defense Evasion

Hide Artifacts: NTFS File Attributes

参考:https://attack.mitre.org/techniques/T1564/004/

興味のある方は、深掘りいただければと思う

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0