un caso forense: analizando un servidor linux

32
Compromised Linux Server Alejandro Ramos Computer Hacking Forensic Investigator SecurityByDefault.com

Upload: eventos-creativos

Post on 13-Jul-2015

2.186 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Un caso Forense: Analizando un servidor Linux

Compromised Linux Server

Alejandro Ramos Computer Hacking Forensic Investigator

SecurityByDefault.com

Page 2: Un caso Forense: Analizando un servidor Linux

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

Page 3: Un caso Forense: Analizando un servidor Linux
Page 4: Un caso Forense: Analizando un servidor Linux

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.

Page 5: Un caso Forense: Analizando un servidor Linux
Page 6: Un caso Forense: Analizando un servidor Linux

ADQUISICIÓN

Page 7: Un caso Forense: Analizando un servidor Linux

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

Page 8: Un caso Forense: Analizando un servidor Linux

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

Page 9: Un caso Forense: Analizando un servidor Linux

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

Page 10: Un caso Forense: Analizando un servidor Linux

Local en frio - Guymager

Page 11: Un caso Forense: Analizando un servidor Linux

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

Page 12: Un caso Forense: Analizando un servidor Linux

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

Page 13: Un caso Forense: Analizando un servidor Linux

ANÁLISIS

Page 14: Un caso Forense: Analizando un servidor Linux

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

Page 15: Un caso Forense: Analizando un servidor Linux

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)

Page 16: Un caso Forense: Analizando un servidor Linux

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

Page 17: Un caso Forense: Analizando un servidor Linux

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

Page 18: Un caso Forense: Analizando un servidor Linux

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

Page 19: Un caso Forense: Analizando un servidor Linux

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

Page 20: Un caso Forense: Analizando un servidor Linux

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

Page 21: Un caso Forense: Analizando un servidor Linux

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

Page 22: Un caso Forense: Analizando un servidor Linux

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

Page 23: Un caso Forense: Analizando un servidor Linux

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

Page 24: Un caso Forense: Analizando un servidor Linux

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 ]

Page 25: Un caso Forense: Analizando un servidor Linux

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

Page 26: Un caso Forense: Analizando un servidor Linux

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

Page 27: Un caso Forense: Analizando un servidor Linux

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

Page 28: Un caso Forense: Analizando un servidor Linux

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)

Page 29: Un caso Forense: Analizando un servidor Linux

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.

Page 30: Un caso Forense: Analizando un servidor Linux

Cadenas típicas

exploit

packetstorm

sniffer

password

nmap

crack

[…]

Page 31: Un caso Forense: Analizando un servidor Linux

¿PREGUNTAS?

Page 32: Un caso Forense: Analizando un servidor Linux

Gracias

Alejandro Ramos

www.securitybydefault.com