jueves, 28 de diciembre de 2023

¿Qué son los anillos de la arquitectura x86?

¿Qué es una arquitectura? Y ¿Qué es la arquitectura x86 o x86_64?

    Se puede decir que una arquitectura de procesador es el conjunto de instrucciones mediante el cual se realizan operaciones en él. Así la arquitectura del procesador con el que funciona tu PC es diferente de la arquitectura con la que funciona el procesador que contiene tu móvil.

    Mayoritariamente el mercado de PC esta dominado por la arquitectura x86, y x86_64 y el principal fabricante de esta arquitectura es Intel, seguido de AMD.

    X86_64 es idéntica a x86, lo que pasa es que x86 es de 32 bits, y x86_64 es de 64 bits. La diferencia entre estos dos sistemas reside en la cantidad de memoria dedicada por instrucción, así los sistemas de 32 bits pueden tener un máximo de 4 GB de RAM y los de 64 bit no tienen esta restricción, pudiendo tener cantidades superiores a esta cifra y sólo limitada por el tope que pueda gestionar el Sistema Operativo.

    Actualmente la hegemonía respecto a la arquitectura x86_64 han comenzado a cambiar, ya que empiezan a surgir fabricantes que deciden que sus computadoras trabajen en otras arquitecturas por razones como el rendimiento o el consumo energético. Este es el caso de Apple que ha pasado a producir sus propios procesadores para sus computadoras basados en una arquitectura ARM.

    Hasta ahora la arquitectura ARM se utilizaba en sistemas portátiles como móviles, tablets o algunos portátiles, porque tiene la ventaja de que gasta menos energía por conjunto de instrucciones. Por esto los procesadores basados en la arquitectura ARM son ideales para dispositivos móviles, por su bajo consumo en energía y su alta capacidad de procesamiento.

    Existen otras arquitecturas como la arquitectura POWER de IBM, que actualmente se centra en el mercado de los servidores. Apple también utilizó esta arquitectura en sus Power Macintosh. Pero desde que Apple pasó de usar la arquitectura POWER a la arquitectura de Intel en el año 2005, el mercado de PC lo domina x86.

¿Que son los Anillo de protección de la arquitectura x86?

    Los anillo de protección son niveles jerárquicos o capas de privilegios conceptuales dentro de la arquitectura de un sistema de computación. Los anillos están dispuestos en una jerarquía que va desde las zonas del procesador con más privilegios (es decir, de más confianza), hasta la zona menos privilegiada (de menos confianza). En la mayoría de arquitecturas el anillo 0 es el nivel más privilegiado e interactúa directamente con el hardware, como la CPU y la memoria. Los anillos de protección son un mecanismos para proteger los datos frente a fallos y comportamientos maliciosos, como pueden ser el comportamiento de un malware. El objetivo es separar los programas sensibles, como los contenidos en el kernel, y los programas de usuario. Así un programa contenido en una zona de memoria asignada al anillo 3 no podrá acceder a una zona de memoria asignada al anillo 0 sin pedir permiso. De esta forma evitamos que un malware, que se ejecuta como un programa de usuario en el anillo 3, no tenga privilegios y no pueda encender la webcam o acceder al micrófono puesto que el acceso al hardware debe ser una función reservada del anillo 0. Los programas como navegadores web, grabadores de sonido o grabadores de video corriendo en los anillos menos privilegiados, deben solicitar el acceso al hardware, y el hardware es administrado en anillo de numeración inferior.

    La arquitectura x86 cuentan con 4 anillos de seguridad por razones históricas. El anillo 0 corresponde al nivel con más privilegios y el anillo 3 al de menos privilegios. Hay que entender que la arquitectura x86 comenzó a desarrollarse en la década de 1970. En aquella época la visión que se tenía de los sistemas operativos era otra muy distinta a la que se tiene hoy en día.


