イベントログを可視化して不正使用されたアカウントを調査 ~LogonTracer~(2017-11-28)
セキュリティインシデントの調査においてイベントログの分析は欠かせない作業です。Active Directory(以下、「AD」という。)で管理されたネットワークでは、ADのイベントログを分析することで不正使用されたアカウントや侵入されたホストを知ることができます。イベントログを分析する際、イベントビューアーでは詳細な分析をすることが難しいため、テキスト形式にエクスポートして分析したり、SIEMやログ管理システムにログをインポートして分析したりするのが一般的です。しかし、イベントログは環境によっては膨大になるためどこから分析を始めたらよいか、どこに注目して分析したらよいか分からないという問題があります。
JPCERT/CC では、そのようなイベントログの分析をサポートするツール「LogonTracer」を作成し、公開しました。今回は、この「LogonTracer」の機能や導入方法について紹介します。
LogonTracerによるイベントログの可視化
LogonTracerはログオンに関連するイベントログに含まれるホスト名(またはIPアドレス)とアカウント名を関連付けて可視化(グラフ表示)します。それによって、どのホストでどのアカウントを利用してログオン試行が行われているのかを簡単に確認することが可能になります。図1は、LogonTracerでIPアドレスとアカウント名の関連をグラフ化したものです。
各ノードの説明は以下の通りです。アカウントがログオンしたホストを線で結ぶことで、関係を示しています。
- 赤: 管理者権限アカウント
- 青: 一般ユーザアカウント
- 緑: ホストまたはIPアドレス
このように可視化することで、イベントログに関する詳しい知識がなくても視覚的に分析を行うことができます。
重要性の高いアカウントおよびホストの抽出
LogonTracerはイベントログの可視化だけではなく、不正なログオンが行われている可能性があるアカウントおよびホストをランキングし、表示する機能を持っています。図2はLogonTracerによってアカウントおよびホストの重要度をランキング表示した例です。
ここでは可視化したイベントログのグラフに対してネットワーク分析を行い、各ノードの中心性を基にランキングにしています。中心性とは、各ノードがネットワーク内でどのくらい中心に位置しているのかを示す指標です。中心性を算出するアルゴリズムには様々なものがありますが、LogonTracerではPageRank[1]を使用しています。PageRankは多くのノードと接続されたもの、すなわちグラフの中心に位置するノードの値が高くなります。
多くのホストのログオンに使用されたアカウントは不正に使用されている可能性が高いので、グラフの中心に位置すると考えられます。そのため、中心性をランキングすることで不正使用されたアカウントを洗い出すことができる可能性があります。
イベントログのタイムライン表示
LogonTracerにはさらにイベントログを時系列で表示する機能もあります。図3は、各アカウントの時間毎のイベントログ数をカウントして時系列に沿って表示しています。
イベントログを時系列で確認することで、短い時間での多数の端末への不正ログオンを発見したり、業務時間外に発生した不正ログオンを洗い出したりすることができます。
なお、イベントログのカウント数が急増している箇所については自動的にハイライトされます。カウント数の増加を検知する方法として、異常検知手法であるChange Finder[2]を使用しています。
LogonTracerの入手と使用するための準備
ツールはソフトウエア開発プロジェクトのための共有ウェブサービスGitHubで公開していますので、次のWebページからダウンロードしてご利用ください。
JPCERTCC GitHub - LogonTracer
https://github.com/JPCERTCC/LogonTracer
以下では、LogonTracerを使用するための手順を記載します。なお、LogonTracerの動作確認はLinux環境で行っています。
1. Neo4j community editionの入手とインストール
以下のサイトからNeo4j community editionをダウンロードし、インストールします。
https://neo4j.com/download/other-releases/#releases
2. LogonTracerをダウンロード
以下からダウンロードし、任意のフォルダに展開します。
https://github.com/JPCERTCC/LogonTracer
3. Neo4j JavaScript driverのインストール
Neo4jのJavaScript driverをLogonTracerのstaticフォルダにインストールします。
$ cd LogonTracer/static
$ npm install neo4j-driver
4. Pythonモジュールのインストール
LogonTracerが使用するPythonモジュールをインストールします。
$ pip install -r requirements.txt
※ statsmodelsのインストールに失敗するエラーが表示された場合は、numpyを先にインストールしてください。
5. Neo4jの起動
GUIまたは、コマンドラインでNeo4jを起動します。
LogonTracerの使用方法
LogonTracerを使用する際は、以下のオプションを使って起動します。
$ python3 logontracer.py -r -o [PORT] -u [USERNAME] -p
[PASSWORD] -s [IP Address]
- -r – Webサーバの起動
- -o – Webサーバの動作するポート番号(8080など)
- -u – インストールしたNeo4jのユーザ名(デフォルトではneo4j)
- -p – インストールしたNeo4jのパスワード
- -s – Webサーバの起動するアドレス(localhostなど)
以下は、LogonTracerを実行した例です。
LogonTracerのWebインターフェースにはブラウザから以下のURLにアクセスすることで接続することができます。(以下は、ローカル環境にLogonTracerをインストールし、ポート番号を8080に指定して起動した場合です。)
http://localhost:8080/
イベントログのインポートはEVTX形式のファイルをアップロードすることで行うことができます。
Dockerイメージの使用方法
LogonTracerのDockerイメージをDocker Hubで公開しています。
https://hub.docker.com/r/jpcertcc/docker-logontracer/
Dockerを使用している場合は、以下のコマンドでイメージを起動することが可能です。
$ docker run ¥ --detach ¥ --publish=7474:7474 --publish=7687:7687 --publish=8080:8080 ¥ -e LTHOSTNAME=[IP Address] ¥ jpcertcc/docker-logontracer
LogonTracerが分析対象とするイベントログとツールを使用する際の注意点
JPCERT/CC が公開したレポート「ログを活用したActive Directoryに対する攻撃の検知と対策」では、ADのログ分析方法として、以下のログオンに関連するイベントを監視することで不正ログオンを調査する方法について説明しています。LogonTracerでも、以下のイベント ID を可視化の対象としています。
- イベントID 4624: ログオン成功
- イベントID 4625: ログオン失敗
- イベントID 4768: Kerberos認証(TGT要求)
- イベントID 4769: Kerberos認証(ST要求)
- イベントID 4776: NTLM認証
- イベントID 4672: 特権の割り当て
なお上記イベントIDの中には、既定の設定では記録されないものがあります。これらのイベントログは監査ポリシーを有効にすることで記録されます。監査ポリシーを有効にしていない場合は、有効化することをお勧めします。設定方法に関しては前述のレポート「ログを活用したActive Directory に対する攻撃の検知と対策」のAppendix E)をご覧ください。
おわりに
イベントログはインシデント調査に必要不可欠なものではありますが、慣れていなければどこから調査してよいのか分からず、時間がかかってしまいます。このツールではそのような問題を解消するために、可視化という手法を用いて比較的簡単にイベントログの分析が行えるようにしています。インシデント調査に備えて、本ツールを使用してみていただければと思います。
次回は、本ツールを利用して分析を行う方法について紹介します。
分析センター 朝長 秀誠
参考情報
[1] Wikipedia: ページランク
https://ja.wikipedia.org/wiki/ページランク
[2] IEEE: A unifying framework for detecting outliers and change points from time series
http://ieeexplore.ieee.org/document/1599387/
2018年11月7日追記
LogonTracer (v1.2.0 およびそれ以前) に、複数の脆弱性が存在することを確認いたしました。
LogonTracerをご使用の場合は、最新のバージョンにアップデートをお願いします。
JVNVU#98026636
LogonTracer に複数の脆弱性
https://jvn.jp/vu/JVNVU98026636/index.html
Release v1.2.1 - JPCERTCC/LogonTracer - GitHub
https://github.com/JPCERTCC/LogonTracer/releases/tag/v1.2.1
謝辞:本脆弱性に関しては以下の方から報告をいただきました。
報告者:株式会社神戸デジタル・ラボ 馬場 将次 氏