Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los...

39
La defensa del patrimonio tecnológico frente a los ciberataques 10 y 11 de diciembre de 2014 www.ccn-cert.cni.es © 2014 Centro Criptológico Nacional C/Argentona 20, 28023 MADRID Infección en BIOS, y derivados David Barroso – ElevenPaths @lostinsecurity

Transcript of Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los...

Page 1: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

La defensa del patrimonio tecnológico

frente a los ciberataques

10 y 11 de diciembre de 2014

www.ccn-cert.cni.es © 2014 Centro Criptológico Nacional

C/Argentona 20, 28023 MADRID

Infección en BIOS, y derivados David Barroso – ElevenPaths

@lostinsecurity

Page 2: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

¿En qué capas puede ejecutarse código? Ring 3

Userland

Ring 2

I/O

Ring 1

Drivers

Ring 0

Kernel

Ring -1

Hypervisor

Ring -1.5

Bootkits

Ring -2

SMM

Ring -2.5

BIOS/UEFI

Ring -3

Chipset

Page 3: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Fuente: http://marlon-becerra.blogspot.com.es/2013/03/la-placa-

base-la-bios-etc.html

Page 4: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Halt and catch fire - AMC

Page 5: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Ingeniera inversa – Phoenix Technologies

Page 6: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Clean room – Chinese Wall

Page 7: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Historia de la BIOS

• 1975: Gary Kildall utiliza la palabra BIOS para definir parte del boot de

CP/M (IMSAI 8080 - Altair 8800) (IBM - PC-DOS $40 vd CP/M $240)

• 1981: IBM Personal Computer (Ctrl+Alt+Del)

• 1984: Phoenix PC ROM BIOS

• 1984: Award Software

• 1985: American Megatrends Incorporated (AMI)

• 2000: Intel crea EFI (Extensible Firware Interface)

• 2004: Comunidad EFI Open Source (tianocore.org)

• 2005: Unified EFI (UEFI). Esfuerzo conjunto de la industria:

• AMD, American Megatrends, Apple, Dell, HP, IBM, Insyde, Intel, Lenovo,

Microsoft, Phoenix

• 2014: 233 miembros. UEFI 2.4b (Abril 2014)

Page 8: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Legacy BIOS

Page 9: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

UEFI

Page 10: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Fuente: http://mike820324.blogspot.com.es/2011/06/simple-os-bootloader-part1.html

Page 11: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Fuente: http://logica10mobile.blogspot.com.es/2012/10/la-revolucion-silenciosa-uefi-y-el.html

Page 12: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

POST ( Power On Self Test) – Legacy BIOS

1. Comprueba el procesador (CPU)

2. Verifica su código a través de checksums

3. Comprueba la memoria

4. Comprueba otros controladores (chips) de la placa madre

5. Comprueba que funcionan las interrupciones

6. Comprueba e inicializa los interfaces E/S e identifica los dispositivos conectados

7. Comprueba los puertos serie

8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM)

9. Verifica su código usando checksums

10. Permite a esos dispositivos ejecutar su BIOS

11. Inicializa el área de la BIOS en memoria

12. Comprueba si existe algún dispositivo para arrancar un sistema operativo

13. Carga y ejecuta el MBR (0000h:7C00h)

14. Se ejecuta el boot loader que carga el kernel del sistema operativo

Page 13: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

¿Por qué atacar la BIOS? Rootkits

• Sobrevive al reinicio de la máquina

• No deja trazas en el disco

• Sobrevive a reinstalaciones del sistema operativo

• Difícil de detectar

• Difícil de eliminar

¿Quién analiza la BIOS? ¿Productos

de seguridad? ¿Antivirus?

Page 14: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

NSA – BIOS Plot

Page 15: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Primera infección de BIOS (1994-1995)

04/04/93: ROMs de AMI BIOS troyanizadas supuestamente en su

fábrica de Corea del Sur. Sonaba ‘Cumpleaños Feliz’ cada 13 de

noviembre.

Page 16: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

CMOSDEAD (1998)

• MS-DOS, infecta ficheros .COM

• Borra el contenido del CMOS

• Muestra imagen por pantalla y sonidos por el altavoz

• Huevo de Pascua si el usuario resetea el equipo con Ctrl-Alt-Del

Page 17: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

CIH – Chernobyl (1998)

• Afecta a Windows 9x (95, 98, Me)

• Autor: Chen Ing-hau (陳盈豪), estudiante en Taiwán.

• Motivo: como desafío ante las declaraciones de los antivirus

• Propagación: Wing Commander, CDs en revistas de informática,

• 60 millones de ordenadores infectados

• Infecta ficheros Windows PE (1kb)

