Auditd-Decoder in Wazuh erweitern: PROCTITLE korrekt extrahieren

Einleitung
Auditd-Logs gehören zu den wichtigsten Telemetriedaten für Sicherheits-Monitoring, Incident Response und forensische Analysen. Besonders in Linux-Umgebungen liefern sie reichhaltige Informationen zu Systemaufrufen, Ausführungsparametern und Prozessmetadaten. Eine Herausforderung in Wazuh ist dabei die Decodierung von PROCTITLE, dem Feld, das die vollständige Prozess-Commandline enthält. Dieser Artikel zeigt, wie Sie Ihre auditd-Decoder in Wazuh so erweitern, dass PROCTITLE zuverlässig extrahiert wird – basierend auf Best Practices und offiziellen Quellen.

Ausgangslage / Problemstellung
Auditd erzeugt pro Audit-Event mehrere Record-Typen (z. B. SYSCALL, EXECVE, PATH, PROCTITLE). Diese können – wie im Beispiel unten – in einer einzigen Logzeile zusammenlaufen. Standardmäßig parsen viele Wazuh-Rulesets SYSCALL und EXECVE, lassen aber oft das PROCTITLE-Feld außen vor, obwohl es für die Rekonstruktion der vollständigen Commandline essenziell ist.
Beispiel (gekürzt):

type=SYSCALL ... type=EXECVE ... type=PATH ... type=PROCTITLE msg=audit(...): proctitle=7368002D6300...

Ohne einen passenden Decoder bleibt audit.proctitle in Wazuh leer, was die Erkennungs- und Analysequalität mindert.

Technische Analyse
Auditd-Logs bestehen aus mehreren Feldern, die über Schlüssel-Werte paare repräsentiert werden. PROCTITLE tritt meist am Ende eines zusammengesetzten Events auf und enthält die Prozess-Commandline in hex-kodierter Form – Standardverhalten von auditd, da NUL-Bytes und Sonderzeichen sonst Parsing-Probleme bereiten würden. (Docs Red Hat Security Guide, Abschnitt Audit-Log-Dateien)
Wazuh-Decoder arbeiten hierarchisch: Basismatcher (<prematch>) identifizieren Events, <parent>-Deklarationen ordnen Child-Decoder zu, und <regex> mit Offsets steuern, in welcher Reihenfolge Felder extrahiert werden. Wenn der PROCTITLE-Regex zu früh im Decodierfluss steht oder nicht auf den korrekten Event-Block zielt, wird das Feld nicht gefüllt.

Die gängige Problemlage ist daher: Der Decoder für SYSCALL ist vorhanden und extrahiert viele Felder, aber der Regex für proctitle=… ist nicht korrekt positioniert bzw. nutzt keinen passenden Offset.

Lösung / Best Practices
Um audit.proctitle zuverlässig zu extrahieren, erweitern Sie Ihren bestehenden auditd-syscall-Decoder um einen zusätzlichen Child-Decoder, der speziell auf proctitle zielt. Der folgende XML-Block ist korrekt positioniert nach dem Basismatcher und extrahiert das Feld unmittelbar aus dem zusammengesetzten Log:

<!-- SYSCALL - proctitle -->
<decoder name="auditd-syscall">
  <parent>auditd-syscall</parent>
  <regex offset="after_parent">proctitle=(\S+)</regex>
  <order>audit.proctitle</order>
</decoder>

Warum diese Version funktioniert

  • Der <parent>-Eintrag bindet diesen Decoder an den bestehenden auditd-syscall-Block.
  • offset="after_parent" sorgt dafür, dass dieses Regex erst nach dem Erkennen des SYSCALL-Events angewendet wird.
  • \S+ erfasst die hex-kodierte Zeichenkette ohne Whitespace.
  • Durch <order> wird das Feld audit.proctitle in das Wazuh-Event injiziert und steht für Rules/Decoders zur Verfügung.

Testen mit Wazuh-Tools
Nutzen Sie das Tool wazuh-logtest zum Testen Ihrer Decodierung – es zeigt auf, welche Felder erfolgreich extrahiert wurden und vermeidet so Blindarbeit beim Regeln-Tuning (Tools-Dokumentation). Ebenso kann wazuh-regex helfen, regex-Muster allein gegen Beispielzeilen zu prüfen.

Lessons Learned / Best Practices

  • Reihenfolge beachten: Die Reihenfolge der Child-Decoder entscheidet, ob ein Feld gelesen wird. Platzieren Sie proctitle-Decoder nach relevanten anderen Extraktionen im selben Event.
  • Hex ist normal: Auditd liefert proctitle hex-kodiert. Für menschenlesbare Darstellung sollten Sie eine nachgelagerte Transformation in Ihrem SIEM/Indexer erwägen.
  • Testen nicht raten: Nutzen Sie stets wazuh-logtest und reale Logbeispiele, da Online-Regex-Tester nicht die gleiche Engine wie Wazuh verwenden.
  • Custom Decoder File: Legen Sie solche Anpassungen in einem Custom Decoder File ab, damit Upgrades des Wazuh-Rulesets Ihre Änderungen nicht überschreiben.

Fazit
Die Ergänzung eines gezielten proctitle-Decoders in den auditd-syscall-Block erlaubt es, in Wazuh das essenzielle Feld audit.proctitle zuverlässig zu extrahieren. Die korrekte Positionierung und Nutzung von offset="after_parent" sind dabei die Schlüssel zum Erfolg. Mit diesem Setup steht Ihnen die vollständige Prozess-Commandline für Erkennungsregeln, Alerting und forensische Analysen zur Verfügung.


https://wazuh.slack.com/archives/C0A933R8E/p1766748829291749

Mehr zu Wazuh …
https://wazuh.com/?utm_source=ambassadors&utm_medium=referral&utm_campaign=ambassadors+program

Mehr zum Wazuh Ambassador Program …
https://wazuh.com/ambassadors-program/?utm_source=ambassadors&utm_medium=referral&utm_campaign=ambassadors+program

Quellen / Referenzen