Análisis de malware

Puerta trasera de la NSA, parte 2, BULLDOZER: y aprenda cómo hacer un implante de hardware de la NSA

febrero 14, por Darmawan Salihun

Este artículo es la segunda parte de una serie sobre los componentes internos de la puerta trasera del BIOS de la NSA. Esta parte se centra en BULLDOZER, un implante de hardware que actúa como gotero de malware y “centro” de comunicación inalámbrica para operaciones encubiertas de la NSA. A pesar de que BULLDOZER es un hardware, todavía uso la palabra “malware” cuando me refiero a él porque es un hardware malicioso. Quizás el término “malware” debería referirse tanto al software malicioso como al hardware malicioso, en lugar de referirse únicamente al primero.

Me gustaría señalar por qué BULLDOZER está clasificado como malware en “modo dios”. Al contrario de DEITYBOUNCE, BULLDOZER no es un nombre en el reino de los “dioses”. Sin embargo, BULLDOZER proporciona capacidades similares a las trampas del “modo dios” en los videojuegos, que hacen que el jugador que lo usa sea casi invencible, para su carga útil, GINSU. Por lo tanto, todavía es adecuado llamarlo malware en modo dios. La presencia de BULLDOZER es muy difícil de detectar, incluso con la herramienta antimalware más sofisticada durante su posible período de implementación. En cuanto a GINSU, analizaremos GINSU en detalle en la próxima entrega de esta serie.

El documento del servidor ANT de la NSA, filtrado por Edward Snowden, describe brevemente BULLDOZER. Este artículo presenta un análisis sobre BULLDOZER basado en las implicaciones técnicas de la información proporcionada por el documento de la NSA. A pesar de carecer de muchos detalles técnicos, aún pudimos realizar un análisis técnicamente sólido de BULLDOZER basado en BIOS y tecnología de hardware el día que BULLDOZER entró en funcionamiento, al igual que en el caso DEITYBOUNCE. 🙂

Introducción al combo de malware GINSU-BULLDOZER

BULLDOZER no funciona de forma aislada. Tiene que estar emparejado con el malware GINSU para poder funcionar. Como verá en la próxima entrega de este artículo, GINSU es una ROM de expansión PCI maliciosa. Por lo tanto, en este punto, supongamos que GINSU es de hecho una ROM de expansión PCI maliciosa y BULLDOZER es el hardware donde se ejecuta GINSU. Esto significa que BULLDOZER es una tarjeta complementaria PCI, que está en línea con la información del documento del servidor ANT de la NSA.

Antes de proceder a analizar BULLDOZER, veamos el contexto donde trabajan BULLDOZER y GINSU. GINSU y BULLDOZER son una combinación de software y hardware que deben estar presentes al mismo tiempo para funcionar. Necesitamos mirar el contexto donde operan GINSU y BULLDOZER para comprender su funcionamiento interno. La 1 muestra el despliegue de GINSU y BULLDOZER en la red de destino.

1 Concepto Ampliado de Operaciones de GINSU. Cortesía: Datos del producto NSA ANT

La 1 muestra el hardware BULLDOZER implantado en una de las máquinas de la red de destino. El Centro de operaciones remotas (ROC) de la NSA se comunica a través de OMNIGAT con la máquina explotada a través de una red inalámbrica no especificada. Esto implica que el combo de malware GINSU-BULLDOZER se dirige a máquinas en redes aisladas o máquinas ubicadas en una red que es difícil, pero no imposible, de penetrar. En el último caso, utilizar máquinas con hardware implantado con malware es más económico y/o más sigiloso en comparación con el uso de un enfoque “normal” de intrusión en la red informática.

