
Windowsイベントログの可視化と分析により、悪意のあるWindowsログオンを調査する
LogonTracer v2 は、Windows Active Directory イベントログを可視化・分析し、不正なログオンを調査するためのツールです。このツールは、ログオン関連イベントに含まれるホスト名(またはIPアドレス)とアカウント名を関連付け、グラフとして表示します。これにより、どのアカウントでログイン試行が発生し、どのホストが使用されているかを確認できます。
このツールは、Windows ログオンに関連する以下のイベントIDを可視化できます。
| Event ID | 説明 |
|---|---|
| 4624 | ログオン成功 |
| 4625 | ログオン失敗 |
| 4662 | オブジェクトに対する操作が実行されました |
| 4672 | 特別な特権が割り当てられました |
| 4719 | システム監査ポリシーが変更されました |
| 4720 | ユーザーアカウントが作成されました |
| 4726 | ユーザーアカウントが削除されました |
| 4728 / 4732 / 4756 | セキュリティが有効なグループにメンバーが追加されました |
| 4729 / 4733 / 4757 | セキュリティが有効なグループからメンバーが削除されました |
| 4768 | Kerberos 認証(TGT 要求) |
| 4769 | Kerberos サービスチケット(ST 要求) |
| 4776 | NTLM 認証 |
| 5137 | ディレクトリサービスオブジェクトが作成されました |
| 5141 | ディレクトリサービスオブジェクトが削除されました |
詳細については、以下のドキュメントを参照してください。

LogonTracer v2.0 は、OpenAI GPT モデルを利用した AI 分析エンジンを統合し、従来のルールベースのアプローチを超えたインテリジェントな脅威検出を提供します。
LogonTracer は PageRank、隠れマルコフモデル、および ChangeFinder を使用して、イベントログから悪意のあるホストやアカウントを検出します。

LogonTracer では、イベントログを時系列で表示することも可能です。

Python 3.9 以降(3.12 推奨)
Neo4j 5.x(Community または Enterprise)
OpenAI API キー(オプション — AI 分析機能にのみ必要)
Python モジュール
numpy
evtx
lxml
scipy
changefinder
flask
hmmlearn>=0.2.8
scikit-learn
elasticsearch-dsl>=7.0.0,<8.0.0
pyyaml
flask-sqlalchemy
flask-login
flask_wtf
flask-limiter
wtforms
GitPython
pysigma>=0.11.0
pysigma-backend-sqlite
openai>=1.0.0
aiohttp
neo4j
git clone https://github.com/JPCERTCC/LogonTracer.git
cd LogonTracer
pip3 install -r requirements.txt
Neo4j をダウンロードして起動します。初期パスワードを設定し、Bolt ポート(デフォルト: 7687)を確認してください。
vi config/config.yml
主な設定:
settings:
logontracer:
WEB_PORT: "8080"
default_user: "neo4j" # デフォルトのLogonTracerアカウントのNeo4jユーザー名
default_password: "password" # 初回実行前に変更してください
neo4j:
NEO4J_USER: "neo4j"
NEO4J_PASSWORD: "password" # あなたのNeo4jパスワード
NEO4J_SERVER: "localhost"
WS_PORT: "7687"
python3 logontracer.py --run
ブラウザで http://localhost:8080 を開きます。
python3 logontracer.py -e <path/to/Security.evtx> -z <UTC offset> -s <Neo4j server> -u <user> -p <password>
python3 logontracer.py -x <path/to/event.xml> -z <UTC offset> -s <Neo4j server> -u <user> -p <password>
python3 logontracer.py --es -s <Neo4j server> -u <user> -p <password> --es-server <ES host:port>
インポート時に Sigma ルール検出を実行するには --sigma フラグを追加します。
python3 logontracer.py -e <path/to/Security.evtx> -z 9 -s localhost -u neo4j -p password --sigma
python3 logontracer.py -e <path/to/Security.evtx> -z 9 -s localhost -u neo4j -p password --add
Web アプリケーション起動後、左サイドバーの Upload Event Log をクリックします。可能な操作:

Sigma スキャンを有効にしてアップロードした後、または API から再スキャンをトリガーした後、サイドバーの Sigma Scan Results をクリックすると結果が表示されます。








Neo4j Enterprise Edition を使用すると、LogonTracer は複数の独立した調査ケースをサポートします。各ケースは別個の Neo4j データベースに保存されます。
docker run \
--detach \
--publish=7474:7474 --publish=7687:7687 --publish=8080:8080 \
-e LTHOSTNAME=<IP Address> \
jpcertcc/docker-logontracer
cd docker-compose
docker compose build
docker compose up -d
cd docker-compose-with-nginx
docker compose build
docker compose up -d
cd docker-compose-with-elasticstack
docker compose build
docker compose up -d
以下の YouTube ビデオ で LogonTracer の使い方を紹介しています。
詳細については、LogonTracer Wiki をご確認ください。
| オプション | 説明 |
|---|
-r, --run | Web アプリケーションを起動 |
-o PORT | Web アプリケーションのポート番号(デフォルト: 8080) |
--host HOST | バインドアドレス(デフォルト: 0.0.0.0) |
-e EVTX [...] | EVTX ファイルをインポート |
-x XML [...] | XML イベントログファイルをインポート |
-s SERVER | Neo4j サーバーアドレス(デフォルト: localhost) |
-u USER | Neo4j ユーザー名(デフォルト: neo4j) |
-p PASSWORD | Neo4j パスワード |
--wsport PORT | Neo4j Bolt ポート(デフォルト: 7687) |
-z UTC | タイムゾーンオフセット(例: JST の場合は 9) |
-f DATE | この日時からログをパース(例: 2024-01-01T00:00:00) |
-t DATE | この日時までのログをパース |
--add | データベースをクリアせずにデータを追加 |
--delete | インポート前にデータベースをクリア |
--sigma | インポート中に Sigma ルールスキャンを実行 |
--sigma-only | Sigma スキャンのみ実行(Neo4j 処理なし) |
--sigma-rules PATH | Sigma ルールフォルダのパス(デフォルト: sigma) |
--es | Elasticsearch からデータをインポート |
--postes | 分析結果を Elasticsearch に投稿 |
--es-server HOST:PORT | Elasticsearch サーバー |
--es-index INDEX | Elasticsearch インデックス(デフォルト: winlogbeat-*) |
--es-prefix PREFIX | Elasticsearch イベントプレフィックス(デフォルト: winlog) |
--case NAME | Neo4j Enterprise マルチデータベースモードのケース名 |
-c FILE | 設定ファイルのパス(デフォルト: config/config.yml) |
--create_user USER | 新しい Neo4j ユーザーを作成 |
--create_password PASS | 新しい Neo4j ユーザーのパスワード |
--role ROLE | 新しいユーザーのロール(admin、architect、reader) |
--delete_user USER | Neo4j ユーザーを削除 |
-l, --learn | 機械学習分析(隠れマルコフモデル)を実行 |