lunes, 16 de marzo de 2009

Busca, Busca... Busca Malware bonito...

Hace unos pocos días una muy buena amiga me hizo la pregunta que se nos hace muchas veces a los que nos dedicamos a esto de la seguridad: Mi ordenador/servidor hace cosas raras, ¿Estaré infectado por algún virus o habré sufrido alguna intrusión?

Sin duda es la pregunta del millón, pues aunque tengas un anvirus actualizado, todas las medidas de seguridad y todos los parches aplicados al siguiente instante de ser publicados, nadie puede garantizarte que un error humano al aplicarlos, o en la administración del sistema, o un exploit zero-day no haya tirado por tierra todos tus esfuerzos.

Una de las cosas que me gusta hacer a mi para contestar a esta pregunta es buscar herramientas, puesto que los intrusos generalmente no buscan "entrar y salir" (y si lo hubieran hecho probablemente no se estarían notando ya esas "cosas raras"), sino que buscan mantener el control de la máquina. Por ello, suelen dejar algún tipo de software que realice las acciones que deseen, puertas traseras o algún otro tipo de Malware. También podrían crearse cuentas de usuario, pero eso suele cantar mucho, vamos a centrarnos en el caso en que hemos revisado ya el sistema (apagado, para evitar que un rootkit nos de gato por liebre) y no vemos nada raro en cuanto a la configuración de usuarios, y temas similares.

Vamos al lio, esto es lo que haría yo en un caso como este, para un sistema Windows, después de haber observado la máquina y no ver cuentas raras ni ningún tipo de punto de entrada que pueda no implicar el uso de malware:
  1. Apagado de la máquina: Con la máquina encendida corremos el riesgo de que la información que nos devuelva la máquina esté siendo alterada por algún tipo de rootkit. Existen varias vertientes de como hacer el apagado de la máquina, yo suelo optar por tirón del cable, no sin antes tener backup de todo, especialmente si tenemos servicios que manejan una gran cantidad de datos en memoria, como las bases de datos.
  2. Escaneo antivirus: Lo primero de nada es ver si existen virus conocidos, igual la cosa es tan fácil como que un virus ha inutilizado el antivirus local, y simplemente con arrancar desde CD y pasar un antivirus es suficiente.
  3. Busqueda de ejecutables: Al final, no importa si el código del virus está realmente cifrado, o si se lo baja de Internet, o lo que sea, pero lo que es seguro es que tiene que haber algo en la máquina que lo llame y que no sea original de un fabricante de software, esto nos dará algunos candidatos. Para ello, vamos a partir de la suposición que la mayoría de ejecutables de un sistema Microsoft son de Microsoft (o al menos si conseguimos descartar todos los originales de Microsoft esto nos va a quitar un montón de trabajo). ¿Como sabemos que binarios del sistema son realmente de Microsoft? Pues por ejemplo con una herramienta de Mark Russinovich Sigcheck, que nos permite detectar ficheros ejecutables (independientemente de su extensión) y comprobar si están firmados por Microsoft o no, esto nos dará una buena lista de candidatos con tan solo lanzar el siguiente comando: sigcheck -e -s "c:\\"
  4. Criba de candidatos: De esta lista, donde más es posible que haya ejecutables legítimos no firmados es en Archivos de programa, así que en una primera aproximación podriamos obviar ese directorio por el momento y quedarnos con el resto, que deberían ser ya pocos.
  5. Análisis de Malware: A partir de ahí, realizariamos un pequeño análisis de malware sobre los ficheros encontrados, en los que iremos cribando sucesivamente hasta encontrar el bichito en cuestión o hasta determinar que no ha existido infección.
A partir de ahí... se pueden hacer muchas más cosas, tanto si hemos encontrado el malware como sino, quizá se encuentre en algún datastream... una cosa que no he probado todavía es si sigcheck detectaría un ejecutable en un stream alternativo, quizá un intruso podría ocultar un ejecutable en uno de estos streams alternativos de un binario legítimo del sistema.

Si alguien lo prueba que lo diga :)

No hay comentarios :