APT29 のファイルレス WMI および PowerShell バックドア (POSHSPY) の 1 つを分析

“BfeOnServiceStartTypeChange” WMI Query Language (WQL) filter condition news

Mandiant は、POSHSPY と呼ばれるステルス バックドアを使用する APT29 を観測しました。 POSHSPY は、このグループが頻繁に使用する 2 つのツール (PowerShell と Windows Management Instrumentation (WMI)) を活用しています。 Mandiant が実施した調査では、APT29 はプライマリ バックドアへのアクセスを失った場合に使用するセカンダリ バックドアとして POSHSPY を展開したようです。

POSHSPY は、組み込みの Windows 機能 (いわゆる「生活オフ ザ ランド」) を最大限に活用して、特にステルス性の高いバックドアを作成します。 POSHSPY は WMI を使用してバックドア コードを保存および永続化するため、WMI の複雑さに慣れていない人にはバックドア コードがほとんど見えなくなります。 PowerShell ペイロードを使用するということは、正当なシステム プロセスのみが利用され、悪意のあるコードの実行は強化されたログまたはメモリ内でのみ識別できることを意味します。バックドアのまれなビーコン、トラフィックの難読化、大規模な暗号化、およびコマンド アンド コントロール (C2) のための地理的にローカルな正当な Web サイトの使用により、そのネットワーク トラフィックの識別が困難になります。 POSHSPY のすべての側面は効率的で秘密です。

Mandiant は、2015 年のインシデント対応作業中に PowerShell スクリプトとしてデプロイされた POSHSPY バックドアの初期の亜種を最初に特定しました。その後、同じ作業の後半に、攻撃者はバックドアのデプロイを更新して、ストレージと持続性に WMI を使用しました。 Mandiant はその後、過去 2 年間に APT29 によって侵害された他のいくつかの環境で POSHSPY を特定しました。

APT29 によるこのバックドアの使用については、「No Easy Breach」の講演の一環として最初に説明しました。このバックドアを最初に特定した方法と、バックドアが含まれていた壮大な調査の詳細については、スライドプレゼンテーションを参照してください。

Windows 管理インストルメンテーション

WMI は、2000 年以降のすべてのバージョンの Windows に組み込まれている管理フレームワークです。WMI は、システム情報のクエリ、プロセスの開始と停止、条件付きトリガーの設定など、ローカル システムとリモート システムで多くの管理機能を提供します。 WMI には、Windows WMI コマンド ライン (wmic.exe) などのさまざまなツールを使用するか、PowerShell などのプログラミングおよびスクリプト言語にアクセスできる API を使用してアクセスできます。 Windows システムの WMI データは、 System32wbemRepositoryディレクトリ内の複数のファイルで構成される WMI 共通情報モデル (CIM) リポジトリに格納されます。

WMI クラスは、WMI 内の主要な構造です。 WMI クラスには、メソッド (コード) とプロパティ (データ) を含めることができます。十分なシステム レベルの権限を持つユーザーは、カスタム クラスを定義したり、多くのデフォルト クラスの機能を拡張したりできます。

WMI の永続的なイベント サブスクリプションを使用して、指定した条件が満たされたときにアクションをトリガーできます。多くの場合、攻撃者はこの機能を使用して、システムの起動時にバックドアの実行を持続させます。サブスクリプションは、Filter、Consumer、および FilterToConsumerBinding という 3 つのコア WMI クラスで構成されます。 WMI コンシューマは、コマンドの実行、スクリプトの実行、ログへのエントリの追加、電子メールの送信など、実行するアクションを指定します。 WMI フィルターは、システムの起動、プログラムの実行、指定された時間の経過など、コンシューマーをトリガーする条件を定義します。 FilterToConsumerBinding は、Consumer を Filter に関連付けます。 WMI の永続的なイベント サブスクリプションを作成するには、システムの管理者特権が必要です。

私たちは、APT29 が WMI を使用してバックドアを永続化し、PowerShell バックドア コードを保存することを確認しました。コードを保存するために、APT29 は新しい WMI クラスを作成し、それにテキスト プロパティを追加して文字列値を保存しました。 APT29 は、暗号化および base64 エンコードされた PowerShell バックドア コードをそのプロパティに書き込みました。

その後、APT29 はバックドアを実行するために WMI イベント サブスクリプションを作成しました。サブスクリプションは、新しい WMI プロパティからバックドア コードを直接読み取り、解読し、実行する PowerShell コマンドを実行するように構成されていました。これにより、WMI リポジトリの外部にあるシステムのハード ドライブにアーティファクトを残さずに、永続的なバックドアをインストールすることができました。この「ファイルレス」バックドア手法により、標準的なホスト分析技術を使用してバックドアを特定することが非常に困難になりました。

POSHSPY WMI コンポーネント

POSHSPY バックドアの WMI コンポーネントは、フィルタを利用してバックドアの PowerShell コンポーネントを定期的に実行します。ある例では、APT29 はBfeOnServiceStartTypeChangeという名前のフィルターを作成し (図 1)、毎週月曜日、火曜日、木曜日、金曜日、土曜日の現地時間午前 11 時 33 分に実行するように設定しました。

“BfeOnServiceStartTypeChange” WMI Query Language (WQL) filter condition
図 1: 「BfeOnServiceStartTypeChange」WMI クエリ言語 (WQL) フィルター条件

