
Wenden Sie einen Filter auf die Ereignisse an, die von der Windows-Ereignisprotokollierung gemeldet werden.
Dies ist ein Tool, mit dem Sie YARA offensiv einsetzen können, um einen Filter auf die von der Windows-Ereignisprotokollierung gemeldeten Ereignisse anzuwenden.
Hol die neueste Version von hier. EvtMuteHook.dll enthält die Kernfunktionalität. Sobald es injiziert wird, wird ein temporärer Filter angewendet, der die Meldung aller Ereignisse erlaubt. Dieser Filter kann dynamisch aktualisiert werden, ohne dass eine erneute Injektion erforderlich ist. Ich habe SharpEvtMute.exe geschrieben, eine C#-Assembly, die einfach über execute in shad0w oder execute-assembly in cobalt strike ausgeführt werden kann. Ich werde eine native Version in C schreiben, für eine viel bessere Integration mit shad0w.
Ein trivialer Anwendungsfall wäre, die Ereignisprotokollierung systemweit zu deaktivieren. Dazu können wir die folgende YARA-Regel verwenden.
rule disable { condition: true }
Wir müssen zunächst den Hook in den Ereignisdienst injizieren.
.\SharpEvtMute.exe --Inject

Nachdem der Hook platziert ist, können wir den Filter hinzufügen.
.\SharpEvtMute.exe --Filter "rule disable { condition: true }"

Jetzt werden alle Ereignisse vom Ereignisdienst verworfen.
Filter können dynamisch geändert werden, ohne dass ein Hook erneut injiziert werden muss. Dies macht es schnell und einfach, den aktiven Filter zu aktualisieren.
Ein Beispiel für einen komplexeren Filter wäre dieser. Er ist in der Lage, die Ereignisse im Zusammenhang mit einem Lsass-Speicherabbild daran zu hindern, von Sysmon gemeldet zu werden.
rule block_lsass_dump {
meta:
author = "@_batsec_"
description = "Prevent lsass dumping being reported by sysmon"
strings:
$provider = "Microsoft-Windows-Sysmon"
$image = "lsass.exe" nocase
$access = "GrantedAccess"
$type = "0x1fffff"
condition:
all of them
}
Bei einer komplexen Regel wie dieser ist es viel schwieriger, sie in eine einzelne Zeile zu packen. Deshalb habe ich die Möglichkeit hinzugefügt, base64-kodierte Regeln zu übergeben.
Die Regel kann einfach von einer Linux-Kommandozeile in base64 umgewandelt werden.
base64 -w 0 YaraFilters/lsassdump.yar | echo $(</dev/stdin)
Dann können wir mit dem Flag --Encoded den Filter übergeben.

Beim Injizieren des Hooks ruft SharpEvtMute.exe CreateRemoteThread auf, und dieser Aufruf erfolgt, bevor der Hook platziert wird, sodass er von Sysmon gemeldet wird. Dies liegt daran, dass die Injektionsfunktion von SharpEvtMute.exe nur als PoC verwendet werden sollte. Ich empfehle, EvtMuteHook.dll manuell in den Ereignisprotokollierungsdienst zu injizieren, wenn Tarnung wichtig ist.
Seine PID kann durch Ausführen von SharpEvtMute.exe --Pid gefunden werden. Der Hook kann durch manuelles Injizieren des Shellcodes (führen Sie make in EvtMuteBin aus) über Ihr C2-Framework Ihrer Wahl platziert werden, z. B. shinject in shad0w.
Es ist auch erwähnenswert, dass der Hook eine Named Pipe verwendet, um Filter zu aktualisieren. Die Named Pipe heißt EvtMuteHook_Rule_Pipe (dieser Name kann leicht geändert werden). Es gibt eine fest in den Hook eingebaute Regel, die sicherstellt, dass alle Ereignisse, die diesen Namen enthalten, automatisch verworfen werden, aber es wird trotzdem ein IOC sein, dass sie lauscht, daher empfehle ich, sie zu ändern.
Wenn Sie einige nützliche Filter erstellen, können Sie gerne einen Pull-Request an das YaraFilters-Verzeichnis stellen. Es wäre cool, eine gute Sammlung von Filtern zu haben, die häufige Aktionen verstecken, von der jeder profitieren kann.