Análisis Criminalístico Forense con OSS

75
Análisis Criminalístico Forense con OSS Luis Guillermo Castañeda Estañol KasperskyLab Chief Research Officer Hypersec Consulting UK Eduardo Ruiz Duarte KasperskyLab Security Consultant Hypersec Consulting UK

description

Analisis forense de equipos informaticos

Transcript of Análisis Criminalístico Forense con OSS

Page 1: Análisis Criminalístico Forense con OSS

Análisis Criminalístico Forense con OSSLuis Guillermo Castañeda Estañol

KasperskyLab Chief Research OfficerHypersec Consulting UK

Eduardo Ruiz DuarteKasperskyLab Security Consultant

Hypersec Consulting UK

Page 2: Análisis Criminalístico Forense con OSS

Index

• ¿Me “hackearon” ahora que?-Búsqueda de evidencia.-Búsqueda de patrones.-Recopilación de información.

• Forensics over fisical memory.-Análisis Forense de memoria física en sistemas IA32 (win32/linux/bsd).-Consejos prácticos-W0000AAAHHH mira lo que dejaste.

Page 3: Análisis Criminalístico Forense con OSS

• Forensics Datarecovery-Conceptos básicos de filesystems y memoria (NTFS/FAT(x)/ext2/ext3/ufs2)-Conceptos avanzados de agrupación de información y tablas a nivel de kernel.-Restaurando la información-Emitiendo un veredicto-Consejos Prácticos

Index

Page 4: Análisis Criminalístico Forense con OSS

• Post-Hack Pentesting-Que es el pentesting?-Como se realiza-Ejemplos.

• Forensics Network Discovery-Implementación de soluciones para:– Honeypots– Poisoners– Sniffers– Seekers– NIDS/PIDS

• Conclusiones

Index

Page 5: Análisis Criminalístico Forense con OSS

¿Me “hackearon”, ahora que?

Page 6: Análisis Criminalístico Forense con OSS

• 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 lógicamente 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 explotación, borrado de logs y demas.

Ahora bien donde un perpetrador de un incidente dejaria semejantes utilerias y como actuan estas?

¿Me “hackearon”, ahora que?

Page 7: Análisis Criminalístico Forense con OSS

Windows al igual que linux tiene ciertos “sistemas” de seguridad y logeo de accesos a todas sus aplicaciones, es posible logear si una aplicación genero errores, si una aplicación fue derribada, si una aplicación, servicio o usuario intento perpetrar un ilicito y demas.

Los primeros pasos de nuestra búsqueda de evidencia serán:

-Verificar servicios que se encuentran corriendo en la maquina y que están registrados.-Verificar el registro.-No confiar en una sola solución 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

Page 8: Análisis Criminalístico Forense con OSS

-Si nosotros fuimos precavidos realizamos las siguientes tareas después 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 periódicamente con nuestra solución antivirus y anti-

malware.-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 :)

Tomando evidencia

Page 9: Análisis Criminalístico Forense con OSS

Si no realizamos ninguna de estas tareas, el análisis forense será aun mas difícil porque contamos con poca información, pero como siempre TODO es posible.

• Búsqueda de patrones:

Siempre es común que las maquinas de producción sean constantemente vigiladas por nosotros, sabemos que les duele, si se rompe tal o tal que hacer y demás, sabemos que servicios necesitamos para subsistir y sabemos también con que usuarios contamos, porque no buscar diferencias?.

Buscar patrones es una excelente forma de encontrar que es lo diferente en un sistema perpetrado.

Busqueda de patrones

Page 10: Análisis Criminalístico Forense con OSS

Recompilar información de un sistema perpetrado es una tarea ardua, difícil y tediosa, comencemos a analizarlo por sistema:

-Windows

-Chequear el sistema de logeo de microsoft, (inicio-configuración-paneldecontrol-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=2b742795-d0f0-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 librerías que son utilizados-Utilizar verifier.exe (winnt\system32\verifier.exe) para verificar que

ciertos archivos sean los que dicen ser.

Recompilando informacion

Page 11: Análisis Criminalístico Forense con OSS

-Desemsablar y trazar aplicaciones que creemos que son sospechosas.-Ejemplos.

-Reconstituir archivos borrados (esperar a que lleguemos ahi).-Generar un chequeo de la memoria física (esperar a que lleguemos ahí)-Dumpear completamente la capa de información 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í).

-Verificación de archivos finales y servicios.-Ejemplos.