BfeOnServiceStartTypeChangeフィルターは CommandLineEventConsumer WindowsParentalControlsMigrationにバインドされていました。 WindowsParentalControlsMigrationコンシューマーは、base64 でエンコードされた PowerShell コマンドをサイレント モードで実行するように構成されていました。このコマンドを実行すると、 RacTaskクラスのHiveUploadTaskテキスト プロパティに保存されている PowerShell バックドア ペイロードが抽出、復号化、および実行されました。 PowerShell コマンドには、ペイロードの保存場所と暗号化キーが含まれていました。図 2 は、 WindowsParentalControlsMigrationコンシューマーによって実行される、「CommandLineTemplate」と呼ばれるコマンドを示しています。

WindowsParentalControlsMigration CommandLineTemplate
図 2: WindowsParentalControlsMigration CommandLineTemplate

図 3 には、「CommandLineTemplate」からデコードされた PowerShell コマンドが含まれています。

デコードされた CommandLineTemplate PowerShell コード 1

デコードされた CommandLineTemplate PowerShell コード 2

図 3: デコードされた CommandLineTemplate PowerShell コード

POSHSPY PowerShell コンポーネント

POSHSPY サンプルの完全なコードは、こちらから入手できます。

POSHSPY バックドアは、追加の PowerShell コードと Windows バイナリをダウンロードして実行するように設計されています。バックドアには、次のようないくつかの注目すべき機能が含まれています。

1. PowerShell コードを EncodedCommand としてダウンロードして実行する

poshspy4

2. Program Filesの下のランダムに選択されたディレクトリに実行可能ファイルを書き込み、選択したディレクトリ名と一致するように EXE に名前を付けます。それが失敗した場合は、EXE 拡張子を使用して、システム生成の一時ファイル名に実行可能ファイルを書き込みます。

poshspy5

3. 2013 年より前に作成された System32 ディレクトリからランダムに選択されたファイルと一致するように、ダウンロードされたすべての実行可能ファイルの標準情報のタイムスタンプ (作成、変更、アクセス) を変更します。

poshspy6

4. AES および RSA 公開鍵暗号を使用した通信の暗号化

poshspy7

5. ドメイン名、サブドメイン、トップレベル ドメイン (TLD)、Uniform Resource Identifier (URI)、ファイル名、およびファイル拡張子のリストを使用して、ドメイン生成アルゴリズム (DGA) から C2 URL を導出する

poshspy8

6. カスタム ユーザー エージェント文字列または urlmon.dll から派生したシステムのユーザー エージェント文字列を使用する

poshspy9

7. ネットワーク接続ごとに、カスタム Cookie の名前と値、またはランダムに生成された Cookie の名前と値のいずれかを使用する

poshspy10

8. 2048 バイトのチャンクでデータをアップロードする

poshspy11

9. アップロードまたはダウンロードの前に、ファイル タイプからランダムに選択して、暗号化されたすべてのデータにファイル署名ヘッダーを追加します。

  • ICO
  • GIF
  • JPG
  • PNG
  • MP3
  • BMP

poshspy12

この例のサンプルでは、被害者の近くにある組織が所有する 11 の正当なドメインを使用しました。 DGA の他のオプションと組み合わせると、550 の一意の C2 URL を生成できます。まれなビーコン、DGA の使用、および C2 の侵害されたインフラストラクチャ、およびコンテンツ検査をバイパスするために使用される付加されたファイル ヘッダーにより、このバックドアは、一般的なネットワーク監視技術を使用した識別が困難になりました。

結論

POSHSPY は、APT29 のスキルと狡猾さを示す好例です。 「土地から離れて生活する」ことで、彼らは非常に個別のバックドアを作成することができ、修復後も永続性を確保するために、より従来型でノイズの多いバックドア ファミリと一緒に展開できます。 POSHSPY は可能な限りステルスですが、どこを見ればよいかを知っていれば、すぐに明らかになります。強化された PowerShell ログを有効にして監視すると、実行時に悪意のあるコードがキャプチャされる可能性があります。正当な WMI の永続性は非常にまれであるため、悪意のある永続性は、環境全体で列挙するとすぐに目立ちます。これは、私たちが特定したいくつかの卑劣なバックドア ファミリの 1 つであり、バックドアやHAMMERTOSSの前面にある市販のドメインが含まれます。 APT29 侵害に対応する場合、可視性を高め、対応する前にインシデントの範囲を十分に把握し、既知のマルウェアが含まれていないアクセスされたシステムを徹底的に分析することが不可欠です。

追加資料

このPowerShell ログ ブログ投稿には、環境内の PowerShell の可視性を向上させるための詳細情報が含まれています。

William Ballenthin、Matt Graeber、および Claudiu Teodorescu によるこの優れたホワイトペーパーには、WMI の攻撃、防御、およびフォレンジックに関する追加情報が含まれています。

Christopher Glyer と Devon Kerr によるこのプレゼンテーションには、Mandiant の過去の調査における攻撃者による WMI の使用に関する追加情報が含まれています。

FireEye FLARE チームは、調査担当者が WMI リポジトリから埋め込みデータを抽出し、WMI の永続性を識別できるようにするWMI リポジトリ解析ツールをリリースしました。

参照: https://www.mandiant.com/resources/blog/dissecting-one-ofap

Comments

タイトルとURLをコピーしました