Detectando rootkits. Linux
Una de las primeras acciones que lleva a cabo un intruso, una vez ingresa a un sistema, es instalar un rootkit, el cual facilita el control de la máquina en adelante. Dichas herramientas presentan un gran riesgo para los
administradores y, por tanto, es de vital importancia conocer sus alcances, funcionamiento y los mecanismos
que existen para detectarlos.
Los Rootkits fueron descubiertos a mediados de los '90. En aquella epoca, los administradores de sistema del
sistema operativo UNIX del SUN comenzaron a ver un comportamiento extraño en el servidor, la falta de espacio de disco, ciclos extra en la CPU y las conexiones de red que no se mostraba con el comando netstat.
Que son exactamente.
Los Rootkits son herramientas que permiten esconder actividades intrusas dentro de un sistema, después de que un intruso ha logrado penetrar en él. Además, proveen al atacante de vias de acceso ocultas para utilizar nuevamente el sistema en futuras oportunidades. El nombre Rootkit se origina a partir de la idea de que quien lo utiliza puede acceder fácilmente al nivel de root, o de administrador del sistema, una vez la herramienta ha sido instalada.
Que tipos hay.
De acuerdo a la teconologia empleada existen tres clases principales de Rootkits disponibles hoy: kits binarios, kits del núcleo y kits de librerias.
-Kits binarios
alcanzan su meta substituyendo ciertos ficheros del sistema por sus contrapartes Troyaneadas.
-Kits del núcleo
utilizan los componentes del núcleo (también llamados módulos) que son reemplazados por troyanos.
-Kits de librerias
emplean librerias del sistema para contener los Troyanos.
En que se basan
El principio operativo de los rootkits es el de reemplazar archivos de programa del sistema con versiones modificadas, para que se ejecuten determinadas operaciones. A estas versiones modificadas se les conoce con el nombre de troyanos. Un rootkit es, en esencia, una colección de programas troyanos.
Objetivo
El objetivo de los troyanos es imitar exactamente el comportamiento de las aplicaciones originales, pero escondiendo los archivos, acciones y evidencias del intruso. En otras palabras, una vez instalado el rootkit, en principio, el intruso podrá utilizar el sistema sin ser detectado por el administrador. Sin embargo, actualmente existen métodos para detectar la presencia de rootkits dentro de un sistema.
Detectando Rootkits
Existen maneras de diferenciar los ejecutables legítimos de los troyanos mediante el uso de algoritmos de chequeo de suma. Dichos algoritmos, como el MD5 checksum, garantizan que la única forma de que el resultado de la suma sea igual para dos archivos, es que los dos archivos sean perfectamente idénticos. De esta forma, un administrador precavido debe almacenar los checksum de su sistema en dispositivos externos, tales como CD's, para poder, más adelante, identificar rootkits comparando dichos números con los generados por un programa de chequeo en un momento determinado.
Una herramienta diseñada para este fin es Tripwire, el cual mantiene control de integridad sobre los archivos del sistema. Esta herramienta se encuentra disponible para sistemas Unix/Linux en
http://www.tripwire.org.
Otra manera para detectar la posible existencia de rootkits es realizar escaneos de puertos desde otros equipos, con el fin de detectar puertas traseras que estén escuchando en puertos que normalmente no se utilizan. También existen demonios especializados, como rkdet para detectar cualquier intento de instalación de un rootkit y, de ser posible, impedirlo y avisar al administrador del hecho.
Otra herramienta es Chkrootkit (
http://www.chkrootkit.org/ ), que es un shell script que busca en nuestro sistema binarios modificados por rootkits. Entre otras tareas Chkrootkit revisa localmente rastros de rootkits incluyendo detección de:
- rootkits LKM,
- ifpromisc.c, para revisar y ver si la interface de red está en modo promiscuo,
- chklastlog.c, para revisar lastlogs por las tachaduras y
- chkkwtmp.c, para revisar wtmp por las tachaduras.
- Evaluado en Linux, FreeBSD, Solaris, y OpenBSD.
Que ficheros suelen los intrusos troyanizar.
Algunos son:
login, su, telnet, netstat, ifconfig, ls, find, du, df, libc, sync, asi como los binarios listados en /etc/inetd.conf.
Algunos Rootkits
Solaris rootkit, FreeBSD rootkit, lrk3, lrk4, lrk5, lrk6, t0rn (and t0rn v8), some lrk variants, Ambient's Rootkit for Linux (ARK),
Ramen Worm, rh[67]-shaper, RSHA, Romanian rootkit, RK17, Lion Worm, Adore Worm, LPD Worm, kenny-rk, Adore LKM, ShitC Worm,
Omega Worm, Wormkit Worm, dsc-rootkit.