Miremos más de cerca la información técnica revelada por el documento de datos del producto ANT de la NSA, antes de proceder a un análisis técnico más profundo. El documento de datos del producto del servidor ANT de la NSA menciona:

  1. GINSU proporciona persistencia de aplicaciones de software para el implante de explotación de redes informáticas (CNE), cuyo nombre en código es KONGUR, en sistemas con el implante de hardware de bus PCI, BULLDOZER.
  2. La técnica es compatible con cualquier sistema de PC de escritorio que contenga al menos un conector PCI (ranura) y utilice Microsoft Windows 9x,, server, XP o Vista. Se requiere la ranura PCI para la instalación del implante de hardware BULLDOZER.
  3. BULLDOZER se instala en el sistema de destino como un implante de hardware PCI mediante “interdicción”: palabras elegantes para instalar hardware adicional en el sistema de destino mientras se envía a su destino.
  4. Después de la implementación, si KONGUR se elimina del sistema como resultado de una actualización o reinstalación del sistema operativo, se puede configurar GINSU para que se active en el próximo reinicio del sistema para restaurar el implante de software.

Está claro que hay tres componentes diferentes en el combo GINSU-BULLDOZER a partir de los cuatro puntos de información anteriores y de la 1. Son los siguientes:

  1. El primer componente es GINSU. El nombre en clave GINSU es bastante divertido porque se refiere a un cuchillo que fue muy popular en las décadas de 1980 y 1990 a través del marketing de venta directa. Quizás el creador del malware GINSU se refiera a la capacidad superior a la media del cuchillo Ginsu para cortar diversos materiales. GINSU es posiblemente una ROM de expansión PCI maliciosa; la ROM de expansión PCI también se denomina ROM de opción PCI en muchas especificaciones relacionadas con PCI; Usaré ambos términos en este artículo. GINSU podría compartir algunos módulos con DEITYBOUNCE porque ambos son una ROM de expansión PCI maliciosa; consulte el análisis de DEITYBOUNCE en https://resources.infosecinstitute.com/nsa-bios-backdoor-god-mode-malware-deitybounce/ .

    Sin embargo, difiere en muchos otros aspectos. Primero, GINSU se ejecuta en la tarjeta adicional PCI personalizada de la NSA, cuyo nombre en código es BULLDOZER. Por lo tanto, GINSU podría tener un tamaño mucho mayor en comparación con DEITYBOUNCE porque la NSA controla el tamaño de la ROM flash en la tarjeta adicional PCI. Esto significa que GINSU podría incorporar muchas más funciones en comparación con DEITYBOUNCE. En segundo lugar está el tipo de tarjeta complementaria PCI que GINSU podría utilizar. En la 1, el hardware GINSU (BULLDOZER) parece hacerse pasar por una tarjeta complementaria PCI WLAN u otros tipos de tarjetas complementarias PCI para comunicación inalámbrica. Esto implica que el código de clase PCI para el hardware BULLDOZER que contiene GINSU probablemente no sea un controlador de almacenamiento masivo PCI como el utilizado por DEITYBOUNCE. En cambio, es muy posible que el chip BULLDOZER PCI utilice un controlador inalámbrico PCI.código de clase.

  2. El segundo componente se llama BULLDOZER. Este nombre en clave quizás se refiere a la capacidad de BULLDOZER para empujar grandes cantidades de materiales a su lugar previsto, lo que en el contexto de GINSU proporciona la capacidad de empujar la carga útil final (KONGUR) a los sistemas de destino. En este contexto particular de malware, BULLDOZER se refiere al implante de tarjeta adicional PCI (hardware) instalado en la máquina de destino. BULLDOZER es una tarjeta complementaria PCI personalizada. Es muy probable que se haga pasar por una tarjeta complementaria PCI WLAN porque proporciona una función de comunicación inalámbrica que requiere un determinado tipo de antena. Sin embargo, esto no impide que BULLDOZER se haga pasar por otro tipo de tarjeta adicional PCI, pero la presencia de una antena físicamente más grande en la tarjeta PCI WLAN podría aumentar la intensidad de la señal inalámbrica. Por lo tanto, la NSA podría utilizar el factor de forma de la tarjeta PCI WLAN a su favor. Más adelante profundizaremos en la implementación de BULLDOZER.
  3. El tercer (último) componente se llama KONGUR. KONGUR es un nombre un poco misterioso. Puede referirse a la montaña Kongur Tagh en la Región Autónoma Uigur-Xinjiang de China. Esto posiblemente podría significar que el combo GINSU-BULLDOZER fue ideado para una campaña para infiltrarse en los sistemas informáticos chinos. Después de todo, la Región Autónoma Uigur de Xinjiang es famosa por la rebelión de su pueblo contra el gobierno central chino. Sin embargo, esto no significa que el combo GINSU-BULLDOZER no se haya utilizado contra otros objetivos en otras campañas. KONGUR es un malware de Windows dirigido a Windows 9x,, XP, Server y Vista. GINSU proporciona el mecanismo de entrega y reinstalación de KONGUR. Podemos ver a KONGUR como la carga útil del combo GINSU-BULLDOZER. Es posible que KONGUR también funcione en derivados de Windows Vista,

