フィールド演算子

フィールド演算子は、Aurora Focus が 2 つの値を比較する際のルールの論理的な部分です。オペランドが 2 つ以上のあり、それらが比較条件に一致する場合、Aurora Focus は定義された関数のその部分を完全であると見なします。関数のすべての部分が完全になると、状態は満たされます。

フィールド演算子フィールドは、1 つ以上の条件付きオブジェクトで構成されるオブジェクトです。これらの条件付きオブジェクトは任意の値に設定できますが、関数フィールドで参照されている条件付きの値と一致する必要があります。 Arctic Wolf では、これらの名前は、数字や文字など、シンプルで、論理的な値に保つことをお勧めします。

フィールド演算子

説明

Base64Encoding

Base64

このフィールド演算子は文字列をトークン化し、いずれかのトークンがオペランドと一致するかどうかを判断します。また、文字列エンコーディングのタイプ(ASCII、UTF-7、UTF-8、UTF-16-LE、UTF-16-BE、UTF-32-LE、UTF-32-BE)も特定しようとします。BOM がない場合は、UTF-8、UTF-16-LE、および UTF-16-BE のみを確実に検出できます。すべての検出に失敗した場合は、デフォルトでシステムのデフォルトのコードページに設定されます。

正: powershell.exe -ex bypass -e "ZwBlAHQALQBwAHIAbwBjAGUAcwBzAA==" equals ("get-process", )

負: powershell.exe -ex bypass "ZwBlAHQALQBhAGwAaQBhAHMA" does not contain ("get-process", )

ContainsAll

このフィールド演算子は、指定したオペランドにセットのすべてのオペランドが含まれているかどうかを判断します。

正:"hello, I am a string" には、セット(「ello」、「ng」)のすべての文字列が含まれている

負:"hello, I am a string" には、セット(「hi」、「ng」)のすべての文字列は含まれていない

ContainsAllWords

このフィールド演算子は、指定したオペランドにセットのすべてのオペランドが含まれているかどうかを判断します。セットの各オペランドは、空白、句読点、または文字列の終了マーカーあるいは開始マーカーで囲まれた単語として示されている必要があります。

正:"hello, I am a string" には、セット(「hello」、「a」、「string」)のすべてが単語として含まれている

負:"hello, I am a string" には、セット(「ello」、「ng」)のすべてが単語として含まれていない

ContainsAny

次の値を含む

このフィールド演算子は、指定したオペランドにセットのいずれかのオペランドが含まれているかどうかを判断します。

正:"hello, I am a string" には、セット(「ello」、「banana」)のいずれかの文字列が含まれている

負:"hello, I am a string" には、セット(「hi」、「banana」)のどの文字列も含まれていない

ContainsAnyWord

ContainsWord

このフィールド演算子は、指定されたオペランドにセットのいずれかのオペランドが含まれているかどうかを判断します。この場合、セットの各オペランドは、空白、句読点、または文字列の終了マーカーあるいは開始マーカーで囲まれた単語として示されている必要があります。

正:"hello, I am a string" には、セット(「hello」、「banana」)のいずれかの単語が含まれている

負:"hello, I am a string" には、セット(「ello」、「ng」)のいずれかが単語として含まれていない

DamerauLevenshteinDistance

DLDistance

このフィールド演算子は、距離(あるオペランドを別のオペランドに変換するために必要な変更の数)が許容範囲内かどうかを判断しますが、隣接する記号の転置は許容します。

正:「cat」と「bat」のダメラウレーベンシュタイン距離は 1 以内

正:「hello」と「bell」のダメラウレーベンシュタイン距離は 2 以内

正:「ca」と「abc」のダメラウレーベンシュタイン距離は 3 以内

負:「cart」と「act」のダメラウレーベンシュタイン距離は 1 以内にはない

DiceCoefficient

Dice

このフィールド演算子は、2 組の文字列の類似性を、共通のバイグラム(文字列内の隣接する文字のペア)の数で判断します。比較の結果が「mincoefficient」と「maxcoefficient」の間にあるかどうかを判断します。

たとえば、プロセス名「Test.exe」と「Tes.exe」を比較すると、0.76923076923076927 が返されます。

「round」を 2 に設定した場合:

正:最小0.5 < 0.77 < 0.8 最大(含まれない)

正:最小0.77 <= 0.77 <= 0.77 最大(含まれる)

負:最小0.8 < 0.77 < 0.85 最大(含まれない)