Recompilando informacion

Page 12: Análisis Criminalístico Forense con OSS

-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 inicialización 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 públicos.http://www.chkrootkit.org/

-Ejemplos-Verificar con una solución antivirus en busca de algun otrorezago publico que pueda haber quedado.

Recompilando informacion

Page 13: Análisis Criminalístico Forense con OSS

-Desemsablar y trazar aplicaciones que creemos que son sospechosas.-Ejemplos.

-Reconstituir archivos borrados (esperar a que lleguemos ahi).-Generar un chequeo de la memoria física (esperar a que lleguemos ahí)-Dumpear completamente la capa de información 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í).-Verificación de archivos finales y servicios.

-Ejemplos.

Recompilando informacion

Page 14: Análisis Criminalístico Forense con OSS

Análisis forense a memoria física.

Page 15: Análisis Criminalístico Forense con OSS

Estas técnicas son muy sencillas, adentrándonos en las verdaderas intenciones de esta charla iniciemos con la primera fase:

ANALISIS FORENSE A MEMORIA FISICA:

El análisis de memoria física se basa en dumpear la memoria física y virtual porque ahí se encuentra mucha información que seguramente no se encuentra en el disco, pocos intrusos se toman la molestia de flushear los buffers, y dejan información sensitiva que puede ser utilizada para inculparlos.

Que nos aporta la memoria fisica?

-Archivos con password en texto plano-Archivos con variables de ambiente ($HISTFILE)-El mapeo de todos los servicios que se encuentren en ejecución.

Análisis Forense a Memoria Física

Page 16: Análisis Criminalístico Forense con OSS

Análisis Forense a Memoria Física

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 ;)

Page 17: Análisis Criminalístico Forense con OSS

Organizacion de la memoria física

• Bancos de Memoria -> NODOS (uno por procesador)

typedef struct pglist_data{

zone_t node_zones[MAX_NR_ZONES];zonelist_t node_zonelists[GFP_ZONEMASK+1];int nr_zones;struct page *node_mem_map;unsigned long *valid_addr_bitmap;struct bootmem_data *bdata;unsigned long node_start_paddr;unsigned long node_start_mapnr; unsigned long node_size;int node_id;struct pglist_data *node_next;

} pg_data_t;

Page 18: Análisis Criminalístico Forense con OSS

Análisis Forense a Memoria Física

Los nodos se dividen en bloques -> ZONAS

• Zona DMA • Zona Normal• Zona Alta (HighMem)

static char *zone_names[MAX_NR_ZONES] = { "DMA", "Normal", "HighMem" };

Page 19: Análisis Criminalístico Forense con OSS

• Los nodos se dividen en bloques -> ZONAS

typedef struct zone_struct {

spinlock_t lock;unsigned long free_pages;unsigned long inactive_clean_pages;unsigned long inactive_dirty_pages;unsigned long pages_min, pages_low, pages_high;struct list_head inactive_clean_list;free_area_t free_area[MAX_ORDER];struct pglist_data *zone_pgdat;struct page *zone_mem_map;unsigned long zone_start_paddr;unsigned long zone_start_mapnr;char *name;unsigned long size;

} zone_t;

Análisis Forense a Memoria Física

Page 20: Análisis Criminalístico Forense con OSS

pg_data_t

NormalDMA HighMem

node_zones

zone_mem_map

zone_mem_map

zone_mem_map

struct page

[...]struct page

struct page

[...][...]

Análisis Forense a Memoria Física

Page 21: Análisis Criminalístico Forense con OSS

typedef struct pglist_data{

zone_t node_zones[MAX_NR_ZONES];zonelist_t node_zonelists[GFP_ZONEMASK+1];int nr_zones;struct page *node_mem_map;unsigned long *valid_addr_bitmap;struct bootmem_data *bdata;unsigned long node_start_paddr;unsigned long node_start_mapnr; unsigned long node_size;int node_id;struct pglist_data *node_next;

} pg_data_t;

typedef struct zone_struct {

spinlock_t lock;unsigned long free_pages;unsigned long inactive_clean_pages;unsigned long inactive_dirty_pages;unsigned long pages_min, pages_low, pages_high;struct list_head inactive_clean_list;free_area_t free_area[MAX_ORDER];struct pglist_data *zone_pgdat;struct page *zone_mem_map;unsigned long zone_start_paddr;

unsigned long zone_start_mapnr;

char *name;unsigned long size;

} zone_t;

