Netwrix 1Secureは、データとアイデンティティ全体にわたる統合された可視性を提供します。14日間の無料トライアルでフルアクセス可能です。無料トライアルを開始

リソースセンターブログ

NTFS Alternate Data Streams がセキュリティ脆弱性である理由

NTFS Alternate Data Streams がセキュリティ脆弱性である理由

Jun 26, 2025

NTFS のファイル ストリームに馴染みがないかもしれませんが、最新の Windows システムでファイルにアクセスするときは、毎日それを使っています。この記事では、NTFS ADS のこの機能を解説し、ハッカーがサイバー攻撃でファイル ストリーム機能をどのように悪用し得るかを示し、組織を防御するための戦略を提供します。

厳選した関連コンテンツ:

既定のデータ ストリームと代替データ ストリーム

ファイル ストリームとは、キーワードや、そのファイルを作成したユーザーの識別情報など、ファイルに関するデータを含むバイトの連続です。データ ストリームは「ファイルの中のファイル」と考えてください。つまり、正当なファイルの中に存在する隠しファイルです。各ストリームには、それぞれ独自のディスク容量割り当て、独自の実際のサイズ(使用中のバイト数)、そして独自のファイル ロックがあります。

NTFS のファイル構造内の各ファイルには、少なくとも 1 つのストリーム(既定のストリーム)があります。default data stream は、通常の表示可能なファイル内容です。たとえば、.txt ファイルのテキストや .exe ファイルの実行コードなどです。この情報は $Data 属性に格納されます。この既定属性の名前は空(“”に設定)であるため、既定のデータ ストリームは「unnamed data stream」とも呼ばれます。

ファイルには、1 つ以上の alternate data streams(ADSs)を含めることもできます。ADS には名前を付ける必要があります。なお、alternate data streams を追加しても、default data stream は変わりません。

代替データ ストリーム(alternate data streams)の作成方法

ファイルに対して代替データ ストリーム(alternate data streams)を作成するのはとても簡単です。ファイル名またはパスの後ろにコロン(“:”)を付け、その後にストリーム名を指定するだけです。コロンはファイル名に使えない予約文字であるため、既存のファイル名とは競合しません。

1つのファイルに複数の ADS(alternate data streams)を追加できます。たとえば、テキスト ファイルに対して 2 つの代替データ ストリームを作成する方法は次のとおりです。

Myfile.txt:stream2

Myfile.txt:secretstuff

NTFS ファイル ストリームの利点

FAT16 や FAT32 のような古い Windows のファイルシステムには複数のデータ ストリームの対応がありませんが、ADS は新しい技術ではありません。ADS は Windows NT 以降、Microsoft の NTFS ファイル システムのすべてのバージョンに存在してきました。

当初、複数のデータ ストリームを使うことで、Windows サーバーが Apple Macintosh コンピューターのファイル サーバーとしても機能できるようになりました。Mac のファイルは、1 ファイルあたり 2 つのストリーム(データ用とリソース情報用)を利用します。NTFS が複数のストリームに対応しているため、Mac ユーザーはリソース ストリームを失うことなく、ファイルを Windows サーバーにコピーしてから、再び Mac に戻してコピーできました。つまり ADS は、両方のシステムとそれらのアプリケーションの互換性を提供できたのです。

Windows で alternate data streams(代替データ ストリーム)を利用することには、正当な理由もあります。たとえば、一部のアーカイブ管理およびバックアップ ソフトウェアは ADS を使ってファイルの改訂情報を保存し、また多くの Web ブラウザーはインターネットからダウンロードしたファイルにストリームを追加して、そのファイルがどこから来たのかに関するセキュリティ情報を含めます。

ADS の陰に潜む側面

ADS には多くの正当な用途がありますが、ハッカーはマルウェア攻撃のような悪意のある目的に悪用することができます。密輸業者が検査官から密輸品を隠すためにスーツケースの中に用意する秘密の仕切りのように、ADS は脅威アクターが悪意のあるコードを隠し、基本的なセキュリティ検知を回避しながら将来の攻撃を実行するために使われ得ます。ADS は、音声、動画、画像といったあらゆる種類のファイル、またウイルス、トロイの木馬、ランサムウェアなどの悪意のあるコードを保存できます。さらに alternate data streams は隠されるため、ユーザーはディレクトリ一覧コマンドを使ってそれらを検出できません。

