【Windows 11新機能】Sysmonがオプション機能に登場。不審な挙動を自動であぶり出す最強ログツール活用術Tech TIPS

2026年3月のアップデート(KB5079473)により、IT管理者愛用の監視ツール「Sysmon」がWindows 11の標準オプションとして提供開始された。これまで手動導入が必要だった高度なログ収集が、数クリックで実現可能になった。不審なプロセスや通信、ファイル改ざんを可視化する、最強の防御設定と解析テクニックを徹底解説する。

» 2026年03月18日 05時00分 公開
[小林章彦デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Tech TIPS」のインデックス

連載目次

対象:Windows 11


Windows 11の新機能「Sysmon」がオプション機能に登場 Windows 11の新機能「Sysmon」がオプション機能に登場
2026年3月のアップデート(KB5079473)により、IT管理者愛用の監視ツール「Sysmon」がWindows 11の標準オプションとして提供開始された。これまで手動導入が必要だった高度なログ収集が、数クリックで実現可能になった。不審なプロセスや通信、ファイル改ざんを可視化する、最強の防御設定と解析テクニックを徹底解説する。

 2026年3月10日(米国時間)に提供開始となったWindows 11の更新プログラム(KB5079473)で、長年セキュリティの専門家たちに愛用されてきた監視ツール「Sysmon(System Monitor)」が標準搭載された。これまでは、Microsoftのシステムユーティリティー集「Sysinternals」からの手動インストールが必要だったが、今後はWindows 11の「オプション機能」から数クリックで有効化できるようになった。

 本Tech TIPSでは、Sysmonを有効化する方法から、ログの確認方法やフィルタリング方法、PowerShellを使った解析手法までを解説する。

Sysmonとは

 Sysmon(System Monitor)は、Windowsのカーネルレベルで動作するシステム監視ツールだ。標準のWindowsイベントログでは記録されない、下表のような詳細な活動を捕捉し、イベントログに書き込む。

監視対象 内容の例
プロセスの生成・終了 どのプログラムが何を起動したか
ネットワーク接続 どのプロセスがどのIPに通信したか
ファイル作成日時の変更 タイムスタンプの改ざん検知
ドライバの読み込み 不審なカーネルドライバの検出
レジストリの変更 自動起動設定などの書き換えなど
DNSクエリ ドメイン名の解決記録
Sysmonの監視対象

Sysmonを有効化する方法

 Sysmonを有効にするには、2026年3月の更新プログラム(KB5079473)の適用が必要である。対象バージョンは、2024 Update(バージョン24H2)と2025 Update(バージョン25H2)である。

「設定」アプリからSysmonを有効化する方法

 「設定」アプリからは、以下の手順で有効化できる。

■操作手順

  1. 「設定」アプリを起動し、[システム]−[オプション機能]を選択する
  2. 「オプション機能」画面の[Windowsのその他の機能]をクリックする
  3. [Windowsの機能]ダイアログが開くので、「Sysmon」にチェックを入れて[OK]ボタンをクリックする

 再起動は不要で、即座に利用可能になる。

Sysmonを有効化する(1) Sysmonを有効化する(1)
「設定」アプリを起動し、[システム]−[オプション機能]を選択、「オプション機能」画面を開き、[Windowsのその他の機能]をクリックする。
Sysmonを有効化する(2) Sysmonを有効化する(2)
[Windowsの機能]ダイアログが開いたら、「Sysmon」にチェックを入れて[OK]ボタンをクリックする。

PowerShellからSysmonを有効化する

 PowerShellを使ってSysmonを有効化することもできる。管理者権限でWindowsターミナルのPowerShellを開き、以下のコマンドレットを実行すればよい。

Enable-WindowsOptionalFeature -Online -FeatureName "Sysmon" -NoRestart

Sysmonを有効化するPowerShellのコマンドレット

Sysmonサービスの開始と初期設定

 Sysmonは、有効化しただけではサービスは起動していない。管理者権限でコマンドプロンプトまたはPowerShellを開き、以下のコマンドを実行する必要がある。

sysmon -i -n

サービスのインストールとネットワーク監視を同時に有効化するコマンド
「-i」は、サービスをインストール・開始するオプション。「-n」はネットワーク接続の監視を有効化するオプション。

Sysmonのサービスを実行する Sysmonのサービスを実行する
Sysmonを有効化したら、管理者権限でコマンドプロンプトを開き、「sysmon -i -n」を実行して、Sysmonのサービスを起動してログの記録を開始する。

 コマンドの実行後、サービスが正常に起動しているかどうかを確認するには、管理者権限でPowerShellを開き、以下のコマンドレットを実行すればよい。

Get-Service Sysmon | Format-List Name, Status, StartType

Sysmonのサービスを確認するコマンドレット
「Status: Running」と表示されれば正常稼働している。サービスがインストールされていないと、「Get-Service : サービス名 'Sysmon' のサービスが見つかりません。」というエラーが表示される。

Sysinternals版のSysmonは事前にアンインストールが必要

 既にSysinternals版のSysmonをインストールしている場合は、管理者権限でコマンドプロンプトを開き、以下のコマンドを実行する必要がある。これでサービスとドライバがアンインストールされ、メモリ常駐が解除される。

■32bit版
sysmon.exe -u force

■64bit版
sysmon64.exe -u force

Sysinternals版Sysmonをアンインストールするコマンド

Sysmonのログを確認する方法

 Sysmonを実行しただけでは意味がない。Sysmonが記録したイベントを確認し、異常なものがないかどうかを確認する必要がある。

方法A:イベントビューアーでSysmonが記録したイベントを確認する

 タスクバーにある[スタート]ボタンを右クリックしてクイックアクセスメニューを開き、[イベントビューアー]を選択、「イベントビューアー」を起動する。

 左ペインで「アプリケーションとサービスログ」−「Microsoft」−「Windows」−「Sysmon」−「Operational」を選択すると、右ペインにSysmonが記録したイベントの一覧が表示される。

イベントビューアーでログを確認する イベントビューアーでログを確認する
「イベントビューアー」を起動したら、左ペインで「アプリケーションとサービスログ」−「Microsoft」−「Windows」−「Sysmon」−「Operational」を選択する。右ペインにSysmonが記録したイベントの一覧が表示される。ここで不審なログがないかどうかを確認すればよい。

 各イベントには「イベントID」が付与されており、内容を識別する手掛かりになる。主要なイベントIDを下表に示す。

イベントID 内容
1 プロセス生成(最も基本的な監視項目)
2 ファイルの作成日時変更(タイムスタンプの改ざん)
3 ネットワーク接続
7 イメージ(DLLなど)の読み込み
11 ファイルの作成
12/13/14 レジストリの変更
22 DNSクエリ
Sysmonが記録するイベントIDの意味

方法B:PowerShellを使ってSysmonが記録したイベントを確認する

 イベントビューアーは、GUIで確認できて分かりやすい。しかし、大量のログから必要な情報を絞り込むなら、PowerShellの方が圧倒的に効率的だ。

 例えば、Sysmonの直近50件のイベントを取得するのであれば、PowerShellで以下のコマンドレットを実行すればよい。

Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" -MaxEvents 50

Sysmonの直近50件のイベントを取得するPowerShellのコマンドレット

PowerShellのコマンドレットで直近50件のログを出力する PowerShellのコマンドレットで直近50件のログを出力する
上記のコマンドレットを実行すると、直近50件のログをが出力される。

構成ファイルでイベントをフィルタリングする

 標準の状態では全てのイベントが記録されるため、ログが膨大になり重要な情報が埋もれてしまう可能性がある。XML形式の構成ファイルを使って「記録しないイベント」を定義しておくのが運用のコツだ。

 以下は、単純なSysmonの構成ファイルの例だ。

<Sysmon schemaversion="4.82">
  <!-- Capture all hashes -->
  <HashAlgorithms>*</HashAlgorithms>   
  <EventFiltering>   
    <!-- Log all drivers except if the signature -->  
    <!-- contains Microsoft or Windows -->     
    <DriverLoad onmatch="exclude">   
      <Signature condition="contains">microsoft</Signature>
      <Signature condition="contains">windows</Signature> 
    </DriverLoad>        
        <!-- Do not log process termination -->   
       <ProcessTerminate onmatch="include" /> 
       <!-- Log network connection if the destination port equals 443 -->  
       <!-- or 80, and process isn't InternetExplorer -->  
    <NetworkConnect onmatch="include">  
      <DestinationPort>443</DestinationPort>  
      <DestinationPort>80</DestinationPort>  
    </NetworkConnect>
      <NetworkConnect onmatch="exclude">   
       <Image condition="end with">iexplore.exe</Image>    
    </NetworkConnect>    
  </EventFiltering> 
</Sysmon>

構成ファイルの例

 ただし、これでは単純なフィルタリングしかしていないため、多くのイベントが記録されてしまう。GitHubの「SwiftOnSecurity/sysmon-config」で配布されている「sysmonconfig-export.xml」が包括的なルールセットとして広く利用されているので、これを活用するのがよいだろう。

 このファイルを「config.xml」として保存し、以下のコマンドで適用すればよい。

sysmon -c .\config.xml

構成ファイルを読み込むコマンド

構成ファイルでイベントをフィルタリングする(1) 構成ファイルでイベントをフィルタリングする(1)
「メモ帳」アプリを起動し、上記の構成ファイルの内容を貼り付ける。これを[Temp]フォルダなどに「config.xml」として保存する。
構成ファイルでイベントをフィルタリングする(2) 構成ファイルでイベントをフィルタリングする(2)
「sysmon -c .\config.xml」を実行して、作成した構成ファイルを適用する。これで、構成ファイルで除外するように設定したイベントが記録されなくなる。

 設定が正しく適用されたかどうか確認するには以下を実行する。現在の設定内容が表示される。

sysmon -c

設定が適用されたかどうかを確認するコマンド

設定の適用状況を確認する 設定の適用状況を確認する
「sysmon -c」コマンドを実行すると、設定されている内容が出力される。構成ファイルで設定した内容が反映されているかどうかを確認するとよい。

PowerShellによる実践的な解析

 PowerShellを使って、「タイムスタンプの改ざんを検出する」と「不審な外部通信を洗い出す」の2つのシナリオでSysmonのイベントログから抽出する方法を紹介しよう。いずれも管理者権限でPowerShellを開いて実行する。

タイムスタンプの改ざんを検出する

 マルウェアは自身の存在を隠すため、作成日時を数年前に偽装することがある。このスクリプトはその「書き換え行為そのもの」を記録したログを抽出するものだ。

Get-WinEvent -FilterHashtable @{
    LogName = 'Microsoft-Windows-Sysmon/Operational'
    Id      = 2  # ファイル作成日時の変更
} -MaxEvents 100 | ForEach-Object {
    $xml = [xml]$_.ToXml()
    $data = $xml.Event.EventData.Data
    [PSCustomObject]@{
        Time         = $_.TimeCreated
        Process      = ($data | Where-Object Name -eq 'Image').('#text')
        TargetFile   = ($data | Where-Object Name -eq 'TargetFilename').('#text')
        CreationTime = ($data | Where-Object Name -eq 'CreationUtcTime').('#text')
        PreviousTime = ($data | Where-Object Name -eq 'PreviousCreationUtcTime').('#text')
    }
} | Format-Table -AutoSize

タイムスタンプの改ざんを検出するPowerShellスクリプト

 「メモ帳」アプリを起動し、上記のスクリプトを貼り付けて「timestamp.ps1」などのファイル名で保存して、管理者権限で開いたコマンドプロンプトやPowerShellで以下のコマンドで実行すればよい。

PowerShell -ExecutionPolicy RemoteSigned .\timestamp.ps1

タイムスタンプの改ざんを検出するPowerShellスクリプトを実行するコマンド

 該当するログ(イベント)が見つからなかったときは、「Get-WinEvent : 指定した選択条件に一致するイベントが見つかりませんでした。」というエラーメッセージが表示される。

 見つかった場合は、対象ログの記録日時や対象プロセスのフルパスなどの一覧表が表示される。

 上記のスクリプトでは直近の最大100件のログを抽出する。件数をもっと増やしたい場合は、Get-WinEventコマンドレットの引数「-MaxEvents」の値を増やしてほしい。

不審な外部通信を洗い出す

 どのプロセスがどのIPアドレスやポートに接続したかを一覧化するPowerShellスクリプトは以下の通りだ。見慣れない宛先IPや深夜帯の通信がないかどうか確認するのに役立つ。

Get-WinEvent -FilterHashtable @{
    LogName = 'Microsoft-Windows-Sysmon/Operational'
    Id      = 3  # ネットワーク接続
} -MaxEvents 200 | ForEach-Object {
    $xml = [xml]$_.ToXml()
    $data = $xml.Event.EventData.Data
    [PSCustomObject]@{
        Time       = $_.TimeCreated
        Process    = ($data | Where-Object Name -eq 'Image').'#text'
        DestIP     = ($data | Where-Object Name -eq 'DestinationIp').'#text'
        DestPort   = ($data | Where-Object Name -eq 'DestinationPort').('#text')
        DestHost   = ($data | Where-Object Name -eq 'DestinationHostname').('#text')
    }
} | Sort-Object DestIP -Unique | Format-Table -AutoSize

プロセスのネットワーク接続を抽出するPowerShellスクリプト

 「メモ帳」アプリを起動し、上記のスクリプトを貼り付けて「netlog.ps1」などのファイル名で保存して、管理者権限で開いたコマンドプロンプトやPowerShellで以下のコマンドで実行すればよい。

PowerShell -ExecutionPolicy RemoteSigned .\netlog.ps1

プロセスのネットワーク接続を抽出するPowerShellスクリプトを実行するコマンド

不審な外部通信を確認する 不審な外部通信を確認する
作成したPowerShellスクリプトを実行すると、どのプロセスがどこと通信したのかが表示される。ここで不審なプロセス名や通信先がないかどうかを確認すればよい。なお画面は、構成ファイルを反映する前のログが含まれるため、システムやWebブラウザが通信した内容が出力されている。

Sysmonのサービスやドライバの登録を解除する

 「sysmon -i」でインストールしたSysmonのサービスやドライバをアンインストールするには、管理者権限でコマンドプロンプトを開き、以下のコマンドを実行すればよい。

sysmon -u

★コードタイトル★

 これでサービスやドライバの登録が解除され、メモリからアンインストールされる。Sysmonによるログも記録されなくなる。

Copyright© Digital Advantage Corp. All Rights Reserved.

アイティメディアからのお知らせ

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2026
人に頼れない今こそ、本音で語るセキュリティ「モダナイズ」
4AI by @IT - AIを作り、動かし、守り、生かす
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。