Priv rings


 

    Estos niveles jerárquicos los gestionan los sistemas operativos proporcionando diferentes niveles de acceso a los recursos. Los sistemas operativos x86 modernos ignoran el mecanismo de segmentación y reducen su protección a solo 2 anillos, el anillo 3 y el anillo 0. Esto lo hacen por una cuestión de eficiencia de programación usando solo un bit de seguridad. Este bit controla si el procesador debe estar trabajando en el nivel "privilegiado" o anillo 0, o debe estar trabajando en el anillo de nivel de usuario no privilegiado, el anillo 3. Al ser solo un bit, el número de "modos" disponibles en lo que respecta a la protección de memoria es solo dos. Por lo tanto, sólo usa dos anillos. Para que pudiera hacer uso de los 4 anillos tendrían que hacer uso de dos bits de protección para que fueran accesibles 4 modos de trabajo. Esto es 0, 1, 2, 3 en binario. Además hay otra razón por la que sólo utilizan 2 anillos. Esta razón es debido a la portabilidad. En el mercado existen más arquitecturas de computadoras con sólo esos dos niveles de protección y para poder usarlas sin tener que reprogramar todo el sistema operativo es más sencillo universalizar el uso de 2 anillos de protección, uno privilegiado y otro no. El ejemplo más claro de esto son las distintas distribuciones Linux en múltiples arquitecturas de procesador que es una de las principales característica de Linux. Por esta razón los sistemas operativos más modernos y conocidos en la arquitectura x86, como los basados en kernel Linux o el sistema operativo Windows, sólo usan el anillo 0 para el modo de núcleo y el anillo 3 para el modo de usuario.

    El kernel es el núcleo del sistema operativo, podríamos decir que son las tripas, o más concretamente definirlo como un software fundamental del sistema operativo. Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora por lo que es el encargado de gestionar sus recursos.

    Actualmente con el propósito de aumentar la eficiencia energética y aprovechamiento de los recursos, además de aumentar la seguridad de los sistemas operativos, podríamos considerar que existe un nuevo interés en utilizar un anillo de seguridad más. Este giro de dirección se debe a la extendida implantación del hardware de virtualización.

    En Intel tenemos la Tecnología de Virtualización de Intel VT-d y en AMD su tecnología AMD-V. Por otro lado, además tenemos la proliferación de software que explota esta tecnología como por ejemplo los hipervisores de software libre Xen y KVM. 

    Con esta nueva tecnología tenemos que empezar a hablar del modo hipervisor. El modo hipervisor controla el acceso del hardware al anillo 0, lo que significa que en la jerarquía de anillos estaría por debajo del anillo 0. Sería considerado el anillo -1. Esto permite que varios sistemas operativos puedan ejecutarse en un mismo procesador de forma nativa sobre el propio hardware y poder exprimir al máximo los recursos de la máquina con un bajo coste energético. La virtualización es muy usada en servidores para sacarle el máximo provecho al hardware al menor costo posible. Pensemos en un servidor de servicios web, podremos tener varios servidores en un mismo hardware. Ahorrando así en recursos como son la memoria o la cpu y en energía.

    La virtualización también es utilizada por algunos sistemas operativos para incrementar la seguridad, al poder separar componentes hardware por sistemas operativos y actuar como un cortafuegos a la hora de administrar recursos. De esta forma, por ejemplo, si un pendrive esta cargado con un malware y se ejecuta en una maquina virtual, el sistema operativo anfitrión estará a salvo del malware.

    Por otro lado tenemos otra característica histórica de la arquitectura x86 de Intel. El llamado Modo de Gerencia de Sistema o SMM de sus siglas en inglés. Este modo es totalmente independiente de los modos de los que ya hemos hablado. Es independiente incluso del modo hipervisor, por lo que en la jerarquía estaría por debajo del hipervisor que es el anillo -1.

    El Modo de Gerencia de Sistema es el anillo -2 y se encarga entre otras cosas de emular hardware de la placa base que no está implementado realmente, por ejemplo un ratón o un teclado que debería estar conectado desde un puerto PS/2 a un puerto USB, de operaciones relacionadas con la energía del sistema, como encendido de ventiladores o apagar el computador cuando detecta alta temperatura en la CPU.

    Por último, como contábamos en el anterior artículo, tenemos el Intel Management Engine, que gestiona el chipset y tiene acceso a toda la placa base. Por lo que es totalmente independiente y representaría en la jerarquía el anillo -3.

miércoles, 27 de diciembre de 2023

