Security Operations Analyst Associate(SC-200) 無料問題 9 / 10 ・ 分野3: 脅威ハンティングの実行
次の KQL を実行した。結果の Count の値はどれか。 datatable(ProcessCommandLine:string) [ "powershell.exe -nop -w hidden", "explorer.exe shell:startup", "cmd.exe /c SHELL32.dll", "pwsh -c Invoke-Shell", "cmd /c start Shell" ] | where ProcessCommandLine has "shell" | count
- 1
- 5
- 4
- 3
正解と解説を見る
正解: D
正解の理由
has は部分一致ではなく、語(term)単位で一致を見る。文字列は英数字の最大の並びごとに語に分けられ、has は右辺がまるごと1つの語として含まれるときに一致する。大文字と小文字は区別しない。語に分けると、2行目の shell・4行目の Shell(Invoke と Shell)・5行目の Shell が一致し、1行目の powershell と3行目の SHELL32 は語の一部にすぎないので一致しない。Count は3である。
違う選択肢
「1」… has を、大文字と小文字を区別する演算子と取り違えている。区別するのは _cs の付いた has_cs で、has は区別しない。has_cs なら小文字の shell を持つ2行目だけになるが、has では Shell の2行も一致する。
「4」… SHELL32 から shell を拾うとみている。語は英数字の最大の並びなので、数字が続く SHELL32 は1つの語で、shell という語は含まない。数字は語の区切りにならない。
「5」… has を、部分一致の contains と取り違えている。contains なら powershell と SHELL32 も含めた5行がすべて一致するが、has は語単位で見るので、語の一部に shell があるだけの行は一致しない。
対比
has は語の索引を使うので、部分文字列を走査する contains より速い。索引に入るのは3文字以上の語で、3文字未満の語を探すときや contains を使うときは、列の値を走査することになる。ページの例でも、"KustoExplorerQueryRun" has "Explorer" は false、contains なら true になる。
Security Operations Analyst Associate(SC-200)の演習アプリ(無料10問・全問は解錠で)へ