
Implementierung einer Schutzmaßnahme (Mitigation) für die Export-Adresstabelle, wie Export Address Filtering (EAF)
Implementierung einer Mitigation zum Schutz der Export-Adresstabelle (EAT), ähnlich wie Export Address Filtering (EAF)
Dieses Projekt besteht aus drei Binärdateien, die nach der Kompilierung in EATGuard\bin\ zu finden sind:
EATGuardApplication.exe - "Bösartige" Anwendung, die EATGuardDll.dll in den Prozess lädt und anschließend ausführbaren Code (Shellcode) ausführt, der notepad.exe startet.EATGuardDll.dll - DLL, die eine "Brücke" zwischen Benutzermodus und Kernelmodus bereitstellt. Diese DLL registriert einen Vectored Exception Handler (VEH), der Erkennungen von Zugriffen auf die Export-Adresstabelle (EAT) von kernel32.dll an den Treiber EATGuardDriver.sys sendet. Diese DLL reserviert eine Guard Page auf der EAT von kernel32.dll, die eine Ausnahme auslöst, wenn innerhalb des Prozessraums von EATGuardApplication.exe auf die EAT zugegriffen wird. Dadurch wird die Ausführung an den registrierten VEH weitergeleitet, der diese Ausnahmen verarbeitet und für die Fortsetzung der Ausführung nach Abschluss der Analyse verantwortlich ist.EATGuardDriver.sys - Kernelmodus-Gerätetreiber, der Zugriffe auf die EAT von kernel32.dll überprüft. Derzeit prüft er als POC, ob der Speicher, der auf kernel32.dll zugreift, von der Festplatte unterstützt wird.Bitte beachten Sie, dass EATGuardApplication.exe die EATGuardDll.dll über den relativen Pfad von EATGuardApplication.exe lädt. Das bedeutet, dass sich sowohl die .exe als auch die .dll beim Ausführen im selben Verzeichnis befinden müssen. Bitte beachten Sie außerdem, dass Sie dieses Projekt nicht auf einem Rechner mit aktiviertem Kernel-Debugging ausführen sollten. Dies kann Probleme verursachen, da die EATGuardDll.dll eine Single-Step-Ausnahme zur Fortsetzung der Ausführung verwendet. Hier ist ein Beispiel für die Verwendung des Projekts:
C:\Users\ANON\Desktop>sc create EATGUARD type= kernel binPath= C:\Users\ANON\Desktop\EATGuardDriver.sys
[SC] CreateService SUCCESS
C:\Users\ANON\Desktop>sc start EATGUARD
SERVICE_NAME: EATGUARD
TYPE : 1 KERNEL_DRIVER
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 0
FLAGS :
C:\Users\ANON\Desktop>EATGuardApplication.exe
[+] KERNEL32.dll EAT: 0x00007FFB1D83F898
[+] Number of functions in the KERNEL32.dll EAT: 1678
[+] EATGuard analysis complete!
[+] Target address: 0x24AA138005C
[>] IsRipRwxMemory: TRUE
[>] IsRipMappedSection: FALSE
[>] IsRipBackedByImage: FALSE
[>] HasPageProtectionChanged: FALSE
[>] RegionBaseAddress: 0x24AA1380000
[>] MemoryRegionSize: 0x1000
[>] MemoryCommtSize: 0x1000
[+] EATGuard analysis complete!
[+] Target address: 0x24AA138005F
[>] IsRipRwxMemory: TRUE
[>] IsRipMappedSection: FALSE
[>] IsRipBackedByImage: FALSE
[>] HasPageProtectionChanged: FALSE
[>] RegionBaseAddress: 0x24AA1380000
[>] MemoryRegionSize: 0x1000
[>] MemoryCommtSize: 0x1000
[+] EATGuard analysis complete!
[+] Target address: 0x24AA138008F
[>] IsRipRwxMemory: TRUE
[>] IsRipMappedSection: FALSE
[>] IsRipBackedByImage: FALSE
[>] HasPageProtectionChanged: FALSE
[>] RegionBaseAddress: 0x24AA1380000
[>] MemoryRegionSize: 0x1000
[>] MemoryCommtSize: 0x1000
[+] EATGuard analysis complete!
[+] Target address: 0x24AA138009B
[>] IsRipRwxMemory: TRUE
[>] IsRipMappedSection: FALSE
[>] IsRipBackedByImage: FALSE
[>] HasPageProtectionChanged: FALSE
[>] RegionBaseAddress: 0x24AA1380000
[>] MemoryRegionSize: 0x1000
[>] MemoryCommtSize: 0x1000
[+] EATGuard analysis complete!
[+] Target address: 0x24AA13800A2
[>] IsRipRwxMemory: TRUE
[>] IsRipMappedSection: FALSE
[>] IsRipBackedByImage: FALSE
[>] HasPageProtectionChanged: FALSE
[>] RegionBaseAddress: 0x24AA1380000
[>] MemoryRegionSize: 0x1000
[>] MemoryCommtSize: 0x1000
(...)TRUNCATED(...)
Dieses Projekt ist ein POC, der die Funktionalität von Export Address Filtering nachahmt.