サイト内の現在位置

Elastic Securityを触ってみた

NECセキュリティブログ

2023年10月13日

NECサイバーセキュリティ戦略統括部セキュリティ技術センターの加来です。
今回は、Elastic Security new window[1]を用いて、内部不正の攻撃シナリオに対する調査・対応を行ってみました。
本ブログでは、その攻撃のシナリオに沿ってElastic Securityの機能を紹介していきます。

Elastic Securityとは

Elastic Securityを使用することで、組織内のマシンから収集した情報を可視化して、効率的なインシデント対応を行うことができます。
例えば以下の様な機能があります。

  • Rule:不審なイベントを特定するための検知ルール
  • Alert:Ruleによって不審であると判断された際に発生するアラート
  • Case:Alertを確認して、事案が発生したと判断した際はCaseを作成して調査を実施
  • Timeline:不審なイベントを時系列に並べた表
  • AlertやTimelineはCaseに紐づけることができます。

Elastic Securityには他にも様々な機能があります。主要な機能を理解したい場合は、Elastic社が公開しているガイド new window[2]を確認して下さい。

検証環境

今回の検証では、Elastic Cloud(v8.10.2)new window[3]の無料Trialを活用して、以下の環境を構築しました。

検証環境の構成図

riht.comの各マシンにはElastic Agent new window[4]がインストールされており、データの収集やElastic Securityからの指示の実行を行います。
これらのElastic AgentのアクションはAgent Policyによって定義されています。また、Agent PolicyにはIntegrationを含めることができます。Integrationには、Elastic Agentをインストールしたマシンを観察する設定が製品やサービスごとに定義されています。今回はElastic Defend(v8.10.2)とSystem(v1.38.2)のIntegrationを含めたAgent PolicyをElastic Agentに適用しています。

  • Elastic DefendのIntegrationを使用する際は、Fleetが必要となります new window[5]

Elastic Cloudのデプロイや、Elastic Agentのインストール方法などは、Elastic社が公開している動画 new window[6]が存在するため、本ブログでは割愛させていただきます。

攻撃シナリオ

検証環境に対して、以下の攻撃シナリオを実施しました。

本シナリオで登場する架空の人物「佐藤さん」は、クライアント端末「WS」の正規の利用者です。今回の攻撃シナリオでは、佐藤さんが内部不正を実施します。

  1. 佐藤さんが「WS」に対してローカル管理者「WS\local_admin」の権限でログオン
  2. DownloadフォルダをWindows Defenderの除外リストに追加した後、Edgeから資格情報窃取ツールMimikatz new window[7]をダウンロード
  3. Mimikatzで「lsadump::cache」を実行してドメイン管理者のパスワードハッシュを取得
  4. 佐藤さんは、取得したパスワードハッシュからドメイン管理者のパスワードの平文を取得
  5. 取得したドメイン管理者の平文パスワードを用いて、「WS」からADサーバ「DC」にリモートログオン

3. 4.に関して、攻撃者はレジストリにキャッシュされている資格情報を窃取しています。
Windowsはデフォルトで最近ログオンした10個のドメインアカウントの資格情報をレジストリにキャッシュします。 そのため、過去ドメイン管理者等の特権アカウントでログインしていて、推測可能なパスワードを設定していた場合は、特権アカウントの平文パスワードが特定される可能性があります [8]

初動対応

詳細な調査に入る前に、まずは関係者にヒアリングを行いつつ端末の隔離等の対応を行います。

AlertからCaseを作成

有効化されているRuleの条件にヒットした場合、以下の画像の様なAlertが確認できます。

zoom拡大する
Alertの様子

タイムスタンプが最も新しいAlertのルール名の「Suspicious Access to LSA Secrets Registry」の部分や、process.nameフィールドの値から、Mimikatzが「WS」のレジストリにアクセスしていると推測できます。

このAlertを起点に調査を進めたいので「Add to new case」をクリック後、Name(名前)・Description(説明)・Severity(重大度)を入力してCaseを作成します。
そうすると、以下のようなCaseが作成されます。

zoom拡大する
Caseの様子

「WS」を隔離する

「WS」の利用者である佐藤さんとその上司にヒアリングを実施しました。
佐藤さんとは連絡が取れず、上司によるとアラートが発生した当日、上司も佐藤さんと連絡が取れていないとのことです。また、Mimikatzのような資格情報窃取ツールを使用するような業務はないということなので今回のアラートを悪性と判断して「WS」のネットワークの隔離を実施します。

