¿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.
¿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).
¿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.
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.
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.
¿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.
¿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.
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.
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.
¿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.
¿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.
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
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.
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.
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
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
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
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)
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.
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
Editor's Notes
Parece algo poco habitual, solo al alcance de los servicios de inteligencia.
Hay que ser cuidadoso.
Enseñar configuración de energía.
Si tenéis el equipo encendido, comprobad si tenéis este fichero.
Al ser un formato cerrado, existen pocas herramientas capaces de tratarlo
Si el equio
Modulo: iehistory
Como hemos dicho, el fichero esta en uso.
El proceso de conversión puede fallar.
Después de preparar esta charla me comentaron que existe un plugin de Volatility para hacer esto mismo: https://github.com/volatilityfoundation/community/blob/master/FrancescoPicasso/mimikatz.py