29 votos

Cómo hacer una autopsia de un servidor pirateado

Tengo una máquina Windows Server 2003 SP2 con IIS6, SQL Server 2005, MySQL 5 y PHP 4.3 instalados en ella. Esta no es una máquina de producción, pero está expuesta al mundo a través de un nombre de dominio. El escritorio remoto está habilitado en la máquina y dos cuentas administrativas están activas en ella.

Esta mañana me he encontrado con que la máquina se había desconectado con un nombre de usuario desconocido todavía en el cuadro de texto de inicio de sesión. Tras investigar más a fondo, he descubierto que se han creado dos usuarios de Windows, se ha desinstalado el antivirus y se han colocado varios archivos .exe en la unidad C:.

Lo que me gustaría saber es qué pasos debo dar para que esto no vuelva a ocurrir y en qué áreas debo centrarme para determinar la vía de entrada. Ya he comprobado netstat -a para ver qué puertos están abiertos, y nada parece extraño allí. Encontré archivos desconocidos en la carpeta de datos para MySQL que creo que podría haber sido el punto de entrada, pero no estoy seguro.

Agradecería mucho los pasos para realizar un buen post-mortem de un hackeo del servidor para poder evitar esto en el futuro.

Revisión de la investigación posterior

Después de investigar un poco, creo que he descubierto lo que ha pasado. En primer lugar, la máquina no ha estado en línea durante el período de agosto '08 a octubre '09. Durante ese lapso de tiempo se descubrió una vulnerabilidad de seguridad, la Vulnerabilidad MS08-067 . "Se trata de una vulnerabilidad de ejecución remota de código. Un atacante que explote con éxito esta vulnerabilidad podría tomar el control completo de un sistema afectado de forma remota. En los sistemas basados en Microsoft Windows 2000, Windows XP y Windows Server 2003, un atacante podría explotar esta vulnerabilidad a través de RPC sin autenticación y podría ejecutar código arbitrario." Esta vulnerabilidad se solucionó con la actualización de seguridad KB958644 que salió en octubre de 2008.

Debido a que la máquina estaba fuera de línea en ese momento y se perdió esta actualización, creo que esta vulnerabilidad fue explotada poco después de que la máquina volvió a estar en línea en octubre de '09. Encontré referencias a un programa bycnboy.exe que ha sido descrito como un programa de puerta trasera que luego crea muchos estragos en un sistema infectado. Poco después de que la máquina estuviera en línea, las actualizaciones automáticas instalaron el parche que cerró la posibilidad de tener control remoto del sistema. Como la puerta trasera estaba cerrada, creo que el atacante creó cuentas físicas en la máquina y pudo utilizarla durante una semana más hasta que me di cuenta de lo que estaba pasando.

Después de perseguir agresivamente el código malicioso, los .exes y los .dlls, eliminando los sitios web de autoalojamiento y las cuentas de usuario, la máquina está ahora de nuevo en estado de funcionamiento. En un futuro próximo, supervisaré el sistema y revisaré los registros del servidor para determinar si se repite el incidente.

Gracias por la información y los pasos proporcionados.

28voto

voretaq7 Puntos 63415

Hacer una autopsia es un arte negro en sí mismo. Es un poco diferente cada vez porque realmente no hay dos robos iguales. Teniendo esto en cuenta, a continuación se ofrece un resumen básico de mi proceso recomendado, con algunas notas específicas para su situación:

  1. Desconecte físicamente la máquina de la red. (De verdad, hazlo ahora).
  2. Paso opcional: Realice una copia de imagen binaria del disco duro para su uso futuro.
  3. Haga una copia de todos los archivos de registro, datos valiosos, etc. en un disco duro extraíble
    • Opcionalmente, copie también las "herramientas de hacker" que encuentre
  4. Comienza el post-mortem real. En su caso:
    • Anote cualquier cuenta de usuario nueva o que falte. Comprueba si sus carpetas de inicio tienen algún contenido "interesante".
    • Anote los programas/binarios/archivos de datos nuevos o que falten.
    • Compruebe primero los registros de MySQL - Busque cualquier cosa "inusual"
    • Comprueba el resto de los registros del servidor. Mira si puedes encontrar los nuevos usuarios que se crean, las direcciones desde las que se conectan, etc.
    • Buscar pruebas de daños o robos de datos
  5. Cuando encuentres la causa del problema, anota cómo evitar que se repita.
  6. Limpia el servidor: Formatea y reinstala todo, restaura tus datos y tapa el agujero original con tus notas del #5.

Normalmente se realiza el paso 2 si se va a involucrar a las fuerzas del orden. Realizas el paso 3 para poder revisar la información después de que el servidor se reconstruya sin tener que leer la copia de la imagen que hiciste en el paso 2.

El grado de detalle del paso 4 depende de sus objetivos: Tapar el agujero es un tipo de investigación diferente a la de localizar quién ha robado algún dato valioso :)

El paso 6 es, en mi opinión, fundamental. No se "arregla" un host comprometido: se limpia y se empieza de nuevo desde un estado bueno conocido. Esto asegura que no se pierda alguna pepita de asquerosidad dejada en la caja como una bomba de tiempo.

Esto no es, ni mucho menos, un esquema completo de la autopsia. Estoy marcando esto como wiki de la comunidad ya que siempre estoy buscando mejoras en el proceso - no lo uso a menudo :-)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: