un caso forense: analizando un servidor linux
Post on 13-Jul-2015
2.186 Views
Preview:
TRANSCRIPT
Compromised Linux Server
Alejandro Ramos Computer Hacking Forensic Investigator
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 Linux y diseña la web con 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
dd if=/dev/sda conv=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
◦ dd if=/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: ps axufwww
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
lsof list open files
◦ lsof –i
◦ lsof /etc/passwd
◦ lsof apache
strace trace system calls and signals
◦ strace –p PID
ltrace a library call tracer
◦ ltrace command
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/module mó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 ]
Checking system commands...
Performing 'strings' command checks
Checking 'strings' command [ OK ]
Performing 'shared libraries' checks
Checking for preloading variables [ None found ]
Checking for preloaded libraries [ None found ]
Checking LD_LIBRARY_PATH variable [ Not found ]
Performing file properties checks
Checking for prerequisites [ 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 logs módificados (zappers)
◦ unhide: http://www.security-projects.com/
unhide proc; 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
top related