Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
sigmalite — Biblioteca Go para analizar y ejecutar reglas de detección Sigma contra entradas de registro, soportando modificadores de campo, coincidencia CIDR y resolvedores de campo personalizados para monitoreo de seguridad. | Kitploit
Herramientas/GitHubGitHub/runreveal/sigmalite
Análisis EstáticoAnálisis de VulnerabilidadesAnálisis de CódigoDetección de IntrusionesAnálisis de Registros
GitHubrunreveal/sigmalite

sigmalite

Biblioteca Go para analizar y ejecutar reglas de detección Sigma contra entradas de registro, soportando modificadores de campo, coincidencia CIDR y resolvedores de campo personalizados para monitoreo de seguridad.

Ver Repositorio
5833hace 11 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

github.com/runreveal/sigmalite

El paquete sigmalite proporciona un analizador sintáctico y un motor de ejecución para el formato de detección 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)

Instalación

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

Reglas

Las reglas se escriben en formato YAML y, como mínimo, deben incluir un title y un :

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

El campo condition en el bloque detection es una expresión lógica que une otros selectores de campo en el bloque detection. En este ejemplo, esta regla coincidirá con cualquier entrada de registro que tenga un campo EventId que sea exactamente 1234 y tenga "foo" o "bar" en su mensaje.

Los campos también pueden coincidir usando expresiones 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

Así 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

Puede encontrar más información en la documentación oficial de reglas Sigma.

Modificadores de campo

Esta biblioteca admite los siguientes modificadores de campo:

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

Resolvedor de campos

La interfaz FieldResolver extiende la especificación estándar de Sigma para admitir escenarios complejos de búsqueda de campos que van más allá de pares clave/valor simples. Esto le permite implementar lógica personalizada de resolución de campos para:

  • Estructuras JSON anidadas: Acceder a campos profundamente anidados usando notación de puntos (p. ej., event.process.user)
  • Manejo de arreglos: Extraer valores de arreglos o listas dentro de entradas de registro
  • Coincidencia de comodines: Admitir patrones de campo como process.*.user o network[*].ip
  • Agregación de múltiples campos: Combinar valores de varios campos relacionados
  • Normalización de mayúsculas y minúsculas: Manejar variaciones de nombres de campo y sensibilidad a mayúsculas/minúsculas
  • Transformaciones complejas de datos: Aplicar lógica personalizada antes de la coincidencia de campos
  • Búsquedas en fuentes de datos externas: Buscar valores de campo desde una fuente de datos externa.

Definición de la interfaz

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

El método Resolve toma un nombre de campo de su regla Sigma y devuelve todos los valores coincidentes como un segmento de cadenas. Si no se encuentran coincidencias, devuelva nil o un segmento vacío.

Ejemplo 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)
}

Los resolvedores de campos funcionan sin problemas con todos los modificadores de campo, permitiéndole aplicar patrones regex, coincidencias sin distinción de mayúsculas/minúsculas y otras transformaciones a los valores resueltos.

Licencia

Apache 2.0

Descargar herramienta