Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
sigmalite — Bibliothèque Go pour analyser et exécuter des règles de détection Sigma sur des entrées de logs, prenant en charge les modificateurs de champs, la correspondance CIDR et les résolveurs de champs personnalisés pour la surveillance de sécurité. | Kitploit
Outils/GitHubGitHub/runreveal/sigmalite
Analyse StatiqueAnalyse des VulnérabilitésAnalyse de CodeDétection d'IntrusionAnalyse de Journaux
GitHubrunreveal/sigmalite

sigmalite

Bibliothèque Go pour analyser et exécuter des règles de détection Sigma sur des entrées de logs, prenant en charge les modificateurs de champs, la correspondance CIDR et les résolveurs de champs personnalisés pour la surveillance de sécurité.

Voir le dépôt
5833il y a 11 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

github.com/runreveal/sigmalite

Le paquet sigmalite fournit un analyseur syntaxique et un moteur d'exécution pour le format de détection 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)

Installer

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

Règles

Les règles sont écrites au format YAML et doivent, au minimum, inclure un title et une  :

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

Le champ condition dans le bloc detection est une expression logique qui joint d'autres sélecteurs de champs dans le bloc detection. Dans cet exemple, cette règle correspondra à toute entrée de journal qui a un champ EventId exactement égal à 1234 et contient "foo" ou "bar" dans son message.

Les champs peuvent également être mis en correspondance à l'aide d'expressions régulières :

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

Ainsi que des CIDR :

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

Plus d'informations sont disponibles dans la documentation officielle des règles Sigma.

Modificateurs de champ

Cette bibliothèque prend en charge les modificateurs de champ suivants :

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

Résolveur de champ

L'interface FieldResolver étend la spécification Sigma standard pour prendre en charge des scénarios de recherche de champ complexes allant au-delà des simples paires clé/valeur. Cela vous permet d'implémenter une logique de résolution de champ personnalisée pour :

  • Structures JSON imbriquées : Accéder à des champs profondément imbriqués en utilisant la notation par points (par exemple, event.process.user).
  • Gestion des tableaux : Extraire des valeurs de tableaux ou de listes dans les entrées de journal.
  • Correspondance par motif : Prendre en charge des motifs de champ comme process.*.user ou network[*].ip.
  • Agrégation de plusieurs champs : Combiner les valeurs de plusieurs champs connexes.
  • Normalisation de la casse : Gérer les variations de noms de champ et la sensibilité à la casse.
  • Transformations complexes de données : Appliquer une logique personnalisée avant la correspondance de champ.
  • Recherches dans des sources de données externes : Rechercher des valeurs de champ à partir d'une source de données externe.

Définition de l'interface

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

La méthode Resolve prend un nom de champ de votre règle Sigma et renvoie toutes les valeurs correspondantes sous forme de tranche de chaînes. Si aucune correspondance n'est trouvée, renvoyez nil ou une tranche vide.

Exemple d'utilisation de base

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

Les résolveurs de champ fonctionnent harmonieusement avec tous les modificateurs de champ, vous permettant d'appliquer des motifs regex, une correspondance insensible à la casse et d'autres transformations aux valeurs résolues.

Licence

Apache 2.0

Télécharger l’outil