SDB を使用するか、SDB を使用しないか: 永続化のために Shim データベースを活用する FIN7

Shim database registry keys news

2017 年、Mandiant は、2015 年にさかのぼる悪意のある操作に関連する金銭目的の脅威グループである FIN7 による複数のインシデントに対応しました。FIN7 はさまざまな環境を通じて、このグループが以前の操作で使用した CARBANAK バックドアを利用しました。

インシデントのユニークな側面は、グループが永続的なアクセスのために CARBANAK バックドアをどのようにインストールしたかということでした。 Mandiant は、グループがアプリケーション shim データベースを活用して、複数の環境でシステムの永続性を実現していることを特定しました。この shim は、Services Control Manager (「services.exe」) プロセスに悪意のあるインメモリ パッチを挿入し、CARBANAK バックドア プロセスを生成しました。

Mandiant は、FIN7 もこの手法を使用して、永続的なアクセスのための支払いカード ハーベスティング ユーティリティをインストールしたことを特定しました。これは、プロセス インジェクションと永続的なアクセスのために悪意のある Windows サービスをインストールするという FIN7 の以前のアプローチからの逸脱でした。

アプリケーション互換性シムの背景

Microsoft によると、アプリケーション互換性シムは、API を (フックを介して) 透過的にインターセプトし、 渡されたパラメーターを変更し、操作自体を処理し、システムに保存されている追加のコードなど、他の場所に操作をリダイレクトする小さなライブラリです。現在、shim は主にレガシー アプリケーションの互換性のために使用されています。 shim は正当な目的を果たしますが、悪意のある方法で使用されることもあります。 Mandiant のコンサルタントは以前、 BruConBlackHatの両方で shim データベースについて議論しました。

Shim データベースの登録

シム データベースをシステムに登録するには、複数の方法があります。 1 つの手法は、組み込みの「 sdbinst.exe 」コマンド ライン ツールを使用することです。図 1 は、shim が「sdbinst.exe」ユーティリティに登録されたときに作成される 2 つのレジストリ キーを示しています。

Shim database registry keys
図 1: Shim データベースのレジストリ キー

shim データベースがシステムに登録されると、shim データベース ファイル (「.sdb」ファイル拡張子) が「C:WindowsAppPatchCustom」ディレクトリ (32 ビット shim の場合) または「C:Windows の場合」にコピーされます。 AppPatchCustomCustom64″ ディレクトリ (64 ビット shim 用)。

悪意のある Shim データベースのインストール

悪意のある shim データベースをシステムにインストールして登録するために、FIN7 は Base64 でエンコードされたカスタム PowerShell スクリプトを使用し、「sdbinst.exe」ユーティリティを実行して、パッチを含むカスタム shim データベース ファイルをシステムに登録しました。図 2 は、復元された FIN7 PowerShell スクリプトからの抜粋をデコードしたもので、このコマンドのパラメーターを示しています。

カスタム shim をインストールするための FIN7 PowerShell スクリプトからの抜粋
図 2: カスタム shim をインストールするための FIN7 PowerShell スクリプトからの抜粋

FIN7 は、「sdbinst.exe」ユーティリティを使用してシステムにインストールおよび登録された shim データベース ファイルにさまざまな命名規則を使用していました。一般的な遵守事項は、「.tmp」ファイル拡張子を持つ shim データベース ファイルの作成でした (図 3)。

悪意のある shim データベースの例
図 3: 悪意のある shim データベースの例

カスタム shim データベースをシステムに登録すると、図 4 に示すように、ランダムな GUID と拡張子「.sdb」が付けられたファイルが、64 ビットの shim データベースのデフォルト ディレクトリに書き込まれました。 「C:WindowsTemp」ディレクトリに最初に作成されたファイルとしての MD5 ハッシュ。

登録後のShimデータベース
図 4: 登録後の Shim データベース