typedef struct page{

struct list_head list;struct address_space *mapping;unsigned long index;struct page *next_hash;atomic_t count;unsigned long flags;struct list_head lru;unsigned long age;wait_queue_head_t wait;struct page **pprev_hash;struct buffer_head * buffers;void *virtual; /* non-NULL if kmapped */struct zone_struct *zone;

} mem_map_t;

Análisis Forense a Memoria Física

Page 22: Análisis Criminalístico Forense con OSS

Imagen del Kernel -> 1 MiB(0x00100000)Se traduce a la dirección virtual (0x00100000+Page_Offset)Reservada de 8MiB para la imagen.(esto implica que la primer memoria disponible para usar va a estar en 0xC0800000)Linux intenta reservar 16MiB de memoria para la zona DMA, esto significa que la primer área virtual que el kernel tiene disponible para allocatear es 0xC1000000 (donde usualmente se aloja el 'global_mem_map' , a partir de esta direccion de memoria parseamos todo)Las direcciones de la memoria física son traducidas a 'struct pages' tratándolas como un indice dentro del array 'mem_map'<asm-i386/page.h>, en la macros esta como traduce todo.

Weird0, huh?

Como se mapea la memoria física

Page 23: Análisis Criminalístico Forense con OSS

Es difícil hacer este tipo de análisis sin utilerías y sin sentido común, es por ello que deberán de utilizarse ambas en la generación de este tipo de análisis.

Las aplicaciones que utilizaremos serán:

-memdump (posix)http://www.porcupine.org/forensics/memdump-1.0.tar.gz (solaris/bsd/linux)-Configuración 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 prácticos

Page 24: Análisis Criminalístico Forense con OSS

Consejos practicos

Page 25: Análisis Criminalístico Forense con OSS

• Ahora bien toda la información recopilada nos dará un dump de memoria el cual podremos analizar en la carpeta de Windows obteniendo el archivo memory.dmp, con esta información deberemos analizar los datos por ejemplo:

Mira lo que dejaste

Page 26: Análisis Criminalístico Forense con OSS

Mira lo que dejaste

Page 27: Análisis Criminalístico Forense con OSS

Forensics Data Recovery

Page 28: Análisis Criminalístico Forense con OSS

Terminado el tópico de que es lo que podemos encontrar en la memoria física, analizemos ahora que es lo que podemos encontrar en el disco rígido.Para ello debemos entender a grandes rasgos como es que se comporta el disco rígido y como es su forma de estudio a groso modo.

FORENSICS DATARECOVERY.Conceptos básicos de filesystems y memoria (NTFS/FAT(x)/ext2/ext3/ffs).

Antes que nada el disco duro

Forensics DataRecovery

Page 29: Análisis Criminalístico Forense con OSS

Un disco duro físicamente, como podemos verlo en la imagen anterior se constituye de múltiples platos que giran rápidamente a una velocidad constante, la cabeza (head), lee y escribe por medio de impulsos magnéticos. La superficie del disco esta formateada en bandas invisibles y concéntricas 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 tamaños de los sectores nunca cambia aun que el sistema operativo sea diferente, asi que cada disco duro tendra 63 sectores por track.

Forensics DataRecovery

Page 30: Análisis Criminalístico Forense con OSS

• Fragmentación: Con el tiempo los archivos se van disipando por el disco, a este paso se le llama fragmentación de archivos. Un archivo fragmentado es aquel cuyos sectores no se encuentran mas alocados en áreas asíncronas sino que se encuentra “un pedazito” por aquí otro por haya. Cuando esto pasa los cabezales tienen que dejar pasar y saltar otros archivos para poder alocar el archivo fragmentado. Esto hace mas lento la escritura y lectura de los archivos, pero ayuda de manera significante en el proceso de reconstitucion forense.

• Translación a Números de Sector: Los controladores de disco duro realizan un proceso llamado translación, la conversión de la geometría de un disco duro fisico a una estructura de datos que es entendida al final por el sistema operativo, todo esto es normalmente realizado vía firm-ware. Después de la translación el sistema operativo puede trabajar con lo que es llamado “sectores numericos logicos”, estos siempre son sequenciales empezando desde 0.

Forensics DataRecovery

Page 31: Análisis Criminalístico Forense con OSS

• Particiones (Volumenes).

Un disco duro simple es dividido en una o mas unidades lógicas llamadas particiones, cada partición representa espacio para alocar la información, existen dos tipos de particiones:

