Un incidente de seguridad típico

Gran parte de los ataques que acaban con el acceso por parte del atacante a un equipo con permisos de Administrador, suelen seguir el siguiente patrón de comportamiento:

  1. El atacante realiza un barrido de puertos (escaneo) buscando equipos vulnerables que estén ejecutando un servidor con algún fallo de seguridad conocido y que se ha comentado ampliamente en listas de seguridad, por ejemplo los fallos de desbordamiento de buffer en el servidor de FTPwuftp, el servidor bind de DNS o en el proceso rpc.statd.

    Estos fallos de seguridad son anunciados en diversas listas de seguridad de proposito general, como Bugtraq

    La mayoría de los vendedores de distribuciones Linux disponen de listas de anuncios, donde indican las actualizaciones por motivos de seguridad, de los programas que componen su distribución.

    En algunas listas de seguridad, aparecen incluso programas que demuestran esta vulnerabilidad y que pueden ser empleados por los atacantes, estos programas se suelen denominar "exploits".

  2. El atacante emplea un exploit contra el equipo, consiguendo instalar una puerta de acceso en el sistema, muchas veces el exploit genera directamente un interprete de comandos con privilegios de root, o añade una linea en el fichero /etc/inetd.conf para lanzar una shell en un puerto dado. El método puede variar, aunque el objetivo del ataque suele ser siempre el mismo, obtener un acceso a una sesión interactiva o "shell remoto" en el equipo desde el cual proseguir el ataque.

  3. El atacante instala o compila un "rootkit", conjunto de programas de nombre y comportamiento similar al de comandos del sistema operativo, que sin embargo no muestran información sobre determinados estados del sistema[1]

    Estos rootkit han ido evolucionando, siendo cada vez más complejos. Existen módulos del kernel que permiten ocultar diversos procesos, de forma que el atacante pueda ocultar su acceso sin modificar los binarios instalados en el equipo.

  4. El atacante instalará y/o compilará algunas herramientas de ataque, para escanear y atacar otros equipos y redes empleando la maquina recién atacada como puente.

Esta situación se reproduce hasta que alguien detecta un comportamiento anómalo en el equipo. Algunas veces esta detección se realiza por el propio administrador del equipo debido a una carga de procesamiento anormal, accesos extraños, etc., pero en la mayoría de los caso la detección del equipo atacado se produce desde el exterior: Llega un correo a la organización indicando que el equipo en cuestión esta escaneando o ha sido empleado para atacar otros sistemas y al contactar con el administrador del equipo se descubre que la maquina ha sido a su vez atacada.

Sin entrar en el grave problema que es la ausencia de administración y actualización de estos equipo, [2] los pasos a seguir suelen ser también siempre los mismos y es lo que se conoce como "recuperación" ante un incidentes de seguridad.

Notas

[1]

Así la versión modificada del comando ls no listará los ficheros creados por el intruso, ps no mostrara determinados procesos o netstat no mostrara las conexiones del atacante}

Además con el rootkit se suelen instalar "puertas traseras" en el equipo, programas que permitan acceder de fácilmente en otras ocasiones al equipo. Así una modificación en el programa tcpd de los tcpwrapper, cuando el programa tcpd recibía una conexión con origen un puerto determinado (421/TCP), se ejecutaba un interprete de comandos, teniendo acceso al equipo.

[2]

Pocas usuarios instalan algún programa como Cops , System Scanner de ISS o Nessus para comprobar las posibles vulnerabilidades de sus equipos.