さらに、shim データベースの登録に関連する特定のレジストリ キーが作成されました。図 5 は、このシムのインストールに関連するキーと値を示しています。

Shim データベースのレジストリ キー
図 5: Shim データベースのレジストリ キー

shim データベースの登録に使用されたデータベースの説明「Microsoft KB2832077」は興味深いものでした。この KB 番号は公開された Microsoft Knowledge Base パッチではなかったからです。この説明 (図 6 を参照) は、侵入先のシステムの Windows コントロール パネル内にインストールされているプログラムのリストに表示されました。

インストール済みアプリケーションとしての Shim データベース
図 6: インストールされたアプリケーションとしての Shim データベース

Malicious Shim データベースの詳細

調査中、Mandiant は、FIN7 がカスタム shim データベースを使用して、「services.exe」の 32 ビット バージョンと 64 ビット バージョンの両方に CARBANAK ペイロードでパッチを適用していることを確認しました。これは、起動時に「services.exe」プロセスが実行されたときに発生しました。 shim データベース ファイルには、レジストリ キーに格納されている追加のシェルコード ペイロードを取得する第 1 段階のローダーのシェルコードが含まれていました。第 2 段階のシェルコードは、CARBANAK DLL (レジストリ キーに格納されている) を起動し、サービス ホスト (「svchost.exe」) のインスタンスを生成して、そのプロセスに自身を注入しました。

図 7 は、FIN7 で利用された解析済みの shim データベース ファイルを示しています。

解析された shim データベース ファイル
図 7: 解析された shim データベース ファイル

第 1 段階のローダーの場合、パッチは、services.exe プロセス内の相対仮想アドレス (RVA) 「0x0001407c」にある「ScRegisterTCPEndpoint」機能を、shim データベース ファイルの悪意のあるシェルコードで上書きしました。

新しい「ScRegisterTCPEndpoint」関数 (シェルコード) には、「REGISTRYMACHINESOFTWAREMicrosoftDRM」のパスへの参照が含まれていました。これは、追加の悪意のあるシェルコードと CARBANAK DLL ペイロードがシステムに保存されたレジストリの場所です。

図 8 は、復元された shim データベース ファイル内の解析されたパッチ構造の抜粋を示しています。

shim データベース ファイルから解析されたパッチ構造
図 8: shim データベース ファイルから解析されたパッチ構造

レジストリ パス「HKLMSOFTWAREMicrosoftDRM」内に格納されたシェルコードは、API 関数「RtlDecompressBuffer」を使用してペイロードを解凍しました。その後、システム上の CARBANAK DLL ペイロードのエントリ ポイントを呼び出す前に、4 分間スリープ状態になりました。メモリに読み込まれると、CARBANAK DLL を含む「svchost.exe」という名前の新しいプロセスが作成されました。

まとめて

図 9 は、シェルコードを「services.exe」の 64 ビット バージョンに挿入して、メモリ内パッチを利用するための永続的なメカニズムとして利用されている shim データベースの概要を示しています。

Shim データベース コード インジェクション プロセス
図 9: Shim データベース コード インジェクション プロセス

検出

Mandiant は、環境内で悪意のあるアプリケーションのシミングを検出するために、次のことを推奨しています。

  1. 「C:WindowsAppPatchCustom」および「C:WindowsAppPatchCustomCustom64」の既定の shim データベース ディレクトリに作成された新しい shim データベース ファイルを監視します。
  2. 「HKLMSOFTWAREMicrosoftWindows NTCurrentVersionAppCompatFlagsCustom」および「HKLMSOFTWAREMicrosoftWindows NTCurrentVersionAppCompatFlagsInstalledSDB」のキーのレジストリ キーの作成および/または変更イベントを監視します。
  3. 「sdbinst.exe」ユーティリティの悪意のある使用について、プロセス実行イベントとコマンドライン引数を監視します

参考: https ://www.mandiant.com/resources/blog/fin7-shim-databases-persistence

Comments

Copied title and URL