Métodos para la instalación de una puerta trasera (backdoor) en un sistema

En este artículo vamos a hacer un breve repaso de los distintos métodos para instalar una puerta trasera en un sistema de información. El objetivo no es enseñar de manera detallada como hackear un sistema (para esto ya hay otros sitios), sino dar al analista de riesgos, auditores o responsables de seguridad el contexto básico que le permita identificar los factores que favorecen o dificultan este tipo de amenazas y así poder perfilar un plan de acción en caso necesario.

Una puerta trasera (o backdoor) es un mecanismo oculto que viene pre-configurado en algunos sistemas y que es usado para realizar labores de mantenimiento. Este tipo de mecanismos suelen ser conocidos solamente por los fabricantes del sistema y permiten sortear el control de acceso general del mismo, lo que da flexibilidad y constituye un auténtico salvavidas en la resolución de algunos errores; sin embargo, son también una importante vulnerabilidad cuando su existencia llega a ser conocida y explotada por potenciales atacantes.

En otros casos la puerta trasera tiene una naturaleza puramente maliciosa y es diseñada e instalada por los atacantes como medio para realizar actividades delictivas. La instalación de una puerta trasera (backdoor) es una de las aspiraciones comunes de cualquier hacker a la hora de atacar un sistema de información, ya que permite conectarse y trabajar de manera encubierta con el sistema, evitando pasar por el filtro de seguridad que constituye la contraseña de acceso. Si un atacante consigue instalar una backdoor en un sistema, se puede decir que ha iniciado el camino que le permitirá tener el control total sobre el sistema, estableciendo una plataforma desde la cual poder extender su amenaza a otros sistemas de la red.

Vectores de entrada

Veamos ahora distintos métodos que pueden ser usados para instalar una puerta trasera en un sistema de información, tanto si se trata de un servidor como un ordenador personal, portátil, etc.:

Método #1: Explotando vulnerabilidades en el sistema

Consiste en aprovechar alguna vulnerabilidad en el sistema que permita al atacante la ejecución de código arbitrario, para:

  • Copiar o crear la puerta trasera en el sistema objetivo del ataque; por ejemplo,  un script ejecutable en un servidor web
  • Descargar y/o instalar el programa ejecutable de la puerta trasera en la máquina

Infectando servidores web con SQL Injection

Uno de los tipos más  comunes de vulnerabilidad usados a la hora de instalar puertas traseras en servidores web es la inyección SQL (SQL Injection). Con este método, el atacante aprovecha el incorrecto tratamiento que una aplicación hace de las sentencias SQL introducidas en un campo de texto, para introducir una sentencia mal formada. El resultado pretendido es que la base de datos lleve a cabo una acción en principio no permitida, como la creación en el servidor de un script con la puerta trasera. El script así creado, diseñado normalmente para leer una instrucción y ejecutarla,  es accesible a través de Internet por parte del atacante que podrá así ejecutar instrucciones en el servidor.

Este tipo de puertas traseras suelen ser scripts web de pequeño tamaño (¡!algunos pueden tener una sola línea de código!!) pero altamente efectivos:

<?php system($_REQUEST[‘cmd’]);?>

Ejemplo del código de una sencilla puerta trasera en PHP

Veamos un ejemplo figurado de cómo podría hacerse esto. Pongamos por ejemplo un formulario de búsqueda de una aplicación web. Supongamos que el formulario tiene un campo de texto en el que el usuario puede introducir un apellido para hacer una consulta en la base de datos de los registros que coincidan con este apellido:

search_01

Cuando el usuario pulsa el botón <Buscar…> en el formulario, la aplicación crea dinámicamente una consulta SQL incluyendo como parámetro de búsqueda el apellido introducido en el campo de texto (en el ejemplo: apellido_formulario):

cBusqueda := "SELECT * FROM usuarios WHERE apellido = '" + apellido_formulario + "';" 

El programa ejecuta entonces la consulta en la base de datos y devuelve el resultado. Sin embargo, si la aplicación no verifica el contenido introducido por el usuario en el formulario, entonces un usuario malicioso podría introducir el siguiente texto en el campo ‘Apellido’:

