次のブログ記事は、代替データ ストリームの概念と、それが過去および最近、ファイル システムに悪意のあるペイロードを隠すために使用されたテクニックとして、どのように使用されてきたかを紹介します。 Alternate Data Stream (ADS) は、NTFS ファイル システム (Windows のメイン ファイル システム フォーマット) が、通常ファイルに使用されるデフォルトのストリームに加えて、異なるデータ ストリームを保存する機能です。 この機能が作成されたとき、その主な目的は macOS Hierarchical File System (HFS) へのサポートを提供することでした。
NTFS ファイル システムは、属性を持つファイルを含みます。 私たちの範囲に関連する属性は、ファイルのデータ ストリームを格納するために使用される $DATA 属性です。
過去には、正当なファイルの ADS 内に悪意のあるペイロードを格納することはよくあることでした。 しかし、今日では、多くのセキュリティ ソリューションが ADS’ を検出してスキャンします。 しかし、この投稿では、ADS を使用して、ユーザーやさまざまなセキュリティ製品から隠された状態でペイロードを実行できることを紹介します。
この記事で紹介する概念を簡単にするために、すべての例は Windows のネイティブ ツールに基づいています。
ADSの使用方法
古き良き時代の Windows Vista では、代替データ ストリーム (ADS) はマルウェア開発者が悪質なコードを隠すための共通の方法でした。 代替データ ストリームは、悪意のある破損ファイルを正規のファイル内に押し込んで、その存在を隠すために効果的に使用されていました。 代替データストリームにマルウェアを入れることで、Windowsファイルには正規のファイルだけでなく、悪意のあるファイルに対する情報や指示も含まれるようになります。 ハッカーが代替データストリームに置いた悪意のあるコードを実行するには、mklinkコマンドを使用してシンボリックリンクを作成する必要があります。 しかし、これを行うには、そのマシンの管理者権限が必要である。 ユーザーの通常の動作が管理者として動作する必要がないことを考えると、ハッカーは管理者権限のないボックスに着陸したと仮定してターゲットに近づく傾向があります。
Enumeration – $DATA 以下の主流は空文字列 (従って “”, 無名ストリームとも呼ばれます) です。 このストリームは、ファイルの通常のストリームを含むために使用されます。
PowerShell を使用してファイルのデータストリームを列挙する例を次に示します。
dir /R、または SysInternals.exe でファイルの ADS / ディレクトリ上で再帰的に列挙することもできます
上記で見られるように、このファイルには名前のないストリームだけが含まれています。
しかし、この手法にはいくつかの正当な使用法があるため、正当なファイルの中に ADS を見つけることができる場合もあります。
以下は、PowerShell で ADS を使用してファイルのデータストリームを列挙する例です。 識別子です。 このフィールドは、ファイルのソースの信頼レベルを提示する。 その macOS に対応するのは「隔離ビット」です。
Creation – ADS の正当な使用法がある一方で、ADS は悪意のあるペイロードを保存するために使用されることもあります。 攻撃者は、無名ストリームにペイロードを保存するよりもこの方法を好むかもしれません。その理由は、その存在がユーザーから隠されるからで、explorer.exe からアクセスできません (そして、ファイルの表示サイズには ADS のサイズは含まれません)。 また、”dir” コマンドではデフォルトで表示されません (しかし、/R フラグは ADS を表示し、Windows Vista から適用されます)。
ADS の作成は非常に簡単です。
type コマンドによる ADS 作成例:
Windows XP までは start コマンドで ADS が実行可能でした。 しかし、Windows のそれ以降のバージョンでは、もはや不可能です。
Data Access – ADS を悪用することは、ADS を読み込んで実行する複数の方法があるため、依然として関連性のある脅威です。 ADSのコンテンツには簡単にアクセスできます。 以下はPowerShellを使った例です。
実行 – データの読み取り以外に、実行することも可能です。 ADSを “start “コマンドで実行することはできないが、他のプログラムから実行することは可能である。 例えば、WMI:
“wmic process call creates” – WMIでプロセスを実行します。 また、ADSを実行することもできます。 例:
ADSを直接実行するために使用できるWindowsの正規のネイティブツールが追加されました。 たとえば、DLL を ADS 内に保存し、rundll32.exe を通して DllMain から呼び出すことができます。また、HTA を ADS 内に保存し、mshta.exe を通して呼び出すこともできます。
Malicious Campaigns Abusing ADS
Windows が ADS 内の脅威を何とか処理したように見えるかもしれません。 しかし、ADS を悪用するマルウェア ファミリーはまだ数多く存在しています。
2017年のもう1つの例は、アクションにステルス性を追加して悪意のある活動を隠すために、攻撃シーケンスに2つの ADS を使用したランサムウェア、BitPaymer です。 最初のADSは、ネットワーク共有を取得するために「net view」コマンドを実行するために作成され、次に2番目のADSがディスクとネットワーク共有上のデータをスクランブルします
結論として、ADSを悪用することは現在でも関連性のある手法です。 実際、最近のWindowsのバージョンでは、ADSの機能が制限され、強化されています。 しかし、Power-ShellやWMIなどのWindowsネイティブツールの基本的なコマンドや、Windowsのコマンドラインの知識があれば、脅威者はADSを継続して活用し、攻撃を行うことができます。 興味深いことに、ADS を使用した最近のキャンペーンはかなり洗練されており、ディスク上の永続的なファイルの使用を最小限に抑える傾向があると考えられています。