|

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.
CUESTIONES
1. Qué 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
vías 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.
2. Qué tipos hay.
De acuerdo a la teconología empleada, existen tres clases principales de Rootkits
disponibles hoy:
-
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 librerías: emplean librerías del sistema para contener
Troyanos.
3. En qué 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.
4. 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.
5. Qué ficheros suelen los intrusos troyanizar
Algunos son:
-
login, su, telnet, netstat, ifconfig, ls, find, du, df, libc, sync,
-
así como los binarios listados en /etc/inetd.conf.
6. 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.
DETECTANDO ROOTKITS
A. 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.
B. 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.
C. 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
-
chkkwtmp.c: para revisar wtmp por las tachaduras
*Evaluado en: Linux, FreeBSD, Solaris, y OpenBSD.
|