
Uma implementação de PoC para mascarar dinamicamente pilhas de chamadas com temporizadores.
Este repositório demonstra uma técnica de PoC para falsificar dinamicamente pilhas de chamadas usando timers. Antes de nosso implante dormir, podemos enfileirar timers para sobrescrever sua pilha de chamadas com uma falsa e, em seguida, restaurar a original antes de retomar a execução. Dessa forma, da mesma maneira que podemos mascarar a memória pertencente ao nosso implante durante o sono, também podemos mascarar a pilha de chamadas da nossa thread principal.
Para um passo a passo técnico completo, veja o post do blog correspondente aqui: https://www.cobaltstrike.com/blog/behind-the-mask-spoofing-call-stacks-dynamically-with-timers/.
Por padrão, o PoC imitará uma pilha de chamadas estática obtida do spoolsv.exe:

Se o sinalizador --dynamic for fornecido, o CallStackMasker enumerará todas as threads acessíveis, encontrará uma no estado desejado (WaitForSingleObjectEx) e imitará sua pilha de chamadas e endereço inicial. Isso é demonstrado abaixo:

Observação: como um alerta, este PoC foi testado na seguinte compilação do Windows:
22h2 (19045.2486)
Ele não foi testado em nenhuma outra versão e pode quebrar em diferentes compilações do Windows.