「round」オプションを指定すると、小数点以下の桁が指定した整数に丸められます。たとえば、「round」が 2 に設定されている場合、.6666666667 は .67 になります。

EndsWithAny

EndsWith

このフィールド演算子は、指定した左オペランドが指定した右オペランドで終わっているかどうかを判断します。

正:"hello, I am a string" は「ring」で終わっている

負:"hello, I am a string" は「bring」で終わっていない

EqualsAny

Equals

このフィールド演算子は、指定されたオペランドとセットのオペランドのいずれかが正確に等しいかどうかを判断します。この場合、セットの各オペランドは、数値であるか、空白、句読点、または文字列の終了マーカーあるいは開始マーカーで囲まれた単語として示されている必要があります。

正:10 はセット(10、20、30)のうちのいずれかの数値と等しい

正:"hello" はセット(「hello」、「banana」)のいずれかと等しい

負:100 はセット(10、20、30)のいずれの数値とも等しくない

負:"hello" はセット(「ello」、「ng」)のいずれとも等しくない

GreaterThan

このフィールド演算子は、指定した左オペランドが指定した右オペランドより大きいかどうかを判断します。

正:14.4 は 10.1 より大きい

負:1 は 1000 より大きくない

GreaterThanOrEquals

このフィールド演算子は、指定した左オペランドが指定した右オペランドと等しいまたは大きい(以上)かどうかを判断します。

正:14.4 は 10.1 と等しいか大きい

負:1 は 1000 と等しいか大きくない

HammingDistance

このフィールド演算子は、等しい長さの 2 つの文字列間の距離を判断します。これは、対応する記号が異なる位置の数です。1 つの文字列をもう 1 つの文字列に変更するために必要な置換の最小数を測定します。

正:「cat」と「bat」のハミング距離は 1 以内
  • cat → bat(1)
正:「hello」と「bell」のハミング距離は 2 以内
  • hello → bello(1) → bell(2)
正:「ca」と「abc」のハミング距離は 3 以内
  • ca → aa(1) → ab(2) → abc(3)
負:「cart」と「act」のハミング距離は 4 以内にはない
  • cart → aart(1) → acrt(2) → actt(3) → act(4)

HexEncoding

このフィールド演算子は文字列をトークン化し、いずれかのトークンがオペランドと一致するかどうかを判断します。また、文字列エンコーディングのタイプ(ASCII、UTF-7、UTF-8、UTF-16-LE、UTF-16-BE、UTF-32-LE、UTF-32-BE)も特定しようとします。BOM がない場合は、UTF-8、UTF-16-LE、および UTF-16-BE のみを確実に検出できます。すべての検出に失敗した場合は、デフォルトでシステムのデフォルトのコードページに設定されます。

正:「74657374」に「test」が含まれている

負:「696e76616c6964」に「test」が含まれていない

InRange

このフィールド演算子は、指定された中間オペランドが左オペランドと右オペランドの間にあるかどうかを判断します。

正:10 は 1~20 の範囲に入る

正:5.3 は 5.3~20.1 の範囲に入る(両端を含む場合)

負:4 は 5~10 の範囲に入らない

負:20 は 20~40 の範囲に入らない(両端を含まない場合)

IpIsInRange

IpRange

このフィールド演算子は、TargetNetworkConnection アドレス(Sourceaddress、DestinationAddress)が、指定された「min」(最小値)および「max」(最大値)オプションの範囲内にあるかどうかを判断します。

許可されるオペランドは次のとおりです。

JSON
{
    "Source": "TargetNetworkConnection",
    "Data": "SourceAddress"
}

および

JSON
{
    "Source": "TargetNetworkConnection",
    "Data": "DestinationAddress"
}

例:

JSON
"FieldOperators": {
    "a": {
        "Type": "IpIsInRange",
        "OperandType": "IPAddres",
        "Options": {
            "min": "123.45.67.89",
            "max": "123.45.67.255"
        },
        "Operands": [
            {
                "Source": "TargetNetworkConnection",
                "Data": "DestAddr"
            }
        ]
    }
}

ネットワークトラフィックを出力するには、次のフィルターオブジェクトを上記の例に当てはめます。

JSON
"Filters": [
    {
        "Type": "Event",
        "Data": {
            "Category": "Network",
            "SubCategory": "*",
            "Type": "Connect"
        }
    }
]

IsFlagSet

このフィールド演算子は、ビットマスクの 1 つまたは複数のビットが設定されているかどうかをチェックします。比較値には、base-10 または base-16(「0x」プレフィックスを使用)を使用できます。

