このセクションでは、すべての Carbon Black Cloud モジュールに適用される検索機能について説明します。
- 演算子が指定されていない場合、Lucene はデフォルトで
OR
を想定します。 - 演算子が指定されていない場合、プラットフォーム検索はデフォルトで
AND
を想定します。
デフォルトのブール演算子
プラットフォーム検索で演算子を含めない場合、デフォルトの演算子は AND
です。
検索句の間の AND
、NOT
、OR
演算子を省略した場合、クエリ結果はデフォルトで AND
演算子を使用します。
たとえば、次のクエリは同等であり、同じ結果を提供します。
process_name:powershell.exe crossproc_name:ccmexec.exe
process_name:powershell.exe AND crossproc_name:ccmexec.exe
否定
検索クエリ用語は、次の 3 つの演算子のいずれかを使用して除外できます。
AND NOT
NOT
-
(先頭のダッシュまたはマイナス記号)
たとえば、次のクエリは同等であり、同じ結果を提供します。
process_name:chrome.exe AND NOT netconn_domain:google.com
process_name:chrome.exe NOT netconn_domain:google.com
process_name:chrome.exe -netconn_domain:google.com
特殊文字
Lucene で定義されている次の文字は、検索クエリに表示されるときに特別な意味を持ちます。
+ |
() |
" |
- |
{} |
~ |
&& |
[] |
* |
|| |
^ |
? |
: |
/ |
Raw Lucene 検索でこれらの文字を使用する場合は、必ずエスケープする必要があります(つまり、バックスラッシュ \
文字を前に付ける必要があります)。
ただし、フィールド値の中央にこれらの文字のいずれかを使用する場合、またはフィールド値が引用符で囲まれている場合、文字のエスケープはオプションです。
例:
機能する | regmod_name:\{4a15d1fe-35eb-ed8c-5d7b-0aaefad84326\} |
機能する | regmod_name:\{4a15d1fe\-35eb\-ed8c\-5d7b\-0aaefad84326\} |
機能しない | regmod_name:{4a15d1fe-35eb-ed8c-5d7b-0aaefad84326} |
ワイルドカード
ワイルドカードは、特定のファイル拡張子を含むファイル名を検索するときに利用できます。多くのフィールドで、ファイル拡張子の検索はワイルドカードなしで効率的に機能します。
例:
process_name:.exe
は、名前に .exe 拡張子を含むすべてのプロセスを検索します。process_cmdline:.txt
は、コマンド ラインに .txt 拡張子を含むすべてのプロセスを検索します。
process_name:*.exe
やregmod_name:*Windows*
などの先頭ワイルドカードを使用しないでください。これは計算コストが高く、組織に対するこの検索やその他の検索のパフォーマンスに影響を与える可能性があり、不必要です。- 値を引用符で囲む場合、ワイルドカードは機能しません。文字列を引用符で囲んでも、引用符の間のワイルドカードは無視されます。引用符を含めずに適切にエスケープする場合、値検索でワイルドカードを使用できます。
機能する process_name:c\:\\windows\\temp\\inv*_tmp\\*
機能しない process_name:"c:\\windows\\temp\\inv*_tmp\\*\\invcol.exe"
- 先頭ワイルドカードが含まれています。
機能する process_name:Microsoft\ Office\\*
機能しない process_name:**\Microsoft Office\**
機能しない process_name:"Microsoft Office"
あいまい検索
あいまい検索は、インデックス内の語句と同じではないがスペルが似ている語句を検索する方法です。末尾の ~
(チルダ) 文字は、あいまい検索機能を呼び出します。
たとえば、process_name:svch0st.exe~
を検索すると、process_name:svchost.exe
で検索した場合と同じ結果が返されます。
- あいまい検索はすべての文字列フィールドに適用できます(「検索フィールド」を参照)。
- 数値フィールド、日付フィールド、または IP アドレス フィールドで、あいまい検索は機能しません。
- あいまい検索は語句でのみ機能し、言い回しでは機能しません。たとえば、コマンド ライン トークンを分割するために使用される区切り文字が語句に含まれていない限り、
process_cmdline
で単一の語句を検索すると、あいまい検索が実行されます。
距離パラメータを指定するには、0 ~ 2 の整数を追加します。例:
process_name:svch0st.exe~2
は、process_name:svch0st.exe~
と同じように機能します。
netconn_domain
検索フィールドは特殊なケースです。あいまい検索は FQDN でのみ機能し、FQDN の部分文字列や変数では機能しません。
例:
インデックス付きの netconn ドメインが次の場合... | 機能する | 機能しない |
---|---|---|
google.com | netconn_domain:g00gle.com~ |
netconn_domain:g00gle~ |
www.google.com | netconn_domain:www.g00gle.com~ |
netconn_domain:g00gle.com~ netconn_domain:google.com~ |
距離パラメータの仕組みについては、「https://www.elastic.co/blog/found-fuzzy-search」を参照してください。
エスケープ
正規表現をエスケープしてから、Lucene をエスケープする必要があります。例:
-
[調査] ページでは、この正規表現クエリを含む document.doc.exe などの二重拡張子を持つファイルを検索できます。
次の例では、ダブル バックスラッシュを使用して
\
文字を検索できます。process_name:/[^\\/]+\\.[^\\/]{2,3}\\.[^\\/]{2,3}/
- [Enterprise EDR ウォッチリスト] ページでは、すべてのクエリ用語(特にスペースの場合)が適切にエスケープされるようにする必要があります。これにより、すべての語句が
Key:Value
ペアで表示され、ペアになっていない語句はクエリに含まれなくなります。例:
ウォッチリスト IOC として機能しない childproc_name:schtasks.exe -childproc_cmdline:C\:\\WINDOWS\\System32\\schtasks.exe Vquery Vtn (724_*)
Vquery
、Vtn
、(724_*)
の文字列は、schtasks.exe の後にエスケープされていないスペースがあるため、ペアになっていない語句として扱われます。ウォッチリスト IOC として機能する childproc_name:schtasks.exe -childproc_cmdline:C\:\\WINDOWS\\System32\\schtasks.exe\ Vquery\ Vtn\ (724_*)
括弧
複数語句のクエリに括弧を配置すると、一致するものに大きな影響を与える可能性があります。
例:
(netconn_inbound:false AND netconn_ipv4:0.0.0.0)
送信トラフィックがあるすべてのプロセスを 0.0.0.0 に返します。
((netconn_inbound:false) AND netconn_ipv4:0.0.0.0)
送信接続を行ったが、受信または送信トラフィックもあるすべてのプロセスを 0.0.0.0 で返します。