ブログ(脅威調査)

SharPersist:C#で書かれたWindows常駐ツールキット

背景

PowerShellは、攻撃グループによって数年間使用されてきました。ところが最近では、防御側のセキュリティ業界が進歩してきたため、最新のセキュリティ製品を回避するために、攻撃者のツールキットはPowerShellからC#に移行しています。防御側の進歩の例として、スクリプト・ブロックのログ記録、AMSI(Antimalware Scripting Interface)、他社セキュリティ・ベンダーによる不正なPowerShell活動に対するシグネチャーの開発が挙げられます。攻撃ライフサイクルのさまざまなフェーズ上のタスクを支援するために、SeatbeltSharpUpSharpViewなど多数のC#の公開ツールキットがリリースされていますが、攻撃ライフサイクルの中でも「プレゼンスの維持」のフェーズには、タスク支援用のC#ツールキットはありませんでした。この記事では、FireEye Mandiantのレッド・チームが作成した新しいWindows常駐ツールキット、「SharPersist」について説明します。

Windows常駐

レッド・チームのサービス中、多くの時間と労力が、組織への最初のアクセスを得るために費やされます。このアクセスを確実に保持することは極めて貴重なため、プレゼンスの維持は攻撃ライフサイクルの中で、重要な要素なのです(図1)。


図1:FireEye攻撃ライフサイクル図

攻撃者がシステム上でプレゼンスの維持を確立してしまえば、停電、リブート、またはネットワーク障害の後でも、攻撃者は引き続きシステムへアクセスできます。これによって、攻撃者は、数週間、数ヶ月、または数年でも、長期にわたってネットワーク内に潜伏することができます。プレゼンスの維持を確立するには、図2に示すように、プレゼンスの埋め込みとプレゼンスのトリガーの2つの重要な要素があります。プレゼンスの埋め込みは、不正なペイロードのことです。実行ファイル(EXE)、HTMLアプリケーション(HTA)、ダイナミックリンクライブラリ(DLL)などの実行コードです。プレゼンスのトリガーは、スケジュールされたタスクまたはWindowsサービスなど、ペイロードを実行させるものです。Windowsで使用できるトリガーには、Windowsサービス、スケジュールされたタスク、レジストリやスタートアップ・フォルダーなどが知られており、今後も追加されていくでしょう。詳細なリストについては、MITRE ATT&CKのPersistenceのページを参照してください。


図2:プレゼンスの式

SharPersist概要

SharPersistは、さまざまな手法を使用してWindows OS上でのプレゼンス維持の確立を支援するために作成されました。これはC#で書かれたコマンド・ライン・ツールで、Cobalt Strikeの"execute assembly"機能など、.NETアセンブリの反射型読み込みをサポートするフレームワークで利用できます。SharPersistは、将来的に新しい常駐化技術を追加できるように、モジュール設計になっています。またファイルのタイムスタンプの改ざんや、アプリケーションを最小化、隠蔽状態で実行するなど、プレゼンス維持に関連する機能も備えています。

SharPersistと使用方法のドキュメントは、FireEyeのSharPersist GitHubページでダウンロードできます。

結論

攻撃ライフサイクルのさまざまなフェーズにおいてC#を使用することは、攻撃者にとって不可欠であり、プレゼンスの維持も例外ではありません。Windowsは、常駐のための技法を複数提供しており、セキュリティ専門家と攻撃者によってさらに発見され、使用され続けることでしょう。

このツールは、攻撃ライフサイクルのプレゼンス維持フェーズでセキュリティ専門家を支援することを目的としています。FireEye Mandiantでは、SharPersistをリリースすることで、Windowsで使用可能なさまざまな常駐化技術と、PowerShellではなくC#での活用方が広く認知されることを期待しています。

本ブログは、米FireEyeが公開した「SharPersist: Windows Persistence Toolkit in C#」の要約版です。技術詳細を含むブログ全文は、英文記事をご参照ください。

日本語版:Reviewed by Takahiro Sajima