Análisis forense en linux - Compromised Linux Server
Upcoming SlideShare
Loading in...5
×
 

Análisis forense en linux - Compromised Linux Server

on

  • 2,013 views

charla impartido en el I Curso de Verano de Análisis forense de la Universidad de A Coruña.

charla impartido en el I Curso de Verano de Análisis forense de la Universidad de A Coruña.

Statistics

Views

Total Views
2,013
Views on SlideShare
2,008
Embed Views
5

Actions

Likes
0
Downloads
41
Comments
0

1 Embed 5

http://www.securitybydefault.com 5

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • root@carniceria:/var/log# grep "sessionopened" auth.log | grep sshJun 21 13:07:10 carniceriasshd[15408]: pam_unix(sshd:session): sessionopenedforuseruserby (uid=0)Jun 21 13:07:56 carniceriasshd[15547]: pam_unix(sshd:session): sessionopenedforuseruserby (uid=0)Jun 22 07:36:50 carniceriasshd[26304]: pam_unix(sshd:session): sessionopenedforuseruserby (uid=0)Jun 22 08:12:14 carniceriasshd[26777]: pam_unix(sshd:session): sessionopenedforuseruserby (uid=0)Jun 22 19:25:01 carniceriasshd[27574]: pam_unix(sshd:session): sessionopenedforuseruserby (uid=0)
  • Se observa usuario r00t con password (en passwd y shadow)Se hace stat de ambos ficheros y se observa Access: 2011-06-22 08:17:01.000000000 +0000Modify: 2011-06-22 08:14:07.000000000 +0000Change: 2011-06-22 08:14:07.000000000 +0000También hay un puerto tcp6 abierto y no tcp4: netstat -tanptcp6 0 0 :::44965 :::* ESCUCHAR 26929/-bash
  • Nada relevante
  • Se búsca el puerto IPv6 raro:root@carniceria:/var/www# lsof -idropbear 26929 root 5u IPv6 85463 0t0 TCP *:44965 (LISTEN)root@carniceria:/var/www# lsof | grep dropbearroot@carniceria:/var/www# ls -la /usr/include/sslv3/dropbear-rwxr-xr-x 1 rootroot 589672 2011-06-22 08:23 /usr/include/sslv3/dropbearroot@carniceria:/var/www# stat /usr/include/sslv3/dropbear File: «/usr/include/sslv3/dropbear»Size: 589672 Blocks: 1160 IO Block: 4096 fichero regularDevice: 801h/2049d Inode: 195550 Links: 1Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2011-06-22 19:34:24.000000000 +0000Modify: 2011-06-22 08:23:25.000000000 +0000Change: 2011-06-22 08:23:25.000000000 +0000
  • find / -type f -newermt "20110622 08:00:00" -not -newermt "20110622 10:00:00" –ls 69939 4 -rw-r--r-- 1 root root 26 jun 22 08:23 /var/lib/update-rc.d/xfs3 69914 132 -rw-r----- 1 syslog adm 130956 jun 22 08:13 /var/log/messages152693 4 -rw-r--r-- 1 user user 411 jun 22 08:25 /var/www/index.html359914 4 -rwxr-xr-x 1 root root 89 jun 22 08:23 /etc/init.d/xfs3359916 4 -rw-r--r-- 1 root root 1373 jun 22 08:14 /etc/passwd359911 4 -rw-r----- 1 root shadow 1045 jun 22 08:14 /etc/shadow359947 4 -rwxr-xr-x 1 root root 325 jun 22 08:37 /etc/rc.local 33991 424 -rwxr-xr-x 1 root root 427600 jun 22 08:23 /usr/bin/uptime 33992 428 -rwxr-xr-x 1 root root 430804 jun 22 08:23 /usr/bin/tload 33993 428 -rwxr-xr-x 1 root root 430772 jun 22 08:23 /usr/bin/free 33994 528 -rwxr-xr-x 1 root root 533592 jun 22 08:23 /usr/bin/top 33995 428 -rwxr-xr-x 1 root root 432704 jun 22 08:23 /usr/bin/vmstat 33996 508 -rwxr-xr-x 1 root root 514864 jun 22 08:23 /usr/bin/watch 33997 444 -rwxr-xr-x 1 root root 448584 jun 22 08:23 /usr/bin/skill 33998 448 -rwxr-xr-x 1 root root 451624 jun 22 08:23 /usr/bin/pmap 33999 544 -rwxr-xr-x 1 root root 549972 jun 22 08:23 /usr/bin/pgrep 34000 508 -rwxr-xr-x 1 root root 515552 jun 22 08:23 /usr/bin/slabtop 34001 472 -rwxr-xr-x 1 root root 477892 jun 22 08:23 /usr/bin/pwdx 34021 444 -rwxr-xr-x 1 root root 448584 jun 22 08:23 /usr/bin/snice 34023 544 -rwxr-xr-x 1 root root 549972 jun 22 08:23 /usr/bin/pkill 34530 472 -rwxr-xr-x 1 root root 476504 jun 22 08:23 /usr/bin/w195550 580 -rwxr-xr-x 1 root root 589672 jun 22 08:23 /usr/include/sslv3/dropbear195551 16 -rwxr-xr-x 1 root root 13768 jun 22 08:23 /usr/include/sslv3/mig195553 4 -rw-r--r-- 1 root root 9 jun 22 08:23 /usr/include/mysql/mysql.hh1260642 444 -rwxr-xr-x 1 root root 448584 jun 22 08:23 /bin/kill260643 516 -rwxr-xr-x 1 root root 521980 jun 22 08:23 /bin/ps 85596 8 -rwsr-sr-x 1 root root 7293 jun 22 08:35 /dev/\\ ../tty0 3530 4 -rw-r--r-- 1 root root 1515 jun 22 08:13 /dev/.udev/queue.bin182490 8 -rw------- 1 root root 5579 jun 22 08:37 /home/user/.viminfo
  • Muestra varios bin[19:57:13] /bin/kill [ Warning ][19:57:13] Warning: The file propertieshavechanged:[19:57:13] File: /bin/kill[19:57:13] Current hash: 5db25350dd15d3f1e63a4ff44fa85b72c21df72d[19:57:13] Stored hash : 2526f22ed8a7cd7a967ca4dda75938083ab31557[19:57:13] Currentsize: 448584 Storedsize: 13804[19:57:13] Current file modification time: 1308731005 (22-jun-2011 08:23:25)[19:57:13] Stored file modification time : 1260992081 (16-dic-2009 19:34:41)[19:57:13] Warning: File '/bin/kill' has theimmutable-bit set.arios infectados[20:08:22] Checking for root equivalent (UID 0) accounts [ Warning ]
  • Checking `lkm'... You have 1 process hidden for ps command
  • Fichero: /etc/init.d/xfs3Arranca SSH y lo permite en el FWFichero: /etc/rc.localrm -rf /var/log/*
  • dev/\\ ../tty0
  • /sbin/sysctl/bin/kill/bin/ps/usr/bin/uptime/usr/bin/tload/usr/bin/free/usr/bin/top/usr/bin/vmstat/usr/bin/watch/usr/bin/skill/usr/bin/pmap/usr/bin/pgrep/usr/bin/slabtop/usr/bin/pwdx/etc/vsftpd.conf
  • kpartx -a ubuntu.rawils -r /dev/mapper/loop0p1|awk -F"|" '{ print $1}' >inodesfor i in `cat inodes`; do icat -r /dev/mapper/loop0p1 $i>$i; donecat 182492Kernel exploit

Análisis forense en linux - Compromised Linux Server Análisis forense en linux - Compromised Linux Server Presentation Transcript

  • Compromised Linux Server
    Alejandro Ramos
    Computer Hacking ForensicInvestigator
    SecurityByDefault.com
  • Antecedentes
    Los hermanos Portugal tienen una tienda en su pueblo Brazatortas (Ciudad Real) de Salchichones
    Deciden contratar un VPS para alojar su web y ofrecer sus productos.
    Un amigo de los hermanos monta un sistema Linuxy diseña la webcon la última versión crackeada de Dreamweaver
  • Antecedentes - II
    A las pocas horas de tener su página web, detectan que ha sido modificada.
    Contactan con un equipo de respuesta a incidentes (nosotros) para averiguar que ha ocurrido.
  • Adquisición
  • Tipos de adquisición
    Copia en frio
    Copia de los discos con el sistema apagado
    Usado como estándar
    No altera los datos, por lo que se puede repetir
    Copia en caliente
    Copia de datos de un sistema encendido
    Practico en caso de discos duros cifrados
    No puede ser repetido exactamente. El sistema es modificado
    Se puede adquirir volcado de memoria
  • Por red en caliente
    Tabla de particiones: fdisk -l
    En el sistema remoto (donde se hace la imagen):
    En el cliente (sistema comprometido):
    nc –l –p port –w 10 > img.raw
    ddif=/dev/sdaconv=sync,noerror | nc IP port
  • Alternativas a DD
    dc3dd
    Creada por el DoD
    Parche para el ‘dd’
    Hashes al vuelo
    “wipe” datos
    Sumarización de registro
    Divide la imagen
    dcfldd
    fork de ‘dd’
    Más de una copia a la vez
  • Local en frio - Guymager
  • Memoria RAM
    Distintos dispositivos:
    /dev/kmem
    “kernel” memory. Formato core
    está deshabilitado en distribuciones modernas (solo se usaba para instalar rootkits)
    /dev/mem
    En algunas distribuciones el kernel deshabilita el acceso después de 8 páginas.
    /proc/kcore
    Formato ELF (core)
    En ocasiones superior al tamaño de memoria
  • Métodos de volcado
    Módulos de kernel
    Fedora/RedHat/Centos: crash
    http://people.redhat.com/anderson/
    fmem
    https://hysteria.sk/~niekt0/fmem/
    Lectura de /proc/kcore
    ddif=/dev/kcore | nc host port
  • Análisis
  • Archivos de syslog
    Revisar sistema de logs para conocer todos los directorios: rsyslogd / syslogd / syslog-ng:
    /var/log/messages
    /var/log/secure
    /var/log/maillog
    /var/log/cron
    /var/log/spooler
    /var/log/boot.log
  • Otros registros
    Ficheros de accesos web:
    /var/log/httpd/access_log
    /var/log/httpd/error_log
    Directorio audit del demonio auditd
    Accesos de «login»:
    /var/log/btmp-> logins fallidos (lastb)
    /var/log/wtmp-> logins y logouts (last)
    /var/log/lastlog-> logins en el sistema (lastlog)
    /var/run/utmp-> usuarios en el sistema (who/w)
    /var/log/dmesg -> logs del kernel (dmesg)
  • Históricos:
    Comandos de shell:
    $HOME/.bash_history
    $HOME/.sh_history
    $SOME/.history
    Comando less:
    $HOME/.lesshst
    Clientes de FTP:
    $HOME/.lftp/rl_history y cwd_history
    $HOME/.ncftp/history
    Equipos a los que se ha conectado con SSH:
    $HOME/.ssh/known_hosts
  • Información básica
    Usuarios: /etc/passwd /etc/shadow
    Grupos: /etc/group
    Versión: /etc/*release /etc/*version
    Kernel: uname –a
    Módulos de kernel cargados: lsmod
    Procesos:psaxufwww
    Puertos: netstat –tanp
  • Información básica
    Hora: date
    Software: dpkg –l / rpm –qa
    CPU: lspci
    Memoria: free –m
    Interfaces de red: ifconfig –a
    Rutas: route –n / netstat –nr
    Tabla arp: arp -n
  • Depurado y trazas
    lsoflist open files
    lsof –i
    lsof/etc/passwd
    lsof apache
    stracetrace system calls and signals
    strace –p PID
    ltracea librarycalltracer
    ltracecommand
  • El directorio /proc
    Pseudo sistema de ficheros
    Permite acceso a información de procesos
    /proc/version
    /proc/sys/kernel/name
    /proc/sys/kernel/domainame
    /proc/cpuinfo
    /proc/swaps
    /proc/partitions
    /proc/self/mounts
    /proc/uptime
    /proc/modules
    /proc/PID/cmdline
  • Directorio /sys
    Nuevo en kernel 2.6
    Saca información de /proc no referente a procesos
    /sys/modulemódulos cargados en el kernel
    /sys/block información de dispositivos
  • Búsqueda de ficheros por fechas
    Modificación
    find / -mtime 5 –xdev>mod.txt
    Acceso
    find / -atime 5 –xdev > acc.txt
    Creación
    find / -ctime 5 –xdev > cre.txt
  • Herramientas - malware / rootkits
    Antivirus: clamav
    freshclam
    clamscan -i -r /
    Detección de rootkits
    Rkhunter: http://www.rootkit.nl/
    rkhunter --update
    rkhunter --check
    Compara MD5
    Uso de ficheros por defecto en rootkits comunes
    Permisos incorrectos en binarios
    Cadenas extrañas en módulos de kernel
    Ficheros ocultos en directorios extraños
  • rkhunter
    [root@dmz data]# rkhunter --check
    [ Rootkit Hunter version 1.3.8 ]
    Checkingsystemcommands...
    Performing 'strings' commandchecks
    Checking 'strings' command [ OK ]
    Performing'sharedlibraries' checks
    Checkingforpreloading variables [ Nonefound ]
    Checkingforpreloadedlibraries [ Nonefound ]
    Checking LD_LIBRARY_PATH variable [ Notfound ]
    Performing file propertieschecks
    Checkingforprerequisites [ Warning ]
    /sbin/chkconfig [ OK ]
    /sbin/depmod [ OK ]
    /sbin/fsck [ OK ]
  • Herramientas – malware / rootkits
    chkrootkit: http://www.chkrootkit.org/
    chkrootkit
    Binarios modificados
    Logs de sniffers
    Ficheros de rootkits por defecto
    Tarjeta de red en modo promiscuo
    Ficheros de logsmódificados (zappers)
    unhide: http://www.security-projects.com/
    unhideproc; unhide-tcp
    Procesos ocultos
    Puertos abiertos
  • Puertas traseras clásicas
    Scripts de inicio:
    /etc/init.d/*
    /etc/rc.local
    Permisos de esos ficheros.
    Superdemonios: init.d / xinit.d
    /etc/initd.conf
    /etc/xinit.d/*
    Módulos del kernel
    /etc/modules
  • Puertas traseras clásicas - II
    La configuración de init:
    /etc/inittab
    Archivos SETUID/SETGID
    find / -type f -perm -4000 –ls
    find / -type f -perm -2000 -ls
    Directorios extraños
    Uso de espacios: “.. “
    find . –type f –exec ls –i {} ; | sort –n
  • Verificación de firmas
    rpm --verify<paquete> / rpm -Va
    dpkg: debsums
    No instalado por defecto
    Compara MD5 de archivos
    debsums -ca(compara bin y config)
    debsums –ce (solo configuración)
  • Recuperación de archivos
    Aplicación kpartx ayuda a montar una imagen en loopback
    Aplicaciones de la suite “Sleuthkit”: ils, fls, icat, etc.
    Complicado en otros sistemas de ficheros como ext3 o ext4
    Comando strings de la imagen en búsqueda de cadenas típicas.
  • Cadenas típicas
    exploit
    packetstorm
    sniffer
    password
    nmap
    crack
    […]
  • ¿Preguntas?
  • Gracias
    Alejandro Ramos
    www.securitybydefault.com