search_02

Entonces, la consulta que la aplicación  ejecutaría contra la base de datos sería:

SELECT * FROM usuarios WHERE apellido = 'García' 
UNION SELECT “<? system($_REQUEST[‘cmd’]); ?>”
,2,3 INTO OUTFILE ‘/var/www/html/puerta.php’ 

Lo que resultaría en la creación del script puerta.php en el directorio del servidor web, desde donde podría ser invocado. El contenido del script sería la sencilla puerta trasera <? system($_REQUEST[‘cmd’]); ?>. Esto es posible gracias a la función SQL “INTO OUTFILE” que permite escribir contenido en un archivo.

La Operación Aurora

Otra forma frecuente de aprovechar el método de explotación de vulnerabilidades es enviando por correo electrónico ficheros infectados capaces de explotar algún tipo de vulnerabilidad en el sistema. Cuando el usuario abre el archivo adjunto, si el sistema es vulnerable, el troyano se instala. En otros casos, la víctima recibe un correo con un link hacia una web desde donde se descarga el programa malicioso. Un ejemplo de este último método lo tenemos en la famosa operación Aurora, allá por 2010, que resultó en el robo de ingentes cantidades de información sensible de empresas como Google, Yahoo o Juniper entre otras. La secuencia idealizada del proceso de infección es:

  • Un usuario recibe por e-mail un mensaje desde una fuente “confiable”.
  • El usuario pincha en un hiperenlace del mensaje, que le lleva a visitar una página web. Dicha página web contiene un JavaScript malicioso.
  • El javaScript es descargado y ejecutado por el navegador. El JavaScript contiene una forma de explotar una vulnerabilidad en el navegador Internet Explorer desconocida hasta entonces (zero-day). La vulnerabilidad es la CVE-2010-0249
  • Como consecuencia de la ejecución del JavaScript, y aprovechando la vulnerabilidad del navegador, se produce la descarga de un ejecutable que desplegaba una puerta trasera.
Método #2: Consiguiendo (mediante engaño) que el usuario instale la puerta trasera por sí mismo:

Este método consiste en hacer que el propio usuario instale el troyano en el sistema. Por ejemplo, los atacantes podrían “colgar” en Internet programas “gratuitos” que puedan ser potencialmente útiles al usuario, de modo que éste los descargue e instale. Veamos algunos casos conocidos.

Los casos CryptoPHP y FreeBSD

Un ejemplo reciente de este método ha sido documentado por la compañía de seguridad Fox-IT. Se trata del caso conocido como CryptoPHP en el que se desvela como una red organizada ponía a disposición de los administradores de sitios web desarrollados con los principales gestores de contenidos como Joomla, Drupal o WordPress, plantillas de diseño o plugins pirateados que contenían de manera encubierta el código de la puerta trasera. El señuelo para los administradores era la “gratuidad” de los plugins pirata.

De manera análoga, hace ya algún tiempo se constató como los repositorios oficiales de la distribución Linux FreeBSD habían sido hackeados y se habían “colgado” copias manipuladas del código fuente, de modo que todos los sistemas instalados a partir de estos fuentes tenían incluida la puerta trasera.

CryptoPHP_01

El método “Drive by Download”

Es frecuente también que muchos programas de descarga gratuita incluyan como añadido a la funcionalidad “útil” (y atractiva para el usuario), el backdoor. Un método relacionado con este y frecuentemente usado es inducir al usuario a que se instale un pretendido “antivirus”. Esto se consigue mostrando por ejemplo un supuesto aviso de infección del ordenador y ofreciendo la posibilidad de “desinfectar” el equipo. Cuando el usuario pulsa esta opción, entonces el troyano se descarga e instala en el equipo.

Método #3: Instalación consciente y voluntaria por parte de personal de la compañía:

En algunas ocasiones la instalación de la puerta trasera es realizada por parte de los desarrolladores de software o de los administradores de sistemas legítimos de la compañía. En muchos casos, se trata de una acción “sin mala intención”, para “facilitar” el trabajo del día a día; sin embargo, en otros casos hay una intención maliciosa y en estos casos los daños pueden ser grandes, pues está demostrado que los ataques originados por personal interno de la compañía suelen ser los más serios.

Método #4: Instalación conectándose con las credenciales robadas de un usuario legítimo:

Uno de los métodos más sencillos que un atacante puede encontrar para la instalación de una puerta trasera, es disponer de las credenciales de acceso robadas a un usuario legítimo y usarlas para instalar el software. Entre los diversos métodos que se pueden emplear para conseguir estas credenciales están:

  • El uso de software malicioso instalado previamente en un equipo usado por el usuario, como es el caso de los keyloggers. También se pueden usar herramientas que permiten descargar una copia de la información en memoria del ordenador, entre la que, con suerte, pueden encontrarse las contraseñas buscadas.
  • El uso técnicas de ingeniería social para conseguir que un usuario poco precavido revele al atacante estas contraseñas. Esto se puede hacer mediante correos electrónicos o llamadas al usuario simulando ser un técnico de la compañía y pidiendo directamente las contraseñas o mediante el uso de técnicas de phising, tratando de inducir al usuario para que introduzca las credenciales en una pantalla falsificada.
  • El caso más sencillo, sin embargo, se produce en aquellos casos en los que los sistemas están configurados por defecto y las contraseñas de administración de los servicios también los son. En estos casos, las contraseñas por defecto suelen ser de sobra conocidos por los atacantes que siempre intentarán esta opción cuando detecten servidores mal configurados y/o desactualizados.
  • Intentar usar la misma contraseña que se le ha robado previamente a un usuario, para intentar acceder a otro sistema usado por el mismo usuario. Esta prueba es básica, ya que es muy habitual que, por simplificación, los usuarios utilicen las mismas contraseñas de acceso en los distintos sistemas a los que acceden.
Método #5: Compilador Hackeado

Este método fue referido en un  ya clásico artículo de Ken Thomson, en el cual describe cómo pudo insertar una puerta trasera en un programa de login de una máquina UNIX. El modo de hacerlo fue compilando el código fuente del programa con un compilador modificado para incluir la puerta trasera en los programas generados con el compilador infectado. De este modo se garantiza que con cada compilación de código fuente se incluye la puerta trasera en cualquier programa generado con el compilador. Este método hace muy difícil la detección de la puerta trasera, pues el análisis del código fuente de los programas no revelará su existencia al ser la amenaza “inyectada” directamente en el código objeto. El artículo de Ken Thomson es muy inquietante, ya que hace que nos cuestionemos la seguridad, incluso, de instalaciones UNIX presumiblemente limpias.

Método #6: Dispositivos con Backdoor instalado “de serie”

En los últimos años han aparecido publicadas en la prensa diversas noticias sobre dispositivos en los que se ha detectado la presencia de puertas traseras instaladas presumiblemente en la propia factoría de montaje del dispositivo. Se han mencionado casos afectando a teléfonos celulares Android de la marca Samsumg, a ordenadores portátiles ensamblados en China que tenían la puerta trasera instalada a nivel de la BIOS del sistema; incluso han aparecido noticias indicando que agencias de seguridad de EEUU interceptaban los envíos que salían  de las factorías de CISCO, para desempaquetar los routers, modificar el sistema y volver a empaquetar y enviar los equipos. Todas ellas son noticias inquietantes que ponen en cuestión el grado de seguridad que se puede implantar realmente en una plataforma tecnológica, en un mundo donde la economía, el bienestar y el desarrollo de los estados depende de la misma.

BackDoor_Samsung

 

CISCO_BackDoors

Epílogo

Con esto finalizamos este breve apunte, esperando cumplir nuestro objetivo de dar una panorámica básica sobre el problema. En próximos artículos esperamos profundizar más sobre este tema, perfilando las distintas opciones para mitigar las amenazas. Un fuerte abrazo y gracias,

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s