Professional Documents
Culture Documents
Index
Me hackearon ahora que?
-Bsqueda de evidencia.
-Bsqueda de patrones.
-Recopilacin de informacin.
Index
Forensics Datarecovery
-Conceptos bsicos de filesystems y memoria
(NTFS/FAT(x)/ext2/ext3/ufs2)
-Conceptos avanzados de agrupacin de informacin y tablas a nivel de
kernel.
-Restaurando la informacin
-Emitiendo un veredicto
-Consejos Prcticos
Index
Post-Hack Pentesting
-Que es el pentesting?
-Como se realiza
-Ejemplos.
Conclusiones
Busqueda de evidencia:
Normalmente los sistemas por su naturaleza, incluso Windows logean
TODO lo que se hace, (conexiones, accesos, peticiones, etc, etc), algunos
de ellos de una forma mucho mejor que otros, pero todo deja logs, un
perpetrador lgicamente va a buscar la forma de asegurar su acceso a un
sistema intervenido, es por ello que instalara un backdoor (de su creacion
o publico), para no tener que hacer TODO el procedimiento de explotacin,
borrado de logs y demas.
Ahora bien donde un perpetrador de un incidente dejaria semejantes
utilerias y como actuan estas?
Tomando evidencia
Windows al igual que linux tiene ciertos sistemas de seguridad y logeo de
accesos a todas sus aplicaciones, es posible logear si una aplicacin
genero errores, si una aplicacin fue derribada, si una aplicacin, servicio o
usuario intento perpetrar un ilicito y demas.
Los primeros pasos de nuestra bsqueda de evidencia sern:
-Verificar servicios que se encuentran corriendo en la maquina y que estn
registrados.
-Verificar el registro.
-No confiar en una sola solucin antivirus.
-No confiar en lo que veamos como logs, porque el perpetrador los pudo
haber alterado (zapping).
-No pensar que nuestro penetrador es mas listo que nosotros.
-Verificar procesos corriendo y las firmas de los mismos.
-Analizar detenidamente los logs con los que contamos.
Tomando evidencia
-Si nosotros fuimos precavidos realizamos las siguientes tareas despus de
actualizar nuestro sistema y parchar (si ya se que son MUCHOS parches):
-Tomar una lista de las firmas de los archivos del sistema y
mantenerlo actualizado.
-Tomar un snapshot o de menos un screenshot de los servicios que
utilizamos y aplicaciones que tenemos corriendo y mantenerlo actualizado.
-Tomar una lista de los usuarios que frecuentan que son frecuentes
en nuestros sistemas.
-Auditar los passwords de los usuarios.
-Scanear peridicamente con nuestra solucin antivirus y antimalware.
-Pensar que NO soy seguro, solo hay una cosa segura en la vida
-Pensar que soy un target para cualquier usuario de internet o de mi
red local.
-No confiamos en solo un punto de vista.
-Pensar que la paranoia es buena :)
Busqueda de patrones
Si no realizamos ninguna de estas tareas, el anlisis forense ser aun mas
difcil porque contamos con poca informacin, pero como siempre TODO es
posible.
Bsqueda de patrones:
Recompilando informacion
Recompilar informacin de un sistema perpetrado es una tarea ardua, difcil
y tediosa, comencemos a analizarlo por sistema:
-Windows
-Chequear el sistema de logeo de microsoft, (inicio-configuracinpaneldecontrol-herramientasadmin-visordesucesos).
-Utilizar programas opensource y freeware como los que podemos
encontrar en sysinternals.com (de algunos de ellos no es posible obtener el
sourcecode).
-Ejemplos.
-Utilizar microsoft authenticode
(http://www.microsoft.com/downloads/details.aspx?FamilyID=2b742795d0f0-4a66-b27f-22a95fcd3425&DisplayLang=en)
Hice un mirror de este programa para x86, lo pueden encontrar en
(http://www.overflow.host.sk/authenticode.exe)
-Ejemplos.
-Verificar puertos abiertos (nmap(remoto) o netstat(local))
-Verificar las firmas de los binarios y libreras que son utilizados
-Utilizar verifier.exe (winnt\system32\verifier.exe) para verificar que
ciertos archivos sean los que dicen ser.
Recompilando informacion
-Desemsablar y trazar aplicaciones que creemos que son sospechosas.
-Ejemplos.
-Reconstituir archivos borrados (esperar a que lleguemos ahi).
-Generar un chequeo de la memoria fsica (esperar a que lleguemos ah)
-Dumpear completamente la capa de informacin de memoria virtual.
(esperar a que lleguemos ah).
-Autocracking de mis passwords, para ver debilidades.
-Ejemplos
-Autohacking de mi ordenador de estudio para ver por donde pudo ser
perpetrado el incidente. (esperar a que lleguemos ah).
-Verificacin de archivos finales y servicios.
-Ejemplos.
Recompilando informacion
-Linux/BSD
-Verificar si existio zapping en nuestro servidor (marry.c)
-Ejemplos
-Verificar los logs con los que contamos
-Ejemplos.
-Chequear inetd.conf, xinetd y chequear archivos de inicializacin
normales, y archivos que el perpetrador suele olvidar.
-Ejemplos.
-Verificar puertos abiertos (nmap(remoto) o netstat(local))
-NO CONFIAR MUCHO EN LO QUE VEMOS, PODEMOS
TENER UN BACKDOOR ACTIVO QUE NO NOS MUESTRE LO QUE EN
VERDAD ESTE ABIERTO.
-Descargar chkrootkit para buscar rootkits pblicos.
http://www.chkrootkit.org/
-Ejemplos
-Verificar con una solucin antivirus en busca de algun otro
rezago publico que pueda haber quedado.
Recompilando informacion
-Desemsablar y trazar aplicaciones que creemos que son sospechosas.
-Ejemplos.
-Reconstituir archivos borrados (esperar a que lleguemos ahi).
-Generar un chequeo de la memoria fsica (esperar a que lleguemos ah)
-Dumpear completamente la capa de informacin de memoria virtual.
(esperar a que lleguemos ah).
-Autocracking de mis passwords, para ver debilidades.
-Ejemplos
-Autohacking de mi ordenador de estudio para ver por donde pudo ser
perpetrado el incidente. (esperar a que lleguemos ah).
-Verificacin de archivos finales y servicios.
-Ejemplos.
ALIADOS
<linux/mm.h>
<linux/mmzone.h>
/usr/src/linux/mm/* (especialmente page_alloc.c)
/usr/src/linux/arch/i386/mm/*
Mucha paciencia y dedicacion ;)
DMA
Normal
HighMem
zone_mem_m
ap
zone_mem_m
ap
zone_mem_m
ap
struct
page
[...]
struct
page
[...]
struct
page
[...]
Consejos prcticos
Es difcil hacer este tipo de anlisis sin utileras y sin sentido comn, es por
ello que debern de utilizarse ambas en la generacin de este tipo de
anlisis.
Las aplicaciones que utilizaremos sern:
-memdump (posix)
http://www.porcupine.org/forensics/memdump-1.0.tar.gz (solaris/bsd/linux)Configuracin de memory dumps de windows. (windows).
-Es posible forzar un dump de la memoria completo que procesara dr
watson, esto se logra modificando la llave de registro esto lo tuvimos que
haber hecho antes de que se diera el incidente.
HKEY_LOCAL_MACHINE\System\
CurrentControlSet\Services\i8042prt\Parameters, hay que crear una llave
DWORD llamado CrashOnCtrlScroll, a esa llave hay que setearle el valor
de 1, reiniciar el ordenador y presionar el control derecho y presionar dos
veces scroll lock.
Consejos practicos
Forensics DataRecovery
Terminado el tpico de que es lo
que podemos encontrar en la
memoria fsica, analizemos ahora
que es lo que podemos encontrar
en el disco rgido.
Para ello debemos entender a
grandes rasgos como es que se
comporta el disco rgido y como
es su forma de estudio a groso
modo.
FORENSICS DATARECOVERY.
Conceptos bsicos de filesystems
y memoria
(NTFS/FAT(x)/ext2/ext3/ffs).
Antes que nada el disco duro
Forensics DataRecovery
Un disco duro fsicamente, como podemos verlo en la imagen anterior se
constituye de mltiples platos que giran rpidamente a una velocidad
constante, la cabeza (head), lee y escribe por medio de impulsos
magnticos. La superficie del disco esta formateada en bandas invisibles y
concntricas llamadas tracks.
La palabra cilindro se refiere a todas las tracks en las que se puede escribir
o leer. Ahora bien un sector es una porcion de 512bytes de track como se
puede mostrar en la figura, los sectores fisicos son magneticamente
invisibles y se encuentran marcados en el disco por el creador, cuando
nosotros damos un formato a bajo nivel estamos reconstituyendo este
formato, es por eso que la informacion es realmente reformateada aunque
aun siga ah sin formato alguno, los tamaos de los sectores nunca
cambia aun que el sistema operativo sea diferente, asi que cada disco duro
tendra 63 sectores por track.
Forensics DataRecovery
Forensics DataRecovery
Particiones (Volumenes).
Forensics DataRecovery
FAT32:
El sistema de archivos fat32 fue introducido con el release OEM de
Windows 95 y fue refinado bajo windows 98, tiene muchas mejoras sobre
el sistema de archivos fat16:
-Soporte de nombres de archivo grandes.
-Un simple archivo puede ser tan grande como 4GB menos 2 bytes (por
temas de manejo de memoria).
-Cada entrada en la tabla de allocacion maestra FAT es de 32 bits.
-Cada volumen puede alocar cerca de 268,435,456 clusters.
-El folder raiz puede ser alocado donde sea en el disco y puede tener casi
cualquier tamao.
-Cada volumen puede allocar cerca de 32GB.
-El sector maestro de boot incluye una copia de backup. Esto significa que
los drives fat32 son menos susceptibles a fallar a diferencia de los drives
FAT16.
Forensics DataRecovery
NTFS
El sistema de archivos NTFS es soportado por Microsoft Windows NT,
2000, XP y 2003, y tiene las siguientes mejoras sobre FAT.
-NTFS puede manejar drives inmensos en un solo drive o en muchos
representados en uno solo (esto NO ayuda en la reconstruccin forense de
informacin).
-El tamao de cada cluster es de 4KB para discos de mas de 2GB.
-Soporta nombres UNICODE de 255 caracteres.
-Permite setear permisos a archivos, directorios, por medio de nombres de
usuario y grupos. Los niveles de acceso soportados son:
(read/write/modify/etc).
-Tiene encripcin y compactacin preestablecida. (EFS).
-Tiene sistema de journalizacion.
-Maneja quotas.
-Tiene recovery automtico o en demanda en contra de errores, reparado
automatizado de errores debido al sistema de journalizacion.
-Soporta Mirroring
Forensics DataRecovery
Ext2fs:
-Soporte de los tipos de archivos mas significativos para unix: archivos,
directorios, devices, archivos especiales y symlinks.
-Puede manejar sistemas de archivos creados sobre particiones inmensas,
las nuevas implementaciones de kernel soportan hasta 4TB, ahora es
posible utilizar discos realmente grandes sin utilizar muchas particiones.
-Soporte de nombres grandes, el limite puede ser extendido a 1012 si es
necesario.
-Ext2 reserva bloques destinados para el sper usuario (root), normalmente
5% de los bloques son reservados, eso ayuda a que el administrador
recobre rpidamente y de forma facil un problema de filesystems llenos.
-Ext2 soporta algunas extensiones que no son usualmente utilizadas en
sistemas normales unix.
-Soporte de atributos de archivo avanzados. (permisos heredados).
-Las opciones de montado permiten al administrador obtener "metadata"
(inodos, bitmap blocks, indirect blocks y directory blocks), para poder
escribir de manera asincrona.
-Se permite setear el tamao de los bloques lgicos por el administrador
que comnmente son de 1024/2048 y 4096.
http://e2fsprogs.sourceforge.net/ext2intro.html
Forensics DataRecovery
http://e2fsprogs.sourceforge.net/ext2intro.html
Forensics DataRecovery
Ext3fs:
Ext3fs es una mejora significativa a ext2, actualmente es mantenido por
redhat inc.
-Ext3 permite todas las funciones de ext2.
-Ext3 tiene journalizacion de las tablas de asignacin de archivos, esto
quiere decir que se mantiene traqueado el estatus de un archivo, si nuestro
ordenador de pronto deja de funcionar la tabla maestra mantendr el track
del archivo hasta donde se quedo sin eliminarlo, esto ayuda
significativamente al desempeo del ordenador. Es frustrante obtener una
corrupcin innecesaria de los archivos de nuestro ordenador por un
apagn, con ext3 esto no ocurre de manera tan exponencial.
-Ext3 tiene pros y contras en el momento de realizar un anlisis forense, ya
que su tabla de asignacin nos ayuda a reconstituir como fue el proceso
que sufri un archivo (borrado), pero tambin debido a que todas las
funciones se encuentran traqueadas si erramos algn paso podemos
perder por completo informacin que podria dictaminar como fue que
nuestro ordenador fue penetrado.
Forensics DataRecovery
UFS2:
Introducido en FreeBSD 5 y es una extensin de UFS.
Punteros de 64 bits (soporte) :
Esto incrementa el tamao de tanto el nombre del archivo como el tamao
de un archivo ya que ahora podr ser de 0x0000000000000000
Extensin de tamaos para flags:
Se podr alojar mas informacin para inodos , independientemente de los
atributos , tamao , puntero , y obviamente nmeros de inodos mas
grandes con los cuales se podra aprovechar el fsirand pero ahora orientado
a un return value tipo u_int64.
Adicin extendida de atributos por inodo:
todo esto se hace individualmente
Forensics DataRecovery
Como funciona ?
es simple:
para buscar la direccin (PATH)
lookup() esta rutina simplemente busca el path
para asignarle un nombre:
creat()
crea el archivo en el fs
mknod()
crea archivo especial tipo bloque , carcter , socket , pipe , zerofile
(S_IFREG)
link()
Crea el acceso a los datos
symlink()
hace que un archivo se llame de otra forma y apunte a otro (alias)
mkdir()
crea una direccin con un path
Forensics DataRecovery
Atributos:
getattr()
Checa atributos de un file
setattr()
Escribe atributos
Interpretacion de objetos
open()
abre un file descriptor hacia el tipo de archivo
Forensics DataRecovery
readdir()
Lee el contenido de un directorio
readlink()
Lee a lo que apunta un archivo creado con symlink()
mmap()
Mete a la memoria file descriptors
close()
Cierra el filedescriptor indicado que se encuentra manipulado en el kernel
Control de procesos
ioctl()
Manipula descriptors a archivos especiales generalmente char devs o
blockdevs para acceso directo a hardware
select()
es como poll() en linux
lo que hace es esperar a que un file descriptor cambie su estado
Forensics DataRecovery
Manejo de objetos:
Accesos a disco:
Para archivos mayores a un megabyte se usa un "double indirect block"
que es un apuntador a un bloque de apuntadores que apuntan a punteros
que apuntan a datos fsicos (jajaja) la explicacin se hara posteriormente
Es como hacer un
int ***matriz ;
En donde a cada elemento de la matriz se le asigne memoria e informacion
que apunte a cada parte de la matriz
char ***algunosdatos = (char ***)malloc(sizeof(char *));
matriz[x][y][z] = *(algunosdatos++)
Forensics DataRecovery
El primer paso para abrir un
archivo es encontrar el archivo
asociado al vnode despus se le
hace un "lookup" request y el
sistema de archivos busca en su
coleccin de inodos para ver si el
que necesita esta en memoria
despus se localiza el bloque
disco que contiene el inodo para
leerlo desde el disco y subirlo a
memoria del sistema y despus
se le aplica lo leido por los hash
chains que es la informacin que
se le aplicara al sistema tambien
toda la informacin contiene
estructuras de datos del kernel.
que son usadas para
manipulacin de fd's y otras cosas
en el kernel cuando la ultima
referencia del archivo se cierra el
file system notifica que el archivo
se ha vuelto inactivo y toda esta
informacin se encuentra en la
estructura stat.
Forensics DataRecovery
Locking
Se pueden proteger paginas fsicas tambin, otra caracterstica que no
tiene linux , lock(2) en linux manda ENOSYS (porque no esta implementado
en el kernel) con mlock en openbsd se pueden proteger paginas fsicas en
memoria, en UFS se puede crear el respectivo filedescriptor y mapearse en
memoria y cerrar los respectivos bytes en rango.
Esto fue una muy superficial explicacion de UFS . Muchos filesystems
tienen parecida operatividad y las caracteristicas con otros se reducen al
locking e implementaciones a 64 bits para permitir mayor utilidad del
sistema operativo
Por ultimo solamente hice un pequenio programa que despliega 3
elementos de struct stat
Forensics DataRecovery
Forensics DataRecovery
Forensics DataRecovery
Conceptos de Memoria
-La memoria agrupa las sentencias que seran dictadas por el kernel y
escritas, ledas o manipuladas al filesystem. Esto quiere decir que cualquier
operacin que generemos hacia nuestro filesystem sera directamente
proporcional a la operacin que el kernel dictara.
Forensics DataRecovery
VFS:
Restaurando la informacin
Restaurando la informacin
http://www.sleuthkit.org/
Restaurando la informacin
FTimes
http://ftimes.sourceforge.net/
Restaurando la informacion
Restaurando la informacion
http://www.pcinspector.de/
Restaurando la informacin
http://www.pcinspector.de/
Restaurando la informacin
Restaurando la informacin
Your Brain
Esta utilera es la mas difcil de usar,
muchos de nosotros no la utilizamos al
100%.
La mayora de las utileras
anteriormente expuestas no dan la
informacin que realmente
necesitamos, y conllevan a que
comencemos a pensar como
solucionar el problema, si tuvimos un
incidente de penetracin, este es el
mejor momento para utilizar tu cerebro.
Restaurando la informacin
Emitiendo un veredicto
Consejos Prcticos
1.
2.
3.
4.
5.
6.
7.
8.
9.
Post-Hack Pentesting
Post-Hack Pentesting
Ejemplos:
Veamos una vulnerabilidad explotada en su totalidad, para demostrar que
como lo mencionamos una y otra vez, NADA es seguro.
Honeypots
Llamados por algunos, atrapa-hackers, los honeypots no son nada mas
que utilerias diseadas para simular ser un sistema vulnerable a X o Y
problema y por consiguiente permitir explotarlo. La funcion primordial de
un honeypot segn lanze spitzner es poder capturar, logear y perseguir
por medio de pruebas 0hdays y posibles perpetradores, la realidad es
que estas utilerias no han cazado a ningun intruso realmente poderoso y
perspicaz, pero han sembrado las bases para poder demostrar lo
vulnerables que son los sistemas y de que en verdad es posible
penetrarlos.
Lo mas importante en nuestra tarea forense es verificar que
si estamos seguros de que tuvimos una intrusion nuestro
atacante va a regresar y seria divertido y totalmente valido
ver que hace, de donde se conecta y como opera su tecnica
de penetracion, es por eso que en esta parte forense el
tema de los honeypots es crucial.
Honeypots
En el sitio http://www.honeynet.org/tools/index.html, podemos encontrar
una gran gama de utileras que nos pueden ayudar a generar nuestro tarrito
de miel, sin dejar de lado porque lo estamos haciendo, NO lo estamos
haciendo para capturar exploits, queremos trazar a nuestro intruso.
-Keystroke check
-NIDS policyes
-Eventlog to syslog
-Windows FileSystem Analisis
-Capture stdin/stdout/stderr
-Etc, etc.
Seria interesante logear todo este tipo de cosas, asi como posibles
conversaciones, transferencias y dems.
Poisoners
Pensar que el contar con switches nos quita que un atacante pueda sniffear
la red es hoy en dia una estupidez, existen tcnicas como el arp-spoofing o
el arp-poisoning que permiten a un atacante sniffear toda nuestra red, sin
necesidad de escribir un gran numero de ordenes.
Ahora que nos hemos convertido en nuestro propios hackers podemos
verificar esto y darnos el lujo de buscar en nuestra red poisoners y tarjetas
promiscuas para eliminar el riesgo de que toda la informacin que estemos
pasando por nuestra red se encuentre expuesta.
Para estas tareas podemos utilizar software como:
-ettercap
-nast (http://nast.berlios.de/)
-arptoxin (http://www.l0t3k.net/tools/ARPutils/arptoxin.exe)
-arpoison (http://www.l0t3k.net/tools/ARPutils/arpmim-0.2.tar.gz)
Sniffers
Si bien sabemos que fuimos penetrados, porque no saber que fue lo que
pasara o lo que paso?, con la utilizacin de sniffers podemos capturar las
tramas de datos que nos plazcan, logear todo el trafico a un host y muchas
otras funciones mas.
Los mas comunes son:
-tcpdump (http://www.tcpdump.org)
-ethreal (http://www.ethereal.com)
-ettercap (ettercap.sourceforge.net/)
-sniffer (NAI) (http://www.sniffer.com)
-snort (sniff packet mode) (http://www.snort.org)
-sniffit (http://reptile.rug.ac.be/~coder/sniffit/sniffit.html)
-dsniff (password and message sniffer)
(www.monkey.org/~dugsong/dsniff/)
-etc.
Seekers
Information seekers, son utileras de buscado de datos y comportamiento
anmalo, comnmente una rama de los NIDS (Network Intrusion Detection
Systems). Estos nos ayudan a verificar comportamiento anmalo
generalmente, retransmisin de paquetes y comportamiento anmalo de
tarjetas.
Entre los mas comunes se encuentran:
-Snort (Anomaly Verification Mode)
(http://www.snort.org)
-Prelude (Packet Mode and Anomaly Check Mode).
(http://www.prelude-ids.org/)
NIDS
NIDS son las siglas de Network Intrusion Detection System, comnmente
utilizados para poder detectar intrusiones sobre la red, comnmente es
instalado en modo Promiscuo, esto quiere decir que un nodo sniffeara una
porcin de la red completa sin instalar detectores de intrusos y sensores en
cada ordenador (HIDS).
Los mas comnmente utilizados son:
-Snort (http://www.snort.org)
-Prelude (http://www.prelude-ids.org/)
-RealSecure (http://www.iss.net)
-Etc.
PIDS
PIDS son las siglas de Prevention Intrusion Detection System, son los
llamados detectores de intrusos agresivos, son aquellos que realizan una
tarea en dado caso de detectar un intento de intrusion, como por ejemplo
poner una regla en el firewall, quitarla, resetear una coneccion (SYN_RST),
redirigir el trafico, etc.
Los mas comunmente utilizados son:
-Snort (http://www.snort.org)
(SNORT INLINE)
-Prelude (http://www.prelude-ids.org/)
(PRELUDE INLINE)
-RealSecure (http://www.iss.net)
-Etc.
Conclusiones
System Internals
http://www.sysinternals.com
The design and implementation of the 4.4 BSD operating system (Addison
Wesley)