-Primarias-Extendidas

Las configuraciones comunes son las siguientes:-Arriba de 3 particiones primarias y una partición extendida.-Arriba de 4 particiones primarias y ninguna extendida.

Cada partición extendida puede ser dividida en particiones lógicas ilimitadas. Las particiones primaras pueden hacerse booteables, pero las particiones lógicas no. Ahora bien cada particion puede ser FORMATEADA con el filesystem de nuestra preferencia.*

Después de todo este choro “teologico” :), pasemos a la parte que mas nos interesa, los sistemas de archivos.

Forensics DataRecovery

*Assembly Language for intel based computers (Kip Irvine) – Disk Fundamentals

Page 32: Análisis Criminalístico Forense con OSS

• 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 tamaño.-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

Page 33: Análisis Criminalístico Forense con OSS

• 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 reconstrucción forense de información).-El tamaño 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 encripción y compactación preestablecida. (EFS).-Tiene sistema de journalizacion.-Maneja quotas.-Tiene recovery automático o en demanda en contra de errores, reparado automatizado de errores debido al sistema de journalizacion.-Soporta Mirroring

Forensics DataRecovery

Page 34: Análisis Criminalístico Forense con OSS

• 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 súper usuario (root), normalmente 5% de los bloques son reservados, eso ayuda a que el administrador recobre rápidamente 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 tamaño de los bloques lógicos por el administrador que comúnmente son de 1024/2048 y 4096.

http://e2fsprogs.sourceforge.net/ext2intro.html

Forensics DataRecovery

Page 35: Análisis Criminalístico Forense con OSS

-Ext2 tiene la implementación de symlinks rápidos, esto quiere decir que este symlink no utiliza ningún bloque de datos en el sistema de archivos.-Ext2 mantiene un tacking en el estado del filesystem. Un espacio especial es reservado por el superbloque por el código del kernel para indicar el estatus del filesystem. Esto ayuda a las labores de restauración de datos en caso de un incidente inesperado.-Soporte de archivos inmutables inspirados en el filesystem 4.4BSD, este tipo de archivos solo se puede leer, nadie puede escribir o borrarlos, esto ayuda a proteger archivos sensitivos de configuración. Este tipo de archivos ayuda a que por ejemplo un archivo que solo crece como los logs, no pueda ser alterado.

http://e2fsprogs.sourceforge.net/ext2intro.html

Forensics DataRecovery

Page 36: Análisis Criminalístico Forense con OSS

• 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 asignación 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 desempeño del ordenador. Es frustrante obtener una corrupción innecesaria de los archivos de nuestro ordenador por un apagón, con ext3 esto no ocurre de manera tan exponencial.-Ext3 tiene pros y contras en el momento de realizar un análisis forense, ya que su tabla de asignación nos ayuda a reconstituir como fue el proceso que sufrió un archivo (borrado), pero también debido a que todas las funciones se encuentran traqueadas si erramos algún paso podemos perder por completo información que podria dictaminar como fue que nuestro ordenador fue penetrado.

Forensics DataRecovery

Page 37: Análisis Criminalístico Forense con OSS

• UFS2:

Introducido en FreeBSD 5 y es una extensión de UFS.

Punteros de 64 bits (soporte) :

Esto incrementa el tamaño de tanto el nombre del archivo como el tamaño de un archivo ya que ahora podrá ser de 0x0000000000000000

Extensión de tamaños para flags:

Se podrá alojar mas información para inodos , independientemente de los atributos , tamaño , puntero , y obviamente números de inodos mas grandes con los cuales se podra aprovechar el fsirand pero ahora orientado a un return value tipo u_int64.

Adición extendida de atributos por inodo:todo esto se hace individualmente

Forensics DataRecovery

Page 38: Análisis Criminalístico Forense con OSS

Como funciona ?

es simple:para buscar la dirección (PATH) lookup() esta rutina simplemente busca el path

para asignarle un nombre:creat()crea el archivo en el fsmknod()crea archivo especial tipo bloque , carácter , 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 dirección con un path

Forensics DataRecovery

Page 39: Análisis Criminalístico Forense con OSS

• Cambiar nombres o borrar:rename()El nombre de la funcion lo dice todoremove()usa unlink() para eliminar el hardlink hacia el filermdir() El nombre de la funcion lo dice todo

• Atributos:getattr()Checa atributos de un file

• setattr()Escribe atributos

