Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
sigmalite — Go-Bibliothek zum Parsen und Ausführen von Sigma-Erkennungsregeln gegen Log-Einträge, die Feldmodifikatoren, CIDR-Abgleich und benutzerdefinierte Feldauflöser für Sicherheitsüberwachung unterstützt. | Kitploit
Tools/GitHubGitHub/runreveal/sigmalite
Statische AnalyseSchwachstellenanalyseCode-AnalyseEinbruchserkennungLog-Analyse
GitHubrunreveal/sigmalite

sigmalite

Go-Bibliothek zum Parsen und Ausführen von Sigma-Erkennungsregeln gegen Log-Einträge, die Feldmodifikatoren, CIDR-Abgleich und benutzerdefinierte Feldauflöser für Sicherheitsüberwachung unterstützt.

Repository anzeigen
583vor 11 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

github.com/runreveal/sigmalite

Das Paket sigmalite bietet einen Parser und eine Ausführungs-Engine für das Sigma detection format.

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)

Install

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

Rules

Regeln werden im YAML-Format geschrieben und müssen mindestens eine title und eine detection enthalten:

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

Das Feld condition im detection-Block ist ein logischer Ausdruck, der andere Feldselektoren im detection-Block verbindet. In diesem Beispiel wird diese Regel jeden Logeintrag matchen, der ein EventId-Feld mit genau 1234 hat und "foo" oder "bar" in seiner Nachricht enthält.

Felder können auch mit [regulären Ausdrücken][] gematcht werden:

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

Ebenso wie 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

Weitere Informationen finden Sie in der [offiziellen Sigma-Regel-Dokumentation][].

Field Modifiers

Diese Bibliothek unterstützt die folgenden field modifiers:

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

Field Resolver

Das FieldResolver-Interface erweitert die standardmäßige Sigma-Spezifikation, um komplexe Feldabfrageszenarien zu unterstützen, die über einfache Schlüssel/Wert-Paare hinausgehen. Damit können Sie benutzerdefinierte Feldauflösungslogik implementieren für:

  • Verschachtelte JSON-Strukturen: Zugriff auf tief verschachtelte Felder mittels Punktnotation (z.B. event.process.user)
  • Array-Handling: Extrahieren von Werten aus Arrays oder Listen innerhalb von Logeinträgen
  • Wildcard-Matching: Unterstützung von Feldmustern wie process.*.user oder network[*].ip
  • Mehrfach-Feldaggregation: Kombinieren von Werten aus mehreren verwandten Feldern
  • Groß-/Kleinschreibungs-Normalisierung: Behandlung von Feldname-Variationen und Groß-/Kleinschreibung
  • Komplexe Datentransformationen: Anwendung benutzerdefinierter Logik vor dem Feld-Matching
  • Externe Datenquellenabfragen: Abrufen von Feldwerten aus einer externen Datenquelle.

Interface-Definition

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

Die Methode Resolve nimmt einen Feldnamen aus Ihrer Sigma-Regel entgegen und gibt alle passenden Werte als String-Slice zurück. Wenn keine Übereinstimmungen gefunden werden, geben Sie nil oder ein leeres Slice zurück.

Einfaches Anwendungsbeispiel

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

Field Resolver arbeiten nahtlos mit allen Feld-Modifikatoren zusammen und ermöglichen es Ihnen, Regex-Muster, Groß-/Kleinschreibungs-unabhängiges Matching und andere Transformationen auf die aufgelösten Werte anzuwenden.

License

Apache 2.0

Tool herunterladen