SplunkでJPCERTログ分析トレーニング（ハンズオン　その５）

https://blogs.jpcert.or.jp/ja/2020/07/log_analysis_training.html
で「インシデント対応ハンズオン」でやってきたデータが公開されたのでSplunkでやってみる。

[その１](https://qiita.com/toshikawa/items/926c63a9f77a0835c94e)
[その２、その３](https://qiita.com/items/764a33b9144bda84a907)
[その４](https://qiita.com/items/d5abe89e01167a31e216)の続き
#準備
https://jpcertcc.github.io/log-analysis-training/
から
https://github.com/JPCERTCC/log-analysis-training
に飛んで、
`git clone https://github.com/JPCERTCC/log-analysis-training.git`

レポジトリがダウンロードできるので
`zip -r Handson5 ./Handson5`で固めて、そのままSplunkにファイルアップロード。設定は全部デフォルト。

:sweat:その１は`tar.gz`で固めておいて、今回は`zip`。その１も後で直します。

#ホスト一覧

|ホスト名|IPアドレス|ユーザ名|OS
|:-:|:-:|:-:|:-:|:-:|
|WIN-WFBHIBE5GXZ|192.168.16.1|administrator|Windows Server 2008
|Win7_64JP_01|192.168.16.101|chiyoda.tokyo|Windows 7
|Win7_64JP_02|192.168.16.102|yokohama.kanagawa|Windows 7
|Win7_64JP_03|192.168.16.103|urayasu.chiba|Windows 7
|Win7_64JP_04|192.168.16.104|urawa.saitama|Windows 7
|Win7_64JP_05|192.168.16.105|hakata.fukuoka|Windows 7
|Win7_64JP_06|192.168.16.106|sapporo.hokkaido|Windows 7
|Win7_64JP_07|192.168.16.107|nagoya.aichi|Windows 7
|Win7_64JP_08|192.168.16.108|sakai.osaka|Windows 7
|Win10_64JP_09|192.168.16.109|maebashi.gunma|Windows 10
|Win10_64JP_10|192.168.16.110|utsunomiya.tochigi|Windows 10
|Win10_64JP_11|192.168.16.111|mito.ibaraki|Windows 10
|Win10_64JP_12|192.168.16.112|naha.okinawa|Windows 10

#その5
```sql:csv.spl
source="Handson5.zip:*"
| rex "(?ms)(?<level>[^,]+),(?<date>[^,]+),(?<source>[^,]+),(?<eventID>\d+),(?<category>.*)" 
| reverse
```

またCSVに戻ってしまった。
##「管理者権限」が割り当てられたユーザをすべて特定してください。

```
source="Handson5.zip:*" "Microsoft-Windows-Security-Auditing"
| rex "(?ms)(?<level>[^,]+),(?<date>[^,]+),(?<source>[^,]+),(?<eventID>\d+),(?<category>.*)" 
| reverse 
| rex field=category "(?<message>.*)" 
```

前回までと同様に`message`フィールドを切り出してメッセージをみてみると
`特殊なログオン,"新しいログオンに特権が割り当てられました。`とある。
`eventID`も[4672](https://docs.microsoft.com/ja-jp/windows/security/threat-protection/auditing/event-4672)なのでバッチリ


```sql:new_Privilege_account.spl
source="Handson5.zip:*" "Microsoft-Windows-Security-Auditing" NOT SYSTEM
| rex "(?ms)(?<level>[^,]+),(?<date>[^,]+),(?<source>[^,]+),(?<eventID>\d+),(?<category>.*)" 
| reverse 
| rex field=category "(?<message>.*)" 
| search message="特殊なログオン,\"新しいログオンに特権が割り当てられました。" 
| rex field=category "(?ms)セキュリティ\s*ID:\s*(?<securyID>\S+)"
| rex field=category "(?ms)アカウント名:\s*(?<account>\S+)"
```

ついでに、アカウントも抽出するようにして、左側を確認すると４つのアカウントが確認できる。

##sysg.adminユーザでログオンした端末を特定してください。
```sql:kerberos.spl
source="Handson5.zip:*" "Microsoft-Windows-Security-Auditing" "sysg.admin" 
| rex "(?ms)(?<level>[^,]+),(?<date>[^,]+),(?<source>[^,]+),(?<eventID>\d+),(?<category>.*)" 
| reverse 
| rex field=category "(?<message>.*)" 
| rex field=category "(?ms)サービス ID:\s*(?<serviceID>\S+)" 
| search message="Kerberos サービス チケットの操作,\"Kerberos サービス チケットが要求されました。" level="成功の監査" 
| rex field=category "(?ms)クライアント アドレス:\s*(?<src>\S+)"
```

`sysg.admin`を入れてみて、`message`をみていると、
`eventID`[4624](https://docs.microsoft.com/ja-jp/windows/security/threat-protection/auditing/event-4624)や`eventID`[4769](https://docs.microsoft.com/ja-jp/windows/security/threat-protection/auditing/event-4769)のイベントを確認できる。


```sql:logon.spl
source="Handson5.zip:*" "Microsoft-Windows-Security-Auditing" "sysg.admin" 
| rex "(?ms)(?<level>[^,]+),(?<date>[^,]+),(?<source>[^,]+),(?<eventID>\d+),(?<category>.*)" 
| reverse 
| rex field=category "(?<message>.*)" 
| search eventID=4769 OR eventID=4624 
| rex field=category "(?<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})"
```

`src`をみると4つのIPアドレスが確認できる。

##「sysg.adminユーザ」によるログオンは、管理者の意図しないものでした。このような不正ログオンに使用された攻撃手法を特定してください。

```sql:Handson3.spl
source="Handson3.zip:*" sysg.admin "Microsoft-Windows-Sysmon"
| rex "(?ms)(?<level>[^,]+),(?<date>[^,]+),(?<source>[^,]+),(?<eventID>\d+),(?<category>.*)" 
| reverse
```

の結果から [参考資料](https://www.iij.ad.jp/dev/tech/techweek/pdf/171108_02.pdf)をみるとわかる。

```sql:Handson5.spl
source="Handson5.zip:*" 
| rex "(?ms)(?<level>[^,]+),(?<date>[^,]+),(?<source>[^,]+),(?<eventID>\d+),(?<category>.*)" 
| reverse
| search eventID=4768 OR eventID=4769
| rex field=category "(?ms)アカウント名:\s*(?<account>\S+)" 
| rex field=category "(?ms)アカウント ドメイン:\s*(?<domain>\S+)" 
| table _time eventID account domain
| where isnull(domain) OR lower(mvindex(split(account,"@"),1))=domain
```

ADサーバのログだと、このように、`eventID`4768の後`eventID`4769がこない　かつ　ドメイン名が小文字といったことで判別は可能（かも）

##攻撃者によって追加されたユーザを特定してください。

```sql:user_Add.spl
source="Handson5.zip:*" "Microsoft-Windows-Security-Auditing" 
| rex "(?ms)(?<level>[^,]+),(?<date>[^,]+),(?<source>[^,]+),(?<eventID>\d+),(?<category>.*)" 
| reverse 
| rex field=category "(?<message>.*)" 
| search eventID=4720
```

`eventID`[4624](https://docs.microsoft.com/ja-jp/windows/security/threat-protection/auditing/event-4624)はユーザ追加なので、検索してみると確認ができる。

##「machida.kanagawa」は不正なユーザ追加であることが分かりました。どのような攻撃手法 を用いて不正な操作を行ったのでしょうか 。

[LIST](https://qiita.com/toshikawa/items/764a33b9144bda84a907#list)を確認すると
`cmd /c ""C:\Intel\Logs\ms14068\ms14-068.exe -u maebashi.gunma@example.co.jp -s S-1-5-21-1524084746-3249201829-3114449661-1127 -d win-wfbhibe5gxz -p p@ssw0rd""`
の攻撃が確認できる。

https://jpcertcc.github.io/ToolAnalysisResultSheet_jp/details/MS14-068.htm
で詳細が確認できる。

#まとめ
ADの主要なeventIDは覚えておくかチートシートがあると調査が早いと思う。

イベントログからメッセージを切り出してもなんとかなるのがSplunk的かもしれません。