Los hermanos Portugal descubren que su sitio web alojado en un VPS Linux ha sido comprometido. Se contacta a un equipo de respuesta a incidentes para investigar. El documento describe los métodos para adquirir una imagen forense del sistema, como copias en frío y en caliente, y las herramientas para analizar la imagen en busca de malware, puertas traseras, logs modificados y otros indicios de intrusión.
Forense en windows - Resolución Reto I de Dragonjar
1. Compromised Linux Server Alejandro Ramos Computer Hacking ForensicInvestigator SecurityByDefault.com
2. 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
3.
4. 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.
7. 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
8. 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
9. 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
11. 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
12. 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
14. 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
15. 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)
16. 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
19. Depurado y trazas lsoflist open files lsof –i lsof/etc/passwd lsof apache stracetrace system calls and signals strace –p PID ltracea librarycalltracer ltracecommand
20. 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
21. 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
22. 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
23. 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
25. 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
26. 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
27. 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
28. 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)
29. 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.
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