メインコンテンツへスキップ
Tanium ブログ

別の永続化メソッドがTwitterで一晩報告されましたか? Taniumがどのように役立つか

別の永続化メソッドがTwitterで一晩報告されましたか? Taniumがどのように役立つか

トラブルシューティングと開発に使用するように設計されたレジストリ構成は、Autorunsなどのセキュリティツールによる可視性がないため、秘密の永続化の手段になりました。 ここでは、TraceやDetectなどのTaniumモジュールを使用して、比較的未知のこの永続化メカニズムの存在を迅速に判断する方法を3つ強調します。

地球とキーボードを使用したグローバルIT運用の青い図

(画像: Bruno Glätsch / Pixabay)

Twitterで一夜にして新しい永続化メソッドが報告されたらどうしますか? 1つのアイデア:Taniumを使用して、現在のアクティビティをすばやく確認し、発生したときに迅速なアラートを設定します。 すべて朝食前。

4月10日に、Oddvar Moe (@oddvarmoe)はTwitterに投稿し、 「Persistence Using Globalflags in Image File Execution Options – Hidden from autoruns.EXE」を投稿しました。このブログでは、別の「監視」プロセスの終了後にプロセスをサイレント実行するレジストリ設定を介して永続化メカニズムについて取り上げています。 このメソッドは現在、MicrosoftのSysinternals Autorunsで列挙された永続ロケーションに含まれていません。

Global Flagsを使用すると、別のプロセスが終了した後にプロセスを起動できます。 これは、Autorunsがこれらの構成を列挙しないという事実により、現在の盲点を表しています。 これらは、Microsoftの開発者ツールにあるユーティリティgflag.EXEを使用して設定するか、管理者アカウントによってレジストリに変更を加えることができます。

トラブルシューティングや開発作業にマシンが使用されていない限り、これらのレジストリ構成の存在は極めて疑わしいため、調査する必要があります。 これは以下で実行し、新しく開示された詳細をどれだけ迅速に取得して、自分の環境を評価することができるかを示すシナリオ例の役目を果たします。

ここでは、TraceやSignalsなどのTaniumモジュールを使用して、比較的未知のこの永続化メカニズムの存在を3つの主要な方法で迅速に判断する方法を強調します。

  • レジストリ設定の現在の状態を調べる
  • Traceでレジストリ変更の履歴を調べる
  • 今後、これらのレジストリ設定に対する変更のリアルタイムアラートを確立します。

問題について

Moeのブログ投稿では、監視対象プロセスが終了するたびにプロセスを起動する実行トリガーを確立する3つのレジストリ変更を指摘しています。 さらに、監視対象プロセスが終了すると、2番目のプロセスがサイレント起動されます。 グラフィカルインターフェイスがある場合、バックグラウンドで起動します。 攻撃者は、この機能を永続性を維持する手段として使用できます。レジストリキーが削除されるまで、選択したプロセスの終了後にコードを実行させます。

このWindows機能の詳細は、Microsoft によって文書化されています。

テストの場合、以下のスクリプトはevil.EXEがいつでもnotepad.EXEを終了させるレジストリ変更を行います。

reg add™HKLM\ソフトウェア\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.EXE” /v GlobalFlag /t REG_DWORD /d 512 reg add™HKLM\ソフトウェア\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.EXE” /v ReportingMode /t REG_DWORD /d 1 reg add™HKLM\ソフトウェア\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.EXE” /v MonitorProcess /d™C:\temp\evil.EXE

現在のアクティビティ

企業ですでに使用されているこの技術の兆候は、Taniumから探すことができます。

環境によっては、この手法が正当に使用されている場合があります。既存の構成が悪意あるか無害かを判断するには、慎重に検討する必要があります。 1つの出発点は、SilentProcessExitレジストリハイブを探すことです。 ほとんどの環境では、空のキーまたは存在しないキーである必要があります。 この調査には、次の3つのセンサーが使用されます。

  1. レジストリキーサブキー - これは、終了時に実行をトリガーするプロセスを表示します。 下の図1は、SilentProcessExitの唯一のサブキーとしてnotepad.EXEを示しています。
  2. レジストリキー値名 - 存在するサブキーを示します。 図1は、2つのレジストリ値名エントリとしてのMonitorProcessとReportingModeを示しています。
  3. レジストリ Value Data - このデータには、監視対象プロセスが終了したときに起動するように設定されたプロセスが表示されます。 図1は、2つのエントリのデータを示しています。
