Publicado el 14 de Septiembre del 2017
1.172 visualizaciones desde el 14 de Septiembre del 2017
2,4 MB
35 paginas
Creado hace 10a (16/12/2014)
La defensa del patrimonio tecnológico
frente a los ciberataques
10 y 11 de diciembre de 2014
UEFI: Un arma de doble filo
© 2014 Centro Criptológico Nacional
C/Argentona 20, 28023 MADRID
www.ccn-cert.cni.es
BIOS UEFI
VIII JORNADAS STIC CCN-CERT
VIII JORNADAS STIC CCN-CERT
1.1 BIOS / UEFI. ¿Dónde estamos?
• Mucho parque informático aún con sistemas de arranque basados en
BIOS.
• UEFI actualmente evoluciona gracias a la aportación de un grupo de
empresas OEMs, IBVs, ISVs, IHVs.
• A pesar de la irrupción de UEFI, para las plataformas x86 siempre
habrá elementos de código BIOS presentes. (CSM).
• En ambos mundos, siempre habrá unas cuantas líneas en
ensamblador, para inicializar el HW al menos.
• Reducido número de fabricantes de BIOS (IBV)
• Ventaja para el atacante
UEFI – Linea de tiempos
VIII JORNADAS STIC CCN-CERT
VIII JORNADAS STIC CCN-CERT
UEFI. ¿Qué es?
• UEFI - Es una especificación de una interfaz para interactuar con el
firmware de una plataforma a la hora de arrancar un sistema.
• PI – (Platform Initialization) define el cómo se hace esta inicialización.
• UEFI es una especificación independiente de la plataforma
• PI – Aglutina la parte dependiente de la arquitectura específica
• Participan en el Unified EFI Forum más de 240 empresas
• AMD, AMI, Apple, Dell, HP, IBM, Insyde, Intel, Lenovo, Microsoft, and
Phoenix Technologies (PROMOTORES).
• Permite una estrategia de generación de código compartida entre
OEMs, IBVs, IHVs
• Crecimiento en volumen de código enorme
• HP Elitebook 2540p (201?): 42 PEIMs, 164 DXE drivers
• HP Elitebook 850 G1 (2014): 117 PEIMs, 392 DXE drivers
VIII JORNADAS STIC CCN-CERT
UEFI – Fases diferenciadas en el arranque
VIII JORNADAS STIC CCN-CERT
UEFI en un flash (1)
• UEFI es una especificación independiente de la arquitectura
• Existe tanto para plataformas de 32 y 64 bits
• Actualmente soporta: ITANIUM, x86, x64, ARM (32/64), EBC.
• PI (Platform Initialization) aglutina la parte dependiente de la
arquitectura
• Modelo formal de extensibilidad de la arquitectura
• Uso de Firmware Volumes (FVs), Firmware File Systems (FFSs)
• GUIDs,
• Formato PE en los ejecutables,
• Análisis de dependencias de módulos.
• Parte del código típicamente reside en FW, parte en soporte externo.
• EFI system Partition (ESP). Mínimo 200 Mb y formateada como FAT32
• Variables BCD se almacenan típicamente en la ESP
• Requiere disco duro particionado como GPT
VIII JORNADAS STIC CCN-CERT
UEFI en un flash (2)
• UEFI corre en long-mode en x64
• Entorno óptimo para utilizar técnicas modernas de programación y
herramientas
• BIOS por el contrario es un entorno de 16-bits en modo real
• Complementa el Advanced Configuration and Power Interface (ACPI).
• Diferentes alternativas de código según el tipo de arranque Mayor
superficie de ataque
• Run-time Services limitados en UEFI de cara al S.O.
• Básicamente Set/Get Variables que permiten por ejemplo alterar el
proceso de arranque.
• Soporta protocolos IPv4 e IPv6 para la localización de módulos de
arranque por red
• También se puede arrancar por red (PXE).
Proceso de arranque en BIOS
VIII JORNADAS STIC CCN-CERT
Proceso de arranque en UEFI
VIII JORNADAS STIC CCN-CERT
Fuente: www.quarkslab.com.
VIII JORNADAS STIC CCN-CERT
SECURE BOOT -
• Desde la especificación UEFI 2.3.1 se añadió como característica de
seguridad para proteger los sistemas UEFI de Bootkits
• Valida la integridad del cargador de arranque del Sistema Operativo
antes de transferir el control.
• No requiere de TPM (Trusted Platform Module)
• Cuando está habilitado se debe inhabilitar el CSM (legacy boot)
• Se apoya en una jerarquía de claves con una responsabilidad
compartida.
• En plataformas Microsoft, funciona para Windows 8.x y 2012 Server.
VIII JORNADAS STIC CCN-CERT
SECURE BOOT - Claves
• PK – Relación de
confianza entre el dueño
de la plataforma y el FW
• KEKs – Entre el FW y
el/los OSs
• DB – firmas o hashes de
módulos permitidos
• DBx – firmas o hashes de
módulos no permitidos
• Se verifican cuando el
BootLoader carga la
imagen
VIII JORNADAS STIC CCN-CERT
Listado de Claves en Menú BIOS
Powershell – Verificación del estado de las claves
VIII JORNADAS STIC CCN-CERT
• Get/Set-SecureBootUEFI Get-SecureBootPolicy
• Confirm/Format-SecureBootUEFI
VIII JORNADAS STIC CCN-CERT
Proceso de verificación de firmas en SecureBoot
• Realizada por el Boot Manager
• Una vez insertado el hash o firma, se da por bueno.
Fuente: www.oschina.net (intel developers forum 2012).
NVRAM. Ubicación y contenidos.
VIII JORNADAS STIC CCN-CERT
Fuente: www.intel.com
VIII JORNADAS STIC CCN-CERT
Fptw64 - Volcado a disco de la FLASH
• Depende de la configuración de variables NVRAM
VIII JORNADAS STIC CCN-CERT
Grabado de la NVRAM vía HW
• Esta opción siempre es viable.
Fuente: www.minnowboard.org.
VIII JORNADAS STIC CCN-CERT
UEFITOOL – Contenidos de volumen BIOS en UEFI
Volumen PEI – PEIMs.
VIII JORNADAS STIC CCN-CERT
UEFITOOL – Contenidos de volumen BIOS en UEFI
Volumen DXE – Drivers.
VIII JORNADAS STIC CCN-CERT
UEFITOOL – Contenidos de volumen BIOS en UEFI
Capacidad de edición y sustitución de módulos.
UEFI – Puntos de vista de atacante y defensor
VIII JORNADAS STIC CCN-CERT
• Cuanto código tan
ordenadito. Además
se puede programar
en “C”.
• Formato PE…BIEN.
• A mi disposición el
disco donde reside
el S.O.
• Existe módulo
DXE NTFS
• Si puedo añadir mi
driver DXE …. estoy
en mejor situación
que cuando
modificaba el
MBR/VBR… ¿NO?
©1999 20TH CENTURY FOX FILM CORP.
•
• La estandarización
es buena. Mil ojos
velan por una
especificación
segura.
• Tengo conocimiento
y control del SW
instalado en mi FW
• Puedo saber si ha
habido
modificaciones.
• Aunque el
mantenimiento y
gestión no es aún
muy amigable, lo
veo factible.
VIII JORNADAS STIC CCN-CERT
Una vez realizada la agresión, el camino es largo
• Proceso de infección del Bootkit DreamBoot
Fuente: www.virusbtn.com.
sexy …?
VIII JORNADAS STIC CCN-CERT
VIII JORNADAS STIC CCN-CERT
COPERNICUS – Herramienta de verificación de
integridad y gestión de configuración
VIII JORNADAS STIC CCN-CERT
CHIPSEC – Platform Security Assessment Framework
Iniciativa de INTEL para verificar la seguridad del FW
• https://github.com/chipsec
• Como tarea programada en WINDOWS, o arranque desde USB
VIII JORNADAS STIC CCN-CERT
CONCLUSIONES I
• La seguridad tradicional todavía no ha puesto el foco en UEFI
• Un montón de código se ejecuta antes de que el S.O. tome el control
• Este código tiene capacidad casi “ilimitada” sobre la plataforma hasta que se
cede el control al S.O. Después casi NULA.
• La Integridad de los módulos en UEFI es a día de hoy un punto clave.
• Control de las claves PK, KEK,…
• Control e inventario de los módulos instalados.
• Si puedes grabar la NVRAM vía HW o SW
• Si además están las claves PK, KEK, …-> GAME OVER.
• Solo con el “abuso” de las propias características de la plataforma
puede ser suficiente.
• Las carencias detectadas están en la implementación, no en la
especificación
• La complejidad de las plataformas y módulos adicionales
• Los diferentes módulos que se arrancan en función del tipo de arranque
(hibernación, suspensión, FastBoot ..) hacen mayor la superficie de ataque
VIII JORNADAS STIC CCN-CERT
CONCLUSIONES II
• Ya existen POCs de “exploits” sobre código UEFI en el proceso de
update.
• La utilización de herramientas como COPERNICUS debe ayudar a
gestionar la seguridad UEFI de un parque informático.
• La utilización del TPM para el almacenamiento de las claves ayudará a
mejorar notablemente la implementación de SecureBoot.
• En el futuro inmediato es de esperar ver aplicaciones y drivers EFI
implementando servicios de seguridad.
• Ya existen ataques viables. Su complejidad apunta a su utilización en
objetivos escogidos. Ojo a “insiders”.
UEFI – UN ARMA DE DOBLE FILO
VIII JORNADAS STIC CCN-CERT
DEMO explicada
VIII JORNADAS STIC CCN-CERT
VIII JORNADAS STIC CCN-CERT
Referencias (1)
UEFI SPECS
www.uefi.org
• BEYOND BIOS: Developing with the Unified Extensible Firmware
Interface
Vincent Zimmer et al
SAFERBYTES IT SECURITY
http://news.saferbytes.it/analisi/2012/09/uefi-technology-say-hello-to-the-
windows-8-bootkit/
CANSECWEST 2014
Platform Firmware Security Assessment wCHIPSEC-csw14-final.pdf
MICROSOFT TECHNET
http://technet.microsoft.com/en-us/library/hh824898.aspx
VIII JORNADAS STIC CCN-CERT
Referencias (2)
• [1] Attacking Intel BIOS – Alexander Tereshkin & Rafal Wojtczuk – Jul. 2009
• http://invisiblethingslab.com/resources/bh09usa/Attacking%20Intel%20BIOS.pdf
• [2] TPM PC Client Specification - Feb. 2013
• http://www.trustedcomputinggroup.org/developers/pc_client/specifications/
• [3] Evil Maid Just Got Angrier: Why Full-Disk Encryption With TPM is Insecure on Many
Systems – Yuriy Bulygin – Mar. 2013
• http://cansecwest.com/slides/2013/Evil%20Maid%20Just%20Got%20Angrier.pdf
• [4] A Tale of One Software Bypass of Windows 8 Secure Boot – Yuriy Bulygin – Jul. 2013
• http://blackhat.com/us-13/briefings.html#Bulygin
• [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska –
• http://invisiblethingslab.com/resources/bh09dc/Attacking%20Intel%20TXT%20-%20paper.pdf
• [6] Another Way to Circumvent Intel® Trusted Execution Technology - Rafal Wojtczuk,
• Joanna Rutkowska, and Alexander Tereshkin – Dec. 2009
• http://invisiblethingslab.com/resources/misc09/Another%20TXT%20Attack.pdf
• [7] Exploring new lands on Intel
+
Comentarios de: UEFI: Un arma de doble filo (0)
No hay comentarios