Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
sigmalite — Biblioteca Go para analisar e executar regras de detecção Sigma em entradas de log, com suporte a modificadores de campo, correspondência CIDR e resolvedores de campo personalizados para monitoramento de segurança. | Kitploit
Ferramentas/GitHubGitHub/runreveal/sigmalite
Análise EstáticaAnálise de VulnerabilidadesAnálise de CódigoDetecção de IntrusãoAnálise de Logs
GitHubrunreveal/sigmalite

sigmalite

Biblioteca Go para analisar e executar regras de detecção Sigma em entradas de log, com suporte a modificadores de campo, correspondência CIDR e resolvedores de campo personalizados para monitoramento de segurança.

Ver Repositório
583há 11 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

github.com/runreveal/sigmalite

O pacote sigmalite fornece um analisador e um motor de execução para o formato de detecção Sigma.

root@kitploit:~
rule, err := sigmalite.ParseRule([]byte(`
title: My example rule
detection:
  keywords:
    - foo
    - bar
  selection:
    EventId: 1234
  condition: keywords and selection
`))
if err != nil {
  return err
}
entry := &sigmalite.LogEntry{
  Message: "Hello foo",
  Fields: map[string]string{
    "EventId": "1234",
  },
}
isMatch := rule.Detection.Matches(entry, nil)

Instalação

root@kitploit:~
go get github.com/runreveal/sigmalite

Regras

As regras são escritas no formato YAML e, no mínimo, devem incluir um title e uma detection:

root@kitploit:~
title: My example rule
detection:
  keywords:
    - foo
    - bar
  selection:
    EventId: 1234
  condition: keywords and selection

O campo condition no bloco detection é uma expressão lógica que une outros seletores de campo no bloco detection. Neste exemplo, esta regra corresponderá a qualquer entrada de log que tenha um campo EventId exatamente igual a 1234 e tenha "foo" ou "bar" em sua mensagem.

Campos também podem ser correspondidos usando expressões regulares:

root@kitploit:~
title: My example rule with a timestamp
detection:
  selection:
    Timestamp|re: ^2024-06-01T(01|02|03):[0-5][0-9]:[0-5][0-9]$
  condition: selection

Assim como CIDRs:

root@kitploit:~
title: My example rule with IP addresses
detection:
  local:
    DestinationIp|cidr:
      - "127.0.0.0/8"
      - "10.0.0.0/8"
      - "172.16.0.0/12"
      - "192.168.0.0/16"
      - "169.254.0.0/16"
      - "::1/128" # IPv6 loopback
      - "fe80::/10" # IPv6 link-local addresses
      - "fc00::/7" # IPv6 private addresses
  condition: not local

Mais informações podem ser encontradas na documentação oficial de regras Sigma.

Modificadores de Campo

Esta biblioteca suporta os seguintes modificadores de campo:

  • all
  • cidr
  • contains
  • endswith
  • expand
  • re
  • startswith
  • windash
  • base64/base64offset

Resolvedor de Campo

A interface FieldResolver estende a especificação padrão do Sigma para suportar cenários complexos de busca de campos que vão além de pares simples de chave/valor. Isso permite implementar lógica personalizada de resolução de campo para:

  • Estruturas JSON aninhadas: Acessar campos profundamente aninhados usando notação de ponto (ex.: event.process.user)
  • Manipulação de arrays: Extrair valores de arrays ou listas dentro de entradas de log
  • Correspondência com curingas: Suportar padrões de campos como process.*.user ou network[*].ip
  • Agregação de múltiplos campos: Combinar valores de vários campos relacionados
  • Normalização de maiúsculas/minúsculas: Lidar com variações de nomes de campos e sensibilidade a maiúsculas/minúsculas
  • Transformações de dados complexas: Aplicar lógica personalizada antes da correspondência de campos
  • Consultas a fontes de dados externas: Pesquisar valores de campos a partir de uma fonte de dados externa.

Definição da Interface

root@kitploit:~
type FieldResolver interface {
    Resolve(fieldName string, entry *LogEntry) []string
}

O método Resolve recebe um nome de campo da sua regra Sigma e retorna todos os valores correspondentes como uma slice de strings. Se nenhuma correspondência for encontrada, retorne nil ou uma slice vazia.

Exemplo de Uso Básico

root@kitploit:~
// CustomResolver demonstrates field resolution for structured logs
type CustomResolver struct{}

func (r *CustomResolver) Resolve(fieldName string, entry *sigma.LogEntry) []string {
    switch fieldName {
    case "process.users":
        // Aggregate user fields from multiple sources
        var users []string
        if user, ok := entry.Fields["Event.Process.User"]; ok {
            users = append(users, user)
        }
        if user, ok := entry.Fields["Event.Login.User"]; ok {
            users = append(users, user)
        }
        if user, ok := entry.Fields["Event.Session.User"]; ok {
            users = append(users, user)
        }
        return users

    case "network.internal_ips":
        // Extract all IP addresses from network-related fields
        var ips []string
        for fieldName, value := range entry.Fields {
            if strings.Contains(strings.ToLower(fieldName), "ip") {
                // Simple IP validation (in real usage, use proper validation)
                if strings.Contains(value, ".") {
                    ips = append(ips, value)
                }
            }
        }
        return ips

    default:
        return nil
    }
}

func matches(detection *sigmalite.Detection) bool {
  opts := &sigmalite.MatchOptions{
		FieldResolver: CustomResolver{},
  },

  entry := &sigmalite.LogEntry{
		Message: string("Message Text"),
		Fields:  nil, // Using resolver so this can be empty
	}

	return detection.Matches(entry, opts)
}

Os resolvedores de campo funcionam perfeitamente com todos os modificadores de campo, permitindo aplicar padrões regex, correspondência insensível a maiúsculas/minúsculas e outras transformações aos valores resolvidos.

Licença

Apache 2.0

Baixar ferramenta