¿Qué son las APT’s?


    Si seguimos las noticias relacionadas con la ciberseguridad, aunque no estemos en el mundillo, seguramente habremos escuchado que se han producido ciberataques como secuestros de equipos o ataques de denegación de servicio. Da igual cuando leas esto puesto que con el tiempo se han ido incrementando los ataques a diversos objetivos como los equipos de empresas, secuestro de cuentas y perfiles en redes sociales de individuos o la toma de control de dispositivos del Internet de las cosas. Estos ataques son muy graves y van dirigidos a diferentes objetivos e infraestructuras, incluido instituciones. Y el origen de estos ataques son las APT, pero ¿Qué son las APT’s? ¿Cómo actúan las APT’s? ¿Qué Amenazas representan las APT’s? Y en un escenario real ¿Cuál puede ser la APT más grave o peligrosa?

    Antes de que te vuelvas loco buscando toda esta información, vamos por partes. El término APT viene de Advanced Persitent Threat, o Amenaza Persistente Avanzada en castellano. Hace referencia a Malware o software malicioso muy perjudicial y complejo. Además, el término APT a veces también se usa para referirse a los grupos de cibercriminales que desarrollan y utilizan estos malwares.

¿Qué características tienen estos malwares o Amenazas persistentes avanzadas?

Las APT se caracterizan por:

  1. Son amenazas avanzadas, porque tienen grandes capacidades para explotar una o varias vulnerabilidades en el objetivo.

  2. Son persistentes, porque hacen uso de varias formas de infección para garantizar que dure lo máximo posible.

    Tenemos que tener claro que este tipo de amenaza busca causar realmente un daño en su víctima. Normalmente los grupos que desarrollan estas amenazas son organizaciones de ciberdelicuentes o grupos delictivos, empresas o estados/Nación. Estas Organizaciones cuentan con suficientes recursos y motivación para tener éxito en sus ataques. Podemos encontrar información de los diferentes grupos de cibercriminales o APT’s en la página web de MITRE: https://attack.mitre.org/groups/

