Nuevo análisis de Absolute Computrace

Contenidos

    Resumen

    Este informe es un nuevo análisis del problema de los mecanismos de seguridad implementados en las modernas tecnologías antirrobo incorporadas en el firmware y el BIOS de los portátiles más populares y de algunos ordenadores de escritorio. En particular, hemos analizado de forma individual varios archivos firmware y equipos portátiles. Si bien una investigación anterior de Core Labs ya analizaba la seguridad física y la falta de una adecuada validación de códigos, en este estudio nos hemos concentrado en el aspecto de la seguridad de redes de dichas soluciones. Nuestro propósito en este nuevo estudio es analizar el nivel de seguridad de las comunicaciones del agente Computrace y la posibilidad de una captura remota de su control.

    1. Introducción

    Los modernos sistemas informáticos, tan ampliamente utilizados por los consumidores individuales y por las grandes corporaciones, incluyen una serie de programas preinstalados por los fabricantes de equipos originales (OEM, por sus siglas en inglés) o por vendedores regionales con el fin de promocionar ciertos servicios y productos. Para el usuario corriente puede no ser fácil llegar a comprender todos los riesgos que estos "paquetes adicionales" representan para el sistema. Si bien el usuario o el administrador de sistemas pueden eliminar definitivamente o desactivar la mayoría de estos productos, existen ciertos productos que están diseñados para permanecer en el sistema incluso después de una limpieza profesional del equipo o de un cambio de disco duro. Uno de estos programas son las tecnologías antirrobo ahora tan comunes en los portátiles modernos, como por ejemplo Absolute Computrace. Aunque la intención general en la concepción de las tecnologías antirrobo es buena, su inadecuada implementación puede no sólo inutilizarlas, sino convertirlas en dañinas y extremadamente peligrosas. Creemos que los fabricantes de tecnologías antirrobo deben considerar con suma seriedad la seguridad de sus productos.

    Nuestra investigación comenzó a raíz de un incidente real ocurrido a uno de nuestros colegas, quien observó repetidas caídas del sistema durante el arranque de Windows en un portátil de su familia. El colapso del sistema generaba el vaciado del registro de actividades y de la memoria. El resultado de un análisis inicial de estos incidentes fue el detonante de una investigación en profundidad cuyos resultados conforman este informe.

    La razón por la que el sistema colapsaba era la inestabilidad de uno de los módulos conocido como identprv.dll o wceprv.dll que se cargaba en el campo de dirección de uno de los procesos Service Host del sistema (svchost.exe). Un rápido análisis de los archivos reveló que estos módulos fueron creados por la compañía Absolute Software y que eran parte del programa Absolute Computrace. Absolute Software es una compañía legítima y toda la información sobre el producto Computrace se encuentra disponible en su sitio web oficial, pero el propietario del portátil afectado afirmó que nunca había instalado ni sabía que el programa Absolute Software estaba en su equipo. Podríamos suponer que el OEM o el vendedor habrían preinstalado este programa, pero según un libro blanco de Absolute Software, sólo un profesional de servicio técnico puede hacerlo. A menos que el usuario cuente con su propio técnico o el vendedor le provea este servicio, alguien más habría penetrado en su equipo y lo estaría controlando.

    Podríamos haber obviado este hecho aparentemente sin importancia, pero al poco tiempo descubrimos que otros portátiles propiedad de nuestros investigadores, así como otros equipos corporativos, mostraban las mismas señales de que Computrace estaba instalado en ellos y que estaba funcionando sin ninguna autorización. La situación rápidamente pasó de ser una simple confusión a convertirse en una alarma, y decidimos analizar el caso en profundidad.

    2. Estudios anteriores

    Una de las contribuciones más significativas que se han hecho en este tema es la investigación realizada por Alfredo Ortega y Anibal Sacco, de Core Security Technologies, reflejada en su libro blanco titulado "Deactivate the Rootkit: Attacks on BIOS anti-theft technologies", en el que describen los mecanismos generales de funcionamiento de los productos antirrobo, como Absolute Computrace.

    Este análisis revela el gran riesgo que significan los programas antirrobo incorporados en el BIOS ROM o en el firmware, y demuestra cuán vulnerables son estos módulos ante ataques locales, como los que piden acceso físico, o ante la posibilidad de ejecutar un código en el sistema local. Alfredo Ortega y Anibal Sacco revelan una herramienta que puede usarse para cambiar los parámetros cifrados de registros de Absolute Computrace Agent para ponerlo bajo el control de otro servidor.

    Además, hemos encontrado un blog perteneciente a Bradley Susser publicado en Agosto de 2012, en el que se menciona una vulnerabilidad en el sistema de autenticación del programa LoJack (Computrace). Sin embargo, como no ofrecía suficiente pruebas, decidimos proceder con nuestro propio análisis en profundidad.

    3. Funcionamiento normal de Computrace Agent

    Computrace Agent es una aplicación para Windows que tiene dos variantes: el agente pequeño (Small Agent) y el agente completo. Small Agent es un código con el menor tamaño y la máxima extensibilidad posibles. Este módulo está incorporado en el BIOS PCI Option ROM o en el firmware UEFI. De acuerdo con la patente norteamericana 20060272020 de Absolute Software, en la que se lo llama mini CDA (Agente controlador de comunicaciones), Small Agent está diseñado para verificar si el agente completo está instalado en el sistema y funcionando; si no lo está, descarga la función completa CDA desde el servidor.

    Según esta patente, el módulo de persistencia reside en el BIOS Option ROM:

    BIOS Option ROM

    Option ROM contiene una pequeña sección con módulos de Computrace añadidos por el fabricante del BIOS y escritos en la memoria flash por el fabricante del hardware.

     
    Contenidos del módulo PCI Option Rom Absolute

    En el transcurso de nuestra investigación descargamos y observamos algunas actualizaciones del firmware BIOS desde los sitios web oficiales del fabricante. Actualmente, EFI BIOS puede contener cientos de controladores EFI, aplicaciones y otros módulos comprimidos en una especie de sistema de archivos. Uno de los módulos que encontramos era EFI Application u Option ROM en sistemas antiguos que tenían instalado Absolute Computrace Agent. Entonces, si se intenta volver a actualizar la BIOS con firmware oficial, en realidad se actualiza la nueva versión del agente.

    rpcnetp.exe dentro de autochk.exe dentro de EFI Application dentro de otra EFI-Application dentro de ROM Module

    Encontramos que algunos portátiles con Computrace en el firmware tienen la posibilidad de configurar la función de seguridad de Computrace en BIOS Setup Utility, mientras que otros equipos carecen de ella.

    Parámetros de configuración de BIOS Setup Computrace en Lenovo Thinkpad X1

    Los parámetros de configuración de Computrace no aparecen en el BIOS Setup de ASUS X102BA

    Parece que la posibilidad de activar/desactivar el módulo Computrace es, por desgracia, una responsabilidad opcional de un determinado desarrollador de BIOS Setup Utility y no una política para todos los fabricantes de firmware.

    Etapa 1: el módulo BIOS

    La primera etapa (después de la inicialización del BIOS) consiste en ejecutar los módulos desde Option ROM. En este momento, el código de Computrace busca unidades de disco disponibles y analiza la tabla de partición. Si encuentra las particiones FAT/FAT32/NTFS, localiza la ruta de instalación de Windows y la aplicación autochk.exe. Después, crea un resguardo de las partes del código autochk.exe predeterminadas del sistema y las rescribe con su propio código. Estas partes se guardan como un archivo autochk.exe.bak en un sistema de archivos FAT o como autochk.exe:BAK NTFS ADS, si es un sistema de archivos NTFS ADS. Esto puede ser un indicador de la actividad de Computrace en la etapa uno.

    En algunos sistemas, en los que el módulo Computrace no es parte del BIOS o no puede activarse, se utiliza otro método: el código de activación de Computrace modifica el MBR (Registro de arranque principal) del disco duro y asume el control del equipo en cuanto arranca el sistema. Al parecer, este enfoque no es tan persistente como el descargador del BIOS.

    Etapa 2: autochk.exe

    En esta etapa se activa el archivo modificado autochk.exe y tiene acceso total al sistema de archivos local y al registro del sistema a través de llamadas Windows NT Native API. Su principal objetivo es descargar un archivo local rpcnetp.exe y cambiar el registro del sistema local para crear un nuevo servicio del sistema llamado rpcnetp. El código original autochk.exe se guarda al final.

    Etapa 3: rpcnetp.exe

    Este módulo también se conoce como Small Communication Agent o mini CDA (Agente controlador de comunicaciones), cuyo tamaño es de unos 17Kb y está escrito en lenguaje C.

    Se inicia como un servicio de Windows, pero su funcionamiento no se limita a ser un servicio del sistema. Este archivo ejecutable de Windows PE se copia en otro archivo con la extensión .DLL, modifica las marcas en los encabezados PE para cambiar el archivo Windows PE EXE a uno Windows PE DLL, y lo carga en la memoria. Después de esto, el archivo rpcnetp.exe crea un proceso hijo “svchost.exe” en estado suspendido e inyecta un archivo rpcnetp.dll recién creado en su memoria. Cuando concluye la inyección del DDL y se reinicia el proceso svchost.exe, este crea su propio proceso hijo “iexplore.exe” con el ambiente y permisos del usuario registrado localmente. El nuevo iexplore.exe también se inicia en estado suspendido y se le inyecta el mismo rpcnetp.dll.

    Cuando se reinicia iexplore.exe, puede conectarse con el servidor C&C de Absolute para obtener comandos y descargar otros módulos adicionales y ejecutarlos.

    rpcnetp.exe inicia dos procesos adicionales para comenzar la conexión con el servidor C&C de Absolute

    Esta técnica se utiliza mucho en los programas maliciosos y fue una de las razones del gran interés en los módulos. En realidad, según nuestra experiencia, ningún otro programa legítimo utiliza estas técnicas. Asimismo, este programa aplica un retraso de casi 1 minuto, suponemos con el fin de permitir que, una vez que arranque, el sistema encuentre y se conecte a una red WiFi. Pero también muchas aplicaciones maliciosas lo usan como un truco para neutralizar las soluciones antivirus que se basan en emuladores o cajas de arena.

    Podríamos preguntarnos por qué se necesitan tantos procesos para realizar la sencilla tarea de descargar una actualización. Una respuesta posible es la ofuscación intencional de todo el proceso para protegerse contra la ingeniería inversa. En comparación con un código común, resulta más difícil analizar el mismo código que se está ejecutando como parte de 3 procesos diferentes y que tiene 2 variantes desde el arranque inicial: como archivos DLL y EXE. Sabemos que el procedimiento de punto de entrada de los archivos EXE y DLL difiere por el número de parámetros aprobados al comenzar a funcionar. Si bien las variantes DLL y EXE ejecutan el mismo código, todos los problemas potenciales se manejan bastante bien, para que el código no colapse ni cause inestabilidades.

    Además, hemos visto algunos trucos anti-desmontaje y anti-depuración para dificultar el análisis antivirus. Después de arrancar, rpcnetp.exe elimina las entradas en el registro. Esta entrada se recreará en el próximo reinicio del sistema si rpcnetp.exe no logra conectarse con el servidor C&C.

    Creemos que la razón por la que se ejecuta en el contexto del proceso iexplore.exe es para garantizar la disponibilidad de una conexión a Internet. El proceso svchost.exe, que se ejecuta con permisos del sistema local, inicia iexplore.exe en el ambiente del usuario registrado localmente. Por lo tanto, si el usuario tiene acceso a Internet a través de un servidor proxy, esta conexión se utilizará automáticamente cuando el agente se conecte con el servidor C&C. Pero entonces, ¿por qué mantener un proceso svchost.exe adicional? Al parecer debido a la limitación de los permisos de iexplore.exe. Por ahora, el proceso svchost.exe, que se ejecuta con los permisos del sistema local, se limita a explotar iexplore.exe con permisos de usuario para enviar y recibir datos del servidor. Esto se lleva a cabo mediante el número de CreateRemoteThread, WriteProcessMemory, ReadProcessMemory al que llama el API del sistema. En realidad, el módulo rpcnetp.dll genera varios hilos por cada petición al servidor C&C. Debido a la frecuente creación y terminación de hilos, el funcionamiento de todo el sistema se ralentiza. Hemos registrado y analizado una comunicación entre el agente y el servidor C&C. Vale la pena notar que el agente generó 1355 nuevos hilos en svchost.exe y 452 en iexplore.exe para descargar menos de 150Kb de datos. Las comunicaciones en la red tardaron unos 4 minutos en un enlace de alta velocidad a Internet. Durante este tiempo el agente envió 596 peticiones POST.

    Más adelante en este informe damos más información sobre el protocolo de red de Small Agent.

    Por desgracia, el módulo rpcnetp.exe no contiene ni firmas digitales ni información sobre archivos. Esto no sólo le dificulta al administrador del sistema reconocer una aplicación legítima, sino que también bloquea el mecanismo para validar la integridad del código del módulo. Creemos que esta es una de las fallas más graves en la implementación del módulo. Además, si el atacante establece un atributo de sólo-lectura para el archivo modificado, no será posible remplazarlo con una copia legítima de rpcnetp.exe desde el BIOS.

    Rpcnetp.exe contiene un interesante sello de tiempo. Cuando se recopilan varios enlaces o se exportan sellos de tiempo de diferentes ejemplares, resulta obvio que alguien los ha alterado (nótense los valores repetidos de los bytes dobles en formato hexadecimal del sello de tiempo).  Abajo mostramos algunos valores de sellos de tiempo en formato hexadecimal:

    4aa04aa0
    4aa44aa4
    4aa54aa5
    4aa64aa6

    4f4c4f4c
    4f504f50
    4f954f95
    4fc64fc6

    El ejemplar que analizamos no utiliza estos datos y no queda claro qué tipo de información contiene, pero rpcnetp.exe no tiene información sobre el archivo y podría tratarse de una marca de agua con la versión del agente.

    Después de todo, el principal objetivo de rpcnetp.exe es descargar e iniciar una herramienta de acceso remoto completamente funcional. Se comunica con el servidor C&C mediante las capacidades incorporadas en Small Agent para obtener ejecutables adicionales. El primer ejecutable que se envía al agente es el archivo wceprv.dll, que sirve para cifrar datos. Tras guardar wceprv.dll en el directorio System32, Small Agent lo guarda en su memoria y se conecta con el servidor C&C para obtener un cifrado más seguro. Después, Small Agent descarga archivos adicionales, como identprv.dll, Upgrd.exe y NTAgent.exe (después rebautizado como rpcnet.exe). A continuación, inicia Upgrd.exe que es una herramienta de una sola ejecución y responsable de un procedimiento de mejora: detiene y elimina el servicio rpcnetp vigente y registra e inicia un nuevo servicio para rpcnet.exe ("Remote Procedure Call (RPC).

    Etapa 4: rpcnet.exe

    Cuando el servicio rpcnetp se inicia, procede de inmediato a conectarse con el servidor C&C. Este procedimiento es muy similar al servicio rpcnetp: genera un svchost.exe hijo que crea iexplore.exe bajo la cuenta del usuario local. Al igual que rpcnetp, crea muchos hilos en estos procesos durante la comunicación con el servidor C&C. Este servicio busca configuraciones en varios lugares en el sistema: en la clave del registro, en espacios reservados en el disco duro, y en su propio cuerpo. La configuración indica con qué servidor tiene que comunicarse el agente. Sorprendentemente, se vuelve a conectar con el mismo servidor y el mismo puerto que en el anterior servicio rpcnetp. Todavía no hemos analizado este servicio en su totalidad, pero no cabe duda de que su principal propósito es proporcionar acceso remoto extensible al equipo en el que se ejecuta.

    4. Casos de activaciones no autorizadas

    Creemos que es una buena idea contar con tecnología antirrobo, pero sólo si todo funciona como debe. Cuando algo falla, la tecnología diseñada para proteger al usuario puede convertirse en un arma para atacarlo. No tenemos evidencia de que Absolute Computrace se use como una plataforma para lanzar ataques, pero nos parece muy posible que sea así por algunos incidentes serios e inexplicables.

    Una de las razones para esta profunda investigación fue el descubrimiento de una activación no autorizada del módulo Computrace en el BIOS. Hemos observado varios sistemas que parecían afectados por este misterioso problema.

    La primera reacción natural de los dueños de los portátiles afectados fue eliminar o desactivar esta función de inmediato. Uno de ellos decidió dejar de usar por completo Windows en su equipo por las características de Absolute Computrace. Al parecer, eso nos creó ciertas dificultades en el análisis post-mortem, pero logramos recopilar suficiente información para encontrar los principales sellos de tiempo de las actividades de Computrace Agent.

    Sistema A

    El dueño de este sistema afirma que ni siquiera conocía los productos Absolute y que nunca los instaló ni activó. Sin embargo, este sistema estaba ejecutando el programa Computrace Agent.

    Portátil ejecutando Computrace Agent, perteneciente a nuestro colega

    El usuario señala que compró su portátil el 27 de abril de 2012, y asegura que al comprarlo el sello de garantía estaba intacto. Más tarde ese mismo día, encendió su equipo y arrancó el sistema. La creación de C:Users directory en el disco duro indica la hora exacta (huso horario local) del primer arranque: 20:31 27 abril 2012.

    Luego, configuró el acceso a Internet, que automáticamente generó archivos de configuración del perfil Wireless LAN en C:ProgramDataMicrosoftWlansvcProfiles, que muestra la hora de su creación: 20:52 27 abril 2012.

    Poco después se activó el módulo Computrace rpcnetp.exe y procedió a comunicarse con el servidor C&C. Encontramos que descargó una actualización y la guardó en C:WindowsSysWOW64rpcnet.exe a las 21:29 del 27 de abril 2012.

    Esto es una evidencia de que el dueño adquirió su portátil con Computrace Agent preactivado o activado automáticamente durante el la instalación inicial del sistema.

    Modelo del portátil: ASUS 1225B

    Sistema B

    Este sistema mostraba claras señales de las actividades de Computrace Agent, y su dueño afirma que nunca instaló ni utilizó ninguno de los productos de Absolute Software.

    Portátil de otro colega

    Según la información de nuestro sistema de archivos, C:Users directory se creó el 2012-08-11 15:23:45 (huso horario local). El dueño reconoció que en dicha fecha adquirió su portátil.

    Después, encontramos otros archivos:


    C:WindowsSysWOW64wceprv.dll - 2012-08-11 19:39:41

    C:WindowsSysWOW64rpcnet.exe - 2012-08-11 19:42:29

    C:WindowsSysWOW64Upgrd.exe - 2012-08-11 19:42:44

    C:WindowsSysWOW64rpcnet.dll - 2012-08-11 19:43:07

    Esto confirma que Computrace Agent ya estaba instalado en el equipo el día de su compra. El dueño afirma que rompió el sello de fábrica y arrancó el sistema en la misma tienda, y que después ese mismo día, en su casa, conectó su portátil a su red doméstica WiFi- Tal como sucedió con el Sistema A, esto significa que el agente está preactivado en el Sistema B.

    Modelo del portátil: Samsung 900X3C

    Sistema C

    Durante nuestra investigación intentamos varias veces encontrar Computrace preactivado en varias tiendas de venta de ordenadores. En total, verificamos manualmente más de 150 diferentes configuraciones de varios fabricantes. Para sorpresa nuestra, encontramos un solo sistema que estaba ejecutando rpcnet.net.

    Portátil con Computrace a la venta en una tienda

    No tuvimos la oportunidad de analizar con detenimiento el sistema en la tienda, pero el hecho de que rpcnet.exe estaba ejecutándose, significa que rpcnetp.exe había arrancado y había descargado rpcnet.exe desde Internet. El portátil estaba en venta y cuando preguntamos por qué, uno de los empleados nos explicó que su primer dueño lo había devuelto porque el teclado tenía problemas, pero se reparó el teclado y nuevamente se puso en venta el equipo. Esto quiere decir que se utilizó el portátil y que posiblemente se conectó a Internet en la casa del dueño inicial o en el taller de reparaciones. No queda claro si fue el dueño o el personal del taller de servicio quien activó Computrace, por lo que decidimos no tomar en cuenta este caso.

    Modelo del portátil: Samsung NP670Z5E

    Nos pusimos en contacto con el servicio de soporte técnico de Absolute Computrace y les enviamos los números de serie de los equipos con instalación sospechosa de Computrace Agent, y nos respondieron que dichos números no figuraban en su base de datos. Creemos, por lo tanto, que Computrace no se activó mediante el procedimiento normal de instalación de una aplicación de Absolute Software. La forma en que se activó, quién lo hizo, y sus motivos siguen siendo un misterio.

    Qué se dice en los foros virtuales

    También analizamos varios mensajes en foros de usuarios que afirmaban que Computrace estaba activado en sus equipos. A continuación mostramos algunos ejemplos de estas quejas publicadas en un foro virtual:

    Un usuario afirma que nunca había utilizado productos de Absolute Software, pero que estaba activado en su equipo

    Otro usuario señala que su portátil recién comprado tenía Computrace preactivado

    Otro ejemplo de un usuario que dice que nunca pidió Computrace, pero que estaba activado en su equipo

    Estas y otras quejas de dueños de portátiles pueden indicar el descubrimiento de activaciones no autorizadas de los productos de Computrace.

    5. Alcance potencial del problema

    Mediante la red Kaspersky Security Network obtuvimos datos sobre la cantidad de equipos que tienen Absolute Computrace activado.  En el siguiente mapa se puede ver la distribución geográfica de los portátiles con Computrace Agent activado:

    Distribución de equipos con el agente de Absolute Computrace activado

    Merece la pena destacar que nuestra estadística se limita a los datos anónimos enviados por los equipos de los usuarios de los productos de Kaspersky que tienen KSN activado, lo que da un número mucho menor al de la totalidad de equipos online. Según nuestros cálculos, el número real de usuarios con Computrace Agent activado podría superar los 2 millones. No tenemos información sobre cuántos de estos usuarios saben que Computrace Agent está activado en sus equipos.

    Además, hemos recopilado los nombres de los fabricantes de las tarjetas madre en los equipos con Computrace Agent activado.

    Fabricantes de tarjetas madre en los equipos con Computrace Agent activado

    Hemos comparado este cuadro con el cuadro de los fabricantes más populares de ordenadores (según los datos de Gartner sobre ventas en el último trimestre de 2013).

    Fabricantes más populares de PCs según Gartner

    Podemos ver que excepto Toshiba, los cinco principales fabricantes aparecen entre las seis principales marcas de PCs con Computrace activado. Según Wikipedia "Toshiba preinstaló rpcnetp.exe en el disco duro de algunos de sus portátiles antes de que salieran de fábrica". Esto explica la razón por la que existen tantos portátiles Toshiba con Computrace. Sin embargo, no queda claro por qué dos de los principales fabricantes como Lenovo y HP tienen un número relativamente bajo de Computrace en sus equipos, y los otros dos de este grupo, HACER y ASUS, tienen una gran cantidad de sus equipos con este agente instalado. No hemos encontrado información disponible al público sobre las políticas de ASUS ni de ACER respecto a la activación o preinstalación de Computrace en sus discos duros.

    6. Protocolo de red de Computrace Agent 21

    Poco después de iniciarse, rpcnetp.exe (Small Agent) intenta establecer una conexión TCP con el servidor C&C. Puede conectarse a través de una dirección IP incrustada (hard-code) en su cuerpo, establecida en el registro, o en un lugar oculto en el disco duro. Si falla la comunicación directa mediante la IP, puede intentar resolver un nombre de dominio (generalmente search.namequery.com) y utilizar una nueva IP.

    Se espera que Small Agent descargue y ejecute ejecutables adicionales, aunque no hemos encontrado ninguna función específicamente diseñada para descargar y ejecutar módulos adicionales. Sin embargo, la extensibilidad de su protocolo le permite hacer prácticamente cualquier cosa, como descargar y ejecutar módulos adicionales. La patente norteamericana US20060272020 contiene un interesante párrafo en relación al protocolo de comunicación de rpcnetp.exe.

    La instalación de Persistence Agent en BIOS, por ejemplo, requiere un intenso uso de una extensibilidad diseñada en el protocolo de comunicaciones. Sin esta extensibilidad, Agent sería más grande y necesitaría frecuentes actualizaciones para añadir o cambiar funciones. Tales actualizaciones no son ni prácticas ni económicas, ya que el BIOS está programado en el flash EEPROM de la plataforma y se requieren herramientas especiales (que suelen necesitar la intervención del usuario) para actualizar el BIOS. Asimismo, el fabricante de equipos originales (OEM) realiza pruebas intensivas en el BIOS, puesto que su integridad es crucial para el funcionamiento del ordenador.

    Ahora queda claro que no debemos esperar encontrar una implementación común del mecanismo de actualización. De acuerdo con la patente, Small Agent es compatible con “Un método para leer y escribir en el espacio de memoria de Computrace Agent)”. Básicamente, este es el mecanismo fundamental para ejecutar códigos arbitrarios en el equipo remoto, y es suficiente para cumplir con la tarea de descarga.

    A continuación mostramos cómo luce la comunicación entre Small Agent y el servidor C&C en el sniffer (analizador de paquetes) de red Wireshark:

    Parte de la comunicación de red entre Small Agent y el servidor C&C

    Toda la comunicación consiste en series de peticiones POST y respuestas HTTP. La primera petición que envía Small Agent no tiene carga, pues se trata de una petición POST vacía. El servidor responde con un encabezado HTTP especial, TagId, que se usa hasta el final de la conversación con el agente. Cada respuesta HTTP y las siguientes peticiones POST incluye datos binarios cortos que forman un paquete a procesar.

    Hasta este punto, se usa HTTP de una forma muy sencilla, como transportador de los paquetes del agente. Los paquetes binarios se elaboran mediante el protocolo de comunicación básicas de Computrace. Aunque vemos que el agente inicia una sesión HTTP y envía la primera petición HTTP al servidor, la dirección de la comunicación real es en sentido contrario. Las respuestas del servidor se tratan como peticiones al cliente, el cual las responde en los datos añadidos a la próxima petición HTTP POST.

    La estructura de estos paquetes es la siguiente:

    Todos los paquetes comienzan y terminan con un byte especial "~" (0x7E), que se usa como un separador de paquetes. El siguiente campo de 4 bytes contiene una Address (dirección) de memoria con la cual se trabaja. Si el paquete es de sólo-lectura, entonces Small Agent lee la memoria comenzando desde esta dirección. El número de bytes a leer se especifica en el siguiente campo Size (tamaño) de 2 bytes de largo. Cada paquete contiene anexos de 3 bytes: 1 byte para el valor Seq y 2 bytes para Cksum.  Seq es un valor especial de 8 bytes que se usa como un número en secuencia que el servidor y el cliente incrementan según su algoritmo de secuencia. Cksum es un valor de 2 bytes que tiene un hash especial corto de todos los paquetes después del separador de paquetes y antes de Cksum. Si los valores de Seq o Cksum no son los que Small Agent espera, entonces se elimina la petición vigente y en su lugar se usa la última respuesta. El valor Seq correspondiente a la última respuesta le indica al servidor C&C que el agente ha recibido un paquete corrompido o alterado y que debe volver a enviar la petición.

    El primer paquete del servidor es especial y se utiliza para el handshake básico con el cliente. Luce así:

    El campo Address de la dirección se configura al hexadecimal 0xFFFFFFFF, el campo Size del tamaño se configura a 0x0004, y el servidor elige una identidad única de sesión o Session ID. El cliente usa el valor de Session ID en todas las respuestas al servidor. La respuesta del cliente tiene un formato fijo:

    Como ocurre en los paquetes del servidor, el paquete de respuesta siempre comienza y termina con el paquete separador. Los primeros 4 bytes posteriores se configuran al valor fijo de Session ID que el servidor define en el paquete Handshake. El campo de 2 bytes es el tamaño de Response Data según ese valor. Posteriormente, los campos Seq y Cksum se usan de forma similar a los paquetes del servidor.

    Puede aplicarse una regla adicional de modificación de bytes (símbolo escapado) si alguno de los campos entre el paquete separador contiene un byte con código hexadecimal 0x7E (que coincide con el paquete separador). En este caso, el byte 0x7E se transforma en una secuencia de 2 bytes 0x7D 0x5E que aumenta el tamaño del paquete y afecta la suma de verificación (checksum). Sin embargo, la interpretación del paquete y el cálculo de checksum se realiza sólo después de inhabilitar el símbolo escapado en el paquete. Si se encuentra el byte 0x7D en el paquete antes de aplicarle el símbolo escapado, se lo debe aplicar, y 0x7D se remplaza con la secuencia de bytes 0x7D 0x5D.

    Esto completa el protocolo, de acuerdo con lo que hemos observado. El protocolo proporciona dos funciones básicas:

    1. Función Read
    2. Función Write

    Además, el paquete Handshake proporciona la dirección básica del objeto Session en la memoria de Small Agent. Esto es suficiente para ejecutar un código arbitrario. Sin embargo, en sistemas con DEP y ASLR activados, algunos pasos adicionales pueden facilitar y estabilizar considerablemente el proceso de ejecución de un código. Es por ello que Small Agent tiene implementados procesamientos adicionales. Tras recibir y escribir datos en un lugar determinado de la memoria, verifica un campo especial en un objeto Session que define un comando básico incorporado a ejecutar. Si el servidor C&C cambia el valor de este campo, el agente puede ejecutar un comando especial con parámetros. Los siguientes comandos estaban implementados en el módulo que analizamos:

    • Obtiene el handle de un módulo en la memoria (llama a GetModuleHandleA)
    • Obtiene la dirección de un procedimiento exportado (llama a GetProcAddress)
    • Reserva memoria en un montículo (heap)
    • Libera memoria en un montículo (heap)
    • Ejecuta una cadena de comandos desde la localización de memoria
    • Llama a una función con dirección y parámetros de memoria especificados

    Esto amplía su flexibilidad y le permite al ingeniero asignar memoria con facilidad, transferir datos en ella, y ejecutar códigos adicionales de ser necesario.

    El protocolo que utiliza Small Agent posee funciones básicas para la ejecución remota de códigos, no necesita cifrado ni validar el servidor remoto, lo que crea muchas oportunidades para ataques remotos en el ambiente hostil de red. Aunque parece que la codificación se añade al protocolo en etapas posteriores de la comunicación, el atacante puede recurrir a un protocolo básico no codificado para capturar el equipo remoto. Un ataque típico en una red de área local consiste en desviar todo el tráfico de un ordenador que ejecuta Small Agent hacia el host del atacante mediante la corrupción del protocolo de resolución de direcciones (ARP). Otra posibilidad es utilizar un ataque DNS para engañar al agente y lograr que se conecte a un falso servidor C&C. Creemos que existen otras formas de lanzar ataques, pero esto queda fuera del alcance de esta investigación.

    7. Conclusiones

    Cuando descubrimos y analizamos Computrace nos equivocamos al pensar que se trataba de un programa malicioso porque empleaba muchos de los trucos que caracterizan a estos programas. Cuenta con algunas técnicas anti-depuradoras y anti-ingeniería inversa, se inyecta en la memoria de otros procesos, establece comunicaciones en secreto, parcha archivos de sistema en el disco (autochk.exe), guarda archivos de configuración cifrados, y también descarga un ejecutable para Windows desde el BIOS/firmware.

    Este comportamiento agresivo fue la razón para que se detectara Computrace Agent como un programa malicioso en el pasado. Algunos informes en Internet señalan que Microsoft detectó Computrace como VirTool:Win32/BeeInject. Esta es la descripción que Microsoft hace de este nombre de amenaza genérico:

    Sin embargo, Microsoft y algunos fabricantes de programas antivirus retiraron después la detección de los módulos de Computrace. Hasta esta fecha, los ejecutables de Computrace se encuentran en la lista blanca de la mayoría de las compañías antivirus.

    Creemos que Computrace se diseñó con buenas intenciones, pero nuestra investigación demuestra que sus vulnerabilidades pueden convertir esta útil herramienta en un instrumento malicioso en manos de los ciberdelincuentes. Creemos que esta excepcional herramienta tiene que contar con mecanismos poderosos de autenticación y cifrado para seguir cumpliendo sus buenos propósitos.

    Aunque no hemos encontrado evidencia de una activación secreta intencional de los módulos de Computrace en los equipos que analizamos, creemos que la cantidad de portátiles con Computrace activado puede llegar a cifras sorprendentes. No creemos que Absolute Software ni ningún fabricante de portátiles haya tenido razón alguna para activar en secreto este módulo, pero es obvio que si existen muchos equipos con Computrace Agent activado, es responsabilidad de los fabricantes y de Absolute Software notificar a sus dueños al respecto y explicarles cómo desactivarlo si no desean utilizar los servicios de Absolute Software. De otra manera, estos agentes descontrolados seguirán funcionando inadvertidos y ofrecerán la posibilidad de que los ciberdelincuentes penetren los equipos y los controlen de forma remota.

    8. Referencias

    1. http://corelabs.coresecurity.com/index.php?module=Wiki&action=view&type=publication&name=Deactivate_the_Rootkit
    2. http://www.absolute.com/en/partners/bios-compatibility
    3. http://www.absolute.com/en/resources/whitepapers/absolute-persistence-technology
    4. https://www.google.com/patents/US20060272020
    5. http://en.wikipedia.org/wiki/LoJack

    Apéndice A: Indicadores de las actividades de Computrace Agent

    1. Se está ejecutando uno de los siguientes procesos:
      1. rpcnet.exe
      2. rpcnetp.exe
      3. 32-bit svchost.exe ejecutándose en un sistema 64-bit (no sirve como indicador completo)
    2. Existe en el disco duro uno de los siguientes archivos:
      1. %WINDIR%System32rpcnet.exe
      2. %WINDIR%System32rpcnetp.exe
      3. %WINDIR%System32wceprv.dll
      4. %WINDIR%System32identprv.dll
      5. %WINDIR%System32Upgrd.exe
      6. %WINDIR%System32autochk.exe.bak (para sistemas de archivos FAT)
      7. %WINDIR%System32autochk.exe:bak (para sistemas de archivos NTFS)
    3. El sistema resuelve uno de los siguientes nombres de dominio mediante DNS:
      1. search.namequery.com
      2. search.us.namequery.com
      3. search64.namequery.com
      4. bh.namequery.com
      5. namequery.nettrace.co.za
      6. search2.namequery.com
      7. m229.absolute.com o cualquier m*.absolute.com
    4. El sistema se conecta a la siguiente IP: 209.53.113.223
    5. Existe una de las siguientes claves de registro:
      1. HKLMSystemCurrentControlSetServicesrpcnet
      2. HKLMSystemCurrentControlSetServicesrpcnetp

    Apéndice B: Hashes relacionados con archivos

    A continuación mostramos algunos archivos descubiertos como servicios rpcnetp o rpcnet binarios:

    0153ad739956b12bf710c7039186728d

    01a19f74cfb19cc61d62009bcfa59961

    076a360ee0cfc5ca2afc8468fa1ae709

    130206a40741aa57f3778bb70e593e16

    19a51da66e818f0e10973e1082c79a70

    19e67bd685019dafadfe524517dab145

    1f2d10f767c7145a8d2a3fbbf66bed7a

    27d43a7f03260ebdf81dd6515646510b

    3a1ed2730cee3ec7d6d5091be5071eaa

    418f527e59508480cfc17644d8387736

    4476ccfd883c603cebbc317c6c41c971

    4a3b02ac2e1635c0a4603b32d447fbb2

    4bcf98b48bee5e7094d0cf026d4edce4

    5235a32d018b79f065c64b06bd4001be

    5515c17117a37fc808fc7a43a37128b0

    5829887d2304c08237a5f43c42931296

    5a5bb037b8e256a3304f113a187b1891

    5e071026cb4c890a3584e02af1e3daf8

    6846e002291086843463238e525c8aaa

    77f57671b08e539e3232bf95a2ac8aec

    78c696e5fd0041d8a5ce5e5e15b6f2f3

    7a7cd44a4113046869be5ab8341f759f

    8282e68524af7a46afc1bac2105c6cda

    86332af92a6a80660bb8659711378140

    8f95ce32c2596771174f7054a78f4a84

    925f2df6a96637d23c677b33a07b52c1

    961d7bbefa57d1b260db075404454955

    a9e0a97c29bd110f54beb465d8ec3e52

    aaaee16f8cbd6a35c0f6b37358b3ce54

    b4c3723eb687b0e63aeea2974b8d73ba

    b7534d5ed3b01ff3a96b43b855b2a103

    bb7ef397f31c184f4089fc9bac04566f

    c1b19ad11821780b67f4c545beb270c0

    c6089ec6ae62fe264896a91d951d0c79

    cacebf514be693301c1498e216b12dbb

    cbb0d507e47d7f0ae3e5f61ea8feff08

    cde233aa0676f5307949c0a957a2f360

    cf8bcf7138cc855d885271c4ee7e8a75

    d2561d67e34ff53f99b9eaab94e98e2a

    e2e9dcce8d87608e4ba48118b296407f

    e57892858a7d3a7799eacb06783bd819

    e583977f36980125c01898f9e86c6c87

    ed9b58f56a13fbb44c30d18b9b5c44d0

    ee08ce8247ffb26416b32d8093fe0775

    eeab12e6f535ee0973b3ddb99287e06c

    ef8d08b07756edc999fbc8cfac32dc23

    f03f740fde80199731c507cdd02eb06e

    f259382b6fa22cae7a16d2d100eb29e4

    f42dbd110320b72d8ff72f191a78e5d5

    fc0ba4c9a301b653ee2c437e29ed545e

    Publicaciones relacionadas

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *