Un caso Forense: Analizando un servidor Linux

Post on 13-Jul-2015

2.186 views 5 download

Transcript of Un caso Forense: Analizando un servidor Linux

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