• Interpretacion de objetosopen() abre un file descriptor hacia el tipo de archivo

Forensics DataRecovery

Page 40: Análisis Criminalístico Forense con OSS

readdir()Lee el contenido de un directorioreadlink()Lee a lo que apunta un archivo creado con symlink()mmap()Mete a la memoria file descriptorsclose()Cierra el filedescriptor indicado que se encuentra manipulado en el kernel

• Control de procesosioctl()Manipula descriptors a archivos especiales generalmente char devs o blockdevs para acceso directo a hardwareselect()es como poll() en linux lo que hace es esperar a que un file descriptor cambie su estado

Forensics DataRecovery

Page 41: Análisis Criminalístico Forense con OSS

• Manejo de objetos:

• lock() , unlock() etc...algunas operaciones especiales para manipular el acceso

• 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 físicos (jajaja) la explicación se hara posteriormente

• Es como hacer unint ***matriz ;

En donde a cada elemento de la matriz se le asigne memoria e informacionque apunte a cada parte de la matrizchar ***algunosdatos = (char ***)malloc(sizeof(char *));matriz[x][y][z] = *(algunosdatos++)

Forensics DataRecovery

Page 42: Análisis Criminalístico Forense con OSS

El primer paso para abrir un archivo es encontrar el archivo asociado al vnode después se le hace un "lookup" request y el sistema de archivos busca en su colección de inodos para ver si el que necesita esta en memoria después se localiza el bloque disco que contiene el inodo para leerlo desde el disco y subirlo a memoria del sistema y después se le aplica lo leido por los hash chains que es la información que se le aplicara al sistema tambien toda la información contiene estructuras de datos del kernel. que son usadas para manipulación 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 información se encuentra en la estructura stat.

Forensics DataRecovery

Page 43: Análisis Criminalístico Forense con OSS

• los directorios se alojan en chunks , los directorios se rompenrespecto al tamaño de la variable que es igual al numero de archivoscomo dice en el libro de The design and implementation of the 4.4BSD ...."The ability to change a directory in a single operation makes directory updates atomic"

• Locking

Se pueden proteger paginas físicas también, otra característica 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 físicas 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

Page 44: Análisis Criminalístico Forense con OSS

• Entendiendo lo anterior ahora debemos entender lo siguiente:

Inodos: Cada archivo es representado por una estructura llamada inodo. Cada inodo contiene una descripción del archivo:-Tipo de archivo-Permisos de acceso-Dueños-Timestamps-Punteros a los sectores de datos.

Las direcciones de los bloques de datos que tienen que ver con el archivo están localizadas en estos inodos. Cuando un usuario solicita una operación de entrada y salida (I/O) a un archivo el kernel convierte el offset corriente a un numero de bloque, la utilización de este numero en un index de bloques de direcciones lee y escribe al bloque físico.La siguiente figura muestra el proceso.

Forensics DataRecovery

Page 45: Análisis Criminalístico Forense con OSS

Forensics DataRecovery

Page 46: Análisis Criminalístico Forense con OSS

• Conceptos de Memoria-La memoria agrupa las sentencias que seran dictadas por el kernel y escritas, leídas o manipuladas al filesystem. Esto quiere decir que cualquier operación que generemos hacia nuestro filesystem sera directamente proporcional a la operación que el kernel dictara.

• Las tablas de alocación maestras de archivos funcionan de diferente manera para cada sistema de archivos, es por ello que los inodos y las listas de replicación de información son de diferente tamaño, diferente formato y diferente alocación.

Forensics DataRecovery

Page 47: Análisis Criminalístico Forense con OSS

Forensics DataRecovery

VFS:

Page 48: Análisis Criminalístico Forense con OSS

• El proceso de información y dumpeado de las mismas es un proceso arduo, existen utilerías (software libre y comercial) que aminoran este arduo proceso a simples comandos y clic´s.

Restaurando la información

•TCT “The coroners toolkit”.

TCT es una utileria conocida por millones de personas alrededor del mundo, es realmente buena, famosa y confiable. La misma fue desarrollada por Dan Farmer en conjuncion con Wietse Venema, para generar analisis post-mortem, actualmente TCT tiene soporte para: Solaris/FreeBSD/Linux/OpenBSD/BSDi y SunOS.

Page 49: Análisis Criminalístico Forense con OSS

• The sleuth Kit and Autopsy WB

Restaurando la información