Este artículo no profundiza en KONGUR y GINSU; la atención se centra en su mecanismo de entrega de hardware, el malware BULLDOZER. El combo de malware GINSU-BULLDOZER es el segundo malware de BIOS de la NSA que analizamos y que “abusa” de la ROM de expansión PCI, después de DEITYBOUNCE. Bueno, podríamos decir que a la NSA le gusta bastante esta técnica. Aunque, como verás más adelante, es un cariño justificado. De todos modos, esta hipótesis sobre la combinación GINSU-BULDOZER seguramente tendrá sutiles imprecisiones porque no tengo ninguna muestra de la combinación de malware que respalde mis afirmaciones. Estoy muy abierto a críticas constructivas en este sentido.

Ahora vamos a analizar los detalles técnicos del BULLDOZER. Sin embargo, si aún no está familiarizado con el protocolo de bus PCI, lea la primera parte de esta serie ( https://resources.infosecinstitute.com/nsa-bios-backdoor-god-mode-malware-deitybounce/ ). Hay enlaces en ese artículo que desglosan con más detalle los conocimientos previos necesarios, en caso de que aún no esté al día.

BULLDOZER: Tarjeta complementaria PCI maliciosa de la NSA

En este apartado profundizamos en detalles de los procedimientos que probablemente realiza la NSA para crear el implante de hardware BULLDOZER. Seguramente, el tipo exacto de hardware utilizado por la NSA puede ser diferente. Sin embargo, trato de establecer la analogía más cercana posible a partir de la base de conocimientos de dominio público.

A pesar de la superioridad de la NSA en comparación con el sector privado, todos estamos sujetos a las leyes de la física y debemos cumplir con el protocolo de hardware en los sistemas de destino. Por lo tanto, el enfoque de la NSA para construir BULLDOZER no podría ser muy diferente a la explicación de este artículo. En la sección Resumen de la implementación de BULLDOZER , intento dibujar las hipótesis más lógicas sobre el implante de hardware BULLDOZER, basándome en la explicación del proceso de diseño y creación de una tarjeta complementaria PCI similar a BULLDOZER.

Las tarjetas complementarias PCI se instalan en las ranuras de expansión PCI de la placa base. La 2 muestra un ejemplo de tarjeta complementaria PCI. Esta tarjeta complementaria PCI es una tarjeta PCI WLAN. La 2 resalta el chip “controlador” PCI de Ralink (un controlador WLAN) y el conector de la ranura PCI en la tarjeta complementaria. El término “controlador” es un nombre genérico que se le da a un chip que implementa la función principal en una tarjeta complementaria PCI. La documentación de desarrollo de hardware PCI suele utilizar este término, al igual que las especificaciones relacionadas con PCI.

2 Ejemplo de tarjeta complementaria PCI. Cortesía: D-Link.

Utilizo una tarjeta PCI WLAN como ejemplo porque el concepto de funcionamiento extendido de GINSU implica que el implante de hardware BULLDOZER es una tarjeta controladora inalámbrica PCI. En cuanto a qué tipo de protocolo inalámbrico utiliza, no lo sabemos. Pero el punto es que BULLDOZER podría hacerse pasar por una tarjeta PCI WLAN para lograr el máximo sigilo. Así parecería inofensivo. La 2 no muestra la presencia de ninguna ROM flash en la tarjeta complementaria PCI. La tarjeta complementaria PCI normalmente almacena el código ROM de la opción PCI en la ROM flash. El propósito de la 2 es simplemente mostrarle la apariencia típica de la tarjeta adicional PCI para comunicaciones inalámbricas. Nos ocuparemos del tema de la ROM flash más adelante.

Tarjeta complementaria PCI en PC de escritorio OEM alrededor de

Ahora, veamos cómo se podría implantar una tarjeta de este tipo en una PC de escritorio típica de. Una de las PC de escritorio de un fabricante de sistemas que todavía tenía una ranura PCI en es la PC de escritorio Lenovo ThinkCentre M57. Elegí una computadora de escritorio Lenovo como ejemplo porque sus productos se usaban ampliamente en China, además de en otras partes del mundo. Probablemente podría ser una de las víctimas de la campaña GINSU-BULLDOZER. ¿Quién sabe? El Lenovo ThinkCentre M57 tiene dos ranuras PCI. Digamos que la NSA “prohibe” dicho sistema. Pueden instalar BULLDOZER en él y luego reemplazar también la guía del usuario para que el implante BULLDOZER parezca una tarjeta complementaria PCI legítima que viene con la PC, en caso de que el usuario consulte el manual antes de usar el sistema.

3 Instrucciones de reemplazo de la tarjeta complementaria PCI Lenovo ThinkCentre M57 (versión editada de las instrucciones originales del Manual de mantenimiento de hardware ThinkCentre). Cortesía: Lenovo.

El Manual de mantenimiento de hardware de Lenovo ThinkCentre incluso viene con instrucciones para reemplazar una tarjeta complementaria PCI defectuosa. La 3 muestra las instrucciones para reemplazar una tarjeta complementaria PCI en un estilo de “vista despiezada”. Las instrucciones de reemplazo de hardware que se muestran en la 3 son una tarea sencilla; cualquier agente de campo de la NSA puede hacer eso.

Codesarrollo de hardware y software de tarjeta complementaria de comunicación inalámbrica PCI

Ahora, veamos los pasos para desarrollar una tarjeta complementaria PCI de comunicación inalámbrica en general, porque suponemos que BULLDOZER entra dentro de esta categoría de tarjeta complementaria PCI. Estoy bastante seguro de que la NSA también sigue el enfoque explicado aquí, a pesar de ser una agencia de espionaje muy avanzada. Probablemente sólo las herramientas y el hardware que utiliza sean diferentes, tal vez hechos a medida.

Desde el punto de vista de los costos, utilizar un enfoque comercial listo para usar (COTS) para crear hardware BULLDOZER sería más rentable, es decir, usar herramientas que ya están en el mercado cuesta mucho menos que las herramientas personalizadas. COTS se benefició de la escala económica y la competencia en el mercado en comparación con las herramientas personalizadas. Además, desde el punto de vista operativo, los sistemas objetivo GINSU-BULLDOZER probablemente evolucionarán después de cinco años, lo que exige el uso de nuevas herramientas. Por lo tanto, la obsolescencia, que suele afectar a las soluciones COTS, no es un problema en la campaña GINSU-BULLDOZER. Este último hecho reforzó mi sospecha de que la NSA muy probablemente utilice el enfoque COTS. Analizaremos este enfoque COTS en breve.

Los pasos “básicos” para desarrollar una tarjeta PCI complementaria y su software variado en general (a través del enfoque COTS) son los siguientes:

  1. Diseño de alto nivel. Este paso implica la decisión de alto nivel sobre qué tipo de chip controlador PCI se crearía para la tarjeta adicional PCI y qué características implementaría el chip y qué chip(s) de soporte auxiliar se requieren. Por ejemplo, en el caso de una tarjeta complementaria de comunicación inalámbrica PCI, normalmente necesitará un chip de procesador de señal digital (DSP) independiente o deberá comprar el diseño lógico DSP de un proveedor de DSP e incorporar ese diseño en su tarjeta PCI. Matriz de puertas programables en campo (FPGA).
  2. Creación de prototipos de hardware. Este paso implica la creación del prototipo de chip controlador PCI con una placa de desarrollo PCI FPGA. Normalmente, el lenguaje utilizado para desarrollar el chip controlador PCI en la FPGA es VHDL o Verilog. Esto depende principalmente del proveedor de FPGA.
  3. Desarrollo de software (controlador de dispositivo). Este paso implica la creación de un controlador de dispositivo prototipo para la tarjeta complementaria PCI para el sistema operativo (SO) de destino. Por ejemplo, si el dispositivo se comercializaría principalmente para usuarios de Windows, entonces la prioridad sería crear un controlador de dispositivo de Windows. En cuanto a otros sistemas operativos de destino, se desarrollarían más tarde o probablemente no se desarrollarían si las demandas del mercado sobre el sistema operativo alternativo no justifican el costo involucrado en el desarrollo del controlador. Este paso normalmente se lleva a cabo en paralelo a la creación de prototipos de hardware una vez que la primera iteración de la versión FPGA del chip está disponible. Algunos proveedores de FPGA proporcionan un controlador de “plantilla” para ciertos sistemas operativos de destino para ayudar con el desarrollo del controlador. De esta manera, el desarrollo del chip del controlador PCI puede realizarse en paralelo con el diseño del chip.http://www.jungo.com/st/products/windriver/ .
  4. Fabricación de chips, también conocida como fabricación de circuitos integrados de aplicación específica (ASIC). En este paso, se finaliza la primera revisión del diseño del chip y el diseño se envía a la planta de fabricación de chips para su fabricación, como TSMC, UMC u otra fábrica de semiconductores por contrato. Sin embargo, este es un paso opcional, porque algunas tarjetas adicionales PCI de bajo volumen hoy en día están hechas de FPGA de todos modos. Si el costo de fabricación del chip no tiene sentido económico en comparación con la creación del producto a partir de FPGA, entonces el producto final utiliza FPGA de todos modos. Bueno, la NSA tiene varias fábricas de semiconductores; por ejemplo, consulte http://www.chron.com/news/houston-texas/houston/article/NSA-plant-in-San-Antonio-shrouded-in-secrecy-4604109 .php . Probablemente se utilizó una de las fábricas de la NSA para fabricar el chip controlador PCI BULLDOZER.
  5. Prueba de compatibilidad en el “combo” hardware-software PCI. El proveedor del chip realiza primero las pruebas de compatibilidad. Si el sistema operativo de destino es Windows, Microsoft también lleva a cabo pruebas de compatibilidad adicionales. En la plataforma Windows existe la llamada prueba “WHQL”. WHQL significa Laboratorios de calidad de hardware de Windows. Las pruebas de Windows Hardware Quality Labs o pruebas WHQL son el proceso de prueba de Microsoft que implica ejecutar una serie de pruebas en hardware o software de terceros y luego enviar los archivos de registro de estas pruebas a Microsoft para su revisión. En caso de que el sistema operativo de destino principal no sea Windows, solo se lleva a cabo la prueba del proveedor de hardware. Es muy probable que la NSA también realice este tipo de pruebas, pero con un propósito completamente diferente, es decir

Los pasos 2 y 3 son en realidad pasos iterativos. El prototipo de hardware PCI pasa por varias iteraciones hasta que madura y está listo para la fabricación. El paso 4 también podría ocurrir como un paso iterativo, es decir, hay varias revisiones del chip. La primera revisión podría tener algún fallo o debilidad de rendimiento que deba mejorarse, a pesar de ser un diseño funcional. En el mundo comercial, los ASIC suelen tener varias revisiones. Cada revisión está marcada como un “paso a paso”. Encontrará la palabra “paso a paso” mencionada en mucha documentación técnica de CPU, chipset o System-on-Chip (SoC).

Hardware BULLDOZER “Simulación”

Ahora, veamos el proceso de desarrollo de una tarjeta complementaria PCI específica, es decir, una tarjeta complementaria PCI con comunicación inalámbrica como función principal. Nos centramos en este tipo de tarjeta complementaria PCI porque BULLDOZER se conecta con el mundo exterior (a OMNIGAT en la 1) a través de una conexión inalámbrica no especificada. Para ello, analizamos con más detalle el paso de creación de prototipos de hardware. Comencemos con algunas decisiones de diseño importantes para emular las capacidades de BULLDOZER, como sigue:

  1. El prototipo debe contar con el hardware necesario para desarrollar un protocolo de comunicación inalámbrico personalizado. La razón es que el protocolo de comunicación inalámbrica utilizado por BULLDOZER para comunicarse con OMNIGAT debe ser lo más sigiloso posible, a pesar de probablemente utilizar la misma antena física que una tarjeta PCI WLAN.
  2. El prototipo debe tener implementado un hardware ROM de expansión PCI. La razón es que GINSU es un código ROM de expansión PCI malicioso que debe almacenarse en un chip ROM de expansión PCI funcional para funcionar.
  3. GINSU es configurable o, al menos, puede activarse opcionalmente, según el documento del servidor ANT de la NSA. Esto significa que debe haber algún tipo de memoria no volátil en el prototipo para almacenar los parámetros de GINSU. Podría tener la forma de un chip de RAM no volátil (NVRAM), como en el caso de DEITYBOUNCE. Almacenar los datos de configuración en una ROM flash u otros tipos de ROM es bastante improbable, dada la naturaleza de la ROM flash que requiere un procedimiento bastante complicado para reescribirla.

El siguiente paso es elegir el kit de creación de prototipos para el hardware. Hay muchas placas de prototipos PCI FPGA en el mercado. Examinaremos uno de ellos de Sundance ( http://www.sundance.com ). Probablemente Sundance sea un proveedor muy desconocido para usted. Sin embargo, este proveedor es uno de los proveedores que proporciona una placa de desarrollo PCI para una aplicación de radio definida por software (SDR). Quizás se pregunte, ¿por qué elegiría una placa de desarrollo PCI SDR como ejemplo? La razón es simple, porque SDR es el mejor enfoque cuando desea desarrollar su propio protocolo inalámbrico. Puede sintonizar la frecuencia, el tipo de modulación, el perfil de potencia del transmisor y otros parámetros necesarios para que el protocolo sea lo más sigiloso posible.

“Simulación” de hardware BULLDOZER con kit de desarrollo SDR Sundance SMT8096

Generalmente hay más de una FPGA en una placa de desarrollo PCI SDR típica. Vamos a analizar uno de los productos de Sundance que estaban disponibles en el mercado antes de, el año en que estaba operativo el combo de malware GINSU-BULLDOZER. Elegí el kit de desarrollo Sundance SMT8096 SDR como ejemplo en este artículo. Este kit estuvo disponible en el mercado alrededor de. El kit consta de varias placas conectadas con una placa “portadora PCI” que actúa como host de todas las placas conectadas. La placa portadora PCI conecta todo el kit a la ranura PCI del PC de desarrollo. La 4 muestra todo el hardware del kit de desarrollo SDR Sundance SMT8096.

4 Kit de desarrollo SDR Sundance SMT8096. Cortesía: Sundance Multiprocessor Technology Ltd.

La 4 muestra los componentes del kit de desarrollo SDR Sundance SMT8096. Como puede ver, el kit de desarrollo consta de varias placas de circuito de la siguiente manera:

  • Placa SMT395-VP30, que contiene el chip Texas Instrument TI DSP C6416T y la FPGA Xilinx Virtex II Pro. El chip TI DSP C6416T proporciona el procesamiento de señal principal en el kit de desarrollo, mientras que el FPGA Virtex II proporciona la parte de procesamiento de señal reconfigurable. En realidad, es la FPGA de esta placa la que proporciona el término “software” en la parte “definida por software” de la abreviatura SDR.
  • La placa SMT350 proporciona las funciones de convertidor analógico a digital (ADC)/convertidor digital a analógico (DAC). Esta placa proporciona dos funciones. Primero, recibe la entrada analógica de la antena de entrada y luego convierte esa entrada en su representación digital equivalente antes de enviar el resultado a la placa de procesamiento de señales. En segundo lugar, recibe la salida digital de la placa de procesamiento de señales y convierte esa señal digital en una señal analógica para enviarla a la antena de salida. La antena de entrada y salida puede ser igual o diferente, según el diseño general de la solución SDR.
  • La placa SMT368 proporciona otra FPGA, una FPGA Xilinx Virtex 4 SX35. Esta placa proporciona la función de conversión de “protocolo/formato de datos” como se puede ver en la 5 (diagrama de bloques del kit de desarrollo SDR Sundance SMT8096).
  • SMT310Q es la placa portadora PCI. Es esta placa la que se conecta a la placa base del host (PC de escritorio) a través del conector PCI. Esta placa proporciona la interfaz lógica y física PCI en la PC host.
  • La 5 muestra el diagrama de bloques de todo el kit de desarrollo SDR. Ayuda a comprender las interacciones entre los componentes del kit de desarrollo SDR.

    5 Diagrama de bloques del kit de desarrollo Sundance SMT8096. Cortesía: Sundance Multiprocessor Technology Ltd.

    Veamos la placa portadora PCI SMT310Q, porque esta placa es la visible desde la perspectiva del BIOS de la placa base. Nos centraremos en la tecnología necesaria para comunicarse con el PC anfitrión en lugar de en la tecnología necesaria para la comunicación inalámbrica, porque no tenemos más pistas sobre esta última. Además, de ninguna manera soy un experto en tecnología de comunicación por radio.

    La placa portadora PCI SMT310Q tiene un chip puente PCI QuickLogic V363EPC, que cumple con las especificaciones PCI 2.1. Este chip fue desarrollado por V3 Semiconductor, antes de que QuickLogic comprara la empresa. El puente PCI V363EPC conecta los dispositivos del kit de desarrollo SMT8096 a la placa base de la PC host, tanto lógica como eléctricamente, a través del conector de ranura PCI. Este chip puente PCI no es un puente PCI a PCI, sino un puente entre el bus personalizado utilizado en el kit de desarrollo SMT8096 y el bus PCI en la PC host. El término correcto es Bus local a puente PCI . En este contexto, el bus local se refiere al bus personalizado del kit de desarrollo SMT8096, que se utiliza para la comunicación entre los chips de las placas del kit de desarrollo.

    En este punto, hemos tomado decisiones de diseño importantes, hemos elegido el kit de desarrollo de hardware PCI con el que trabajar y hemos analizado el chip específico de PCI en el kit de desarrollo. Es hora de entrar en detalles de la implementación del diseño. Los pasos para implementar el diseño son los siguientes:

    1. Suponiendo que el protocolo de comunicación inalámbrica se haya definido detalladamente, el primer paso es implementar el protocolo en forma de código de firmware del chip DSP y diseños FPGA. El código de firmware del chip DSP consta del código de inicialización necesario para inicializar el propio chip DSP, el código para inicializar la interconexión entre el chip DSP y el bus local al puente PCI a través de la interfaz del bus local y el código para otras funciones auxiliares. Suponiendo que utilizamos el kit Sundance SMT8096, este paso consiste en crear el código de firmware para el chip DSP TIC6416T de Texas Instrument y crear los diseños de FPGA para los Xilinx Virtex-II y Xilinx Virtex-4 SX35. No vamos a profundizar en los detalles de este paso, ya que no conocemos los detalles del protocolo de comunicación inalámbrica.
    2. El segundo paso es personalizar el hardware para que admita la ROM de expansión PCI. Esto es necesario porque asumimos que el malware GINSU es un código ROM de expansión PCI malicioso. En este paso configuramos la placa portadora SMT310Q para que admita la ROM de expansión PCI porque esta placa es la que interactúa con el bus PCI del host (escritorio x86/x64), tanto a nivel lógico como físico. Tenemos que habilitar el registro de dirección base de la ROM de expansión (XROMBAR) en el chip puente PCI QuickLogic V363EPC (Bus local a puente PCI) en la placa portadora SMT310Q a través de la configuración de hardware, y tenemos que proporcionar un chip ROM flash para almacenar la expansión PCI. Código ROM en la placa también. Si no está familiarizado con XROMBAR, consulte mi artículo Ejecución de código malicioso en la ROM de expansión PCI (https://resources.infosecinstitute.com/pci-expansion-rom/ ) para obtener más detalles.

    Ahora, centrémonos en el último paso: personalizar el hardware necesario para que funcione la ROM de expansión PCI. Es la placa portadora SMT310Q la que implementa la compatibilidad con el protocolo de bus PCI en el kit de desarrollo PCI SDR SMT8096. Por lo tanto, vamos a examinar la placa portadora SMT310Q para descubrir cómo podemos implementar la ROM de expansión PCI en ella. Comenzamos con el diagrama de bloques del tablero. La 6 muestra el diagrama de bloques del SMT310Q. El diagrama de bloques no es un diagrama de bloques físico de la placa. En cambio, es un diagrama de bloques lógico que representa las interconexiones lógicas entre los componentes de la placa.

    6 Diagrama de bloques del SMT310Q. Cortesía: Sundance Multiprocessor Technology Ltd.

    La 6 muestra bloques marcados como TIM, es decir, TIM 1, TIM 2, etc. TIM es una abreviatura de Texas Instrument Modules. TIM es una interconexión estándar entre placas que utilizan un chip DSP de Texas Instrument y otras placas. No pude encontrar la última versión de las especificaciones de TIM. Sin embargo, puedes encontrar la versión 1.01 de TIM en la red. A pesar de que TIM implica que a través de esta interconexión se debe conectar un DSP, en realidad se puede conectar cualquier cosa que cumpla con las especificaciones. Es importante saber acerca de TIM, porque lo usaremos para “conectar” la ROM de expansión PCI y también para “conectar” la NVRAM a la placa portadora SMT310Q más adelante.

    La 6 muestra que el puente PCI QuickLogic V363EPC, marcado como puente PCI V3, se conecta a los TIM a través del bus global de 32 bits. El bus global de 32 bits corresponde a las líneas de datos y direcciones multiplexadas LAD[31:0] en la hoja de datos de QuickLogic V363EPC. Esto significa que la conexión lógica y física de QuickLogic V363EPC a la ROM de expansión PCI y la NVRAM en nuestro diseño se basará en el bus global.

    Ahora, veamos cómo QuickLogic V363EPC expone los dispositivos conectados a los TIM en el espacio de direcciones de la CPU del host x86/x64. QuickLogic V363EPC utiliza las llamadas “aperturas de transferencia de datos” para asignar dispositivos conectados a través de LAD[31:0] al espacio de direcciones de la CPU host x86/x64. Estas aperturas son básicamente un rango de direcciones reclamado por los registros de direcciones base PCI (BAR) en QuickLogic V363EPC. La hoja de datos de QuickLogic V363EPC utiliza un esquema de nomenclatura diferente para las barras PCI. La 7 muestra las barras PCI marcadas como registros PCI_BASEx. Los registros PCI_MAPx en la 7 controlan la cantidad de memoria o rango de E/S reclamados por los registros PCI_BASEx. Si es nuevo en los registros de espacio de configuración PCI, mi artículo Ejecución de código malicioso en la ROM de expansión PCI (https://resources.infosecinstitute.com/pci-expansion-rom/ ) tiene una explicación más profunda sobre el tema. Puede comparar los registros de espacio de configuración PCI “estándar” que se explican allí y los que se muestran en la 7.

    7 Registros de configuración PCI de QuickLogic V363EPC. Cortesía: hoja de datos de QuickLogic V363EPC.

    Profundicemos en la “apertura de transferencia de datos” en QuickLogic V363EPC. La “apertura” es básicamente una lógica de reasignación de direcciones, es decir, reasigna direcciones desde el espacio de direcciones de la CPU host x86/x64 al espacio de direcciones local en la placa complementaria PCI SMT310Q. Si es nuevo en la reasignación de direcciones, puede leer una muestra del concepto en https://resources.infosecinstitute.com/system-address-map-initialization-x86x64-architecture-part-2-pci-express-based- sistemas/ . La 8 muestra un diagrama de bloques simplificado de la lógica de apertura QuickLogic V363EPC (reasignador de direcciones).

    8 Lógica de apertura QuickLogic V363EPC

    La 8 muestra que QuickLogic V363EPC afirma dos rangos diferentes en el espacio de direcc