正:0x10 は 0x4111 に対して設定されている

正:3 は 0x7 に対して設定されている

負:0x3 は 0x4 に対して設定されていない

負:2 は 0x5 に対して設定されていない

IsHomoglyph

このフィールド演算子は、左のオペランドが右のオペランドのホモグリフかどうかを判断します。たとえば、US Latin 1 の「e」とフランス語の「e」の文字は同じものに見え、意味も同じですが、値は異なります。

正:"3xplor3" は 100% の確度で "explore" のホモグリフである

正:"3xplord" は 90% の確度で "explore" のホモグリフである

負:"temp" と "temp" は全く同じ文字列であるため、ホモグリフとは見なされない

負:"431" と "big" は、両者の間をつなぐ共通の特性がないため、ホモグリフとは見なされない

IsNullOrEmpty

このフィールド演算子は、指定したオペランドが null か空かを判断します。

正:<null> は null または空

正:"" は null または空

正:"" は null または空

負:"Hello" は null でも空でもない

IsPopulated

Exists

HasContent

このフィールド演算子は、指定したオペランドが null でも空でもないかを判断します。

正:"Hello" は null でも空でもない

負:<null> は null または空

負:"" は null または空

負:"" は null または空

IsTrue

このフィールド演算子は、指定された値が真(true)かどうかを判断します。

正:TriState.True

負:TriState.False

負:TriState.Unknown

LessThan

このフィールド演算子は、指定した左オペランドが指定した右オペランドより小さいかどうかを判断します。

正:4.4 は 10.1 より小さい

負:1000 は 1 より小さくない

LessThanOrEquals

このフィールド演算子は、指定した左オペランドが指定した右オペランドと等しいまたは小さい(以下)かどうかを判断します。

正:4.4 は 10.1 より小さいか等しい

正:14 は 14 より小さいか等しい

負:1000 は 1 より小さくも等しくもない

LevenshteinDistance

このフィールド演算子は、あるオペランドを別のオペランドに変換するために必要な変更の数を距離と見なして、それが許容範囲内かどうかを判断します。

正:"cat" と "bat" のレーベンシュタイン距離は 1 以内

正:"hello" と "bell" のレーベンシュタイン距離は 3 以内

負:"cart" と "act" のレーベンシュタイン距離は 1 以内にはない

LongestCommonSubsequence

このフィールド演算子は、固定の左オペランドと一連の右オペランドを比較し、各比較における最長のサブシーケンスを特定します。結果の数を最小値および最大値と比較して、結果が許容範囲内かどうかを判断します。

「aggtab」と「gxtxayb」の比較:

正:「gtab」は最も長いシーケンス。最小値が 1 で最大値が 10 の場合、これは許容範囲内になります。

負:前の例を使用して、最小値が 5 で最大値が 10 の場合、これは許容範囲内になりません。

LongestCommonSubstring

このフィールド演算子は、左と右のオペランドを比較し、検出された最長のサブ文字列の数を返します。

「ababc」と「abcdaba」の比較:

正:「aba」と「abc」は「abcdaba」の同じサイズの 2 つの結果であり、最長のサブ文字列として 3 を返します。

負:mindistance と maxdistance が 4 に設定されている場合、これは検出された最長のサブ文字列よりも大きくなります。

「ababcd」と「abcdaba」の比較:

正:「abcd」は、検出された最長のサブ文字列。

MatchOnFilter

NoOp

このフィールド演算子は、操作が実行されていないこと、およびフィルターが対応するイベントを検出した場合に状態が単純に一致することを示します。

RegexMatches

このフィールド演算子は、指定したオペランドが正規表現に一致しているかを判断します。

正:"hello, I am a string" は "^hello, [Ii] am [aA] string$" と一致する

負:"hello, I am a string" は "^[hi|hey], I am a string$" と一致していない

ShannonEntropy

このフィールド演算子は、1 つのオペランドを比較するときに状態の予測不可能性の測定値、つまり平均情報量を特定します。

正:「abc」が 1.5849625007211561 と計算され、1.55 と 1.6 の範囲内にある。

負:「Z2V0LXByb2Nlc3M=」が 3.875 と計算され、1.55 と 1.6 の範囲内にない。

StartsWithAny

StartsWith

このフィールド演算子は、指定した左オペランドが指定した右オペランドで始まっているかどうかを判断します。

正:"hello, I am a string" は "hello, I" で始まっている

負:"hello, I am a string" は "help" で始まっていない