A diferencia de TCT, cabe mencionar que sleuthkit es una suite de utilerías un poco mas completa, además de contar con autopsy, una suite web para ayudarnos en la ardua tarea de restauración de datos completamente borrados sobre una gran diversidad de sistemas de archivos.

Esto hace a sleuthkit una expansión de TCT y una utilería difícil de dejar pasar.

http://www.sleuthkit.org/

Page 50: Análisis Criminalístico Forense con OSS

Restaurando la información• FTimes

La diferencia mas significativa de esta utilería, para con las demás es que esta portada para múltiples sistemas operativos incluyendo Windows, además de permitir lo siguiente:

-Monitoreo de integridad-Colectividad de evidencia-Análisis de una intrusión-Administración centralizada de esa información.-Chequeo de archivos críticos de sys.-Chequeo de archivos críticos de apli.-Chequeo de sistemas remotos.-ETC. http://ftimes.sourceforge.net/

Page 51: Análisis Criminalístico Forense con OSS

• GDB for FAT and NTFS

Esta es una utilería magnifica de reconstitución de datos borrados y alterados que tiene la opción de funcionar en sistemas Windows únicamente y reconstituir particiones NTFS/FAT12/FAT16/FAT32, asi como RAID devices.

El único problema es que esta utilería no es software libre ni OSS.

Restaurando la informacion

http://www.runtime.org/gdb.htm

Page 52: Análisis Criminalístico Forense con OSS

• PC Inspector File Recovery

Esta utilería nos permite reconstituir información borrada y alterada de sistemas de archivos FAT(x) y NTFS, esta utilería es software libre y puede ser descargada de manera gratuita.

Restaurando la informacion

http://www.pcinspector.de/

Page 53: Análisis Criminalístico Forense con OSS

• Stellar Phoenix for NTFS/FAT and EXT2/3

Esta utilería nos permite reconstituir información borrada y alterada de sistemas de archivos NTFS/FAT(x)/EXT(x) y otros muchos sistemas de archivos.

Esta utilería no es libre

Restaurando la información

http://www.pcinspector.de/

Page 54: Análisis Criminalístico Forense con OSS

• Existen distribuciones que ayudan a realizar análisis forense, muchas de ellas son DISK-LESS (muy al estilo knoppix), podemos utilizarlas para generar nuestros análisis forenses de todo tipo.

Restaurando la información

Knoppix STD 0.1b http://www.knoppix-std.org/