NTFS ストリームを扱うためのツール

ADS をより詳しく可視化するために利用できる、いくつかのネイティブ ツールがあります。これには次のものが含まれます。

  • Echo とそのほか
  • Sysinternals Streams ユーティリティ
  • Dir コマンドの /R オプション。
  • ADS 用のコンテンツを直接操作するための 6 つの cmdlet を含む PowerShell 3.0

Echo と More

まずは Echo と More を使うところから始めましょう。以下の例では、Echo コマンドを使って test.txt というテキストファイルに “:secret” を追記し、More コマンドを使って既定では表示できない秘密のメッセージを書き込みます。なお、Dir コマンドも秘密の NTFS ストリームを確認できないことに注意してください。

Image

ストリーム

Streams は Sysinternals から利用できるコマンドライン ツールです。既定のデータ ストリーム以外にストリームを使用しているフォルダー内のファイルがどれかを表示するために使用します。下のスクリーンショットでは、test.txt ファイルに「secret」という名前の代替ストリームがあり、そのファイル サイズは 86 バイトであることが示されています。これは、直前の例で Dir コマンドが表示した 26 バイトよりもはるかに多い点に注意してください。

Image

Dir /R

Dir /R オプションは Windows Server 2003 から利用可能です。以下のとおり、Dir /R オプションを使用すると、ファイル「test.txt」が 2 回表示されます。また、既定のファイル ストリームと秘密のファイル ストリームの両方について、正しいファイル サイズも表示されます。

Image

PowerShell

PowerShell を使用して、ファイル内の代替データ ストリームを特定することもできます。下の例では、Stream オプションとワイルドカード パラメーターを指定してコマンド Get-Item を使用しました。出力にはファイルの両方のストリームが表示されます。矢印は代替ストリーム表示を強調しています。

Image

PowerShell を使用して NTFS ストリームをクリアすることもできます。以下のスクリーンショットでは、clear-content コマンドを使用して、秘密のデータ ストリームに関連付けられたデータを削除しています。その直後に get-item コマンドを実行すると、ファイル サイズが現在 0 になっているため、ストリーム内のデータが削除されたことが確認できます。

Image

さらに一歩進んで、以下のように remove-item コマンドを使えば、ストリームを完全に削除できます。get-item コマンドで、ストリームが削除されたことを確認できます。

Image

ADS の脅威への対処方法

攻撃者は、ADS を使って、ランサムウェアやその他のマルウェアを含む悪意のあるコンテンツを、階層型のファイル構造の中に隠すことができますし、実際にそうしています。残念ながら、Windows ファイル エクスプローラー、Dir コマンド、および関連ツールは、ファイルの既定のデータ ストリームに関する情報しか報告しません。実際には、データが 1k であると報告する単純な .txt ファイルや Word 文書の中に、ADS によって数メガバイト規模の隠されたデータや実行可能コードが封入されている可能性があります。

そのため、セキュリティ管理戦略を構築する際は、ADS に対する可視性を高める必要があります。特に、代替データ ストリームの存在を検出し、未承認のコンテンツをスキャンできるアンチウイルス製品、データ発見(データディスカバリ)ツール、データ外部送信(データ exfiltration)検知器に投資することを検討してください。そうすれば、事前にそれらを取り除くことができます。結局のところ、インシデントの予防は、インシデント対応よりも常に優れています。

NTFS 権限管理のベストプラクティス

詳しくはこちら



共有する

もっと詳しく

著者について

Asset Not Found

Joe Dibley

セキュリティリサーチャー

Netwrix のセキュリティリサーチャーであり、Netwrix Security Research Team のメンバーです。Joe は Active Directory、Windows、およびさまざまなエンタープライズソフトウェアのプラットフォームとテクノロジーの専門家であり、新たなセキュリティリスク、複雑な攻撃手法、そしてそれに関連する緩和策と検知について研究しています。