Detectando
Rootkits.
Introducción
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.
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:
1. Kits binarios: alcanzan su meta substituyendo ciertos ficheros
del sistema por sus contrapartes Troyaneadas.
2. Kits del núcleo: utilizan los componentes del núcleo
(también llamados módulos) que son reemplazados
por troyanos.
3. 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.
7. Deetectando 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
# ./chkrootkit
ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
Checking `biff'... not infected
Checking `chfn'... not infected
Checking `chsh'... not infected
Checking `cron'... not infected
Checking `date'... not infected
Checking `du'... not infected
Checking `dirname'... not infected
Checking `echo'... not infected
Checking `egrep'... not infected
Checking `env'... not infected
Checking `find'... not infected
Checking `fingerd'... not found
Checking `gpm'... not infected
Checking `grep'... not infected
Checking `hdparm'... not infected
Checking `su'... not infected
Checking `ifconfig'... not infected
Checking `inetd'...
....
La fiabilidad de chkrootkit puede verse comprometida ya que
al ser un shell script y basarse en herramientas como echo,
cut, awk, egrep, find, id, ls, netstat, head, ps, strings, etc,
estas pueden contener algún tipo de troyano. La solución
se basa en añadir un parámetro que indique a chkrootkit
donde debe bascar estas herramientas. Puede buscarlas en un
CDROM o un floppy.
*Evaluado en: Linux, FreeBSD, Solaris, y OpenBSD.
¿
Algún comentarío sobre este artículo ?
Pincha aquí
|
 |
Página
personal de Alfon. Repositorio de artículos
própios.
|
|
|