Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
sigmalite — Libreria Go per analizzare ed eseguire regole di rilevamento Sigma su voci di log, con supporto per modificatori di campo, corrispondenza CIDR e risolutori di campi personalizzati per il monitoraggio della sicurezza. | Kitploit
Strumenti/GitHubGitHub/runreveal/sigmalite
Analisi StaticaAnalisi delle VulnerabilitàAnalisi del CodiceRilevamento IntrusioniAnalisi dei Log
GitHubrunreveal/sigmalite

sigmalite

Libreria Go per analizzare ed eseguire regole di rilevamento Sigma su voci di log, con supporto per modificatori di campo, corrispondenza CIDR e risolutori di campi personalizzati per il monitoraggio della sicurezza.

Vedi Repository
58311 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

github.com/runreveal/sigmalite

Il pacchetto sigmalite fornisce un parser e un motore di esecuzione per il 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)

Installazione

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

Regole

Le regole sono scritte nel formato YAML e, come minimo, devono includere un title e una detection:

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

Il campo condition nel blocco detection è un'espressione logica che unisce altri selettori di campo nel blocco detection. In questo esempio, questa regola corrisponderà a qualsiasi voce di log che ha un campo EventId esattamente 1234 e contiene "foo" oppure "bar" nel suo messaggio.

I campi possono anche essere confrontati usando regular expressions:

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

Oltre agli indirizzi 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

Maggiori informazioni possono essere trovate nella official Sigma rules documentation.

Modificatori di Campo

Questa libreria supporta i seguenti field modifiers:

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

Risolutore di Campi

L'interfaccia FieldResolver estende la specifica Sigma standard per supportare scenari complessi di ricerca di campi che vanno oltre le semplici coppie chiave/valore. Questo ti permette di implementare una logica personalizzata di risoluzione dei campi per:

  • Strutture JSON annidate: Accedi a campi profondamente annidati usando la notazione puntata (ad es., event.process.user)
  • Gestione degli array: Estrai valori da array o liste all'interno delle voci di log
  • Corrispondenza con caratteri jolly: Supporta pattern di campo come process.*.user o network[*].ip
  • Aggregazione di più campi: Combina valori da più campi correlati
  • Normalizzazione delle maiuscole/minuscole: Gestisci variazioni nei nomi dei campi e la sensibilità alle maiuscole
  • Trasformazioni dati complesse: Applica logica personalizzata prima della corrispondenza dei campi
  • Ricerche in sorgenti dati esterne: Cerca valori di campo da una sorgente dati esterna.

Definizione dell'Interfaccia

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

Il metodo Resolve prende un nome di campo dalla tua regola Sigma e restituisce tutti i valori corrispondenti come slice di stringhe. Se non vengono trovate corrispondenze, restituisci nil o una slice vuota.

Esempio di Utilizzo di 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)
}

I Risolutori di Campi funzionano perfettamente con tutti i modificatori di campo, permettendoti di applicare pattern regex, corrispondenza senza distinzione tra maiuscole e minuscole e altre trasformazioni ai valori risolti.

Licenza

Apache 2.0

Scarica lo strumento