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):
       nc –l –p port –w 10 > img.raw


   En el cliente (sistema comprometido):
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

Un caso Forense: Analizando un servidor Linux

  • 1.
    Compromised Linux Server Alejandro Ramos Computer Hacking Forensic Investigator SecurityByDefault.com
  • 2.
    Antecedentes  Los hermanosPortugal 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
  • 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.
  • 6.
  • 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 encaliente  Tabla de particiones: fdisk -l  En el sistema remoto (donde se hace la imagen): nc –l –p port –w 10 > img.raw  En el cliente (sistema comprometido): dd if=/dev/sda conv=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
  • 10.
    Local en frio- Guymager
  • 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 ◦ dd if=/dev/kcore | nc host port
  • 13.
  • 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
  • 17.
    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
  • 18.
    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
  • 19.
    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
  • 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  Nuevoen 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
  • 22.
    Búsqueda de ficherospor 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
  • 24.
    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 ]
  • 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 logs módificados (zappers) ◦ unhide: http://www.security-projects.com/  unhide proc; 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.
  • 30.
    Cadenas típicas  exploit packetstorm  sniffer  password  nmap  crack  […]
  • 31.
  • 32.
    Gracias Alejandro Ramos www.securitybydefault.com