
Un'implementazione PoC per il mascheramento dinamico degli stack di chiamate con timer.
Questa repository dimostra una tecnica PoC per spoofare dinamicamente le call stack utilizzando i timer. Prima che il nostro implant vada in sleep, possiamo accodare dei timer per sovrascrivere la sua call stack con una fake e poi ripristinare quella originale prima di riprendere l'esecuzione. Quindi, allo stesso modo in cui possiamo mascherare la memoria appartenente al nostro implant durante il sleep, possiamo anche mascherare la call stack del nostro thread principale.
Per una descrizione tecnica completa, consulta il post del blog qui: https://www.cobaltstrike.com/blog/behind-the-mask-spoofing-call-stacks-dynamically-with-timers/.
Di default, la PoC imita una call stack statica prelevata da spoolsv.exe:

Se viene fornito il flag --dynamic, CallStackMasker enumera tutti i thread accessibili, ne trova uno nello stato desiderato (WaitForSingleObjectEx) e ne imita la call stack e l'indirizzo di partenza. Questo è mostrato di seguito:

NB Come avvertimento, questa PoC è stata testata sulla seguente build di Windows:
22h2 (19045.2486)
Non è stata testata su altre versioni e potrebbe non funzionare su build di Windows diverse.