
Eine PoC-Implementierung zum dynamischen Maskieren von Call-Stacks mit Timern.
Dieses Repository demonstriert eine PoC-Technik zum dynamischen Spoofing von Call Stacks mithilfe von Timern. Bevor unser Implant in den Schlafmodus übergeht, können wir Timer in die Warteschlange stellen, um dessen Call Stack mit einem gefälschten zu überschreiben und das Original vor der Fortsetzung der Ausführung wiederherzustellen. Daher können wir – so wie wir den Speicher unseres Implants während des Schlafmodus maskieren – auch den Call Stack unseres Hauptthreads maskieren.
Eine vollständige technische Erläuterung findest du im zugehörigen Blogbeitrag hier: https://www.cobaltstrike.com/blog/behind-the-mask-spoofing-call-stacks-dynamically-with-timers/.
Standardmäßig imitiert die PoC einen statischen Call Stack, der von spoolsv.exe stammt:

Wenn das Flag --dynamic angegeben wird, listet CallStackMasker alle zugänglichen Threads auf, findet einen im gewünschten Zustand (WaitForSingleObjectEx) und imitiert dessen Call Stack und Startadresse. Dies wird unten demonstriert:

NB: Vorsicht: Diese PoC wurde auf folgendem Windows-Build getestet:
22h2 (19045.2486)
Sie wurde nicht auf anderen Versionen getestet und könnte bei anderen Windows-Builds nicht mehr funktionieren.