En esta página web encontraras:

  1. Descripciones de grupos de amenazas: Información detallada sobre grupos específicos de amenazas, sus alias conocidos, motivaciones, objetivos y víctimas típicas.

  2. Tácticas y técnicas utilizadas: Una lista de tácticas, técnicas y procedimientos empleados por estos grupos de amenazas para comprometer sistemas, moverse lateralmente, evadir la detección, entre otras actividades.

  3. Herramientas y malware asociados: Información sobre herramientas y malware específicos utilizados por cada grupo de amenazas, junto con detalles sobre su funcionalidad y métodos de operación.

  4. Referencias y enlaces de interés: Vínculos a informes de investigaciones, análisis de incidentes y otros recursos relacionados que profundizan en los detalles de las actividades y tácticas de estos grupos de amenazas.


    Las APT’s no atacan a cualquiera. Estos grupos atacan a personas de las que pueden obtener información privilegiada. Por lo que generalmente están dirigidas a una víctima concreta. Los grupos que las crean tiene información precisa del objetivo al que van dirigidas para poder hacerle el máximo daño y/o poder penetrar en el mayor número de equipos. Estos grupos estudian a su victima muy concienzudamente, recopilan la máxima información sobre ellos, utilizan técnicas avanzadas de OSINT (Inteligencia de fuentes abiertas) para encontrar todo tipo de datos del objetivo como sus e-mails publicados en Internet, números de teléfono, analizan sus perfiles en redes sociales para encontrar servicios a los que están subscritos, el banco en el que tienen sus ahorros, que hábitos y comportamiento tiene en la red, utilizan técnicas de ingeniería social para suponer o averiguar contraseñas. En resumen, saben perfectamente quién es su víctima. Esto requiere tiempo y trabajo por lo que estos equipos están formados por más de una persona, y están especializados en varios campos de la ingeniería informática.

    Pueden hacer usos de botnet, es decir, conjuntos de dispositivos que han sido comprometidos y actúan como zombies. Estos dispositivos quedan bajo el control de cibercriminales y pueden realizar todo tipo de acciones maliciosas, como mandar cientos o miles de peticiones a la vez a un servidor o servicio en concreto para tumbarlo y que quede inaccesible (lo que se conoce como un ataque de denegación de servicio distribuido). Hay cantidad de equipos que se pueden comprometer en el Internet de las cosas, como Cámaras Ip, termostatos, asistentes inteligentes por voz, televisores inteligentes, móviles, tabletas. Cualquier dispositivo inteligente es susceptible de ser corrompido.

    Otra característica relacionada con los servidores de control que utilizan los ciberdelicuentes para controlar todos esos dispositivos zombies es que estos servidores suelen estar en países con malas relaciones diplomáticas con los países de sus objetivos, para que no pueda haber una cooperación internacional. Esto pueden lograrlo estando físicamente en ese país, o mediante una conexión remota, como por ejemplo una conexión VPN.

    Estas amenazas son realmente sigilosas. Sus creadores pasan tiempo diseñándolas y gastan recursos económicos comprando o descubriendo procesos de ejecución que son desconocidos y por lo tanto no han podido ser parcheados (lo que se conoce como vulnerabilidades Zero-day). De hecho tu máquina puede estar infectada y no saberlo nunca. Y eso es realmente peligroso. La infección puede provocarse por varios métodos, como un correo electrónico, una web que se hace pasar por otra (esto se conoce como phising personalizado), o por una descarga a través de un servidor web comprometido. Incluso puede infectarse al introducir un dispositivo USB corrupto.

    Algunos ejemplos de APT’s son Lojax, Stuxnet, MirageFox o DeepPanda.

    El grupo cibercriminal Fancy Bear (también conocido como APT28) es un grupo de ciberespionaje ruso al que se le atribuye el desarrollo del malware LoJax.

    Lojax es un malware que sobrevive al formateo del disco duro y la posterior reinstalación del sistema operativo. Es un tipo de rootkit que se implanta en la BIOS, es decir, un programa que accede a los niveles administrativos de la raíz de un ordenador permaneciendo oculto. LoJax fue el primer rootkit detectado que atacaba directamente a UEFI. UEFI es la evolución de la tradicional BIOS. El propósito de la BIOS, y de UEFI, es arrancar el ordenador y se almacena en una memoria flash situada en la placa base, lo que significa que es independiente del sistema operativo. LoJax funciona haciendo uso de una vulnerabilidad de un software antirrobo que viene instalado en la UEFI de muchos portátiles denominado Computrace Lojack. El malware sobrescribe al software original en la BIOS ocultando el código malicioso desde el sistema operativo Windows. De esta manera, la raíz más básica de un sistema informático, como es parte del sistema de arranque, pasa a estar bajo control total del cibercriminal.

    Otra conocida APT, famosa porque consiguió atrasar el plan nuclear de Irán, es Stuxnet. Este malware se identificó en 2010 y estaba dirigido a las centrifugadoras de Uranio de plantas nucleares de Irán. Hacia fallar las centrifugadoras sin una causa aparente durante algunos meses. Este comportamiento malicioso se repetía de manera aleatoria en el tiempo, saboteando los esfuerzos Iraníes de desarrollar un plan nuclear. Stuxnet fue un malware muy preciso ya que fue dirigido, actuó de forma silenciosa durante bastante tiempo y era muy complejo. En este caso la infección comenzó con una memoria USB conectada a una máquina. Después el malware explotaba varios Zero-day y provocaba el comportamiento errático en el software de las centrifugadoras.

    Otra APT algo más reciente es la creada por el grupo conocido como APT15 o también conocidos como Vixen Panda. Este grupo es conocido por sus trabajos de ciberespionaje contra empresas y organizaciones de diversos países diferentes, dirigidas a diferentes sectores como la industria petrolera, industria militar y otro tipo de empresas. Su metodología de acción es aprovechar el software ya disponibles instalados en la computadora para operar mediante credenciales que hayan robado por otros métodos, primero para recopilar información desde dentro y después para adaptar su malware específicamente al objetivo. Se cree que Vixen Panda esta vinculado al Gobierno chino.

    Uno de los malware más populares utilizado por este equipo es MirageFox, una versión mejorada de otro malware que se conoció en 2012, conocida como Mirage. La razón por la que se ha denominado MirageFox en lugar de solo Mirage, es porque al analizar el código se ha encontrado comentarios nombrando el código como MirageFox. La forma de distribuir este malware es producir un archivo binario legitimo de algún programa real, como puede ser el instalador de un antivirus. Una vez ejecutado el binario el malware se ejecuta secuestrando algún archivo DLL de la máquina para cargar el DLL correctamente en un proceso de aspecto legítimo. Un archivo DLL consiste en un tipo de archivo comúnmente utilizado en Windows con instrucciones diversas a las que los programas y aplicaciones pueden recurrir para llevar a cabo determinadas funciones. Este malware no deja evidencia de ningún tipo de persistencia. El resto de MirageFox funciona de manera similar a Mirage, el primer malware del que sea reciclado su código. Primero recopila información sobre la computadora, como el nombre de usuario, información de la CPU, la arquitectura, etc. Luego envía esta información al servidor de control, abre una puerta trasera y espera que le lleguen las ordenes desde el servidor de control. Además puede modificar archivos, iniciar procesos, terminarse a sí mismo y otras funcionalidades. La persistencia podría producirse por el envío de un comando desde el servidor de Control a la computadora infectada. Algunas características particulares son que el servidor de control se encuentra ubicado en la red local de la organización o empresa lo que significa que primeramente APT15 se infiltra mediante unas credenciales robadas, como puede ser la clave privada de una conexión VPN. MirageFox es otro claro ejemplo de que las APT realizan una gran cantidad de trabajo de reconocimiento y se hacen a medida para un objetivo en concreto.


    Otro ejemplo es Deep Panda. La principal característica de esta APT es la fuga de información. El malware se ejecuta sencillamente en la memoria RAM, para no dejar rastro alguno en el PC, y no ser detectada en un análisis forense posterior. Deep Panda intenta habilitar alguna forma de control remoto y después crea un archivo comprimido con datos relevantes para luego ex-filtrarlos. Se cree que Deep Panda estaba creado por alguna organización China con el objetivo de robar información privilegiada.


    Estos son algunos ejemplos de lo que son las APT’s y lo que pueden hacer. Pero, puestos a imaginar, ¿cuál puede ser la peor APT que se pueda desarrollar? Para contestar esta pregunta debemos conocer un poco la arquitectura de los PC actuales. Desde 2005 empezó a introducirse en los chipset de las placas Intel un componente llamado Intel Management Engine. Y en los chipset de los microprocesadores AMD otro componente llamado AMD Platform Security Processor.