• Rellenaba los primeros 1024kb del disco con ceros y sobreescribía

parte de la BIOS

• Activación: 26 de abril

• Hijos:

• Win32.Kriz (1999)25 diciembre

• Win95.Fonos (2000) Borra CMOS

o pone contraseña

Page 18: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

CIH - Demonstración

Page 19: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

IceLord & Sun Bing (2007)

• Afecta a Windows 2000, Windows XP, Windows 2003

• Award BIOS 6.0 PG

• Se analiza la herramienta WinFlash de Award y se descubre un método

para flashear la BIOS utilizando un servicio del SMM

• Instala un nuevo ISA BIOS ROM que se ejecutará cuando se ejecutan

todas las PCI Expansion ROMs

• Top-Block Swap (Sun Bing, 2007): intel ICHx south bridge.

• Cambia el top-block (boot block) con otro.

• Problema en el actualizador de BIOS

• Permite reflashear la BIOS

Page 20: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Infección de Legacy BIOS (2009)

• Anibal Sacco, Alfredo Ortega

• Infección de BIOS Phoenix y Award

• Modifican la rutina de decomprensión de módulos de la BIOS (LZH)

• Hace falta ‘flashear’ la BIOS con la versión infectada

• Modificación de archivos en disco:

• /etc/shadow

• Inyección de código en binarios de Windows

• Shellcode en 16 bits utilizando interrupciones de BIOS

Page 21: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Mebromi (2011)

• Afecta a ordenadores que tengan instalados AV chinos:

• Rising Antivirus

• Jiangmin KV Antivirus

• Basado en la idea de IceLord

• Instala un driver en el systema (bios.sys) que accede a la zona de

memoria de la BIOS:

• Comprueba si la BIOS es Award ($@AWDFLA)

• Busca el puerto SMI (System Management Interrupt)

• Hace una copia de la BIOS en disco (C::\bios.bin)

• Modifica el fichero bios.bin incluyendo un rootkit

• Borra la BIOS ROM y ‘flashea’ con el nuevo archivo troyanizado

• La nueva BIOS al arrancar infecta el MBR que a su vez inyecta código

en winlogon.exe y wininit.exe

Page 22: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Computrace (2005-)

• Búsqueda de equipos robados

• Presente desde que en 2005 Phoenix y

Absolute hicieron un acuerdo

• PCI Option ROM

• Modifica Windows desde la BIOS

instalando un nuevo servicio y

modificando el registro y varios archivos

• Capaz de funcionar con Bitlocker

• Soporta Windows 98, Windows XP,

Windows Vista, Windows 7, Windows 8,

Mac OS X > 10.6, Android > 2.3, Linux

• Otros: Phoenix Failsafe (SMM), Intel

Anti-theft (vPRO)

Page 23: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Modos de operación en x86

Modo de operación Sistema Operativo Address Size

Long mode 64-bit 64-bit 64 bits

Compatibility 32 bits

16 bits

SMM 16 bits

Legacy mode Protected 32-bit 32 bits

16 bits

Virtual 8086 16 bits

Real 16-bit

Page 24: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

SMM – System Managed Mode

• Maneja eventos de hardware de bajo nivel (temperatura, power, etc.)

• Interesante: tiene un espacio de memoria (SMRAM) y entorno de ejecución aislado que puede ser invisible en otros modos. Tiene acceso a toda la memoria.

• Crear un nuevo handler SMM que sustituye a algún otro (ojo portátiles)

• Ataques: • Loic Duflot (2006): escalada de privilegios en OpenBSD

• Phrack #65 y #66 (2008, 2009)

• BlackHat 2008: Keylogger y network backdoor

• Invisible Things Labs: • 2008: Bug en Q35 BIOS

• 2009: VU#127284 espacio de memoria no protegido

• 2009: Caching attacks in SMM

• Gazet (2011) Buffer overflow en SMM cuando habla con el Keyboard Controller (KBC)

• Problema: • Está en memoria, no sobrevive a reinicios

• Específico de hardware (direcciones de memoria)

Page 25: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Page 26: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Page 27: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

ACPI – Advanced Configuration and Power Interface

• John Heasman (2006)

• ACPI: tablas ACPI, registros ACPI,

• Modificación de las tablas ACPI de la BIOS y reflasheo

• ACPI Machine Language (AML) malicioso que interactua con la

memoria del sistema y el espacio de E/S

• Problemas:

• Intel SecureFlash o Phoenix TrustedCore

Page 28: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

PCI Expansion ROM

• PCI, PCIe, Thunderbolt, ExpressCard, etc.

• John Heasman (2007)

• Se ejecuta código por parte de la BIOS en el arranque