Notepad++レジストリエントリを示すWindowsレジストリエディタのスクリーンショット

図1:この記事のテストに使用するエントリ例。

以下の図 2では、Taniumレジストリキーサブキーセンサーは、SilentProcessExitキーの下にnotepad.EXEサブキーエントリを表示します。

Notepad++レジストリパス情報を示すレジストリレジストリキー値のスクリーンショット

図 2:レジストリキー Subkeysセンサーを使用したSilentProcessExitの検索。

センサー:すべてのマシンのレジストリキーサブキーレジストリキーサブキー[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit] レジストリキー ソフトウェア Microsoft Windows

Registry レジストリキー Subkeysセンサーから返されたサブキーの場合、調査担当者はKeyPath値をコピーし、パラメータとしてレジストリキー Value Namesセンサーに使用し、MonitorProcessエントリが存在することを確認します(図 3を参照)。 MonitorProcessエントリが存在する場合は、ReportingModeエントリも存在する必要があります。

Notepad++ファイルパスを示すレジストリキーサブキーのスクリーンショット

図 3:サブキーDiscoverに使用されるレジストリキー値名センサー。

センサー:すべてのマシンのレジストリキー値名レジストリキー値名[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe] レジストリキー ソフトウェア Microsoft Windows EXE

特定のMonitorProcessエントリに対してどのプロセスを実行するかを決定するには、レジストリキーサブキー出力のKeyPath値とレジストリキー値名センサー出力のValue Nameの両方をパラメータとしてレジストリ値データセンサーに提供する必要があります(図 4を参照)。

Notepad++値を示すレジストリ値データのスクリーンショット

図 4:レジストリ Value Dataセンサー出力。

センサー:すべてのマシンからのレジストリ値データレジストリ値データ[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe,MonitorProcess] レジストリ ソフトウェア Microsoft Windows EXE

Using the KeyPath and Value Name from the sensor output as parameters to the Registry Value Data sensor, we see the data entry for this MonitorProcess including the path to where the process is stored on disk in Figure 4.

また、図 4 では、代替データ取り込む(ADS)内にプロセスバイナリを隠す例も示しています。 ADSはNTFSファイルシステムの機能で、攻撃者はバイナリを埋め込むためにこのシステムを使用して、Windows Explorerや通常のディレクトリリストにcmd.EXEやPowerShell.EXE経由で表示されないようにします。 プロセスバイナリ名に「:」があることに注意してください。

非表示の実行可能ファイルは、フォルダまたはNTFSディレクトリエントリC:\Windowsに埋め込まれ、名前は「cmd.EXE」です。

過去のアクティビティ

Taniumセンサーを使用すると、数十万のエンドポイントでこれらのレジストリの場所を数秒で検索できます。

しかし、最初のアクティビティ後にレジストリエントリが削除された場合はどうでしょうか? 上記の「現在の状態」センサーは表示されません。 企業の履歴データを検索するには、Tanium Traceデータを使用してレジストリを確認します。

まず、SilentProcessExitレジストリキーを調べて、SetRegistryKeyイベントが記録されているかどうかを確認します(図 5を参照)。

Notepad++サプライチェーン侵害検知を示すTanium Traceレジストリキー

図 5:Trace レジストリ Keys of Valuesセンサー出力。

センサー:Traceレジストリキーまたは値 Traceレジストリキーまたは値を取得する〔無制限、 1523639748493|1523643347493、 0、 0、 10、 0、HKEY_LOCAL_MACHINE\ソフトウェア\Microsoft\Windows NT\CurrentVersion\SilentProcessExit、、、SetValueKey、、、、〕をすべてのマシンから取得する

「key」列には、終了するとMonitorProcess実行可能ファイルが起動する実行可能ファイルのエントリが含まれています。 展開されたキー列データは、 HKEY_LOCAL_MACHINE\ソフトウェア\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.EXEです。

Traceは価値データを記録しないため、この時点では、プロセスが別のプロセスをトリガーするように設定されていたが、そのプロセスがある場所ではないことがわかります。 ただし、Traceを使用してLive 接続を開き、見ることができます。

アラート

企業現在の状態と履歴データの検索に加えて、Tanium Detectシグナルは、これらのレジストリキーが上記の方法で設定されている場合にリアルタイムのアラートを提供できます。

