ラボ 12 - transaction を使用した相関
これ以降 3 つのラボで、データを相関させるいくつかの方法を見ていきます。各 operator について下表にまとめます。
Transaction |
transaction を使用すると、1 つまたは複数の共通キー (IP アドレス、セッション ID 等) に基づいて (単一または複数の Source からの) メッセージを相関させることができます。transaction は、「外部結合」によって集計結果を生成します。セキュリティにおける transaction の主な用途は、複数のデータ Source での同じ値の有無をチェックすることです。たとえば、同じ IP アドレスに対して複数のセキュリティ ツールがアラートを出していないかを確認できます。 |
Transactionize |
transactionize を使用すると、1 つまたは複数の共通キー (IP アドレス、セッション ID 等) に基づいて (単一または複数の Source からの) メッセージを相関させることができます。 transactionize は、未処理のメッセージに対して「外部結合」を行います。merge と組み合わせて使用することで、未処理のメッセージや異なる parse されたフィールドをメッセージ間でマージして結果セットの 1 つの行に統合することができます。 |
subquery |
subquery を使用すると、1 つのデータセット内で、または複数のデータセットに渡って、1 つの結果セットのデータを別の (1 つまたは複数の) クエリによってフィルタすることができます。subquery は、「内部結合」によって未処理データを返します。主な用途は、データセットにおいて、別のデータセットにも含まれるデータを見つけることです。たとえば、エンドポイント保護システムによってフラグが立てられたホストの Windows イベント ログを検索する場合などです。 |
-
transaction operator を使用すると、一意のトランザクション識別子 (セッション ID や IP アドレスなど) に基づいて、関連する一連のメッセージを分析できます。transaction は、指定された一意の識別子を使用して、関連するメッセージをグループ化し、定義された状態に基づいて整理します。このラボでは、transaction operator を使用して、Labs/Snort ネットワーク侵入検知ログを Web アプリケーション攻撃で絞り込んで表示された IP に相関する Source IP を Labs/Apache/Access ログから検索します。両方のログ Source から src_ip を取得するには、両方の parse 手法が必要です。
_sourceCategory=Labs/Apache/Access or (_sourceCategory=Labs/Snort and "[Classification: Web Application Attack]")
| parse "{TCP} *:* -> *:*" as src_ip, src_port, dest_ip, dest_port nodrop /*for Labs/Snort */
| parse regex "(?<src_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})" /* for Labs/Apache/Access */
| transaction on src_ip
with states %"Labs/Snort", %"Labs/Apache/Access" in _sourceCategory
| where %"Labs/Snort">0 and %"Labs/Apache/Access">0
-
IP を特定したので、Threat Intel 検索を使用してこれらが侵入の痕跡 (IOC) であるかどうかを確認します。結果が返されなかった場合は、これらの IP アドレスに、CrowdStrike データベースで悪意のある IP アドレスとしてのフラグが立っていないということを意味します。
((_sourceCategory=Labs/Snort "[Classification: Web Application Attack]") or _sourceCategory=Labs/Apache/Access)
| parse "{TCP} *:* -> *:*" as src_ip, src_port, dest_ip, dest_port nodrop
| parse regex "(?<src_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})"
| transaction on src_ip
with states %"Labs/Snort", %"Labs/Apache/Access" in _sourceCategory
| where %"Labs/Snort">0 and %"Labs/Apache/Access">0
| lookup type, actor, raw, threatlevel as malicious_confidence
from sumo://threat/cs on threat=src_ip
| where !isEmpty(type)