タイトルは「イベントログを可視化」になってるけど前回に続き今回もちょっと違うのでスミマセン。
今月上旬にインターネットのニュースで知ったばかりだけど、JPCERTコーディネーションセンター(JPCERT/CC)がElastic Stack + Winlogbeat + Sysmon環境で利用できるWindows端末調査ツールのSysmonSearchというのをリリースしたということで、面白そうなので触ってみた。
WindowsにSysmonをインストール
面倒だが、監視対象のWindows全台に対してSysmonのインストールとWinlogbeatの設定変更までを行う。
Windows SysinternalsからSysmonをダウンロードする
- https://live.sysinternals.com/Files/Sysmon.zip 解凍すると32/64bit両方
- https://live.sysinternals.com/Sysmon.exe 32bit用
- https://live.sysinternals.com/Sysmon64.exe 64bit用
コマンドプロンプト(管理者)でインストール
Microsoft Windows [Version 10.0.17134.285] (c) 2018 Microsoft Corporation. All rights reserved. C:\WINDOWS\system32> cd \users\foobar\downloads\sysmon C:\Users\foobar\Downloads\Sysmon> .\sysmon64.exe -i -l -n -accepteula System Monitor v8.00 - System activity monitor Copyright (C) 2014-2018 Mark Russinovich and Thomas Garnier Sysinternals - www.sysinternals.com Sysmon64 installed. SysmonDrv installed. Starting SysmonDrv. SysmonDrv started. Starting Sysmon64.. Sysmon64 started. C:\Users\foobar\Downloads\Sysmon> exit
今回インストールするsysmonは64版でdownloadsフォルダに保存してあるとする。
実行ユーザーのアカウントをfoobarとしているので自分のアカウントに読み替えて。
これでSysmonがサービスとして登録され、且つ起動した状態になる。次回以降のWindowsシステム起動時に自動的にサービスが起動する筈だが、念の為に「サービス」を確認しておいた方が良いかも。
Winlogbeatの設定変更
C:\Program Files\winlogbeat\winlogbeat.yml (変更・追加)1 2 3 4 5 6 7 8 | #=====Elasticsearch template setting ==========
setup.template.enabled: false #追加
#=====Elasticsearch template setting ==========
#------Elasticsearch output -----------------
output.elasticsearch:
hosts: ["192.168.1.240:9200", "192.168.1.241:9200"]
index: "winlogbeat-${+yyyy.MM.dd}" #インデックス名に勝手にbeatバージョンが付く場合 テンプレートをfalseにすると要らないかな?
|
「サービス」でwinlogbeatを再起動する。
winlogbeatのインデックスが変わったら既存のインデックスパターンやTimelionやVisualizeでそれを使用するものに影響するので注意。
SysmonSearchのインストール
基本的にはHow to Installに従う。(日本語のドキュメント)
以下のインストール手順はFreeBSDに合わせているのでLinuxの人は読み飛ばして下さい。また、Elasticsearch6とkibana6は既にインストール済みで稼働中とします。
% git clone https://github.com/JPCERTCC/SysmonSearch.git % wget https://github.com/JPCERTCC/SysmonSearch/archive/master.zip
ディレクトリ名をSysmonSearch-masterからSysmonSearchに変更
FreeBSDのportsではkibanaは/usr/local/www/kibana6に置かれているのでSysmon Searchもその下に置くことにする。Kibanaをインターネットから見られるようになっているなら別のところに置いた方が良いかも。何処に置いても良いんだし。(↓の最初の行)
# mv SysmonSearch /usr/local/www/kibana6/ # cd /usr/ports/devel/py-pip # make install # pip install elasticsearch # pip install elasticsearch_dsl # cd /usr/local/www/kibana6 # curl -XPUT http://[ElasticsearchのIPアドレス]:9200/_template/template1 -d@SysmonSearch/script/template1.json -H "Content-Type: application/json" # curl -XPUT http://[ElasticsearchのIPアドレス]:9200/_template/template2 -d@SysmonSearch/script/template2.json -H "Content-Type: application/json" # curl -XPUT http://[ElasticsearchのIPアドレス]:9200/_template/template3 -d@SysmonSearch/script/template3.json -H "Content-Type: application/json" # cd /usr/local/www/kibana6/SysmonSearch/script # mkdir logs # vim exec_collection_statistical_data.sh (How to Installに従って編集 さらに1行目のbashのpath変更) # vim collection_statistical_data_setting.py (How to Installに従って編集) # vim collection_alert_data_setting.py (How to Installに従って編集) # cp -pR /usr/local/www/kibana6/SysmonSearch/sysmon_search_plugin /usr/local/www/kibana6/plugins/ # vim /usr/local/www/kibana6/plugins/sysmon_search_plugin/conf.js (How to Installに従って編集) ##ここから10コマンドはStixIoc # cd /usr/ports/www/py-tornado # make install # cd /usr/ports/devel/py-virtualenv # make install # cd /usr/ports/devel/py-virtualenvwrapper # make install # pip install openioc-to-stix # pip install cti-stix-slider.git # pip install stix2-slider or pip install git+https://github.com/oasis-open/cti-stix-slider.git # mkdir /usr/local/www/kibana6/SysmonSearch/stixioc-import-server/logs
FreeBSDのports/pkgでインストールしたPythonがpythonというコマンドで実行できない場合はシンボリックリンクを張る。
# ln -s /usr/local/bin/python2 /usr/local/bin/python または # ln -s /usr/local/bin/python3 /usr/local/bin/python/root/.bashrc (新規 or 追記2行)
1 2 | source /usr/local/bin/virtualenvwrapper.sh
export WORKON_HOME=~/.virtualenvs
|
/etc/crontab (追記3行)
1 2 3 | 0,30 * * * * root sh /usr/local/www/kibana6/SysmonSearch/script/exec_collection_statistical_data.sh
0,30 * * * * root python /usr/local/www/kibana6/SysmonSearch/script/collection_alert_data.py
0 1 * * * root DATE=`date -d "-1 day" "+%Y.%m.%d"` ; sh /usr/local/www/kibana6/SysmonSearch/script/exec_collection_statistical_data.sh $DATE
|
% bash $ cd /usr/local/www/kibana6/SysmonSearch/stixioc-import-server/ $ virtualenv .env $ source .env/bin/activate $ python server.pyKibana6を再起動。
# service kibana restart
再起動後は暫く待つ。再起動前にブラウザでKibanaを表示した状態でKibanaを再起動するのが再起動完了がわかりやすくてオススメ。
SysmonSearchを触ってみる
SysmonSearchはKibanaから操作する。
先に書いておくと、インストールに問題があるのかSysmonSearchの完成度の問題なのかいろいろ機能していない。インストールの問題であれば改善したときにこの記事を更新するかも。
Kibanaの左列の[SysmonSearch] (左列を折りたたんだ状態では[S]という表示)をクリック。
右列上部で[Search]タブをクリック。それ以外のタブは機能させる方法が解らなかった。
日付・時間で表示範囲を指定。無指定も可。
Fieldはプルダウンメニューから[Process Name]を選択。それ以外の選択肢はHost Name以外は機能させる方法が解らなかった。
プロセス名が解っているならそれを入力する。上の画像ではブラウザのchromeを指定している。プロセス名を指定せず全てを表示するなら半角スペースを入力する。
右の[Find Now]ボタンをクリックすると少し待たされて結果がリスト表示される。
リストの各行でTable, Graph, プロセス名がクリック可能。Tableは後述。
Graphは全てのプロセスの関係がマップが表示されるみたい。そこから詳細を探すことに。(次画像)
リストの一番右列のImageはプロセス名が表示されていて、クリックするとそのプログラムの呼び出し(依存?)関係がグラフ表示されるみたい。
1つ前の画面でGraphをクリックした。
プロセスの関係がマップ表示される。クリックしたプロセスに関係あるプロセスだけが表示されるわけではなく全て?
マップの拡大縮小はマウスのホイールで行う。
マップの中の1つのアイテムをクリック。クリックしたアイテムが赤枠付きで中央に表示されるみたい。
何から呼び出されたか(左)と、どこに接続したか(何を呼び出したか)が右に表示されるみたい。
一つ戻って(単純に「1つ戻る」ができないので最初からやり直して)キーワードにプロセス名を入力して[submit]ボタンをクリック。
入力したキーワードのプロセスに赤枠が付く。上の画像ではブラウザのChromeを指定してみたが、ChromeからChromeを呼び出すというのが多いためかChromeがたくさん赤枠付きになった。
オレンジのアイテムは外部の接続先のよう。それをクリック(次)。
クリックした接続先だけが表示されるわけではなく、Chromeがどこから呼び出されたか(左)とChromeが呼び出したプロセスや接続先が縦1列にズラリと並ぶ。
その右のアイテムの1つを左クリックした場合は再びリスト表示になるがDatailed Information(詳細情報)というわりに何を示しているのか不明。
その右のアイテムの1つを右クリックした場合は役に立たない情報がポップアップ表示される。
Tableを表示した。上部のキーワードにtcp[Enter]を入力してみた。これでTCPでの外部接続だけが絞られた。(逆にそれ以外は何も絞られていない?)
ここまでSysmonSearchを触ってみた程度だが、気になったのが日時指定で自由に絞れないこと。どの状態でも絞れないと関係無い情報が大量に出過ぎて欲しい情報に簡単にアクセスできない。逆に自由に絞れるようになったら「監視対象のユーザー」が「いつ」「どこに」アクセスしたとか、「何を起動した」が簡単にわかるようになる。そこまでできるのならIPアドレスやホスト名だけでなくURLも表示できるようにして欲しいところ。ついでにキーロガーも欲しいわね。まぁ、それはSysmonSearchではなくSysmon (Microsoft?)に要望するべきなのかもしれないが。
そういうのができるようになると企業でも従業員の挙動の監査ツールとして使い物になるように思う。
なお、SysmonSearchはプロセスの挙動調査用らしい。社員の監視目的だと用途違いだと怒られるかな?
- AOOSTARのRyzen 7 5825U搭載ミニPCを買ってみた
- Ryzen 5 5500U搭載で3万円台半ばの格安ミニPC TRIGKEY Speed S5
- CapsLockを左Shiftキーにする 備忘録 (Linux / Windows)
- ウェブ管理者の気まぐれ自作アクセス解析 ElasticsearchとKibanaを添えて
- Tiny 11をMicrosoftと通信させない名前解決変更
- TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (後編)
- TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編)
- TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編)
- Metricbeatで収集したメトリクスデータをKibanaで可視化する
- Kibanaを操作する前にユーザーを作成する
- Metricbeat 8.6.0のインストールと設定
- Elastic Stack 8系をFreeBSDにインストール
- マイクロソフト PCマネージャというアプリを触ってみた
- Windows 11のシステム要件を満たさないPCでWindows11の大型アップデートを適用
- Windows 11でWindows Updateの自動更新を停止する
- Windows 11でWindows Updateによる更新を手動で停める (後編)
- Windows 11でWindows Updateによる更新を手動で停める (前編)
- Windows 11のシステム要件を満たさないPCでWindows10からWindows11にアップグレード
- WindowsでもUnbound (Remote controlの準備)
- Windows 11リリース (例のごとくシステム要件を満たさないPCにインストール)
- Androidスマホ画面をWindowsで表示 (ワイヤレスディスプレイ プロジェクション)
- Windows 11上で「このPCは現在、Windows 11システム要件を満たしていません」
- MS公式誰でもDLできるWindows 11 インサイダー版を古いPCにインストールと休止無効化設定
- Windows IMEで半角/全角キーの割り当てをIMEオフだけに変更(Linuxも)
- Windows 11システム要件に満たないPCにISOファイル無改造でインストール
- Windows 11上で「このPCではWindows 11を実行できません」
- Windows 11を9年前の超非力なノートPCにインストールしてみた
- 情報セキュリティ Windows 10でUSBメモリの自動実行を不可にする
- 情報セキュリティ Windows 10でUSBメモリの読み書きを不可にする
- Windows 10を旧型ノートPCにクリーンインストールしてみた
記事を拝見しました。とても分かりやすく簡潔にまとまっており勉強させて頂きました。こちらの記事同様に私も構築しまして、そこで1点確認です。kibanaのsysmonsearchタブに表示されるログデータ、日時は正確に出力されていますか?winlogbeatだと正確にいまの日本時間で送信されているのですが、kibanaで見るとUTCタイムになっているようです。kibanaの設定画面で「Asis/Tokyo」指定するも改善なく、もし解決されているなら教えて頂けますと幸いです。
SysmonSearchの記事を書いていたときはSysmonSearch上の日時表示はUTCでした。(UTCである旨の表示があります)
Kibanaのタイムゾーン設定はSysmonSearchでは使われなかった筈です。UTCで表示された時刻に9時間足した時間がWindows側で何かイベント発生した時間と一致するのであれば正しい動作だと思うので問題ない認識です。
日本時間でもなくUTC時間でもない、+18時間など時刻が全く正しくないとこということであればwinlogbeat.ymlにローカルタイムゾーンを追加する設定があるようです。2018年前半のバージョンで追加されているもののようです。使ったことはありません。
processors:
- add_locale:
format: offset (abbreviation) ←JSTとか?
時間のズレは無くてUTC表示されること自体が嫌で変更したいということであれば記事当時のバージョンではできなかったのではないかと思います。2020年にリリースされたSysmonSearch 2.0系であれば改善しているかもしれません。Elastic Stack側の大きな変更に対応したバージョンのようです。
SysmonSearch自体はJPCERT/CCで日本人の方が作成されたものの筈ですがドキュメントが少なくてわからないことが多いです。
githubでソース見ろということなのかもしれません。