
Une implémentation de type PoC pour masquer dynamiquement les piles d'appels avec des minuteurs.
Ce dépôt démontre une technique de preuve de concept (PoC) permettant d'usurper dynamiquement les piles d'appels à l'aide de minuteurs. Avant que notre implant ne se mette en sommeil, nous pouvons planifier des minuteurs pour écraser sa pile d'appels par une pile factice, puis restaurer la pile d'origine avant de reprendre l'exécution. Ainsi, de la même manière que nous pouvons masquer la mémoire appartenant à notre implant pendant le sommeil, nous pouvons également masquer la pile d'appels de notre thread principal.
Pour une explication technique complète, voir l'article de blog associé ici : https://www.cobaltstrike.com/blog/behind-the-mask-spoofing-call-stacks-dynamically-with-timers/.
Par défaut, le PoC imite une pile d'appels statique extraite de spoolsv.exe :

Si l'option --dynamic est fournie, CallStackMasker énumère tous les threads accessibles, en trouve un dans l'état souhaité (WaitForSingleObjectEx), puis imite sa pile d'appels ainsi que son adresse de départ. Ceci est démontré ci-dessous :

NB À titre de mise en garde, ce PoC a été testé sur la version de Windows suivante :
22h2 (19045.2486)
Il n'a pas été testé sur d'autres versions et pourrait ne pas fonctionner sur d'autres builds de Windows.