Passer la navigation

Opérateurs de champ

Les opérateurs de champ sont les parties logiques d'une règle qui permettent à
CylanceOPTICS
de comparer deux valeurs. Si au moins deux opérandes correspondent aux critères de comparaison,
CylanceOPTICS
considère que cette partie de la fonction définie a été exécutée. Lorsque toutes les parties de la fonction sont exécutées, l'état est satisfait.
Le champ Opérateurs de champ est un objet qui comprend un ou plusieurs objets conditionnels. Ces objets conditionnels peuvent être définis sur une valeur quelconque ; cependant, ils doivent correspondre aux mêmes valeurs conditionnelles référencées dans le champ de fonction.
BlackBerry
recommande de définir ces noms sur des valeurs simples et logiques, telles que des chiffres ou des lettres.
Opérateur de champ
Description
Base64Encoding
Base64
Cet opérateur de champ tokenise une chaîne et détermine si l'un des jetons correspond à un opérande. Il tente également de déterminer le type de codage de chaîne (ASCII, UTF-7, UTF-8, UTF-16-LE, UTF-16-BE, UTF-32-LE OU UTF-32-BE). Sans nomenclature, l'opérateur peut détecter de manière fiable uniquement UTF-8, UTF-16-LE et UTF-16-BE. Si toutes les détections échouent, l'opérateur se règle par défaut sur la page de codes par défaut du système.
Positif :
powershell.exe -ex bypass -e "ZwBlAHQALQBwAHIAbwBjAGUAcwBzAA==" equals ("get-process", )
Négatif :
powershell.exe -ex bypass "ZwBlAHQALQBhAGwAaQBhAHMA" does not contain ("get-process", )
ContainsAll
Cet opérateur de champ détermine si l'opérande spécifié contient tous les opérandes d'un jeu.
Positif : « hello, I am a string » contient tous les éléments (« ello », « ng »)
Négatif : « hello, I am a string » ne contient pas tous les éléments (« hi », « ng »)
ContainsAllWords
Cet opérateur de champ détermine si l'opérande spécifié contient tous les opérandes d'un jeu, dans lequel chaque opérande défini doit apparaitre comme un mot entier entouré d'espace blanc, de ponctuation ou de marqueurs de chaine de fin ou de début.
Positif : « hello, I am a string » contient tous les mots (« hello », « a », « string »)
Négatif : « hello, I am a string » ne contient pas tous les mots (« ello », « ng »)
ContainsAny
Contient
Cet opérateur de champ détermine si l'opérande spécifié contient l'un des opérandes d'un jeu.
Positif : « hello, I am a string » contient l'un des éléments (« ello », « banana »)
Négatif : « hello, I am a string » ne contient aucun des éléments (« hi », « ng »)
ContainsAnyWord
ContainsWord
Cet opérateur de champ détermine si l'opérande spécifié contient l'un des opérandes d'un jeu, dans lequel chaque opérande défini doit apparaitre comme un mot entier entouré d'espace blanc, de ponctuation ou de marqueurs de chaine de fin ou de début.
Positif : « hello, I am a string » contient l'un des mots (« hello », « banana »)
Négatif : « hello, I am a string » ne contient aucun des mots (« ello », « ng »)
DamerauLevenshteinDistance
DLDistance
Cet opérateur de champ détermine si la distance, le nombre de modifications nécessaires pour convertir un opérande en un autre opérande, se situe dans une plage acceptable, mais permet la transposition de symboles adjacents.
Positif : « cat » est à une distance Damerau-Levenshtein de 1 de « bat »
Positif : « hello » est à une distance Damerau-Levenshtein de 2 de « bell »
Positif : « ca » est à une distance Damerau-Levenshtein de 3 de « abc »
Négatif : « cart » n'est pas à une distance Damerau-Levenshtein de 1 de « act »
Coefficient de Dice
Dice
Cet opérateur de champ détermine la similarité entre deux ensembles ou chaînes en fonction du nombre de bigrammes communs (une paire de lettres adjacentes dans la chaîne). Il détermine si le résultat de la comparaison se situe entre le « mincoefficient » et le « maxcoefficient ».
Par exemple, la comparaison du nom de processus « Test.exe » avec « Tes.exe » renvoie 0,76923076923076927.
Avec « Arrondi » réglé sur 2 :
Positif : min. : 0,5 < 0,77 < 0,8 max. ; non inclusif
Positif : min. : 0,77 < = 0,77 < = 0,77 max. ; inclusif
Négatif : min. : 0,8 < 0,77 < 0,85 max. ; non inclusif
L'option « Arrondi » arrondit la décimale à l'entier spécifié. Par exemple, si « Arrondi » est défini sur 2, 0,6666666667 devient 0,67.
EndsWithAny
EndsWith
Cet opérateur de champ détermine si l'opérande de gauche spécifié se termine par l'opérande de droite spécifié.
Positif : « hello, I am a string » se termine par « ring »
Négatif : « hello, I am a string » ne se termine pas par « bring »
EqualsAny
Est égal à
Cet opérateur de champ détermine si l'opérande spécifié est exactement égal à l'un des opérandes d'un jeu, dans lequel chaque opérande défini doit apparaitre sous forme de nombre ou de mot entier entouré d'espace blanc, de ponctuation ou de marqueurs de chaine de fin ou de début.
Positif : 10 est égal à l'un des éléments (10, 20, 30)
Positif : « hello » est égal à l'un des éléments (« hello », « banana »)
Négatif : 100 n'est égal à aucun des éléments (10, 20, 30)
Négatif : « hello » n'est égal à aucun des éléments « ello », « ng »)
GreaterThan
Cet opérateur de champ détermine si l'opérande de gauche spécifié est supérieur à l'opérande de droite spécifié.
Positif : 14,4 est supérieur à 10,1
Négatif : 1 n'est pas supérieur à 1000
GreaterThanOrEquals
Cet opérateur de champ détermine si l'opérande de gauche spécifié est supérieur ou égal à l'opérande de droite spécifié.
Positif : 14,4 est supérieur ou égal à 10,1
Négatif : 1 n'est pas supérieur ou égal à 1000
HammingDistance
Cet opérateur de champ détermine la distance entre deux chaînes de longueur égale, c'est-à-dire le nombre de positions auxquelles les symboles correspondants sont différents. Il mesure le nombre minimal de substitutions requises pour changer une chaîne en une autre.
Positif : « cat » est à une distance Hamming de 1 de « bat »
  • cat → bat(1)
