🧵
KQL サンプル - FQDN から親ドメインを取得
はじめに
Sentinel で脅威インテリジェンスとマッピングする際に、FQDN だけでなく親ドメインでもチェックするために、FQDN から親ドメインを取得する KQL クエリを作成しました。
サンプル KQL クエリ
datatable (FullDomain: string )
[
"ccc.bbb.aaa.com",
"eee.ddd.com",
"ggg.com"
]
| extend FullDomain = tolower(FullDomain) // 小文字に変換
| extend DomainParts = split(tolower(FullDomain), ".") // "." で split
| extend DomainLength = array_length(DomainParts) // "." で区切ったホストを取得
| extend DomainList = range(0, DomainLength - 2) // [0,1,2] のような各ホストのインデックスを作成
| mv-expand Index = DomainList // インデックスを各行に展開
| extend BaseDomain = strcat_array(array_slice(DomainParts, toint(Index), DomainLength), ".") // 指定したインデックスから末尾までのホスト部分を抽出し "." で結合
動作
以下のイメージで動作します。
- DoaminParts に "." で区切った各ホストを格納
- DomainLength にホストの数を取得
- DomainList にホスト数に応じたインデックスを作成
- DomainList を各行に展開
- Index が
0
の場合、FullDomain と同じ文字、1
の場合、2 つ目のホストから末尾まで、というような処理を実施
Discussion