Splunkと一緒に。簡易EDRツールとしてのsysmonの真価に迫る ~その2: 導入編~

導入編（sysmonの展開 & Splunkへのデータ取込）
---
- 前回の概要編は[こちら](https://qiita.com/odorusatoshi/items/cb9e1cad00b5eb9efe9b)
- まずsysmonをwindows端末にインストール
    - Client: **Windows 7 and higher.**
    - Server: **Windows Server 2008 R2 and higher**
- 次にSplunkのUniversal Forwarder（以下、UF）をインストール
- 最後にDeployment Serverを使ってsysmonログ収集のためのappを配布


Overview
---
<img width="1055" alt="スクリーンショット 2019-05-31 10.42.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/6734b996-ec99-3a31-1987-206c0ef5ae61.png">

- 通信要件の確認
    - 管理系通信（8089番）：
        - UFからDeployment Serverにpollingして新しいコンフィグレーション（app/add-on）があればDLする。
    - UF転送（9997番）：
        - UFからSplunkのIDXに対してログを転送する際に使うポート。転送時の通信ボリュームを圧縮する方法もある。


まずsysmonをwindows端末にインストール
---
### sysmonのダウンロード
- sysmonダウンロードリンク
    - [Sysmon-WindowsSysinternals|MicrosoftDocs](https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon)

### 余計なログ(ノイズ)を減らすためのsysmon-configもダウンロード
- sysmon-configダウンロードリンク
    - https://github.com/SwiftOnSecurity/sysmon-config/blob/master/sysmonconfig-export.xml

- 改めてsysmonが収集できる情報を整理してみました。イベントID1~3は監視を推奨しますので、今回の手順を進めると1~3が取れるようにしています。
<img width="1105" alt="スクリーンショット 2019-05-31 11.11.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/75dd84ec-6700-c669-01d5-85b53adf8f24.png">

- xmlのコンフィグレーションの中身を見てみると、下記サンプルを見てもらうとわかると思うが、ロギングを除外するCommandLineやport番号が指定されていることがわかる。

```xml:sysmonconfig-export.xml(一部、抜粋)
(抜粋)
<ProcessCreate onmatch="exclude">
	<!--SECTION: Microsoft Windows-->
	<CommandLine condition="begin with">C:\Windows\system32\DllHost.exe /Processid</CommandLine> <!--Microsoft:Windows-->
	<CommandLine condition="is">C:\Windows\system32\SearchIndexer.exe /Embedding</CommandLine> <!--Microsoft:Windows: Search Indexer-->
	<Image condition="is">C:\Windows\system32\CompatTelRunner.exe</Image> 
(抜粋)
```
- このconfigを適用しないでログを収集すると、1PCあたり50MB以上/日のログが記録されてしまうため、適用することを**推奨**します。結果、５MB〜10MB/日のログ容量に収まります。

- 一点、注意が必要な点として、社内にProxyがない場合、80と443もNetworkConnectログとしてロギングしてもいいと思います。その場合以下３行をxml内の**< NetworkConnect onmatch="include" >**欄に追記してください。

```xml:sysmonconfig-export.xml(80,443ポート追記イメージ)
<!--Ports: No Proxy-->
<DestinationPort condition="is">80</DestinationPort>
<DestinationPort condition="is">443</DestinationPort>
```

- 参考用としてswiftonsecurityのconfigを元に、以下を追加した[config](https://github.com/odorusatoshi/sysmon-config/blob/master/v4.2_sysmonconfig-export.xml)をおきました。configのschmaバージョンは4.22です。
    - Splunk関連のProcessCreationを除外
    - 80,443番 network connectionも監視

###sysmonをインストール（コンフィグレーションと一緒に）
- sysmonのインストールコマンド(**-n**がnetwokrconnection取るのに必要です)

```
Sysmon.exe -accepteula -i sysmonconfig-export.xml -l -n 
```
- command promptでインストールするとこんな感じのメッセージが出ればOK。
![May-31-2019 12-04-53.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/62d79183-a119-d370-8c48-13586e635d69.gif)

###sysmonのロギングを確認
- OS再起動なくロギングが行われます。
- イベントビューアから[アプリケーション＆サービス]-[Microsoft]-[Windows]-[sysmon]にて確認
<img width="1000" alt="スクリーンショット 2019-05-31 12.14.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/148a2117-8df3-f4ed-0d7e-eb9add14bbac.png">
- 次はsplunkにsysmonイベントを集めてみましょう。

次に、SplunkのUniversal Forwarderをインストール
---
###Deployment Server(以下、DS)機能の準備
####DSについて
- Splunk Enterpriseの機能の１つ
- **SH/IDX兼用のSplunkサーバ上でも設定の有効化は可能なので、数台の試験時には別途DSサーバを立てる必要はない（本番で50台以上のUFを管理する場合は、独立したDSサーバを用意することを推奨）**
- UFに対して、Appを更新/配布する役割
- **UF自身の配布やバージョンアップはできない**
- そのため、別の3rd Party製品で配布してもらってもOKです。実際は、こなれたツールを利用しているケースのほうが多いと思います。

####DSのセットアップ
- DS機能は「設定-フォワーダー管理」メニューから利用します。
- 事前設定なしでアクセスしても何も利用できません。
![スクリーンショット 2019-05-31 13.14.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/236c0a70-2f05-2ce4-1b84-e1ea1fb25981.png)

##### CLI（Linuxサーバを想定）でsplunkサーバにログインして、sysmon取込用のappフォルダ(例：windows/local)を作成します。
```
# mkdir /opt/splunk/etc/deployment-apps/windows/local
```

##### local配下にinputs.confを作成
```
[WinEventLog://Microsoft-Windows-Sysmon/Operational]
disabled = false
renderXml = 1
```

- 改めて「設定-フォワーダー管理」メニューから見てみると変化が現れますが、こちらの画面操作はもう少しあとで行います。
![スクリーンショット 2019-05-31 13.17.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/5712b8b2-7b21-99ec-ee9c-bd13f9ded96f.png)

###UniversalForwarderのインストール(サイレント)
- Universal Forwarderのダウンロード
    - https://www.splunk.com/en_us/download/universal-forwarder.html

- つづいて、sysmonをインストールしたWindowsマシンに移動して、UFをインストールします。

```
msiexec.exe /i （UFのファイル名） DEPLOYMENT_SERVER=“（DSサーバのIP/host名）:8089" RECEIVING_INDEXER=“（IDXサーバのIP/host名）:9997" AGREETOLICENSE=Yes /quiet
```

- タスクマネージャーから下記プロセスが見えていれば、UFはインストールできていると判断。
<img width="441" alt="スクリーンショット 2019-05-31 12.55.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/3214ea17-e7b4-be9d-9c6c-843b3da0320f.png">


- サイレントインストールのため一見正常にインストールできたのかわかりにくいが、通常は２，３分以内にはDSに疎通が届き、DSのフォワーダ管理画面から対象のマシンのステータスが見えるはずです。（設定-フォワーダー管理）
![スクリーンショット 2019-05-31 12.56.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/ee7af9f1-c84d-398f-bd66-30043a764efa.png)


#### DS（Splunk）の管理画面からApp（windows）の配布
- ここまで来たらもうあとちょっと！あとはGUI操作でラクラクやりましょう。
- サーバクラスの作成
    - 「windows」として作成（Appと混同して紛らわしい場合は、windows-classとかがいいかも）
    - 「Appの追加」にて作成したサーバクラスに対応するApp(windows)を選択![May-31-2019 13-23-18.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/2c058358-3028-ec09-87a0-91389b58a1de.gif)

- 続いて「クライアントの追加」を選択し、対象マシン名を選んで、保存。
    - 対象マシンが複数になった場合には、ホワイトリスト・ブラックリストをうまく活用してフィルタします。
![スクリーンショット 2019-05-31 13.26.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/a847ae24-3b7f-a9a8-7274-04f7a79cf670.png)

- App(windows)がUFのインストールされたwindowsに配布されます。タイミングはUFがDSに対してpollingしてきたときのため、展開までちょっと待つ必要があります。

###（５分くらい待って）Splunkにログが届くことを確認
- 下記コマンドでサーチをしてみましょう

```
sourcetype="xmlwineventlog:microsoft-windows-sysmon/operational" 
```
![May-31-2019 14-00-59.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/d43670b5-f73f-1e00-7507-bba17d4b80de.gif)


### どうでしょう？みなさま無事ログ収集できましたか？
- セットアップに詰まる部分があればコメントいただけますと幸いです。

How to Setup! （次回に続く）
---
というわけで導入編まで終わりましたので、次回は活用編に行きたいと思います。

~~- [概要編](https://qiita.com/odorusatoshi/items/cb9e1cad00b5eb9efe9b)~~
~~- 導入編~~
    ~~- sysmonの展開~~
    ~~- Splunkへのデータ取込~~

- [活用編](https://qiita.com/odorusatoshi/items/3180457b64f6869e59ea)
    - 検知ルールの設定
    - ダッシュボードの作成
- おまけのTIPS集
    - 転送されるトラフィックやデータサイズは？
    - UFをwindowsPCに配るには？
    - sysmon以外にもwindowsから追加でログ収集したくなった