Funções
Esta secção descreve as funções YARA-L 2.0 que pode usar em consultas de regras, de pesquisa e do painel de controlo.
Consulte também as funções YARA-L 2.0 para painéis de controlo e as estatísticas e agregações na pesquisa com o YARA-L 2.0.
É possível usar estas funções nas seguintes partes de uma consulta YARA-L:
eventssecção.BOOL_CLAUSEde uma condição na secção de resultados.
arrays.concat
arrays.concat(string_array, string_array)
Descrição
Devolve uma nova matriz de strings copiando elementos de matrizes de strings originais.
Tipos de dados de parâmetros
ARRAY_STRINGS, ARRAY_STRINGS
Tipo devolvido
ARRAY_STRINGS
Exemplos de código
Exemplo 1
O exemplo seguinte concatena duas matrizes de strings diferentes.
arrays.concat(["test1", "test2"], ["test3"]) = ["test1", "test2", "test3"]
Exemplo 2
O exemplo seguinte concatena matrizes com uma string vazia.
arrays.concat([""], [""]) = ["", ""]
Exemplo 3
O exemplo seguinte concatena matrizes vazias.
arrays.concat([], []) = []
arrays.index_to_float
arrays.index_to_float(array, index)
Descrição
Devolve o elemento no índice especificado de uma matriz. O elemento nesse índice é devolvido como um número de vírgula flutuante.
O índice é um valor inteiro que representa a posição de um elemento na matriz. Por predefinição, o primeiro elemento de uma matriz tem um índice de 0 e o último elemento tem um índice de n-1, onde n é a dimensão da matriz. A indexação negativa permite o acesso a elementos da matriz relativos ao fim da matriz. Por exemplo, um índice de -1 refere-se ao último elemento na matriz e um índice de -2 refere-se ao penúltimo elemento na matriz.
Tipos de dados de parâmetros
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT
Tipo devolvido
FLOAT
Exemplos de código
Exemplo 1
O exemplo seguinte obtém um elemento no índice 1 de uma matriz de números de vírgula flutuante.
arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 1) // 2.1
Exemplo 2
O exemplo seguinte obtém um elemento no índice -1 de uma matriz de números de vírgula flutuante.
arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 0-1) // 4.6
Exemplo 3
O exemplo seguinte obtém um elemento para um índice superior ao tamanho da matriz.
arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 6) // 0.0
Exemplo 4
O exemplo seguinte obtém um elemento de uma matriz vazia.
arrays.index_to_float([], 0) // 0.0
Exemplo 5
O exemplo seguinte obtém um elemento no índice 1 de uma matriz de strings.
arrays.index_to_float(["1.2", "3.3", "2.4"], 1) // 3.3
Exemplo 6
O exemplo seguinte obtém um elemento no índice 2 de uma matriz de números inteiros.
arrays.index_to_float([1, 3, 2], 2) // 2.0
arrays.index_to_int
arrays.index_to_int(array_of_inputs, index)
Descrição
Devolve o valor num determinado índice numa matriz como um número inteiro.
O índice é um valor inteiro que representa a posição de um elemento na matriz. Por predefinição, o primeiro elemento de uma matriz tem um índice de 0 e o último elemento tem um índice de n-1, onde n é a dimensão da matriz. A indexação negativa permite o acesso a elementos da matriz relativos ao fim da matriz. Por exemplo, um índice de -1 refere-se ao último elemento na matriz e um índice de -2 refere-se ao penúltimo elemento na matriz.
Tipos de dados de parâmetros
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT
Tipo devolvido
INT
Exemplos de código
Exemplo 1
Esta chamada de função devolve 0 quando o valor no índice é uma string não numérica.
arrays.index_to_int(["str0", "str1", "str2"], 1) = 0
Exemplo 2
Esta função devolve o elemento no índice -1.
arrays.index_to_int(["44", "11", "22", "33"], 0-1) = 33
Exemplo 3
Devolve 0 para o elemento fora dos limites.
arrays.index_to_int(["44", "11", "22", "33"], 5) = 0
Exemplo 4
Esta função obtém o elemento da matriz de números de vírgula flutuante no índice 1.
arrays.index_to_int([1.100000, 1.200000, 1.300000], 1) = 1
Exemplo 5
Esta função obtém o elemento da matriz int no índice 0.
arrays.index_to_int([1, 2, 3], 0) = 1
arrays.index_to_str
arrays.index_to_str(array, index)
Descrição
Devolve o elemento no índice especificado da matriz como uma string. O índice é um valor inteiro que representa a posição de um elemento na matriz. Por predefinição, o primeiro elemento de uma matriz tem um índice de 0 e o último elemento tem um índice de n-1, onde n é a dimensão da matriz. A indexação negativa permite aceder a elementos da matriz a partir do final da matriz. Por exemplo, um índice de -1 refere-se ao último elemento na matriz e um índice de -2 refere-se ao penúltimo elemento na matriz.
Tipos de dados de parâmetros
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
O exemplo seguinte obtém um elemento no índice 1 de uma matriz de strings.
arrays.index_to_str(["test1", "test2", "test3", "test4"], 1) // "test2"
Exemplo 2
O exemplo seguinte obtém um elemento no índice -1 (último elemento da matriz) de uma matriz de strings.
arrays.index_to_str(["test1", "test2", "test3", "test4"], 0-1) // "test4"
Exemplo 3
O exemplo seguinte obtém um elemento para um índice superior ao tamanho da matriz, o que devolve uma string vazia.
arrays.index_to_str(["test1", "test2", "test3", "test4"], 6) // ""
Exemplo 4
O exemplo seguinte obtém um elemento de uma matriz vazia.
arrays.index_to_str([], 0) // ""
Exemplo 5
O exemplo seguinte obtém um elemento no índice 0 de uma matriz de números de vírgula flutuante. O resultado é devolvido como uma string.
arrays.index_to_str([1.200000, 3.300000, 2.400000], 0) // "1.2"
Exemplo 6
O exemplo seguinte obtém um elemento no índice 2 de uma matriz de números inteiros. O resultado está no formato de uma string.
arrays.index_to_str([1, 3, 2], 2) // "2"
arrays.join_string
arrays.join_string(array_of_strings, optional_delimiter)
Descrição
Converte uma matriz de strings numa única string separada pelo parâmetro opcional. Se não for fornecido nenhum delimitador, é usada a string vazia.
Tipos de dados de parâmetros
ARRAY_STRINGS, STRING
Tipo devolvido
STRING
Exemplos de código
Seguem-se alguns exemplos de como usar a função:
Exemplo 1
Este exemplo junta uma matriz com elementos não nulos e um delimitador.
arrays.join_string(["foo", "bar"], ",") = "foo,bar"
Exemplo 2
Este exemplo junta uma matriz com um elemento nulo e um delimitador.
arrays.join_string(["foo", NULL, "bar"], ",") = "foo,bar"
Exemplo 3
Este exemplo junta uma matriz com elementos não nulos e sem delimitador.
arrays.join_string(["foo", "bar"]) = "foobar"
arrays.length
arrays.length(repeatedField)
Descrição
Devolve o número de elementos de campo repetidos.
Tipos de dados de parâmetros
LIST
Tipo devolvido
NUMBER
Exemplos de código
Exemplo 1
Devolve o número de elementos de campo repetidos.
arrays.length($e.principal.ip) = 2
Exemplo 2
Se existirem vários campos repetidos ao longo do caminho, devolve o número total de elementos de campos repetidos.
arrays.length($e.intermediary.ip) = 3
arrays.max
arrays.max(array_of_ints_or_floats)
Descrição
Devolve o maior elemento numa matriz ou zero se a matriz estiver vazia.
Tipos de dados de parâmetros
ARRAY_INTS|ARRAY_FLOATS
Tipo devolvido
FLOAT
Exemplos de código
Seguem-se alguns exemplos de como usar a função:
Exemplo 1
Este exemplo devolve o elemento maior numa matriz de números inteiros.
arrays.max([10, 20]) = 20.000000
Exemplo 2
Este exemplo devolve o elemento maior numa matriz de números de vírgula flutuante.
arrays.max([10.000000, 20.000000]) = 20.000000
arrays.min
arrays.min(array_of_ints_or_floats[, ignore_zeros=false])
Descrição
Devolve o elemento mais pequeno numa matriz ou zero se a matriz estiver vazia. Se o segundo argumento opcional estiver definido como verdadeiro, os elementos iguais a zero são ignorados.
Tipos de dados de parâmetros
ARRAY_INTS|ARRAY_FLOATS, BOOL
Tipo devolvido
FLOAT
Exemplos de código
Seguem-se alguns exemplos de como usar a função:
Exemplo 1
Este exemplo devolve o elemento mais pequeno numa matriz de números inteiros.
arrays.min([10, 20]) = 10.000000
Exemplo 2
Este exemplo devolve o elemento mais pequeno numa matriz de números de vírgula flutuante.
arrays.min([10.000000, 20.000000]) = 10.000000
Exemplo 3
Este exemplo devolve o elemento mais pequeno numa matriz de números de vírgula flutuante, ignorando os zeros.
arrays.min([10.000000, 20.000000, 0.0], true) = 10.000000
arrays.size
arrays.size( array )
Descrição
Devolve a dimensão da matriz. Devolve 0 para uma matriz vazia.
Tipos de dados de parâmetros
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS
Tipo devolvido
INT
Exemplos de código
Exemplo 1
Este exemplo usa uma matriz de strings que contém dois elementos.
arrays.size(["test1", "test2"]) = 2
Exemplo 2
Este exemplo usa uma matriz int que contém 3 elementos.
arrays.size([1, 2, 3]) = 3
Exemplo 3
Este exemplo usa uma matriz de números de vírgula flutuante que contém 1 elemento
arrays.size([1.200000]) = 1
Exemplo 4
Este exemplo usa uma matriz vazia.
arrays.size([]) = 0
bytes.to_base64
bytes.to_base64(bytes, optional_default_string)
Descrição
A função converte um valor bytes num valor base64 encoded string. As chamadas de funções com valores que não podem ser convertidos devolvem uma string vazia por predefinição.
Tipos de dados de parâmetros
BYTES, STRING
Tipo devolvido
STRING
Exemplos de código
Bytes binários não processados para string codificada em Base64
A função converte os bytes binários não processados numa string codificada em base64.
bytes.to_base64(b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000) = "AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA="
Conversão falhada (predefinição para a string fornecida opcionalmente)
A função usa a predefinição "invalid bytes" quando o valor de bytes fornecido não é válido.
bytes.to_base64(b'000000006f8ec5586d", "invalid bytes") = "invalid bytes"
cast.as_bool
cast.as_bool(string_or_int)
Descrição
A função converte um valor int ou string num valor bool. As chamadas de funções com valores que não podem ser convertidos devolvem FALSE. Devolve VERDADEIRO apenas para o número inteiro 1 e a string "verdadeiro" sem distinção entre maiúsculas e minúsculas.
Tipos de dados de parâmetros
INT|STRING
Tipo devolvido
BOOL
Exemplos de código
Exemplo 1
Este exemplo mostra como converter uma string não booleana
cast.as_bool("123") = false
Exemplo 2
Número inteiro verdadeiro (1)
cast.as_bool(1) = true
Exemplo 3
Truthy string
cast.as_bool("true") = true
Exemplo 4
String verdadeira com maiúsculas
cast.as_bool("TRUE") = true
Exemplo 5
Número inteiro negativo
cast.as_bool(0-1) = false
Exemplo 6
Número inteiro falso (0)
cast.as_bool(0) = false
Exemplo 7
string vazia
cast.as_bool("") = false
cast.as_float
cast.as_float(string_to_cast)
Descrição
Converte uma string numérica num número de vírgula flutuante. Todas as chamadas de funções com valores que não podem ser convertidos devolvem 0. Os números de vírgula flutuante mantêm a precisão até 7 dígitos decimais.
Tipos de dados de parâmetros
STRING
Tipo devolvido
FLOAT
Exemplos de código
Exemplo 1
A conversão de uma string não numérica devolve 0.
cast.as_float("str") = 0.0000000
Exemplo 2
A conversão de uma string vazia devolve 0.
cast.as_float("") = 0.0000000
Exemplo 3
A conversão de uma string numérica válida devolve um valor de ponto flutuante.
cast.as_float("1.012345678") = 1.0123456
cast.as_string
cast.as_string(int_or_bytes_or_bool, optional_default_string)
Descrição
A função cast.as_string transforma um valor INT, BYTES ou BOOL na respetiva representação de string. Pode fornecer um argumento default_string opcional para processar casos em que a conversão falha. Se omitir o argumento default_string ou se a entrada for uma sequência de bytes UTF-8 ou BASE64 inválida, a função devolve uma string vazia.
Tipos de dados de parâmetros
INT|BYTES|BOOL, STRING
Tipo devolvido
STRING
Exemplos de código
Conversão de número inteiro para string
A função converte o número inteiro 123 na string "123".
cast.as_string(123) = "123"
Conversão de ponto flutuante para string
A função converte o número de vírgula flutuante 2.25 na string "2.25".
cast.as_string(2.25) = "2.25"
Conversão de bytes em string
A função converte o binário não processado b'01 na string "\x01".
cast.as_string(b'01, "") = "\x01"
Conversão de Booleano em string
A função converte o valor booleano true na string "true".
cast.as_string(true, "") = "true"
Conversão falhada (predefinição para a string fornecida opcionalmente)
A função usa a string "casting error" por predefinição quando o valor fornecido é inválido.
cast.as_string(9223372036854775808, "casting error") = "casting error"
impressão digital
hash.fingerprint2011(byteOrString)
Descrição
Esta função calcula o hash fingerprint2011 de uma sequência de bytes de entrada ou de uma string. Esta função devolve um valor INT não assinado no intervalo [2, 0xFFFFFFFFFFFFFFFF].
Tipos de dados de parâmetros
BTYE, STRING
Tipo devolvido
INT
Exemplo de código
id_fingerprint = hash.fingerprint2011("user123")
grupo
group(field1, field2, field3, ...)
Descrição
Agrupe campos de um tipo semelhante numa variável de marcador de posição.
Na pesquisa UDM, os campos agrupados são usados para pesquisar em vários campos de um tipo semelhante. A função group é semelhante aos campos agrupados, exceto que permite selecionar os campos que quer agrupar para acionar uma deteção. Pode usar a função de grupo para reunir informações sobre uma entidade específica (por exemplo, um nome de anfitrião, um endereço IP ou um ID de utilizador) em diferentes tipos de substantivos.
Exemplos de código
Exemplo 1
Agrupe todos os endereços IP e forneça uma contagem descendente do endereço IP mais prevalente no intervalo de tempo analisado.
$ip = group(principal.ip, about.ip, target.ip)
$ip != ""
match:
$ip
outcome:
$count = count_distinct(metadata.id)
order:
$count desc
hash.sha256
hash.sha256(string)
Descrição
Devolve um hash SHA-256 da string de entrada.
Tipos de dados de parâmetros
STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
Este exemplo mostra o hash SHA-256 quando a entrada é uma string válida.
hash.sha256("str") = "8c25cb3686462e9a86d2883c5688a22fe738b0bbc85f458d2d2b5f3f667c6d5a"
Exemplo 2
Este exemplo mostra o hash SHA-256 quando a entrada é uma string vazia.
hash.sha256("") = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
math.abs
math.abs(numericExpression)
Descrição
Devolve o valor absoluto de uma expressão de número inteiro ou de vírgula flutuante.
Tipos de dados de parâmetros
NUMBER
Tipo devolvido
NUMBER
Exemplos de código
Exemplo 1
Este exemplo devolve True se o evento tiver ocorrido mais de 5 minutos após a hora especificada (em segundos desde a época Unix), independentemente de o evento ter ocorrido antes ou depois da hora especificada. Uma chamada para math.abs não pode depender de várias variáveis ou marcadores de posição. Por exemplo, não pode substituir o valor de tempo codificado de 1643687343 no exemplo seguinte por $e2.metadata.event_timestamp.seconds.
300 < math.abs($e1.metadata.event_timestamp.seconds - 1643687343)
math.ceil
math.ceil(number)
Descrição
Devolve o menor número inteiro que não é inferior ao número indicado (arredondamento para cima). Devolve 0 se a entrada for nula ou demasiado grande para caber num int64.
Tipos de dados de parâmetros
FLOAT
Tipo devolvido
INT
Exemplos de código
Esta secção contém exemplos de utilização de math.ceil.
Exemplo 1
Este exemplo devolve o teto de um número inteiro.
math.ceil(2.000000) = 2
Exemplo 2
Este exemplo devolve o limite superior de um número negativo.
math.ceil(0-1.200000) = -1
Exemplo 3
Este exemplo devolve 0 como o limite superior de um número demasiado grande para um inteiro de 64 bits.
math.ceil(184467440737095516160.0) = 0
math.floor
math.floor(float_val)
Descrição
Devolve o maior valor inteiro que não é superior ao valor fornecido (arredondamento para baixo). Devolve 0 se a entrada for nula ou demasiado grande para caber num int64.
Tipos de dados de parâmetros
FLOAT
Tipo devolvido
INT
Exemplos de código
Exemplo 1
Este exemplo mostra um caso de número positivo.
math.floor(1.234568) = 1
Exemplo 2
Este exemplo mostra um caso de número negativo.
math.floor(0-1.234568) = -2
Exemplo 3
Este exemplo mostra um caso zero.
math.floor(0.000000) = 0
math.geo_distance
math.geo_distance(longitude1, latitude1, longitude2, latitude2))
Descrição
Devolve a distância entre duas localizações geográficas (coordenadas) em metros. Devolve -1 se as coordenadas forem inválidas.
Tipos de dados de parâmetros
FLOAT, FLOAT, FLOAT, FLOAT
Tipo devolvido
FLOAT
Exemplos de código
Exemplo 1
O exemplo seguinte devolve a distância quando todos os parâmetros são coordenadas válidas:
math.geo_distance(-122.020287, 37.407574, -122.021810, 37.407574) = 134.564318
Exemplo 2
O exemplo seguinte devolve a distância quando um dos parâmetros é uma coordenada truncada:
math.geo_distance(-122.000000, 37.407574, -122.021810, 37.407574) = 1926.421905
Exemplo 3
O exemplo seguinte devolve -1 quando um dos parâmetros é uma coordenada inválida:
math.geo_distance(0-122.897680, 37.407574, 0-122.021810, 97.407574) = -1.000000
Exemplo 4
O exemplo seguinte devolve 0 quando as coordenadas são iguais:
math.geo_distance(-122.897680, 37.407574, -122.897680, 37.407574) = 0.000000
math.is_increasing
math.is_increasing(num1, num2, num3)
Descrição
Aceita uma lista de valores numéricos (inteiros ou duplos) e devolve True se os valores estiverem por ordem crescente e False caso contrário.
Tipos de dados de parâmetros
INT|FLOAT, INT|FLOAT, INT|FLOAT
Tipo devolvido
BOOL
Exemplos de código
Exemplo 1
Este exemplo inclui valores semelhantes a datas/horas em segundos.
math.is_increasing(1716769112, 1716769113, 1716769114) = true
Exemplo 2
Este exemplo inclui um valor duplo negativo, um valor INT64 zero e um valor INT64 positivo.
math.is_increasing(-1.200000, 0, 3) = true
Exemplo 3
Este exemplo inclui um valor duplo negativo, um valor INT64 zero e um valor INT64 negativo.
math.is_increasing(0-1.200000, 0, 0-3) = false
Exemplo 4
Este exemplo inclui dois números de ponto flutuante negativos e um valor INT64 zero.
math.is_increasing(0-1.200000, 0-1.50000, 0) = false
Exemplo 5
Este exemplo inclui um número de ponto flutuante negativo e dois valores iguais.
math.is_increasing(0-1.200000, 0, 0) = false
math.log
math.log(numericExpression)
Descrição
Devolve o valor do logaritmo natural de uma expressão de número inteiro ou de vírgula flutuante.
Tipos de dados de parâmetros
NUMBER
Tipo devolvido
NUMBER
Exemplos de código
Exemplo 1
math.log($e1.network.sent_bytes) > 20
math.pow
math.pow(base, exponent)
Descrição
Devolve o valor do primeiro argumento elevado à potência do segundo argumento. Devolve 0 em caso de overflow.
Tipos de dados de parâmetros
base: INT|FLOAT
expoente: INT|FLOAT
Tipo devolvido
FLOAT
Exemplos de código
Exemplo 1
Este exemplo mostra um caso de número inteiro.
math.pow(2, 2) // 4.00
Exemplo 2
Este exemplo mostra um caso base de fração.
math.pow(2.200000, 3) // 10.648
Exemplo 3
Este exemplo mostra uma base de fração e uma potência.
math.pow(2.200000, 1.200000) // 2.575771
Exemplo 4
Este exemplo mostra um caso de potência negativa.
math.pow(3, 0-3) // 0.037037
Exemplo 5
Este exemplo mostra um caso de potência fracionária.
math.pow(3, 0-1.200000) // 0.267581
Exemplo 6
Este exemplo mostra um caso base negativo.
math.pow(0-3, 0-3) // -0.037037
Exemplo 7
Este exemplo mostra um caso base zero.
math.pow(0, 3) // 0
Exemplo 8
Este exemplo mostra um caso de potência zero.
math.pow(9223372036854775807, 0) // 1
Exemplo 9
Este exemplo mostra um registo de base grande.
math.pow(9223372036854775807, 1.200000) // 57262152889751593549824
math.random
math.random()
Descrição
Gera um valor pseudoaleatório do tipo DOUBLE no intervalo de [0, 1), incluindo 0 e excluindo 1.
Tipo devolvido
FLOAT
Exemplos de código
O exemplo seguinte verifica se o valor aleatório está no intervalo [0, 1).
none
if(math.random() >= 0 and math.random() < 1) = true
math.round
math.round(numericExpression, decimalPlaces)
Descrição
Devolve um valor arredondado para o número inteiro mais próximo ou para o número especificado de casas decimais.
Tipos de dados de parâmetros
NUMBER
Tipo devolvido
NUMBER
Exemplos de código
math.round(10.7) // returns 11
math.round(1.2567, 2) // returns 1.25
math.round(0-10.7) // returns -11
math.round(0-1.2) // returns -1
math.round(4) // returns 4, math.round(integer) returns the integer
math.sqrt
math.sqrt(number)
Descrição
Devolve a raiz quadrada do número fornecido. Devolve 0 no caso de números negativos.
Tipos de dados de parâmetros
INT|FLOAT
Tipo devolvido
FLOAT
Exemplos de código
Exemplo 1
Este exemplo devolve a raiz quadrada de um argumento int.
math.sqrt(3) = 1.732051
Exemplo 2
Este exemplo devolve a raiz quadrada de um argumento int negativo.
math.sqrt(-3) = 0.000000
Exemplo 3
Este exemplo devolve a raiz quadrada do argumento zero.
math.sqrt(0) = 0.000000
Exemplo 4
Este exemplo devolve a raiz quadrada de um argumento flutuante.
math.sqrt(9.223372) = 3.037000
Exemplo 5
Este exemplo devolve a raiz quadrada de um argumento de ponto flutuante negativo.
math.sqrt(0-1.200000) = 0.000000
métricas
As funções de métricas podem agregar grandes quantidades de dados do histórico. Pode usar esta opção na sua regra através de metrics.functionName() na secção de resultados.
Para mais informações, consulte as métricas YARA-L.
net.ip_in_range_cidr
net.ip_in_range_cidr(ipAddress, subnetworkRange)
Descrição
Devolve true quando o endereço IP fornecido está dentro da sub-rede especificada.
Pode usar o YARA-L para pesquisar eventos UDM em todos os endereços IP
numa sub-rede através da declaração net.ip_in_range_cidr().
O IPv4 e o IPv6 são suportados.
Para pesquisar num intervalo de endereços IP, especifique um campo UDM de IP e um intervalo CIDR. O YARA-L pode processar campos de endereços IP singulares e repetidos.
Para pesquisar num intervalo de endereços IP, especifique um ipcampo de UDM e um intervalo de Classless Inter-Domain Routing (CIDR). O YARA-L pode processar campos de endereços IP singulares e repetidos.
Tipos de dados de parâmetros
STRING, STRING
Tipo devolvido
BOOL
Exemplos de código
Exemplo 1
Exemplo de IPv4:
net.ip_in_range_cidr($e.principal.ip, "192.0.2.0/24")
Exemplo 2
Exemplo de IPv6:
net.ip_in_range_cidr($e.network.dhcp.yiaddr, "2001:db8::/32")
Para ver um exemplo de regra que usa a declaração net.ip_in_range_cidr(), consulte a regra de exemplo em Evento único no intervalo de endereços IP.)
re.regex
Pode definir a correspondência de expressões regulares no YARA-L 2.0 através de uma das seguintes sintaxes:
Usar a sintaxe YARA-L: relacionada com eventos. Segue-se uma representação genérica desta sintaxe:
$e.field = /regex/Usando a sintaxe YARA-L: como uma função que recebe os seguintes parâmetros:
- Campo ao qual a expressão regular é aplicada.
- Expressão regular especificada como uma string.
Segue-se uma representação genérica desta sintaxe:
re.regex($e.field, `regex`)
Descrição
Esta função devolve true se a string contiver uma substring que corresponda à expressão regular fornecida. Não é necessário adicionar .* ao início ou ao fim da expressão regular.
Notas
- Para corresponder à string exata ou apenas a um prefixo ou um sufixo, inclua os carateres de âncora
^(início) e$(fim) na expressão regular. Por exemplo,/^full$/corresponde exatamente a"full", enquanto/full/pode corresponder a"fullest","lawfull"e"joyfully". - Se o campo UDM incluir carateres de nova linha, o
regexpsó corresponde à primeira linha do campo UDM. Para aplicar a correspondência total de campos da UDM, adicione um(?s)à expressão regular. Por exemplo, substitua/.*allUDM.*/por/(?s).*allUDM.*/. - Pode usar o modificador
nocaseapós as strings para indicar que a pesquisa deve ignorar as letras maiúsculas.
Tipos de dados de parâmetros
STRING, STRING
Tipos de expressões de parâmetros
ANY, ANY
Tipo devolvido
BOOL
Exemplos de código
Exemplo 1
// Equivalent to $e.principal.hostname = /google/
re.regex($e.principal.hostname, "google")
re.capture
re.capture(stringText, regex)
Descrição
Captura (extrai) dados de uma string através do padrão de expressão regular fornecido no argumento.
Esta função recebe dois argumentos:
stringText: a string original a pesquisar.regex: a expressão regular que indica o padrão a pesquisar.
A expressão regular pode conter 0 ou 1 grupos de captura entre parênteses. Se a expressão regular contiver 0 grupos de captura, a função devolve a primeira substring correspondente completa. Se a expressão regular contiver 1 grupo de captura, devolve a primeira substring correspondente para o grupo de captura. A definição de dois ou mais grupos de captura devolve um erro do compilador.
Tipos de dados de parâmetros
STRING, STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
Neste exemplo, se $e.principal.hostname contiver "aaa1bbaa2", o seguinte seria verdadeiro, porque a função devolve a primeira instância. Este exemplo não tem grupos de captura.
"aaa1" = re.capture($e.principal.hostname, "a+[1-9]")
Exemplo 2
Este exemplo captura tudo o que está após o símbolo @ num email. Se o campo $e.network.email.from for test@google.com, o exemplo devolve google.com. O exemplo seguinte contém um grupo de captura.
"google.com" = re.capture($e.network.email.from , "@(.*)")
Exemplo 3
Se a expressão regular não corresponder a nenhuma substring no texto, a função devolve uma string vazia. Pode omitir eventos em que não ocorra nenhuma correspondência
excluindo a string vazia, o que é especialmente importante quando usa
re.capture() com uma desigualdade:
// Exclude the empty string to omit events where no match occurs.
"" != re.capture($e.network.email.from , "@(.*)")
// Exclude a specific string with an inequality.
"google.com" != re.capture($e.network.email.from , "@(.*)")
re.replace
re.replace(stringText, replaceRegex, replacementText)
Descrição
Faz uma substituição de expressão regular.
Esta função usa três argumentos:
stringText: a string original.replaceRegex: a expressão regular que indica o padrão a pesquisar.replacementText: o texto a inserir em cada correspondência.
Devolve uma nova string derivada da string original stringText, onde todas as subcadeias que correspondem ao padrão em replaceRegex são substituídas pelo valor em replacementText. Pode usar dígitos com barra invertida (\1 a \9) em replacementText para inserir texto correspondente ao grupo entre parênteses correspondente no padrão replaceRegex. Use \0 para se referir a todo o texto correspondente.
A função substitui as correspondências não sobrepostas e dá prioridade à substituição da primeira ocorrência encontrada. Por exemplo, re.replace("banana", "ana", "111")
devolve a string "b111na".
Tipos de dados de parâmetros
STRING, STRING, STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
Este exemplo captura tudo o que está após o símbolo @ num email, substitui com
por org e, em seguida, devolve o resultado. Repare na utilização de funções aninhadas.
"email@google.org" = re.replace($e.network.email.from, "com", "org")
Exemplo 2
Este exemplo usa dígitos com carateres de escape de barra invertida no argumento replacementText para
fazer referência a correspondências com o padrão replaceRegex.
"test1.com.google" = re.replace(
$e.principal.hostname, // holds "test1.test2.google.com"
"test2\.([a-z]*)\.([a-z]*)",
"\\2.\\1" // \\1 holds "google", \\2 holds "com"
)
Exemplo 3
Tenha em atenção os seguintes casos quando trabalhar com strings vazias e re.replace():
Usar string vazia como replaceRegex:
// In the function call below, if $e.principal.hostname contains "name",
// the result is: 1n1a1m1e1, because an empty string is found next to
// every character in `stringText`.
re.replace($e.principal.hostname, "", "1")
Para substituir uma string vazia, pode usar "^$" como replaceRegex:
// In the function call below, if $e.principal.hostname contains the empty
// string, "", the result is: "none".
re.replace($e.principal.hostname, "^$", "none")
sample_rate
optimization.sample_rate(byteOrString, rateNumerator, rateDenominator)
Descrição
Esta função determina se deve incluir um evento com base numa estratégia de amostragem determinística. Esta função devolve:
truepara uma fração dos valores de entrada, equivalente a (rateNumerator/rateDenominator), indicando que o evento deve ser incluído na amostra.false, o que indica que o evento não deve ser incluído na amostra.
Esta função é útil para cenários de otimização em que quer processar apenas um subconjunto de eventos. Equivalente a:
hash.fingerprint2011(byteOrString) % rateDenominator < rateNumerator
Tipos de dados de parâmetros
- byteOrString: expressão que é avaliada como
BYTEouSTRING. - rateNumerator: 'INT'
- rateDenominator: 'INT'
Tipo devolvido
BOOL
Exemplo de código
events:
$e.metadata.event_type = "NETWORK_CONNECTION"
$asset_id = $e.principal.asset.asset_id
optimization.sample_rate($e.metadata.id, 1, 5) // Only 1 out of every 5 events
match:
$asset_id over 1h
outcome:
$event_count = count_distinct($e.metadata.id)
// estimate the usage by multiplying by the inverse of the sample rate
$usage_past_hour = sum(5.0 * $e.network.sent_bytes)
condition:
// Requiring a certain number of events after sampling avoids bias (e.g. a
// device with just 1 connection will still show up 20% of the time and
// if we multiply that traffic by 5, we'll get an incorrect estimate)
$e and ($usage_past_hour > 1000000000) and $event_count >= 100
strings.base64_decode
strings.base64_decode(encodedString)
Descrição
Devolve uma string que contém a versão descodificada em base64 da string codificada.
Esta função seleciona uma string codificada em base64 como um argumento. Se encodedString
não for uma string codificada em base64 válida, a função devolve encodedString inalterado.
Tipos de dados de parâmetros
STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
"test" = strings.base64_decode($e.principal.domain.name)
strings.coalesce
strings.coalesce(a, b, c, ...)
Descrição
Esta função aceita um número ilimitado de argumentos e devolve o valor da primeira expressão que não é avaliada como uma string vazia (por exemplo, "valor diferente de zero"). Se todos os argumentos forem avaliados como uma string vazia, a chamada de função devolve uma string vazia.
Os argumentos podem ser literais, campos de eventos ou chamadas de funções. Todos os argumentos têm de ser do tipo STRING. Se algum argumento for um campo de evento, os atributos têm de ser do mesmo evento.
Tipos de dados de parâmetros
STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
O exemplo seguinte inclui variáveis de string como argumentos. A condição
é avaliada como verdadeira quando (1) $e.network.email.from é suspicious@gmail.com ou
(2) $e.network.email.from está vazio e $e.network.email.to é
suspicious@gmail.com.
"suspicious@gmail.com" = strings.coalesce($e.network.email.from, $e.network.email.to)
Exemplo 2
O exemplo seguinte chama a função coalesce com mais de dois
argumentos. Esta condição compara o primeiro endereço IP não nulo do evento $e
com os valores na lista de referência ip_watchlist. A ordem em que os argumentos são unidos nesta chamada é a mesma ordem em que são enumerados na condição da regra:
$e.principal.ipé avaliado primeiro.$e.src.ipé avaliado em seguida.$e.target.ipé avaliado em seguida.- Por último, a string "No IP" é devolvida como um valor predefinido se os campos anteriores não estiverem definidos.
ip
strings.coalesce($e.principal.ip, $e.src.ip, $e.target.ip, "No IP") in %ip_watchlist
Exemplo 3
O exemplo seguinte tenta unir principal.hostname do evento $e1 e do evento $e2. Devolve um erro do compilador porque os argumentos são variáveis de eventos diferentes.
// returns a compiler error
"test" = strings.coalesce($e1.principal.hostname, $e2.principal.hostname)
strings.concat
strings.concat(a, b, c, ...)
Descrição
Devolve a concatenação de um número ilimitado de itens, cada um dos quais pode ser uma string, um número inteiro ou um número de vírgula flutuante.
Se algum argumento for um campo de evento, os atributos têm de ser do mesmo evento.
Tipos de dados de parâmetros
STRING, FLOAT, INT
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
O exemplo seguinte inclui uma variável de string e uma variável inteira como argumentos. Ambos principal.hostname e principal.port são do mesmo evento, $e, e são concatenados para devolver uma string.
"google:80" = strings.concat($e.principal.hostname, ":", $e.principal.port)
Exemplo 2
O exemplo seguinte inclui uma variável de string e um literal de string como argumentos.
"google-test" = strings.concat($e.principal.hostname, "-test") // Matches the event when $e.principal.hostname = "google"
Exemplo 3
O exemplo seguinte inclui uma variável de string e um literal flutuante como argumentos. Quando representados como strings, os números de vírgula flutuante que são números inteiros são formatados sem o ponto decimal (por exemplo, 1,0 é representado como "1"). Além disso, os números de vírgula flutuante que excedam dezasseis dígitos decimais são truncados para a décima sexta casa decimal.
"google2.5" = strings.concat($e.principal.hostname, 2.5)
Exemplo 4
O exemplo seguinte inclui uma variável de string, um literal de string, uma variável inteira e um literal flutuante como argumentos. Todas as variáveis são do mesmo evento, $e, e são concatenadas com os literais para devolver uma string.
"google-test802.5" = strings.concat($e.principal.hostname, "-test", $e.principal.port, 2.5)
Exemplo 5
O exemplo seguinte tenta concatenar principal.port do evento $e1 com principal.hostname do evento $e2. Devolve um erro do compilador porque os argumentos são variáveis de eventos diferentes.
// Will not compile
"test" = strings.concat($e1.principal.port, $e2.principal.hostname)
strings.contains
strings.contains( str, substr )
Descrição
Devolve true se uma determinada string contiver a substring especificada. Caso contrário, devolve false.
Tipos de dados de parâmetros
STRING, STRING
Tipo devolvido
BOOL
Exemplos de código
Exemplo 1
Este exemplo devolve true porque a string tem uma substring "is".
strings.contains("thisisastring", "is") = true
Exemplo 2
Este exemplo devolve o valor falso porque a string não tem a substring "that".
strings.contains("thisisastring", "that") = false
strings.count_substrings
strings.count_substrings(string_to_search_in, substring_to_count)
Descrição
Quando recebe uma string e uma substring, devolve um int64 da contagem de ocorrências não sobrepostas da substring na string.
Tipos de dados de parâmetros
STRING, STRING
Tipo devolvido
INT
Exemplos de código
Esta secção contém exemplos que calculam o número de vezes que uma substring aparece numa determinada string.
Exemplo 1
Este exemplo usa uma string não nula e um caráter de substring único não nulo.
strings.count_substrings("this`string`has`four`backticks", "`") = 4
Exemplo 2
Este exemplo usa uma string não nula e uma substring não nula com mais de um caráter.
strings.count_substrings("str", "str") = 1
Exemplo 3
Este exemplo usa uma string não nula e uma substring vazia.
strings.count_substrings("str", "") = 0
Exemplo 4
Este exemplo usa uma string vazia e uma substring não nula com mais de um caráter.
strings.count_substrings("", "str") = 0
Exemplo 5
Este exemplo usa uma string vazia e uma substring vazia.
strings.count_substrings("", "") = 0
Exemplo 6
Este exemplo usa uma string não nula e uma substring não nula com mais de um caráter e mais de uma ocorrência.
strings.count_substrings("fooABAbarABAbazABA", "AB") = 3
Exemplo 7
Este exemplo usa uma string não nula e uma substring não nula com mais de um caráter e mais de uma ocorrência. Realça a limitação com ocorrências de subcadeias sobrepostas
strings.count_substrings("ABABABA", "ABA") = 2
strings.ends_with
strings.ends_with(value, suffix)
Descrição
A função recebe duas strings (value, suffix). Devolve true se o sufixo não estiver vazio e estiver no fim do valor.
Tipos de dados de parâmetros
STRING, STRING
Tipo devolvido
BOOL
Exemplos de código
Os seguintes exemplos de código ilustram algumas das formas como pode usar a função
strings.ends_with.
Exemplo: devolve verdadeiro
Devolve true quando o sufixo é encontrado no final do valor.
strings.ends_with(target.hostname, "com") = true
Exemplo: devolve falso
Devolve falso quando o sufixo não está no fim do valor.
strings.ends_with(target.hostname, "com") = false
Exemplo: devolve false quando são idênticos
Devolve falso quando o sufixo e o valor são idênticos.
target.hostname != "example.com"
strings.ends_with("str", "str") = true
Exemplo: devolve false quando o sufixo está vazio
Devolve o valor false quando o sufixo é uma string vazia.
target.hostname != "example.com"
strings.ends_with("str", "") = false
Exemplo: devolve falso quando o valor está vazio
Devolve falso quando o valor é uma string vazia.
target.hostname != "example.com"
strings.ends_with("", "str") = false
Exemplo: devolve falso quando o sufixo e o valor estão vazios
Devolve falso quando o sufixo e o valor são strings vazias.
target.hostname != "example.com"
strings.ends_with("", "") = false
strings.extract_domain
strings.extract_domain(url_string)
Descrição
Extrai o domínio de uma string.
Tipos de dados de parâmetros
STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
Este exemplo mostra uma string vazia
strings.extract_domain("") = ""
Exemplo 2
string aleatória, não um URL
strings.extract_domain("1234") = ""
Exemplo 3
várias barras invertidas
strings.extract_domain("\\\\") = ""
Exemplo 4
Carateres não alfabéticos processados corretamente
strings.extract_domain("http://例子.卷筒纸.中国") = "卷筒纸.中国"
Exemplo 5
Tratamento de URIs
strings.extract_domain("mailto:?to=&subject=&body=") = ""
Exemplo 6
Vários carateres antes do URL real
strings.extract_domain(" \t !$5*^)&dahgsdfs;http://www.google.com") = "google.com"
Exemplo 7
carateres especiais no URI #
strings.extract_domain("test#@google.com") = ""
Exemplo 8
carateres especiais no URL #
strings.extract_domain("https://test#@google.com") = ""
Exemplo 9
caso de teste positivo
strings.extract_domain("https://google.co.in") = "google.co.in"
strings.extract_hostname
strings.extract_hostname(string)
Descrição
Extrai o nome do anfitrião de uma string. Esta função é sensível a maiúsculas e minúsculas.
Tipos de dados de parâmetros
STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
Este exemplo devolve uma string vazia.
strings.extract_hostname("") = ""
Exemplo 2
string aleatória, não um URL
strings.extract_hostname("1234") = "1234"
Exemplo 3
várias barras invertidas
strings.extract_hostname("\\\\") = ""
Exemplo 4
Carateres não ingleses processados corretamente
strings.extract_hostname("http://例子.卷筒纸.中国") = "例子.卷筒纸.中国"
Exemplo 5
Tratamento de URIs
strings.extract_hostname("mailto:?to=&subject=&body=") = "mailto"
Exemplo 6
Vários carateres antes do URL real
strings.extract_hostname(" \t !$5*^)&dahgsdfs;http://www.google.com") = "www.google.com"
Exemplo 7
carateres especiais no URI #
strings.extract_hostname("test#@google.com") = "test"
Exemplo 8
carateres especiais no URL #
strings.extract_hostname("https://test#@google.com") = "test"
strings.from_base64
strings.from_base64(base64_encoded_string)
Descrição
A função converte um valor STRING codificado em base64 num valor BYTES binário não processado. As chamadas de funções com valores que não podem ser convertidos devolvem um BYTES vazio por predefinição.
Tipos de dados de parâmetros
STRING
Tipo devolvido
BYTES
Exemplos de código
Conversão de string codificada em Base64 para bytes
A função converte uma string codificada em base64 na respetiva representação de bytes binários não processados.
strings.from_base64("AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA=") = b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000
Conversão falhada (predefinição para bytes vazios)
A função reverte para bytes vazios se o valor fornecido for inválido.
strings.from_base64("invalid-value") = b'
strings.from_hex
strings.from_hex(hex_string)
Descrição
Devolve os bytes associados à string hexadecimal fornecida.
Tipos de dados de parâmetros
STRING
Tipo devolvido
BYTES
Exemplos de código
Obtém bytes associados a uma determinada string hexadecimal.
Exemplo 1
Este exemplo mostra conversões de carateres não hexadecimais.
strings.from_hex("str") // returns empty bytes
Exemplo 2
Este exemplo mostra a entrada com uma string vazia.
strings.from_hex("") // returns empty bytes
Exemplo 3
Este exemplo mostra a conversão de strings hexadecimais.
strings.from_hex("1234") // returns 1234 bytes
Exemplo 4
Este exemplo mostra a conversão de carateres não ASCII.
strings.from_hex("筒纸.中国") // returns empty bytes
strings.ltrim
strings.ltrim(string_to_trim, cutset)
Descrição
Corta os espaços em branco à esquerda de uma determinada string. Esta função remove os carateres iniciais presentes nesse conjunto de corte.
Tipos de dados de parâmetros
STRING, STRING
Tipo devolvido
STRING
Exemplos de código
Seguem-se exemplos de utilização.
Exemplo 1
Este exemplo usa o mesmo primeiro e segundo argumento.
strings.ltrim("str", "str") = ""
Exemplo 2
Este exemplo usa uma string vazia como o segundo argumento.
strings.ltrim("str", "") = "str"
Exemplo 3
Este exemplo usa uma string vazia como o primeiro argumento e uma string como o segundo argumento.
strings.ltrim("", "str") = ""
Exemplo 4
Este exemplo usa strings que contêm espaços em branco e uma string como segundo argumento.
strings.ltrim("a aastraa aa ", " a") = "straa aa "
strings.reverse
strings.reverse(STRING)
Descrição
Devolve uma string que é o inverso da string de entrada.
Tipos de dados de parâmetros
STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
O exemplo seguinte transmite uma string curta.
strings.reverse("str") = "rts" // The function returns 'rts'.
Exemplo 2
O exemplo seguinte transmite uma string vazia.
strings.reverse("") = ""
Exemplo 3
O exemplo seguinte passa um palíndromo.
strings.reverse("tacocat") = "tacocat"
strings.rtrim
strings.rtrim(string_to_trim, cutset)
Descrição
Corta os espaços em branco à direita de uma determinada string. Remove os carateres à direita presentes nesse conjunto de corte.
Tipos de dados de parâmetros
STRING, STRING
Tipo devolvido
STRING
Exemplos de código
Seguem-se exemplos de utilização.
Exemplo 1
O exemplo seguinte transmite a mesma string como o primeiro e o segundo argumento.
strings.rtrim("str", "str") = ""
Exemplo 2
O exemplo seguinte passa uma string vazia como o segundo argumento.
strings.rtrim("str", "") = "str"
Exemplo 3
O exemplo seguinte passa uma string vazia como o primeiro argumento e uma string não vazia como o segundo argumento.
strings.rtrim("", "str") = ""
Exemplo 4
O exemplo seguinte passa uma string que contém espaços em branco como o primeiro argumento e uma string não vazia como o segundo argumento.
strings.rtrim("a aastraa aa ", " a") = "a aasstr"
strings.split
strings.split(string, delimiter)
Descrição
Divide o valor da string usando o argumento delimitador. O delimitador predefinido é uma vírgula (,).
Tipos de dados de parâmetros
STRING, STRING
Tipo devolvido
ARRAY_STRINGS
Exemplos de código
Os seguintes exemplos de código ilustram algumas das formas como pode usar a função
strings.split.
Exemplo: dividir string com valor predefinido
O exemplo seguinte divide a string usando o delimitador predefinido, que é uma vírgula.
strings.split("a,b,c,d") = ["a", "b", "c", "d"]
Exemplo: dividir string com dois pontos
O exemplo seguinte divide a string em cada dois pontos (:).
strings.split("a:b:c:d", ":") = ["a", "b", "c", "d"]
Exemplo: delimitador em falta
O exemplo seguinte não tem o delimitador no valor da string.
strings.split("a,b,c,d", ":") = ["a,b,c,d"]
Exemplo: delimitador vazio
O exemplo seguinte tem uma string de delimitador vazia.
strings.split("abc", "") = ["a", "b", "c"]
strings.to_lower
strings.to_lower(stringText)
Descrição
Esta função recebe uma string de entrada e devolve uma string depois de alterar todos os carateres para minúsculas
Tipos de dados de parâmetros
STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
O exemplo seguinte devolve true.
"test@google.com" = strings.to_lower($e.network.email.to)
strings.to_upper
strings.to_upper(string_val)
Descrição
Devolve a string original com todos os carateres alfabéticos em maiúsculas.
Tipos de dados de parâmetros
STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
O exemplo seguinte devolve o argumento fornecido em maiúsculas.
strings.to_upper("example") = "EXAMPLE"
strings.trim
strings.trim(string_to_trim, cutset)
Descrição
Corta os espaços em branco à esquerda e à direita de uma determinada string. Além disso, remove carateres indesejados (especificados pelo argumento cutset) da string de entrada.
Tipos de dados de parâmetros
STRING, STRING
Tipo devolvido
STRING
Exemplos de código
Seguem-se exemplos de utilização.
Exemplo 1
No exemplo seguinte, a mesma string é transmitida como a string de entrada e o conjunto de caracteres a remover, o que resulta numa string vazia.
strings.trim("str", "str") // ""
Exemplo 2
No exemplo seguinte, é transmitida uma string vazia como o conjunto de corte, o que resulta na string original str porque não existem carateres especificados no conjunto de corte para remover.
strings.trim("str", "") = "str"
Exemplo 3
No exemplo seguinte, a função produz uma string vazia porque a string de entrada já está vazia e não existem carateres a remover.
strings.trim("", "str") = ""
Exemplo 4
No exemplo seguinte, a função produz str porque a função trim remove o seguinte:
- espaços em branco finais em "a aastraa aa "
- Os carateres especificados no cutset (espaço, a)
strings.trim("a aastraa aa ", " a") = "str"
strings.url_decode
strings.url_decode(url_string)
Descrição
Dada uma string de URL, descodifique os carateres de escape e processe os carateres UTF-8 que foram codificados. Devolve uma string vazia se a descodificação falhar.
Tipos de dados de parâmetros
STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
Este exemplo mostra um teste positivo.
strings.url_decode("three%20nine%20four") = "three nine four"
Exemplo 2
Este exemplo mostra um caso de string vazia.
strings.url_decode("") // ""
Exemplo 3
Este exemplo mostra o processamento de carateres não alfabéticos.
strings.url_decode("%E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B") // "上海+中國"
Exemplo 4
Este exemplo mostra uma descodificação de URL de amostra.
strings.url_decode("http://www.google.com%3Fparam1%3D%22+1+%3E+2+%22%26param2%3D2%3B") // 'http://www.google.com?param1="+1+>+2+"¶m2=2;'
timestamp.as_unix_seconds
timestamp.as_unix_seconds(timestamp [, time_zone])
Descrição
Esta função devolve um número inteiro que representa o número de segundos após a época Unix para a string de data/hora especificada.
timestampé uma string que representa uma data/hora de época válida. O formato tem de ser%F %T.time_zoneé opcional e é uma string que representa um fuso horário. Se for omitido, o valor predefinido éGMT. Pode especificar fusos horários através de literais de string. As opções são as seguintes:- O nome da base de dados TZ, por exemplo,
America/Los_Angeles. Para mais informações, consulte a lista de fusos horários da base de dados TZ na Wikipédia. - A diferença do fuso horário em relação ao UTC, no formato
(+|-)H[H][:M[M]], por exemplo: "-08:00".
- O nome da base de dados TZ, por exemplo,
Seguem-se exemplos de especificadores time_zone válidos, que pode transmitir como o segundo argumento para funções de extração de tempo:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipos de dados de parâmetros
STRING, STRING
Tipo devolvido
INT
Exemplos de código
Exemplo 1
Indicação de tempo de época válida
timestamp.as_unix_seconds("2024-02-22 10:43:00") = 1708598580
Exemplo 2
Indicação de tempo de época válida com o fuso horário America/New_York
timestamp.as_unix_seconds("2024-02-22 10:43:00", "America/New_York") = 1708616580
timestamp.current_seconds
timestamp.current_seconds()
Descrição
Devolve um número inteiro que representa a hora atual em segundos Unix. Isto é
aproximadamente igual à data/hora de deteção e baseia-se no momento em que a regra é
executada. Esta função é um sinónimo da função timestamp.now().
Tipos de dados de parâmetros
NONE
Tipo devolvido
INT
Exemplos de código
Exemplo 1
O exemplo seguinte devolve true se o certificado tiver expirado há mais de 24 horas. Calcula a diferença de tempo subtraindo os segundos Unix atuais e, em seguida, comparando-os com um operador de superior a.
86400 < timestamp.current_seconds() - $e.network.tls.certificate.not_after
timestamp.get_date
timestamp.get_date(unix_seconds [, time_zone])
Descrição
Esta função devolve uma string no formato YYYY-MM-DD, que representa o dia em que uma indicação de tempo se encontra.
unix_secondsé um número inteiro que representa o número de segundos após a época Unix, como$e.metadata.event_timestamp.seconds, ou um marcador de posição que contém esse valor.time_zoneé opcional e é uma string que representa um fuso horário. Se for omitido, a predefinição é "GMT". Pode especificar fusos horários através de literais de string. As opções são:- O nome da base de dados TZ, por exemplo, "America/Los_Angeles". Para mais informações, consulte a coluna "Nome da base de dados de fusos horários" desta página
- A diferença do fuso horário em relação ao UTC, no formato
(+|-)H[H][:M[M]], por exemplo: "-08:00".
Seguem-se exemplos de especificadores de time_zone válidos, que pode transmitir como o segundo argumento para funções de extração de tempo:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipos de dados de parâmetros
INT, STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
Neste exemplo, o argumento time_zone é omitido, pelo que é usado o valor predefinido "GMT".
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_date($ts) = "2024-02-19"
Exemplo 2
Este exemplo usa um literal de string para definir o time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_date($ts, "America/Los_Angeles") = "2024-02-20"
timestamp.get_minute
timestamp.get_minute(unix_seconds [, time_zone])
Descrição
Esta função devolve um número inteiro no intervalo [0, 59] que representa o minuto.
unix_secondsé um número inteiro que representa o número de segundos após a época Unix, como$e.metadata.event_timestamp.seconds, ou um marcador de posição que contém esse valor.time_zoneé opcional e é uma string que representa um fuso horário. Se for omitido, a predefinição é "GMT". Pode especificar fusos horários através de literais de string. As opções são:- O nome da base de dados TZ, por exemplo, "America/Los_Angeles". Para mais informações, consulte a coluna "Nome da base de dados de fusos horários" desta página
- A diferença do fuso horário em relação ao UTC, no formato
(+|-)H[H][:M[M]], por exemplo: "-08:00".
Seguem-se exemplos de especificadores time_zone válidos, que pode transmitir como o segundo argumento para funções de extração de tempo:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipos de dados de parâmetros
INT, STRING
Tipo devolvido
INT
Exemplos de código
Exemplo 1
Neste exemplo, o argumento time_zone é omitido, pelo que é usado o valor predefinido "GMT".
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_hour($ts) = 15
Exemplo 2
Este exemplo usa um literal de string para definir o time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_hour($ts, "America/Los_Angeles") = 15
timestamp.get_hour
timestamp.get_hour(unix_seconds [, time_zone])
Descrição
Esta função devolve um número inteiro no intervalo [0, 23] que representa a hora.
unix_secondsé um número inteiro que representa o número de segundos após a época Unix, como$e.metadata.event_timestamp.seconds, ou um marcador de posição que contém esse valor.time_zoneé opcional e é uma string que representa um fuso horário. Se for omitido, a predefinição é "GMT". Pode especificar fusos horários através de literais de string. As opções são:- O nome da base de dados TZ, por exemplo, "America/Los_Angeles". Para mais informações, consulte a coluna "Nome da base de dados de fusos horários" desta página
- A diferença do fuso horário em relação ao UTC, no formato
(+|-)H[H][:M[M]], por exemplo: "-08:00".
Seguem-se exemplos de especificadores time_zone válidos, que pode transmitir como o segundo argumento para funções de extração de tempo:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipos de dados de parâmetros
INT, STRING
Tipo devolvido
INT
Exemplos de código
Exemplo 1
Neste exemplo, o argumento time_zone é omitido, pelo que é usado o valor predefinido "GMT".
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_hour($ts) = 15
Exemplo 2
Este exemplo usa um literal de string para definir o time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_hour($ts, "America/Los_Angeles") = 15
timestamp.get_day_of_week
timestamp.get_day_of_week(unix_seconds [, time_zone])
Descrição
Esta função devolve um número inteiro no intervalo [1, 7] que representa o dia da semana, começando pelo domingo. Por exemplo, 1 = domingo e 2 = segunda-feira.
unix_secondsé um número inteiro que representa o número de segundos após a época Unix, como$e.metadata.event_timestamp.seconds, ou um marcador de posição que contém esse valor.time_zoneé opcional e é uma string que representa um fuso horário. Se for omitido, a predefinição é "GMT". Pode especificar fusos horários através de literais de string. As opções são:- O nome da base de dados TZ, por exemplo, "America/Los_Angeles". Para mais informações, consulte a coluna "Nome da base de dados de fusos horários" desta página
- A diferença do fuso horário em relação ao UTC, no formato
(+|-)H[H][:M[M]], por exemplo: "-08:00".
Seguem-se exemplos de especificadores de time_zone válidos, que pode transmitir como o segundo argumento para funções de extração de tempo:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipos de dados de parâmetros
INT, STRING
Tipo devolvido
INT
Exemplos de código
Exemplo 1
Neste exemplo, o argumento time_zone é omitido, pelo que é usado o valor predefinido "GMT".
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_day_of_week($ts) = 6
Exemplo 2
Este exemplo usa um literal de string para definir o time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_day_of_week($ts, "America/Los_Angeles") = 6
timestamp.get_timestamp
timestamp.get_timestamp(unix_seconds, optional timestamp_format/time_granularity, optional timezone)
Descrição
Esta função devolve uma string no formato YYYY-MM-DD, que representa o dia em que uma indicação de tempo se encontra.
unix_secondsé um número inteiro que representa o número de segundos após a época Unix, como$e.metadata.event_timestamp.seconds, ou um marcador de posição que contém esse valor.timestamp_formaté opcional e é uma string que representa o formato da data/hora. Se for omitido, o valor predefinido é%F %T. Pode especificar o formato através de uma string de formato de data/hora ou de uma das seguintes granularidades de tempo:SECOND,MINUTE,HOUR,DATE,WEEK,MONTHouYEAR. Para mais opções de formatação, consulte o artigo Formate elementos para partes de data e horatime_zoneé opcional e é uma string que representa um fuso horário. Se for omitido, o valor predefinido éGMT. Pode especificar fusos horários através de literais de string. As opções são as seguintes:- O nome da base de dados de fusos horários (TZ) da IANA, por exemplo,
America/Los_Angeles. Para mais informações, consulte a lista de fusos horários da base de dados TZ na Wikipédia. - A diferença do fuso horário em relação ao UTC, no formato
(+|-)H[H][:M[M]], por exemplo: "-08:00".
- O nome da base de dados de fusos horários (TZ) da IANA, por exemplo,
Seguem-se exemplos de especificadores time_zone válidos, que pode transmitir como o segundo argumento para funções de extração de tempo:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipos de dados de parâmetros
INT, STRING e STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
Neste exemplo, o argumento time_zone é omitido, pelo que é usado o valor predefinido GMT.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_timestamp($ts) = "2024-02-22 10:43:51"
Exemplo 2
Este exemplo usa um literal de string para definir o time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_timestamp($ts, "%F %T", "America/Los_Angeles") = "2024-02-22 10:43:51"
Exemplo 3
Este exemplo usa um literal de string para definir o timestamp_format.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_timestamp($ts, "%Y-%m", "GMT") = "2024-02"
Exemplo 4
Este exemplo formata uma data/hora Unix como uma string com uma granularidade de segundos.
timestamp.get_timestamp(1708598631, "SECOND", "GMT") = "2024-02-22 10:43:51"
Exemplo 5
Este exemplo formata uma data/hora Unix como uma string com uma granularidade de minutos.
timestamp.get_timestamp(1708598631, "MINUTE", "GMT") = "2024-02-22 10:43"
Exemplo 6
Este exemplo formata uma data/hora Unix como uma string com granularidade de horas.
timestamp.get_timestamp(1708598631, "HOUR", "GMT") = "2024-02-22 10"
Exemplo 7
Este exemplo formata uma indicação de tempo Unix como uma string com granularidade de dias.
timestamp.get_timestamp(1708598631, "DATE", "GMT") = "2024-02-22"
Exemplo 8
Este exemplo formata uma data/hora Unix como uma string com granularidade semanal.
timestamp.get_timestamp(1708598631, "WEEK", "GMT") = "2024-02-18"
Exemplo 9
Este exemplo formata uma data/hora Unix como uma string com uma granularidade mensal.
timestamp.get_timestamp(1708598631, "MONTH", "GMT") = "2024-02"
Exemplo 10
Este exemplo formata uma data/hora Unix como uma string com granularidade anual.
timestamp.get_timestamp(1708598631, "YEAR", "GMT") = "2024"
timestamp.get_week
timestamp.get_week(unix_seconds [, time_zone])
Descrição
Esta função devolve um número inteiro no intervalo [0, 53] que representa a semana do ano. As semanas começam ao domingo. As datas anteriores ao primeiro domingo do ano estão na semana 0.
unix_secondsé um número inteiro que representa o número de segundos após a época Unix, como$e.metadata.event_timestamp.seconds, ou um marcador de posição que contém esse valor.time_zoneé opcional e é uma string que representa um fuso horário. Se for omitido, a predefinição é "GMT". Pode especificar fusos horários através de literais de string. As opções são:- O nome da base de dados TZ, por exemplo, "America/Los_Angeles". Para mais informações, consulte a coluna "Nome da base de dados de fusos horários" desta página
- A diferença do fuso horário em relação ao UTC, no formato
(+|-)H[H][:M[M]], por exemplo: "-08:00".
Seguem-se exemplos de especificadores time_zone válidos, que pode transmitir como o segundo argumento para funções de extração de tempo:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipos de dados de parâmetros
INT, STRING
Tipo devolvido
INT
Exemplos de código
Exemplo 1
Neste exemplo, o argumento time_zone é omitido, pelo que é usado o valor predefinido "GMT".
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_week($ts) = 0
Exemplo 2
Este exemplo usa um literal de string para definir o time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_week($ts, "America/Los_Angeles") = 0
timestamp.now
timestamp.now()
Descrição
Devolve o número de segundos desde 01/01/1970 às 00:00:00 UTC. Isto também é conhecido como hora de época Unix.
Tipo devolvido
INT
Exemplos de código
Exemplo 1
O exemplo seguinte devolve uma data/hora para o código executado a 22 de maio de 2024 às 18:16:59.
timestamp.now() = 1716401819 // Unix epoch time in seconds for May 22, 2024 at 18:16:59
window.avg
window.avg(numeric_values [, should_ignore_zero_values])
Descrição
Devolve a média dos valores de entrada (que podem ser números inteiros ou números de vírgula flutuante). Definir o segundo argumento opcional como verdadeiro ignora os valores zero.
Tipos de dados de parâmetros
INT|FLOAT
Tipo devolvido
FLOAT
Exemplos de código
Exemplo 1
Este exemplo mostra a média inteira.
// This rule sets the outcome $size_mode to the average
// file size in the 5 minute match window.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$size_mode = window.avg($e.file.size) // yields 2.5 if the event file size values in the match window are 1, 2, 3 and 4
Exemplo 2
Este exemplo mostra a média de flutuação.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$size_mode = window.avg($e.file.size) // yields 1.75 if the event file size values in the match window are 1.1 and 2.4
Exemplo 3
Média de entradas negativas
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$size_mode = window.avg($e.file.size) // yields 0.6 if the event file size values in the match window are -1.1, 1.1, 0.0 and 2.4
Exemplo 4
0 devoluções 0
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$size_mode = window.avg($e.file.size) // yields 0 if the event file size values in the match window is 0
Exemplo 5
A ignorar valores 0
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$size_mode = window.avg($e.file.size, true) // yields 394 if the event file size values in the match window are 0, 0, 0 and 394
window.first
window.first(values_to_sort_by, values_to_return)
Descrição
Esta função de agregação devolve um valor de string derivado de um evento com o valor int correlacionado mais baixo no período de correspondência. Um exemplo de utilização é obter o userid do evento com a data/hora mais baixa na janela de correspondência (evento mais antigo).
Tipos de dados de parâmetros
INT, STRING
Tipo devolvido
STRING
Exemplos de código
Obtenha um valor de string derivado de um evento com o valor de int. correlacionado mais baixo na janela de correspondência.
// This rule sets the outcome $first_event to the lowest correlated int value
// in the 5 minute match window.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$first_event = window.first($e.metadata.timestamp.seconds, $e.metadata.event_type) // yields v1 if the events in the match window are 1, 2 and 3 and corresponding values v1, v2, and v3.
window.last
window.last(values_to_sort_by, values_to_return)
Descrição
Esta função de agregação devolve um valor de string derivado de um evento com o valor int correlacionado mais elevado na janela de correspondência. Um exemplo de utilização é obter o userid do evento com a data/hora mais baixa na janela de correspondência (data/hora mais alta).
Tipos de dados de parâmetros
INT, STRING
Tipo devolvido
STRING
Exemplos de código
Obtenha um valor de string derivado de um evento com o valor int mais correlacionado na janela de correspondência.
// This rule sets the outcome $last_event to the highest correlated int value
// in the 5 minute match window.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$last_event = window.first($e.metadata.timestamp.seconds, $e.metadata.event_type) // yields v3 if the events in the match window are 1, 2 and 3 and corresponding values v1, v2, and v3.
window.median
window.median(numeric_values, should_ignore_zero_values)
Descrição
Devolva a mediana dos valores de entrada. Se existirem 2 valores medianos, apenas 1 é escolhido de forma não determinística como o valor de retorno.
Tipos de dados de parâmetros
INT|FLOAT, BOOL
Tipo devolvido
FLOAT
Exemplos de código
Exemplo 1
Este exemplo devolve a mediana quando os valores de entrada não são zero.
rule median_file_size {
meta:
events:
$e.metadata.event_type = "FILE_COPY"
$userid = $e.principal.user.userid
match:
$userid over 1h
outcome:
$median_file_size = window.median($e.principal.file.size) // returns 2 if the file sizes in the match window are [1, 2, 3]
condition:
$e
}
Exemplo 2
Este exemplo devolve a mediana quando a entrada inclui alguns valores zero que não devem ser ignorados.
rule median_file_size {
meta:
events:
$e.metadata.event_type = "FILE_COPY"
$userid = $e.principal.user.userid
match:
$userid over 1h
outcome:
$median_file_size = window.median($e.principal.file.size) // returns 1 if the file sizes in the match window are [0,0, 1, 2, 3]
condition:
$e
}
Exemplo 3
Este exemplo devolve a mediana quando a entrada inclui alguns valores zero que devem ser ignorados.
rule median_file_size {
meta:
events:
$e.metadata.event_type = "FILE_COPY"
$userid = $e.principal.user.userid
match:
$userid over 1h
outcome:
$median_file_size = window.median($e.principal.file.size, true) // returns 2 if the file sizes in the match window are [0,0, 1, 2, 3]
condition:
$e
}
Exemplo 4
Este exemplo devolve a mediana quando a entrada inclui todos os valores zero, que devem ser ignorados.
rule median_file_size {
meta:
events:
$e.metadata.event_type = "FILE_COPY"
$userid = $e.principal.user.userid
match:
$userid over 1h
outcome:
$median_file_size = window.median($e.principal.file.size) // returns 0 if the file sizes in the match window are [0,0]
condition:
$e
}
Exemplo 5
Este exemplo mostra que, quando existem várias medianas, apenas é devolvida uma mediana.
rule median_file_size {
meta:
events:
$e.metadata.event_type = "FILE_COPY"
$userid = $e.principal.user.userid
match:
$userid over 1h
outcome:
$median_file_size = window.median($e.principal.file.size) // returns 1 if the file sizes in the match window are [1, 2, 3, 4]
condition:
$e
}
window.mode
window.mode(values)
Descrição
Devolve a moda dos valores de entrada. No caso de vários valores de modo possíveis, apenas um desses valores é escolhido de forma não determinística como o valor de retorno.
Tipos de dados de parâmetros
INT|FLOAT|STRING
Tipo devolvido
STRING
Exemplos de código
Exemplo 1
Obtenha o modo dos valores na janela de correspondência.
// This rule sets the outcome $size_mode to the most frequently occurring
// file size in the 5 minute match window.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$size_mode = window.mode($e.file.size) // yields 1.6 if the event file size values in the match window are 1.6, 2, and 1.6
window.range
window.range(numeric_values, optional should_ignore_zero_values)
Descrição
Devolve o intervalo dos valores de entrada encontrados (mínimo e máximo inclusivos). Cada valor pode ser um número inteiro ou um número de vírgula flutuante. Definir o segundo argumento opcional como verdadeiro ignora os valores zero.
Tipos de dados de parâmetros
INT|FLOAT, BOOL
Tipo devolvido
ARRAY_FLOATS
Exemplos de código
Os seguintes exemplos de código ilustram algumas das formas como pode usar a função
window.range.
Exemplo: número inteiro mínimo e máximo
Este exemplo mostra o valor inteiro mínimo e máximo.
window.range([1, 2, 3, 4], false) = [1.000000, 4.000000]
Exemplo: mínimo e máximo de ponto flutuante
Este exemplo mostra o valor de ponto flutuante mínimo e máximo.
window.range([1.100000, 39.400000, 2.400000], false) = [1.100000, 39.400000]
Exemplo: número inteiro negativo mínimo e máximo
Este exemplo mostra o valor inteiro negativo mínimo e máximo.
window.range([-1.100000, 1.100000, 0.000000, 2.400000], false) = [-1.100000, 2.400000]
Exemplo: valor 0 ignorado
Este exemplo mostra como os valores 0 são ignorados quando define o segundo parâmetro.
window.range([0, 0, 0, 394, 1], true) = [1.000000, 394.000000]
window.stddev
window.stddev(numeric_values)
Descrição
Devolve o desvio padrão dos valores de entrada numa janela de correspondência.
Tipos de dados de parâmetros
INT|FLOAT
Tipo devolvido
FLOAT
Exemplos de código
Exemplo 1
Este exemplo devolve o desvio padrão de números inteiros numa janela de correspondência.
// This rule creates a detection when the file size stddev in 5 minutes for a user is over a threshold.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$p1 = window.stddev($e.file.size) // yields 4.0 if the event file size values in the match window are [10, 14, 18].
condition:
$e and #p1 > 2
Exemplo 2
Este exemplo devolve o desvio padrão de números de vírgula flutuante numa janela de correspondência.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$p1 = window.stddev($e.file.size) // yields 4.488686 if the event file size values in the match window are [10.00, 14.80, 18.97].
condition:
$e and #p1 > 2
Exemplo 3
Este exemplo devolve o desvio padrão numa janela de correspondência que contém números negativos.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$p1 = window.stddev($e.file.size) // yields 48.644972 if the event file size values in the match window are [-1, -56, -98].
condition:
$e and #p1 > 2
Exemplo 4
Este exemplo devolve um desvio padrão zero quando todos os valores na janela de correspondência são iguais.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$p1 = window.stddev($e.file.size) // yields 0.000000 if the event file size values in the match window are [1, 1, 1].
condition:
$e and #p1 > 2
Exemplo 5
Este exemplo devolve o desvio padrão de uma janela de correspondência que contém números positivos e negativos.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$p1 = window.stddev($e.file.size) // yields 1.000000 if the event file size values in the match window are [1, 0, -1].
condition:
$e and #p1 > 10
window.variance
window.variance(values)
Descrição
Esta função devolve a variância especificada dos valores de entrada.
Tipos de dados de parâmetros
INT|FLOAT
Tipo devolvido
FLOAT
Exemplos de código
Exemplo 1
Este exemplo devolve a variância de todos os números inteiros.
// This rule creates a detection when the file size variance in 5 minutes for a user is over a threshold.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$p1 = window.variance($e.file.size) // yields 16 if the event file size values in the match window are [10, 14, 18].
condition:
$e and #p1 > 10
Exemplo 2
Este exemplo devolve a variância de todos os números de vírgula flutuante.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$p1 = window.variance($e.file.size) // yields 20.148300 if the event file size values in the match window are [10.00, 14.80, 18.97].
condition:
$e and #p1 > 10
Exemplo 3
Este exemplo devolve a variância de números negativos.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$p1 = window.variance($e.file.size) // yields 2366.333333 if the event file size values in the match window are [-1, -56, -98].
condition:
$e and #p1 > 10
Exemplo 4
Este exemplo devolve um valor de variância pequeno.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$p1 = window.variance($e.file.size) // yields 0.000000 if the event file size values in the match window are [0.000000, 0.000000, 0.000100].
condition:
$e and #p1 > 10
Exemplo 5
Este exemplo devolve uma variância zero.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$p1 = window.variance($e.file.size) // yields 0.000000 if the event file size values in the match window are [1, 1, 1].
condition:
$e and #p1 > 10
Exemplo 6
Este exemplo devolve a variância de números positivos e negativos.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$p1 = window.variance($e.file.size) // yields 1.000000 if the event file size values in the match window are [1, 0, -1].
condition:
$e and #p1 > 10
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.