¿Qué son estos componentes y qué funciones tienen?

    En principio estos componentes nacieron para darle solución a problemas de la tecnología de la información. Como por ejemplo la administración a distancia de servidores sin tener que estar físicamente junto al ordenador. Esto facilita mucho la tarea de un administrador de sistemas, y más si imaginamos los grandes centros de datos con cientos de servidores trabajando a la vez. No es rentable estar presente en cada uno de esos PC’s.

    Con el tiempo y gradualmente estos componentes fueron añadiendo capacidades aparentemente no administrativas y actualmente están presentes en todos los ordenadores de escritorio, portátiles y servidores. Están compuestos de código propietario (es decir, su código fuente no está disponible), lo que significa que lo que podemos conocer acerca de ello, es por investigadores que se han encargado de hacer ingeniería inversa del código, han estado experimentando con el Intel Management Engine y han estudiando su comportamiento. Además de haber leído, previamente, toda la documentación publicada acerca de él.

    Estos investigadores ponen de manifiesto que el Intel Management Engine disponen de un bus de comunicación seguro con el que puede comunicarse con otros dispositivos. Incluye un motor criptográfico, una memoria ROM y RAM interna, controladores de memoria y un motor de acceso de memoria directa para acceder a la memoria principal del sistema operativo que esta corriendo el PC. También puede reservar una región de la memoria RAM externa para suplementar la reducida memoria RAM que tienen. Además cuentan con acceso a la red.

    Se puede decir que el Intel Management Engine y el AMD Platform Security Processor es un PC dentro de otro PC. Su programa de arranque, que se encuentra almacenado en la BIOS, carga un firmware desde la memoria flash del PC. Este firmware está firmado con una clave criptográfica. Si el firmware que se carga no está firmado por una clave del proveedor específica, como puede ser Intel en el caso del Management Engine, la ROM de arranque no cargará ni ejecutará el firmware y el núcleo se detendrá, por lo que el PC no arrancará o se apagará al rato de encenderse. Esto significa que el código que controla el Intel Management Engine no puede ser sustituido.

    El Management Engine cuenta además con la tecnología AMT que soporta un servidor web y un código de aplicación que permite a los usuarios remotos encender, apagar, ver información y administrar el PC. Se puede usar de forma remota incluso cuando el PC está apagado (a través de Wake-on-Lan). El tráfico de red se cifra mediante bibliotecas SSL / TLS. Por lo que las vulnerabilidades en esta biblioteca pueden llevar a graves vulnerabilidades en el Intel Management Engine.

    Hoy en día, estos módulos administrativos controlan todo lo que hay en la RAM, todo lo que se muestra en pantalla y puede encender o apagar la PC si está en estado de hibernación. Tienen acceso al control del ventilador, acceso al sistema anti robo, puede leer todos los archivos abiertos, saltarse el cortafuegos local y examinar todas las aplicaciones en ejecución. En resumen, controla toda la placa base.

    Si hacemos un análisis racional de todas las particularidades que presenta, es una ventaja que todas esas características se ejecuten en una CPU separada y aislada del sistema operativo principal, porque se tiene un sistema más seguro, evitando que un simple virus se pueda hacer con el control de todo el chipset. Pero tiene algunos aspectos oscuros. Por ejemplo, en el caso de Intel Management Engine, el “interruptor de apagado” de las versiones más modernas de este modulo, conocido como HAP bit no estaba documentado y tuvo que ser encontrado por ingeniería inversa. Los chipset más antiguos contaban con un interruptor conocido como AltMeDisable bit.

    Sabiendo todas estas características, es un dispositivo demasiado jugoso para todos los grandes cibercriminales y como es normal, también un objeto de estudio para los investigadores en ciberseguridad. Con todas las capacidades de las que dispone, podría convertirse en un arma de ciberespionaje excepcional.

    A lo largo del tiempo se han encontrado varias vulnerabilidades en el IME. El 1 de mayo de 2017, Intel confirmó varias vulnerabilidades de elevación de privilegios en todos los procesadores desarrollados desde 2008 hasta 2017. En su mayoría el método de explotación de estas vulnerabilidades era de forma local, por lo que hacía falta acceso físico al dispositivo. Por lo que aunque tuviera una alta peligrosidad, la necesidad de acceso al equipo disminuía la gravedad de la vulnerabilidad. Pero existía una vulnerabilidad más grave, la CVE-2017-5689, que se encontraba en la tecnología AMT para computadoras de propósito empresarial. La Tecnología AMT se ejecuta en IME. AMT ofrece a los propietarios de dispositivos la administración remota de su computadora, como encenderla o apagarla y reinstalar el sistema operativo. Esta vulnerabilidad era de extrema gravedad porque podía ser explotada en remoto y podía permitir acceso y control total del equipo. Todas estas vulnerabilidades fueron parcheadas.

    Algo a considerar es que en las revelaciones de Snowden de 2013, no figuraba ningún exploit para el Intel Management Engine o el AMD Platform Security Processor. Y más recientemente, en el verano de 2016, un grupo de cibercriminales llamado ShadowBrokers, robó varias de las ciberarmas que tenía la NSA y se filtró a la prensa el catálogo y características de estas. En ellas tampoco aparecía ninguna que hiciera uso de algún exploit para el IME.

    Sabemos que las organizaciones de cibercriminales cuentan con muchos recursos y en alguna de ellas podría haber algún genio de la ingeniería inversa, que pudiera encontrar alguna vulnerabilidad y desarrollar algún exploit Zero-day remoto. Esto sería la puerta trasera definitiva, una verdadera pesadilla del ciberespionaje ya que tendría acceso completo al PC y podría hacer a su antojo lo que quisiera.

    Evidentemente los ingenieros de Intel y AMD conocen esto y las pocas vulnerabilidades que han sido conocidas siempre han sido corregidas.