🧵

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 つ目のホストから末尾まで、というような処理を実施
Microsoft (有志)

Discussion