
Patch AMSI und ETW
Dieses Repository enthält Informationen zum Patchen von AMSI und ETW mithilfe eines Ein-Byte-Patches für beide.
Die Idee war, die Erkennung des Patches selbst zu begrenzen, da es sich nur um ein einzelnes Byte handelt.
Die Idee ist, dass AMSI viele Validierungsprüfungen durchführt, bevor der kritische AMSI-„Check“-Code erreicht wird. Man kann einfach eines der jz in ein jnz umwandeln und umgekehrt.

Der rote Pfeil in der Abbildung oben zeigt, wo sich der kritische Code befindet.

Beispiel für Prüfungen, die umgestellt werden können, um den Aufruf des kritischen Codes zu vermeiden.
In diesem Fall patchen wir das jnz nach dem cmp dword ptr [rbx], 49534d41h.
Der Patch ist einfach die Adresse von AmsiScanBuffer + 0x83 = 0x74 (x64)
Anstatt EtwEventWrite zu patchen, patcht man einfach den Syscall NtTraceEvent, der von vielen Funktionen aufgerufen wird.

Wie in der folgenden Abbildung gezeigt, wird NtTraceEvent von vielen Funktionen innerhalb von ntdll.dll verwendet.

Der Patch erzwingt einfach eine Rückkehr, wenn die Funktion NtTraceEvent aufgerufen wird: NtTraceEvent = 0xc3 (x64)