Date post: | 13-Jun-2015 |
Category: |
Technology |
Upload: | alejandro-ramos |
View: | 1,094 times |
Download: | 10 times |
Compromised Linux Server
Alejandro Ramos Computer Hacking Forensic Investigator
SecurityByDefault.com
AntecedentesLos 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 - IIA 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ónCopia en frio
◦Copia de los discos con el sistema apagado
◦Usado como estándar◦No altera los datos, por lo que se puede
repetirCopia 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 calienteTabla 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 DDdc3dd
◦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 RAMDistintos 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 volcadoMó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 syslogRevisar 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 registrosFicheros de accesos web:
◦ /var/log/httpd/access_log ◦ /var/log/httpd/error_log
Directorio audit del demonio auditdAccesos 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/groupVersión: /etc/*release /etc/*version
Kernel: uname –aMódulos de kernel cargados: lsmodProcesos: ps axufwwwPuertos: netstat –tanp
Información básicaHora: dateSoftware: dpkg –l / rpm –qaCPU: lspci Memoria: free –mInterfaces de red: ifconfig –aRutas: route –n / netstat –nrTabla 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 /procPseudo sistema de ficherosPermite 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 /sysNuevo en kernel 2.6Saca 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ásicasScripts 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 - IILa configuración de init:
◦/etc/inittabArchivos 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 firmasrpm --verify <paquete> / rpm -Vadpkg: debsums
◦No instalado por defecto◦Compara MD5 de archivos◦debsums -ca (compara bin y config)◦debsums –ce (solo configuración)
Recuperación de archivosAplicación kpartx ayuda a
montar una imagen en loopbackAplicaciones de la suite
“Sleuthkit”: ils, fls, icat, etc.Complicado en otros sistemas de
ficheros como ext3 o ext4Comando strings de la imagen
en búsqueda de cadenas típicas.
Cadenas típicasexploitpacketstormsnifferpasswordnmapcrack[…]
¿PREGUNTAS?
Gracias
Alejandro Ramoswww.securitybydefault.com