Compromised  Linux Server<br />Alejandro Ramos <br />Computer Hacking ForensicInvestigator<br />SecurityByDefault.com<br />
Antecedentes<br />Los hermanos Portugal tienen una tienda en su pueblo Brazatortas (Ciudad Real) de Salchichones<br />Deci...
Antecedentes - II<br />A las pocas horas de tener su página web, detectan que ha sido modificada.<br />Contactan con un eq...
Adquisición<br />
Tipos de adquisición<br />Copia en frio<br />Copia de los discos con el sistema apagado<br />Usado como estándar<br />No a...
Por red en caliente<br />Tabla de particiones: fdisk -l<br />En el sistema remoto (donde se hace la imagen):<br />En el cl...
Alternativas a DD<br />dc3dd<br />Creada por el DoD<br />Parche para el ‘dd’<br />Hashes al vuelo<br />“wipe” datos<br />S...
Local en frio - Guymager<br />
Memoria RAM<br />Distintos dispositivos:<br />/dev/kmem<br />“kernel” memory. Formato core<br />está deshabilitado en dist...
Métodos de volcado<br />Módulos de kernel<br />Fedora/RedHat/Centos: crash<br />http://people.redhat.com/anderson/<br />fm...
Análisis<br />
Archivos de syslog<br />Revisar sistema de logs para conocer todos los directorios: rsyslogd / syslogd / syslog-ng:<br />/...
Otros registros<br />Ficheros de accesos web: <br />/var/log/httpd/access_log<br />/var/log/httpd/error_log<br />Directori...
Históricos:<br />Comandos de shell:<br />$HOME/.bash_history<br />$HOME/.sh_history<br />$SOME/.history<br />Comando less:...
Información básica<br />Usuarios: /etc/passwd /etc/shadow<br />Grupos: /etc/group<br />Versión: /etc/*release /etc/*versio...
Información básica<br />Hora: date<br />Software: dpkg –l / rpm –qa<br />CPU: lspci<br />Memoria: free –m<br />Interfaces ...
Depurado y trazas<br />lsoflist open files<br />lsof –i<br />lsof/etc/passwd<br />lsof apache<br />stracetrace system call...
El directorio /proc<br />Pseudo sistema de ficheros<br />Permite acceso a información de procesos<br />/proc/version<br />...
Directorio /sys<br />Nuevo en kernel 2.6<br />Saca información de /proc no referente a procesos<br />/sys/modulemódulos ca...
Búsqueda de ficheros por fechas<br />Modificación<br />find / -mtime 5 –xdev>mod.txt<br />Acceso<br />find / -atime 5 –xde...
Herramientas - malware / rootkits<br />Antivirus: clamav<br />freshclam<br />clamscan -i -r /<br />Detección de rootkits<b...
rkhunter<br />[root@dmz data]# rkhunter --check<br />[ Rootkit Hunter version 1.3.8 ]<br />Checkingsystemcommands...<br />...
Herramientas – malware / rootkits<br />chkrootkit: http://www.chkrootkit.org/<br />chkrootkit<br />Binarios modificados<br...
Puertas traseras clásicas<br />Scripts de inicio:<br />/etc/init.d/*<br />/etc/rc.local<br />Permisos de esos ficheros.<br...
Puertas traseras clásicas - II<br />La configuración de init:<br />/etc/inittab<br />Archivos SETUID/SETGID<br />find / -t...
Verificación de firmas<br />rpm --verify<paquete> / rpm -Va<br />dpkg: debsums<br />No instalado por defecto<br />Compara ...
Recuperación de archivos<br />Aplicación kpartx ayuda a montar una imagen en loopback<br />Aplicaciones de la suite “Sleut...
Cadenas típicas<br />exploit<br />packetstorm<br />sniffer<br />password<br />nmap<br />crack<br />[…]<br />
¿Preguntas?<br />
Gracias<br />Alejandro Ramos<br />www.securitybydefault.com<br />
Upcoming SlideShare
Loading in …5
×

Análisis forense en linux - Compromised Linux Server

2,444 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,444
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
52
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • root@carniceria:/var/log# grep &quot;sessionopened&quot; 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 &quot;20110622 08:00:00&quot; -not -newermt &quot;20110622 10:00:00&quot; –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 &apos;/bin/kill&apos; has theimmutable-bit set.arios infectados[20:08:22] Checking for root equivalent (UID 0) accounts [ Warning ]
  • Checking `lkm&apos;... 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&quot;|&quot; &apos;{ print $1}&apos; &gt;inodesfor i in `cat inodes`; do icat -r /dev/mapper/loop0p1 $i&gt;$i; donecat 182492Kernel exploit
  • Análisis forense en linux - Compromised Linux Server

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

    ×