• Se reprograma el EEPROM donde se encuentra

• PoC en tarjetas de red, PXE (TFTP+UDP)

• "If a Legacy card’ s option ROM code hooks INT 19h during its initialization call it controls the boot process.”

• Arrigo Triulzi • Project Maux (2007): infección firmware tarjetas de red

• Project Maux II (2008): infección de firmware nVidia GPU para usar su memoria (128Mb) para infectar tarjetas de red

• Project Maux III (2009): persistencia en sectores de disco, módulos UEFI

• Project Maux IV( 2011): módulos UEFI maliciosos para infectar en firmware de dispositivo

• Firmware : DEB (Harddisk, 2012), Delugré (Broadcom, 2010), Duflot (Broadcom, 2010)

Page 29: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Ataque al proceso de actualización de UEFI

• Wojtczuk y Atk (2009)

• Todo el código de actualización viene firmado, excepto algún fichero, como

la imagen que sale en el arranque (para los OEM)

• Buffer overflow en el parsing del fichero BMP de la imagen

• Kallenberg, Kovah, Butterworth, Cornwell (2013)

• Salto de Ring3 a ejecutar código en UEFI en Windows 8

• 4 Integer overflow (CVE-2014-4859, CVE-2014-4860)

• Difícil explotación

• Kallenberg, Kovah, Butterworth, Cornwell (2013)

• CVE-2013-3582: Buffer overflow en Dell Latitude que permite reflashear la

BIOS con una imagen maliciosa aunque se compruebe la firma digital.

Page 30: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Demo ataque

Page 31: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Virtualización

• Subvirt (Microsoft Research, 2006): Virtual PC, VMWare • VMBR: Virtual Machine Based Rootkits

• Virtualiza’ el sistema operativo y lo controla con un hypervisor

• BluePill (Rutkowska, 2006): explota extensiones SVM (Secure Virtual Machine) de AMD • ‘Virtualiza’ el sistema operativo y lo controla con un hypervisor

• No modifica ni la BIOS, ni sectores de arranque (MBR/VBR)

• No sobrevive al reinicio

• Vitriol (Dino A. Dai Zovi, 2006): explota VT-x de Intel • ‘Virtualiza’ el sistema operativo y lo controla con un hypervisor

• Rootkit para OSX

• Vulnerabilidades en VMWare (Sun Bing, 2007)

• Rutkowska:Inyección de código en Intel Q35 (AMT – Active Management Technology)

• Rutkowska, Wojtczuk (2011): Atando Intel TXT y VT-d (controlar el hypervisor)

Page 32: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Fuente: http://mike820324.blogspot.com.es/2011/06/simple-os-bootloader-part1.html

Page 33: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Fuente: http://logica10mobile.blogspot.com.es/2012/10/la-revolucion-silenciosa-uefi-y-el.html

Page 34: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Bootkits

Fuente: ESET

DOS Boot

Virus

Page 35: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Clasificación de Bootkits ‘clásicos’

Fuente: ESET

Page 36: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

SecureBoot

• UEFI 2.3.1

• Opcional

• Comprueba que el código de arranque no es modificado mediante

firma digital

• Firma digital incluida en cada sección ejecutable

• Platform Key (PK) por el fabricante ,Key Exchange Key (KEK) protege la

base de datos de firmas

• Listado de Trusted Signers (CAs) para firmar Option ROMs, bootloaders,

drivers y aplicaciones

• Puede ser usado en conjunción con un TPM

• Ataques:

• PK puede ser modificada en NVRAM

• Se puede deshabilitar en el SPI Flash de muchas maneras (variable UEFI)

Page 37: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

Recursos

• Guías:

• NIST 800-147 BIOS Protection Guidelines

• NIST 800-147B BIOS Protection Guidelines for servers

• NIST 800-155 BIOS Integrity Measurement Guidelines

• BIOS Update Authentication

• Secure Local Update

• Integrity Protection

• Non-Bypassability

• Herramientas:

• Copernicus de MITRE (bios_diff)

• Subzero.io

• CHIPSEC: Platform Security Assessment Framework

• RDFU (Rootkit Detection Framework for UEFI)

• Danooct1 Vintage Virus YouTube Channel

Page 38: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

VIII JORNADAS STIC CCN-CERT

One more thing...

#BadBIOS

Page 39: Infección en BIOS, y derivados - CCN-CERT · Comprueba los puertos serie 8. Identifica los dispositivos que puedan tener BIOS propia (Option ROM) 9. Verifica su código usando checksums

Síguenos en Linked in

E-Mails

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

Websites

www.ccn.cni.es

www.ccn-cert.cni.es

www.oc.ccn.cni.es