
Verbirgt reflektive Payloads im GPU-Speicher über CUDA-APIs, löscht den Host-Speicher während des Ruhezustands und verwendet einen VEH-Handler, um ausführbaren Speicher wiederherzustellen, wodurch die Speicherforensik umgangen wird.
1- Zuerst müssen wir einige Strukturen einrichten und initialisieren / und unseren ve handler ausführen.
2- Zweitens führen wir den stageless Payload aus. Wir müssen stageless verwenden, um zu wissen, wo
die Reflection landen wird (ich verwende Cobalt Strike, das den DLL-Reflective-Loader nutzt). Uns interessiert nur die 2nd stage, denn das ist der eigentliche
Payload. Ich habe zu diesem Schritt keine Tricks hinzugefügt, nur ein virtualalloc und einen rwx-Abschnitt.
3- Wenn der Payload nun schläft, kopieren wir den Payload in den GPU-Speicher und entfernen den Payload aus dem echten Speicher.
4- Wenn der Schlaf beendet ist, behandelt der veh die Exception (EXCEPTION_ACCESS_VIOLATION), indem er die Speicherberechtigungen auf PAGE_EXECUTE_READWRITE zurücksetzt und den Payload aus dem GPU-Speicher wieder an seinen Platz bringt.