端末の隔離にはResponse console new window[9]を使用すると便利です。

  • Response consoleの使用にはElastic CloudのEnterpriseサブスクリプションが必要になります。

以下の画像のConsoleに「isolate」コマンドを入力するだけで「WS」をネットワークから隔離できます。

Response consoleの様子

隔離が完了すると、「WS」でも隔離されたという通知が表示されました。
(再度「WS」から「DC」へのリモートログオンを試みましたが、失敗しました)

「isolate」で隔離した端末は「release」コマンドを実行するとネットワークに復帰させることができます。
ここで紹介したコマンド以外にも、プロセスを列挙する「processes」コマンドや、特定のプロセスIDを指定してプロセスを終了させる「kill-process」コマンド等、様々なコマンドを使用できます。

調査

Mimikatzがレジストリの資格情報にアクセスした痕跡を確認

Caseを作成したAlertの「Analyze Event」をクリックします。

Analyze Eventへの遷移

そうすると、以下のように検知対象のプロセスと他プロセスの関係を視覚的に表示してくれる画面へと遷移します。

Analyze Eventの様子

mimikatz.exeの「3 registry」をクリックすると、今回mimikatz.exeがアクセスしている3つのレジストリキーを確認できます。その結果、ドメインアカウントの資格情報をキャッシュしているレジストリキー「HKLM\SECURITY\Cache」へのアクセスと、そのアクセス時刻を特定できました。

「WS」から「DC」へのアクセスを確認

「WS」でドメインアカウントの資格情報にアクセスした痕跡が見つかりました。もしここで佐藤さんが普段使用できる権限以上の資格情報(例えばドメイン管理者)がレジストリに保存されており、ハッシュ値から平文パスワードを特定された場合、当該アカウントを使用して、「DC」にアクセスされている可能性が考えられます。
今回はDiscover new window[10]から生のログを確認します。

DiscoverではKQL(Kibana Query Language)new window[11]でログを絞りこめます。
送信元IPアドレスが「WS」の192.168.234.149であり、AdministratorユーザーでDCにログオンしたログの有無を確認したいので、以下のようなKQLを実行しました。

agent.name:"DC" AND source.ip:"192.168.234.149" AND event.action: ("log_on" or "logged-in") AND user.name: "Administrator"

KQLを実行後、結果は以下の様になりました。「WS」から「DC」に対して、ドメイン管理者の権限でリモートログオンされていることが確認できました。

zoom拡大する
「WS」から「DC」にリモートアクセスされている痕跡

タイムラインを作成

タイムラインに表示させるイベントは、フィルターやKQLで絞り込むことができます。今回はレジストリキーが「HKLM\SECURITY\Cache\NL$IterationCount」であるというフィルターに合致するイベントと、「WS」から「DC」へのアクセスを確認した際のKQLでヒットするイベントのみをタイムラインに表示しています。

zoom拡大する
タイムライン作成の様子
  • タイムラインを作成する際、時間範囲は上図のように特定の時刻を指定すると時間の経過によって、イベントが表示されなくなるということがなくなります。

作成したタイムラインは、以下の様にCaseに紐づけることができます。

タイムラインがCaseに紐づけされている様子

また、Elastic SecurityのCaseは、Connectorという機能を用いてサードパーティのJira等のインシデントマネジメントシステムと連携することも可能です new window[12]

最後に

本ブログでは、内部不正の攻撃のシナリオに沿ってElastic Securityの機能を紹介しました。
筆者は普段エージェントがインストールされていないマシンから抽出されたログを成形してElastic Searchに投入・解析を行っています。その環境を構築する際、Elastic Searchのフィールドのマッピングをマニュアルで実施して大変だった経験があるので、その辺を自動でやってくれるElastic Security・Elastic Agentの構成は非常に便利だなと感じました。
「Elastic Securityってどんな機能があるの?」という疑問を持っている方にとって、少しでも本ブログが参考になれば幸いです。

参考リンク

執筆者プロフィール

加来 大輔(かく だいすけ)
セキュリティ技術センター リスクハンティングチーム

NECがお客様に納品したシステムに対するインシデント対応、Web診断などの業務に従事。
RISS、CISSP Associate、CEHを保持。

執筆者の他の記事を読む

アクセスランキング