このトピックでは、トークン化についてよく寄せられる質問に対する回答を提供します。

質問 1

次の filemod がある場合:

c:\users\myusername\appdata\local\temp\{1f73cc2c-c826-414e-8d07-457bed7d2ad2} - oprocsessid.dat

GUID 部分は変更されたように見えますが、oprocsessid.dat は変わりません。oprocsessid.dat で終わる filemod パス、つまり、この例では変数 GUID が .dat ファイルのファイル名にある場合はどのように検索しますか?

[回答]:プラットフォーム検索では、regmod_name以外のフィールドで GUID を特別に処理することはありません。検索インデックスはファイル名全体のみをトークン化するため(この例では、ファイル名は {1f73cc2c-c862-414e-8d07-457bed7d2ad2} - oprocsessid.dat)、filemod_name:oprocessid.dat での検索は失敗します。

ただし、GUID の代わりにワイルドカードを使用できます。クエリされた値の先頭では理想的ではありませんが、これに似たワイルドカード (filemod_name:appdata/local/temp/*-oprocessid.dat) を使用すると、ファイル名の最後に oprocessid.dat が含まれる filemod に集中できます。

質問 2

コマンド ラインのトークン化について、次のプラットフォーム検索で検索結果が表示されないのはなぜですか。

検索:
fileless_scriptload_cmdline:net.webclient

予想される結果:

"iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')); choco upgrade -y python2 visualstudio2017-workload-vctools; Read-Host 'Type ENTER to exit'"

[ 回答]:プラットフォーム検索ではピリオド (.) が空白に変換されません。文字列全体、ワイルドカード バージョン、末尾が .xxxx または .yyyy.xxxx のトークンを検索できます。これらのトークンは、ファイル拡張子または二重拡張子である可能性があることが想定されます。

前の例では、ワイルドカードを含む system.net.webclient.net.webclient.webclient のトークンを検索できます。

一般的に、cmdline フィールド(process_cmdlinechildproc_cmdlineparent_cmdline fileless_scriptload_cmdline)は、スペースと文字(\ ( ) [ ] { } ; " ' < > & | , =)でトークン化します。

これらの文字のいずれかがコマンド ラインにある場合、検索バックエンドではスペースに変換されます。これらの文字は、元の文字とともに API 応答データに引き続き返され、その検索は語句になります。

たとえば、「cmd /c "echo LINE1 > bad.vbs&&echo LINE2 >> bad.vbs"」を検索する場合、このコマンド ラインで検索できるトークンは次のとおりです。

cmd /c echo
line1 bad.vbs .vbs
echo line2 bad.vbs
.vbs

これらのトークンを二重引用符で囲んで、「process_cmdline:"cmd /c"」などの語句で検索することもできます。

その他の文字(必要に応じて適切にエスケープ)を含めると、空白になります。

質問 3

検索できるトークンの最大長はどれくらいですか?

[回答]:フィールドの文字列データが 32K 文字を超える場合、そのフィールドの最初の 32K 文字までを検索できます。

たとえば、この検索は、 process_cmdline の最初の 32K 文字のサブセットに対して機能します。
process_name:powershell.exe AND process_cmdline:WwBCAHkAdAB*

質問 4

watchlist_name のようにトークン化されたテキスト フィールドの部分文字列を検索するにはどうすればよいですか?

[回答]watchlist_nameevent_descriptiondevice_os_version などのフィールドと、process_publisher などの多くのバイナリ ヘッダーは、個々の単語にトークン化されます。たとえば、「Carbon Black Endpoint Visibility Take Action」というウォッチリスト名には、「Carbon」、「Black」、「Endpoint」、「Visibility」、「Take」、「Action」のトークンがあります。「Carbon Black Endpoint Visibility Take Action」という名前のウォッチリストで一致する結果を見つけるには、ワイルドカードを使用して個々のトークンを検索したり、語句を検索したりできますが、両方を検索することはできません。

機能する
watchlist_name:Carbon*
機能する
watchlist_name:Carbon\ Black
機能する
watchlist_name:"Carbon Black"
機能しない
watchlist_name:Carbon\ Black*

質問 5

プラットフォーム検索のトークン化と互換性のある正規表現で何ができますか?

[回答]:正規表現を使用して検索できるトークンは 1 つのみです。トークンは、特殊文字を含まない小文字にする必要があります。

質問 6

クエリで末尾の空白を使用するには?

[回答]:フィールド クエリまたはフィルタの末尾のスペース(\\ または \\ \\)を使用しないでください。代わりに、末尾のワイルドカードを使用するか、トークン化を使用してクエリを作成するか、フィールド名でフィルタリングします。たとえば、c:\windows\system32\cacls.exe と一致させるには、次の手順を実行します。

機能する
c\\:\\\\windows\\\\system32\\\\*
機能しない
c\\:\\\\windows\\\\system32

ワイルドカードを使用した cmdline フィールドの検索 も参照してください。