Positif : « hello » est à une distance Hamming de 2 de « bell »
  • hello → bello(1) → bell(2)
Positif : « ca » est à une distance Hamming de 3 de « abc »
  • ca → aa(1) → ab(2) → abc(3)
Négatif : « cart » n'est pas à une distance Hamming de 4 de « act »
  • cart → aart(1) → acrt(2) → actt(3) → act(4)
HexEncoding
Cet opérateur de champ tokenise une chaîne et détermine si l'un des jetons correspond à un opérande. Il tente également de déterminer le type de codage de chaîne (ASCII, UTF-7, UTF-8, UTF-16-LE, UTF-16-BE, UTF-32-LE, UTF-32-BE). Sans nomenclature, il peut détecter de manière fiable uniquement UTF-8, UTF-16-LE et UTF-16-BE. Si toutes les détections échouent, l'opérande est défini par défaut sur la page de codes par défaut du système.
Positif : « 74657374 » contient « test »
Négatif : « 696e76616c6964 » ne contient pas « test »
InRange
Cet opérateur de champ détermine si l'opérande du milieu spécifié est placé entre les opérandes de gauche et de droite.
Positif : 10 est entre 1 et 20
Positif : 5,3 est entre 5,3 et 20,1 (inclus)
Négatif : 4 n'est pas entre 5 et 10
Négatif : 20 n'est pas entre 20 et 40 (exclus)
IpIsInRange
IpRange
Cet opérateur de champ détermine si l'adresse TargetNetworkConnection (SourceAddress, DestinationAddress) figure dans les options « min » et « max » spécifiées.
Les opérandes suivants sont autorisés :
{ "Source": "TargetNetworkConnection", "Data": "SourceAddress" }
And:
{ "Source": "TargetNetworkConnection", "Data": "DestinationAddress" }
Exemple :
"FieldOperators": { "a": { "Type": "IpIsInRange", "OperandType": "IPAddres", "Options": { "min": "123.45.67.89", "max": "123.45.67.255" }, "Operands": [ { "Source": "TargetNetworkConnection", "Data": "DestAddr" } ] } }
Incluez l'objet de filtres suivant dans l'exemple ci-dessus pour générer le trafic réseau :
"Filters": [ { "Type": "Event", "Data": { "Category": "Network", "SubCategory": "*", "Type": "Connect" } } ]
IsFlagSet
Cet opérateur de champ vérifie si un ou plusieurs bits d'un masque binaire sont définis. Il peut utiliser base-10 ou base-16 (en utilisant le préfixe « 0x ») pour la valeur de comparaison.
Positif : 0x10 est défini pour 0x4111
Positif : 3 est défini pour 0x7
Négatif : 0x3 n'est pas défini pour 0x4
Négatif : 2 n'est pas défini pour 0x5
IsHomoglyph
Cet opérateur de champ détermine si l'opérande de gauche est un homoglyphe de l'opérande de droite. Par exemple, le caractère US Latin 1 « e » et le caractère « e » français semblent être identiques et avoir la même signification, mais leurs valeurs sont différentes.
Positif : « 3xplor3 » est un homoglyphe de « explore » avec 100 % de certitude
Positif : « 3xplord » est un homoglyphe de « explore » avec 90 % de certitude
Négatif : « temp » n'est pas un homoglyphe de « temp », car il s'agit de la même chaine
Négatif : « 431 » n'est pas un homoglyphe de « big », car ils ne présentent aucune caractéristique transitive
IsNullOrEmpty
Cet opérateur de champ détermine si l'opérande spécifié est nul ou vide.
Positif : <null> est nul ou vide
Positif : "" est nul ou vide
Positif : " " est nul ou vide
Négatif : « Hello » n'est pas nul ou vide
IsPopulated
Exists
HasContent
Cet opérateur de champ détermine si l'opérande spécifié n'est pas nul ni vide.
Positif : « Hello » n'est pas nul ni vide
Négatif : <null> est nul ou vide
Négatif : "" est nul ou vide
Négatif : " " est nul ou vide
IsTrue
Cet opérateur de champ détermine si la valeur spécifiée est vraie.
Positif : TriState.True
Négatif : TriState.False
Négative : TriState.Unknown
LessThan
Cet opérateur de champ détermine si l'opérande de gauche spécifié est inférieur à l'opérande de droite spécifié.
Positif : 4,4 est inférieur à 10,1
Négatif : 1000 n'est pas inférieur à 1
LessThanOrEquals
Cet opérateur de champ détermine si l'opérande de gauche spécifié est inférieur ou égal à l'opérande de droite spécifié.
Positif : 4,4 est inférieur ou égal à 10,1
Positif : 14 est inférieur ou égal à 14
Négatif : 1000 n'est pas inférieur ou égal à 1
LevenshteinDistance
Cet opérateur de champ détermine si la distance, le nombre de modifications nécessaires pour convertir un opérande en un autre opérande, se situe dans une plage acceptable.
Positif : « cat » est à une distance Levenshtein de 1 de « bat »
Positif : « hello » est à une distance Levenshtein de 3 de « bell »
Négatif : « cart » n'est pas à une distance Levenshtein de 1 de « act »
LongestCommonSubsequence
Cet opérateur de champ compare un opérande gauche fixe avec un ensemble d'opérandes droits et détermine la sous-séquence la plus longue dans chaque comparaison. Il compare le nombre de résultats aux valeurs min et max pour déterminer si le résultat se situe dans une plage acceptable.
Comparaison de « aggtab » et « gxtxayb » :
Positif : « gtab » est la séquence la plus longue. Si le min est 1 et le max est 10, cela se situe dans une plage acceptable.
Négatif : dans l'exemple précédent, si le min était de 5 et le max de 10, cela ne se situerait pas dans une plage acceptable.
LongestCommonSubstring
Cet opérateur de champ compare les opérandes gauche et droit et renvoie le nombre de la plus longue sous-chaîne trouvée.
Comparaison entre « abababc » et « abcdaba » :
Positif : « aba » et « abc » sont deux résultats de la même taille dans « abcdaba » et renvoient la sous-chaîne la plus longue définie sur 3.
Négatif : si la distance minimale et la distance maximale étaient définies sur 4, cela serait supérieur à la plus longue sous-chaîne trouvée.
Comparaison entre « ababcd » et « abcdaba » :
Positif : « abcd » est la plus longue sous-chaîne trouvée.
MatchOnFilter
NoOp
Cet opérateur de champ indique qu'aucune opération n'est en cours d'exécution et que l'état correspond simplement si le filtre trouve un événement correspondant.
RegexMatches
Cet opérateur de champ détermine si l'opérande spécifié est conforme à une expression régulière.
Positif : « hello, I am a string » est conforme à « ^hello, [Ii] am [aA] string$ »
Négatif  : « hello, I am a string » n'est pas conforme à « ^[hi|hey], I am a string$ »
ShannonEntropy
Cet opérateur de champ détermine la mesure de l'imprévisibilité de l'état, ou son contenu d'information moyen lors de la comparaison d'un seul opérande.
Positif : « abc » est calculé à 1,5849625007211561 et se situe dans la plage entre 1,55 et 1,6.
Négatif : « Z2V0LXByb2Nlc3M=" est calculé à 3,875 et ne se situe pas dans la plage entre 1,55 et 1,6.
StartsWithAny
StartsWith
Cet opérateur de champ détermine si l'opérande de gauche spécifié commence par l'opérande de droite spécifié.
Positif : « hello, I am a string » commence par « hello, I »
Négatif : « hello, I am a string » ne commence pas par « help »