Phlax (Profesional Hacker's Linux Assault Kit) 0.1 http://www.phlak.org/ R.I.P. (Recovery Is Posible) Linux http://www.tux.org/pub/people/kent-robotti/looplinux/rip/ LocalAreaSecurity 0.4 http://www.localareasecurity.com/ WARLINUX 0.5 http://sourceforge.limpio/projects/warlinux/ Penguin Sleuth Kit http://www.linux-forensics.com/downloads.html @stake Pocket Security Toolkit v3.0 http://www.atstake.com/research/tools/pst/ ThePacketMaster Linux Security Server http://freshmeat.net/projects/tpmsecurityserver/

Page 55: Análisis Criminalístico Forense con OSS

• Your Brain

Esta utilería es la mas difícil de usar, muchos de nosotros no la utilizamos al 100%.

La mayoría de las utilerías anteriormente expuestas no dan la información que realmente necesitamos, y conllevan a que comencemos a pensar como solucionar el problema, si tuvimos un incidente de penetración, este es el mejor momento para utilizar tu cerebro.

Restaurando la información

Page 56: Análisis Criminalístico Forense con OSS

• Veamos algunas de estas utilerías en acción:

Restaurando la información

Page 57: Análisis Criminalístico Forense con OSS

• Es difícil emitir un veredicto sin tener las armas y los conocimientos para hacerlo, seria injusto culpar a X o Y ip de perpetrar un incidente sin poder demostrarlo, es por ello que este paso es el mas complejo, debemos juntar todos los puntos que hemos obtenido en nuestro análisis para llegar a un veredicto sano y real.

Emitiendo un veredicto

Page 58: Análisis Criminalístico Forense con OSS

1. Nunca pensar que nuestro posible perpetrador es mas inteligente que nosotros, por lo regular no lo es.

2. Generar un mirror INTACTO del disco duro en el que vamos a trabajar para no “romper” las pruebas con las que contamos.

3. Congelar la imagen del crimen y no dejarlo a la ligera.4. Darle la importancia que merece un análisis forense como si se tratara

de un verdadero análisis forense para inculpar a alguien de un asesinato (por ejemplo).

5. Tomar firmas digitales del material con el que estamos trabajando para evitar que se de el sembrado de pruebas o que por un descuido perdamos información sensitiva.

6. NUNCA se debe realizar el análisis forense (data recovery) en el disco que contiene las pruebas.

7. Tener un checklist con los pasos que realizamos y poner metodologías para los mismos. (Debemos recordar que en caso de ser una institución gubernamental, podemos perseguir legalmente a nuestro perpetrador).

8. Recordar que nada es seguro, todo tiene un punto de quiebra.9. Si no encontramos ningún archivo borrado o alterado deberemos generar

las pruebas pertinentes.

Consejos Prácticos

Page 59: Análisis Criminalístico Forense con OSS

Post-Hack Pentesting

Page 60: Análisis Criminalístico Forense con OSS

• Porque no ser nuestro propio “penetrador”? (nada sexual porfavor).

Que es el pentesting:El pentesting (Pen:Penetration:Penetracion) (Test:Prueba) es la

realizacion de cómo se indica, una prueba real de penetracion, se le ha dado el atributo de pentesting a (seguridad generada por hackers), se basa en el hecho de “si yo pude penetrarme, cualquier otro puede”. Las fases que conlleva esta practica son:

-Target Setting: Como puede ser penetrada mi red?-Scanning Discovery: Una vez seteado el target comienza la actividad clasica de escaneo de puertos, servicios y demas.-Banner Grabbing: Obtencion de los clasicos servicios que son vulnerables a un buffer overflow por ejemplo.-Vulnerability Assesment: Escaneo de versiones y servicios en busqueda de errores comunes.-Captive Configuraction Checking: Verificacion de fallos comunes de configuracion, passwords iguales a login, etc.-Exploitation: Explotacion, penetracion y busqueda de los errores ya documentados para seguir penetrando la red completa.

Post-Hack Pentesting

Page 61: Análisis Criminalístico Forense con OSS

Veamos una vulnerabilidad explotada en su totalidad, para demostrar que como lo mencionamos una y otra vez, NADA es seguro.

Ejemplos:

Page 62: Análisis Criminalístico Forense con OSS

Forensics Network Discovery

Page 63: Análisis Criminalístico Forense con OSS

Esta ultima técnica es por demás olvidada, al realizar un análisis forense y se basa en el hecho de buscar, trazar y logear las actividades de un posible perpetrador o un virus en la red.

Seria difícil estar todo el dia plantado frente al monitor esperando que nuestro “intruso”, regrese y es por ello que se han introducido y creado utilerias que ayudan a saber que, como, cuando y donde fue que se dio una penetracion.

Como siempre se lo hemos mencionado a nuestros clientes, amigos, compinches y demas. “No le tengas miedo al chavito que te cambia la pagina, tenle miedo al “guey” que lleva 3 años en tus sistemas y no te has dado cuenta”. Un script kiddie puede vulnerar nuestros sistemas y dejarnos en ridiculo, pero un blackhat puede vivir en nuestras redes, utilizar nuestros recursos y no darnos cuenta, es mejor que te digan con un DEFACEMENT “eaeaea m1r4 t3 h4ck13” a oye “no te preocupes guey, si tu maquina deja de funcionar tengo un backup de tu home, no dudes en pedirmelo”.

Forensics Network Discovery

Page 64: Análisis Criminalístico Forense con OSS

Honeypots

Llamados por algunos, “atrapa-hackers”, los honeypots no son nada mas que utilerias diseñadas para simular ser un sistema vulnerable a X o Y problema y por consiguiente permitir explotarlo. La funcion primordial de un honeypot según “lanze spitzner” es poder capturar, logear y perseguir por medio de pruebas 0hday´s 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 quesi estamos seguros de que tuvimos una intrusion nuestroatacante va a regresar y seria divertido y totalmente validover que hace, de donde se conecta y como opera su tecnicade penetracion, es por eso que en esta parte forense eltema de los honeypots es crucial.

Page 65: Análisis Criminalístico Forense con OSS

En el sitio http://www.honeynet.org/tools/index.html, podemos encontrar una gran gama de utilerías 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 demás.

Honeypots

Page 66: Análisis Criminalístico Forense con OSS

PoisonersPensar que el contar con switches nos quita que un atacante pueda sniffear la red es hoy en dia una estupidez, existen técnicas 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 información 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)

Page 67: Análisis Criminalístico Forense con OSS