group(レジストリ.key_path contains '\\SilentProcessExit\\' AND レジストリ.value_name contains 'MonitorProcess')

このシグナルを展開すると、MonitorProcessエントリを作成することで、プロセスがSilentProcessExitキーの下で永続性を確立するたびに、Tanium Detectインターフェイスでリアルタイムアラートが生成され、これらのアラートをSIEMまたは通知システムに転送できます。

Tanium Detectのアラートと同様に、アラートを選択してTrace Live 接続にピボットッティングし、アクティビティをさらに調査できます(図 6を参照)。 ここでは、プロセスアクティビティの詳細を見ていきます。 この例ではインスタンス、悪意のあるプロセスは再びADSとして埋め込まれますが、今回はC:\Systemディレクトリエントリに埋め込まれます。

プロセスゴースト設定検知を示すTanium Signalsアラート

図 6:シグナルアラートとTraceとのライブ接続を確立するオプション。

次に、Traceのプロセスツリービューを見ます(図 7を参照)。 悪意のあるプロセスの親プロセスは、Windowsエラー報告サービスであるWerFault.EXEです。 また、悪意のあるプロセスはSYSTEMではなく、同じユーザアカウントコンテキストで起動されることに注意してください。

Windowsコマンド実行の詳細を示すTanium Ask応答

図 7:Trace内のプロセスの可視化。

プロセスハッシュは赤色で強調表示され、Tanium Reputation Serviceがこのファイルを悪意のあるものとして分類したことを示します。

これで、ハッシュとファイルの詳細を取得し、Tanium Protectに移動して、このプロセスの今後の実行をブロックできます。 レジストリをクリーンアップし、標準的なTaniumアクションを使用して既存のプロセスを強制終了することもできます。

シグナル例

以下は、この永続化メカニズムを有効にするさまざまな方法に対応するTanium Detectシグナルアラートです(図 8-13を参照)。

PowerShell永続化メカニズム検知を示すTaniumシグナル

図 8:MonitorProcessエントリをバッチファイルで追加したときのシグナルアラート。

永続化のためのレジストリハイブマージ技術を示すTanium Trace

図 9:GlobalFlagエントリにバッチファイルを追加すると、シグナルアラートが発生します。

regeditを使用したプロセスゴースト設定のTanium Signalsアラート

図 10:Regedit.EXE GUIを使用して手動でMonitorProcessエントリを追加するためのシグナルアラート。

エクスプローラから管理者としてPowerShellが起動することを示すTaniumシグナル

図 11:PowerShellを使用してレジストリを変更する場合のシグナルアラート。

レジストリマージファイルの作成プロセスを示すWindowsレジストリエディタ

図 12:設定変更のあるレジストリファイル。

Windows Explorerからのレジストリファイルのマージを示すTaniumシグナル

図 13:図 12 のレジストリファイルをマージすると、このアラートが生成されます。

もう1つのメモ。 IOCアラートは、図 14に示すように、ハッシュ色の充実を含む詳細ビューにADSを表示します。

cmd.EXEとProcessHackerプロセスの詳細を示すTanium Trace

図 14:ハッシュに基づくバイナリのIOCスキャンヒット。

サマリ

この記事で概説したプロセスは、Taniumがレジストリ設定の現在の状態を見て、Traceでレジストリ変更の履歴を調べ、最終的にこれらのレジストリ設定に対する変更のリアルタイムアラートを確立することで、比較的未知の永続メカニズムの存在を迅速に判断する方法を示しています。 詳細を知りたい場合は、 TaniumユーザCommunity に参加して、話し合いましょう。

Taniumを実際にご覧になりたいですか? 1対1のデモをスケジュール するか、毎週のウェビナーに参加してください。 今後のイベントでは、Taniumの専門家にご相談ください。

作成者について:Scott LangendorfはTanium EDRチームのディレクターです。 彼は 2015 年秋にタTaniumに入社しました。彼は、国レベルのグループによる攻撃を受け、グローバルエンジニアリング企業のシニアマネージャを務めました。 サイバーセキュリティ分野で8年エクスペリエンススコットは、セキュリティTaniumに入社してセキュリティ製品の進化を支援し、防衛およびハントチームにとってエンドポイントの迅速なエンドポイントの可視化、アラート、データのアジリティの重要性を認識しました。 また、NASAで宇宙ステーションの電力システムを担当し、 APT1 が発見されたばかりのときにエネルギー部門のITマネージャとして働いていました。