Bad hibernation-rooted

28
Bad- Hibernation Ramón Pinuaga

Transcript of Bad hibernation-rooted

Page 1: Bad hibernation-rooted

Bad-HibernationRamón Pinuaga

Page 2: Bad hibernation-rooted

¿Quién soy?

• Pentester desde hace más de 16 años para compañías como INNEVIS y S21SEC.

• Actualmente; analista de seguridad y manager del departamento de auditoria en INNEVIS.

• Especializado en técnicas de hacking y seguridad ofensiva.

• Ponente anteriormente en conferencias como Undercon o NoConName.

Page 3: Bad hibernation-rooted

¿De qué va esta charla?

• Técnica para realizar ataques de Evil-Maid explotando el fichero de hibernación de Windows.

• La hibernación es un mecanismo que permite apagar el equipo sin perder el estado del sistema.

• Nos permite recuperar la memoria completa del equipo (y la información volátil que perderíamos con otras técnicas).

Page 4: Bad hibernation-rooted

¿Evil-Maid?

Page 5: Bad hibernation-rooted

¿En qué consiste un ataque Evil-maid?

• Ataque consistente en explotar equipos desatendidos.

• Requiere de acceso físico al equipo.• El nombre viene de que este tipo de ataques

son realizados habitualmente en hoteles por parte de personas que se hacen pasar por limpiadoras.

Page 6: Bad hibernation-rooted

No solo para la NSA

Page 7: Bad hibernation-rooted

Técnicas clásicas

• Las formas clásicas de realizar un ataque de Evil-Maid son:– Reiniciar el equipo desde un dispositivo externo (CD,

USB, Konboot, etc.).– Extraer el disco duro y montarlo en otro equipo.

• Una vez tenemos acceso al disco:– Copiamos información.– Reseteamos contraseñas.– Configuramos una puerta trasera.– Implantamos un RAT.

Page 8: Bad hibernation-rooted

Problemas de las técnicas clásicas

• Pueden alertar al target de que su equipo ha sido manipulado.– Si el equipo no esta apagado.

• Al reiniciar, perdemos la información volátil.– Contraseñas en claro.– Llaves de cifrado.– Sesiones abiertas.

Page 9: Bad hibernation-rooted

Extracción del disco duro

Page 10: Bad hibernation-rooted

¿Cómo podemos conservar la información volátil?

• Extracción de memoria mediante DMA: Firewire, Thunderbolt, ExpressCard, etc.– Solo los equipos de gama alta suelen tener este

tipo de conectores.• Ataques ColdBoot.– Poco efectivos con memorias modernas.

• Hibernando el equipo y copiando el fichero de hibernación.

Page 11: Bad hibernation-rooted

¿Qué es la hibernación de Windows?

• Hibernación o suspensión a disco: Mecanismo de Windows que permite apagar el equipo sin perder el estado del sistema.

• Esto se consigue guardando en un fichero (hiberfil.sys) el contenido de la memoria y ciertos datos que permiten reiniciar el equipo en el mismo estado.

• Desactivado por defecto a partir de Windows 7 (algunos fabricantes lo activan), pero se activa al llegar a nivel critico.

Page 12: Bad hibernation-rooted

Detalles

• El fichero de hibernación se crea en: c:\hiberfil.sys (oculto).

• Windows mantiene abierto este fichero de forma que no puede ser leído mientras el sistema esta funcionando.

• El fichero de hibernación nunca se borra, solo se modifica su cabecera cuando ha sido usado para reiniciar.

• A partir de Windows 10 se puede configurar el grado de compresión.

Page 13: Bad hibernation-rooted

Formato

• Existe poca documentación oficial sobre la organización de este archivo.

• El fichero hiberfil.sys contiene:– Una cabecera estándar: PO_MEMORY_IMAGE– Contexto y registros del kernel: KPROCESSOR_STATE– Array de bloques de datos codificados/comprimidos

en el formato propietario de Microsoft LZ Xpress: PO_MEMORY_RANGE_ARRAY.

Page 14: Bad hibernation-rooted