SniffersSi bien sabemos que fuimos penetrados, porque no saber que fue lo que pasara o lo que paso?, con la utilización 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.

Page 68: Análisis Criminalístico Forense con OSS

SeekersInformation seekers, son utilerías de buscado de datos y comportamiento anómalo, comúnmente una rama de los NIDS (Network Intrusion Detection Systems). Estos nos ayudan a verificar comportamiento anómalo generalmente, retransmisión de paquetes y comportamiento anómalo 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/)

Page 69: Análisis Criminalístico Forense con OSS

NIDSNIDS son las siglas de Network Intrusion Detection System, comúnmente utilizados para poder detectar intrusiones sobre la red, comúnmente es instalado en modo Promiscuo, esto quiere decir que un nodo sniffeara una porción de la red completa sin instalar detectores de intrusos y sensores en cada ordenador (HIDS).

Los mas comúnmente utilizados son:

-Snort (http://www.snort.org)-Prelude (http://www.prelude-ids.org/)-RealSecure (http://www.iss.net)-Etc.

Page 70: Análisis Criminalístico Forense con OSS

PIDSPIDS 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.

Page 71: Análisis Criminalístico Forense con OSS

ViruSNORT un caso especial.ViruSNORT entra dentro de las características de un NIDS y un PIDS, dando una inigualable ayuda a administradores de red.

Imaginemos el caso de (I-worm.klez.h), un gusano molesto, el administrador comparte una carpeta y de pronto se le llena de archivos rar sospechosos y ejecutables con nombres diferentes?, de donde viene el ataque?, quien lo inicio?, porque el antivirus no me dice quien inicia el incidente? Respondiendo eso HyperSec Consulting UK (Antes G-CON Security) y KasperskyLab diseñaron una modificación a snort para poder traquear donde se inicia el problema,Incorporando tecnología propietaria diseñaron dos pre-procesadores y un set de reglas completo para detectar gusanos e incidentes de comportamiento anómalo en redes, haciendo de virusnort una soluciónpara administradores y empresas así como para usuariosfinales del producto.

Anteriormente el producto era totalmente libre, ahora pordistintas situaciones ViruSNORT es un producto propietario

Page 72: Análisis Criminalístico Forense con OSS

• Debemos de mantener una buena seguridad en nuestra red.• Debemos de ser paranoicos (siempre).• Debemos de generar análisis forenses a nuestros equipos, aun cuando no

estemos seguros de si han sido penetrados o no.• Debemos convertirnos en nuestros propios “penetradores”. (realizar

pentesting todo el tiempo).• Debemos de firmar nuestros archivos de sistema y compararlos cada 1

semana por lo menos.• El análisis forense ayuda a poder dictaminar como fue que se dio una

penetración, pero también ayuda a dictaminar cual es nuestro verdadero nivel de seguridad.

• Debemos de pensar que nada es seguro, pero que podemos ponerle tantas trabas al intruso que se vaya a molestar al vecino mejor (se que suena feo pero es la verdad).

• Debemos de suscribirnos a listas de seguridad especializadas para estar al tanto de las ultimas vulnerabilidades descubiertas.

• Debemos monitorear nuestros servidores todo el tiempo.• Deben de contratarme :) (J/K).

Conclusiones

Page 73: Análisis Criminalístico Forense con OSS

• System Internalshttp://www.sysinternals.com

• Análisis Forense a memoria fisica (shadown g-con 2)http://www.two.g-con.org

• The design and implementation of the 4.4 BSD operating system (Addison Wesley)

• Assembly Language for intel based computers (Kip R. Irvine).

Bibliografia y Enlaces de Interes

Page 74: Análisis Criminalístico Forense con OSS

• Luis Guillermo Castañeda EstañolKasperskyLab Lat. Chief Research Officer (CRO).Hypersec Consulting Group UK.Email: [email protected]: [email protected] Site: http://www.overflow.host.sk

• Eduardo Ruiz DuarteKasperskyLab Security ConsultantHypersec Consulting Group UK.Email: [email protected]: [email protected] Site: http://www.whatever.org.ar/~beck

Corporative Sites:http://www.hypersec.co.ukhttp://www.g-con.orghttp://www.kaspersky.com.mxhttp://www.kelsisiler.com

Contacto:

Page 75: Análisis Criminalístico Forense con OSS

¿Alguna Pregunta?Gracias

HyperSec Consulting UK | http://www.hypersec.co.uk