martes, 27 de enero de 2009

Jugando con fuego: rootkits

El blog del Maligno es una fuente inagotable de sabiduria y mala leche (pero con onda).
Hace unos días pasaba por ahi, y me topé con estas im-pre-sio-nantes conferencias de Mark Russinovich, que los amigos de M$ nos regalan a cambio de que instalemos su Silverlight.

Como ultimamente estoy pro M$ y estaba usando la beta del seven, no tuve ningun reparo moral en instalarlo y pasarme una hora y cuarto mirando la charla "Advanced Malware Cleaning", en la que Mark repasa los métodos de detección y remoción de malware, enfocandose principalmente en el uso de las herramientas de sysinternals, ProcessExplorer y Autoruns. A los que trabajen de ésto, les recomiendo verla. Es en inglés, pero les aseguro que mi nivel no es muy bueno, y Mark habla claro y lento, así que es difícil perderse algo. Como ayuda, les dejo un pdf con la presentación que Russinovich usaba de guia.

Lo que más me interesó de la charla fue la parte en la que habla acerca de los rootkits. Estos son programas diseñados para esconderse a si mismos, y esconder tambien otros programas que pueden ser maliciosos o no, de modo que sean indetectables para cualquier programa que intente verlos a traves de las llamadas al sistema (APIs). En resumen, una cagada para el técnico (lease yo), que puede pasarse horas mirando el ProcessExplorer, el Hijackthis, el Autoruns, el regedit o cualquier otro programa que no esté diseñado específicamente para verlos, sin sospechar que la máquina sigue infectada.

Pasada la introducción, pasamos a la diversión.

Me suscribí a www.rootkit.com, y dediqué un rato a "infectar" una máquina con pruebas de concepto, para ver cómo se ven.

Materiales:

Maquina (1)
PIII con winchiquito, usada desde la cuenta administrador (una bomba de tiempo). No es de lo más estable (se cuelga sin infectarla), pero es lo mejor que tengo para pruebas.

Rootkit (2)
HideToolz: herramienta que nos presenta una interfaz desde la que podemos ocultar procesos. No corre junto con Hacker Defender (cuelga la maquina), por lo que no lo incluyo en los análisis. para el que quiera probarlo, es bastante inocuo (igual no me hago responsable etc.)
HackerDefender: Más completo, nos permite ocultar procesos, claves del registro, archivos y más. Además puede setearse para iniciar un proceso oculto.

AntiRootkits (4)
RootkitRevealer (RKR): La herramienta de sysinternals es bastante buena detectando el problema pero no nos permite solucionarlo desde el programa. En la presentacion Mark usa un depurador en modo kernel (una herramienta que le permite "tocar" los parametros del kernel en vivo, en este caso softice) para sacar el rootkit . Véanlo. Es demasiado para mi.
Gmer: un limpiador mas amigable, con acceso a procesos ocultos (y la posibilidad de matarlos), servicios ( y cómo deshabilitarlos), vista del registro y claves ocultas e incluso archivos que no se ven en el explorador.
Rootkit Unhooker (RU): Un programita "Quick and dirty" que nos muestra facil y rápidamente si hay un bicho en nuestro sistema. También mata procesos e intenta borrar drivers y servicios malos.
System Virginity Verfier (SVV): uno de los juguetes de Joanna Rutkowska. Es una utilidad de linea de comandos que nos permite chequear rápidamente si el sistema está comprometido, e incluso tratar de repararlo. Y nada más. No nos dá mucha info, pero es muy util.

Y ahora a los bifes... Digo, a las capturas.

1) SVV nos dice que esta todo OK.


2) RU también


3) Corremos HackerDefender. Le decimos que se oculte, saque de nuestra vista todos los archivos y carpetas que lleven "hxdef*" y corra el bloc de notas pero "in the backround". Nos hace caso. Acá no hay captura: no hay nada que ver ahora!

4) SVV no está tan contento...

5) RU nos muestra el problema


6) GMER nos avisa ni bien entramos, y nos deja ver los procesos, servicios y archivos ocultos.

7) El escaneo completo del sistema, tanto con RKR como con GMER o RU, nos lleva a una bonita BSOD, asi que no hay cap.

8) Tratamos de limpiar. Gmer nos deja matar el proceso, con lo que recuperamos la vista de los archivos ocultos. También nos permite deshabilitar el servicio asociado. Con esto nuestro rootkit pasa a ser como cualquier otro virus, porque quedan a la vista los procesos, servicios, archivos y drivers que este se encargaba de ocultar. Borramos todo lo que parezca sospechoso (puede que haya que reiniciar para borrar los servicios malvados despues de deshabilitarlos).

9) Para terminar la limpieza, le pedimos ayuda a Joanna:


10) Reiniciamos y volvemos a chequear: Gmer muestra un par de entradas sospechosas (probablemente ya estuvieran ahi antes), pero ningun proceso oculto, ni driver o servicio fuera de lugar, y ninguna referencia a HackerDefender. RU no encuentra problemas, RKR no sé, porque el escaneo tarda mucho (si quieren una reseña profesional vayan a otro lado) y SVV vuelve al nivel 1 (good).

Y hasta acá llegamos con la prueba. Quien quiera repetirla y tenga algo para agregar, que no sea tímido. Para eso estamos.

FAQ

Q: Los reportes del final significan que el sistema quedó limpio?
A: No. Sólo quieren decir que está más limpio que antes. Lo fundamental de los rootkits es su habilidad para esconderse, y siempre se buscan nuevas técnicas para hacerlo. De todos modos, si uno no quiere volverse paranoico, un par de reportes limpios son buenas noticias. Y si no, siempre queda reinstalar.
Q: Por qué no hay capturas de la limpieza?
A: Porque el objetivo del post es mostrarles cómo se ven las infecciones de rootkits en general con las herramientas que probé. La limpieza es opcional (siempre queda reinstalar).
Q: Se te ocurre una pregunta mejor para terminar?
A: No. Chau.

6 comentarios:

Peste dijo...

Excelentes datos, en particular lo de la polaca: muchos hacia que no enganchaba --en cualquier area, no solo seguridad informatica-- alguien con buen manejo de conceptos abstractos _y_ la capacidad de implementarlos.

Por otro lado, usted va a lograr que no pise mas un cyberprostibulo (como usuario, que como tecnico, la necesidad tiene cara de hereje): yo daba por aplacada mi paranoia con HijackThis...

Peste dijo...

Perdon: _mucho_, no muchos, ni a#os ni meses ni nada, que estoy siendo deliberadamente impreciso con la epoca.

Guillermo dijo...

Hunhakme es el mejor antirootkit que probé, usarlo me produce la misma sensación de comer tostadas de pan lactal fargo con manteca Sancor.

Anónimo dijo...

El artículo muy bueno, aunque... ¡me han sangrado los ojos con 'remoción'!

Jeje, un saludo!

486 dijo...

Peste: Y encima está buena...
Guillermo: lo voy a probar, aunque el hecho de que sea instalable le resta puntos de entrada.
Anónimo: sé que uso anglicismos very often, pero en este caso no.

remoción.

(Del lat. remotĭo, -ōnis).
1. f. Acción y efecto de remover.

Quien quiera puede leer "Mark repasa los métodos de detección y sacado de malware"
"Mark repasa los métodos de detección y quitar malware"
"Mark repasa los métodos de detección y extracción de malware"

Gonzalo dijo...

Me ha gustado, buena entrada =)