¿Cómo hacemos un Evil-Maid con hibernación?

• Aprovechamos el fichero de hibernación para recuperar la información volátil del equipo.

• Si el equipo esta encendido pero bloqueado:– Hibernamos, copiamos y reiniciamos al estado

inicial (no quedan rastros lógicos de la manipulación).

• Si el equipo esta apagado: Tal vez podemos recuperar un fichero de hibernación antiguo.

Page 15: Bad hibernation-rooted

Opción de hibernar con equipo bloqueado

Page 16: Bad hibernation-rooted

¿Qué podemos lograr con esta técnica?

• Extraer información sobre el estado del equipo:– Conexiones abiertas.– Identificadores de sesión.

• Recuperar contraseñas locales en claro.– Usando mimikatz.

• Recuperar llaves de cifrado.– Como si lo hiciésemos de un volcado de memoria

normal.

Page 17: Bad hibernation-rooted

Extraer información

• De forma manual o con Volatility.• Puede ser tan sencillo como hacer un

“strings”.• Pero Volatility es la opción profesional:– Permite trabajar directamente sobre el fichero

hiberfil.sys o convertirlo en otro formato.– vol.exe hibinfo -f hiberfil.sys

Page 18: Bad hibernation-rooted

Volatility

Page 19: Bad hibernation-rooted

Recuperar contraseñas locales

• Las contraseñas locales se almacenan en el registro en forma de hashes.

• Con las técnicas clásicas tendremos que crackearlas o resetearlas.

• Con esta técnica podemos recuperarlas de la memoria con Mimikatz.– Mimikatz no trabaja sobre ficheros de hibernación.– Tenemos que convertir hiberfil.sys en un formato

manejable por Mimikatz.

Page 20: Bad hibernation-rooted

Paso 1: Obtener hiberfil.sys

• Aquí probablemente tendremos que usar las técnicas clásicas para obtener acceso al disco.

• Nos vale un acceso rápido y de solo lectura.• A veces podemos obtener este fichero por

otras fuentes: Backups, Vulnerabilidades de lectura remota de ficheros*, etc.

Page 21: Bad hibernation-rooted

Paso 2: Volatility

• Mimikatz puede trabajar como plugin de Windbg.• Pero Windbg no soporta ficheros de hibernación.• Pero si volcados de crash dump (DMPs).• Podemos convertir el fichero de hibernación en

un DMP con Volatility.• Comando:– vol.exe raw2dmp -f hiberfil.sys -O hiberfil.dmp

Page 22: Bad hibernation-rooted

Paso 3: Windbg

• Como cargar un DMP:– File > Open Crash Dump (ctrl-d)– .symfix– .reload

• Si es una imagen de 64bits– .load wow64exts– !wow64exts.sw

Page 23: Bad hibernation-rooted

Paso 4: Mimikatz

• Una vez tenemos el volcado de memoria cargado:– .load c:\mimilib.dll– !process 0 0 lsass.exe– .process /r /p XXXXX– !mimikatz

Page 24: Bad hibernation-rooted

DEMO

Page 25: Bad hibernation-rooted

Extracción de llaves de cifrado

• Volatility soporta ficheros de hibernación y además de convertirlos a DMP podemos utilizar otros plugins para extraer llaves de cifrado y tokens o identificadores de sesión.

• Plugins interesantes:– Truecryptpassphrase – Truecryptmaster– Bitlocker (https://github.com/elceef/bitlocker)

Page 26: Bad hibernation-rooted

Elcomsoft Forensic

Page 27: Bad hibernation-rooted

Contramedidas

• Utilizar un sistema de FDE en arranque (comprobando que se cifra el fichero hiberfil.sys).

• Deshabilitar la opción de hibernación:– Powercfg.exe /h off

• No dejar el PC desatendido.

Page 28: Bad hibernation-rooted

Conclusiones

• Hibernación: Funcionalidad por defecto de Windows con ciertos riesgos poco conocidos.

• Fáciles de mitigar si se conocen.• Aun así: “Fear de Evil-Maid!”

• Gracias por la atención:– https://twitter.com/rpinuaga