Transcript of Análisis Criminalístico Forense con OSS. Index ¿Me hackearon ahora que? -Búsqueda de evidencia....
- Diapositiva 1
- Anlisis Criminalstico Forense con OSS
- Diapositiva 2
- Index Me hackearon ahora que? -Bsqueda de evidencia. -Bsqueda
de patrones. -Recopilacin de informacin. Forensics over fisical
memory. -Anlisis Forense de memoria fsica en sistemas IA32
(win32/linux/bsd). -Consejos prcticos -W0000AAAHHH mira lo que
dejaste.
- Diapositiva 3
- 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
- Diapositiva 4
- Post-Hack Pentesting -Que es el pentesting? -Como se realiza
-Ejemplos. Forensics Network Discovery -Implementacin de soluciones
para: Honeypots Poisoners Sniffers Seekers NIDS/PIDS Conclusiones
Index
- Diapositiva 5
- Me hackearon, ahora que?
- Diapositiva 6
- 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? Me hackearon, ahora que?
- Diapositiva 7
- 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
- Diapositiva 8
- -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 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
- Diapositiva 9
- 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: Siempre es comn que
las maquinas de produccin sean constantemente vigiladas por
nosotros, sabemos que les duele, si se rompe tal o tal que hacer y
dems, sabemos que servicios necesitamos para subsistir y sabemos
tambin 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
- Diapositiva 10
- 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-configuracin-
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 libreras que son utilizados
-Utilizar verifier.exe (winnt\system32\verifier.exe) para verificar
que ciertos archivos sean los que dicen ser. Recompilando
informacion
- Diapositiva 11
- -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
- Diapositiva 12
- -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
- Diapositiva 13
- -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
- Diapositiva 14
- Anlisis forense a memoria fsica.
- Diapositiva 15
- Estas tcnicas son muy sencillas, adentrndonos en las verdaderas
intenciones de esta charla iniciemos con la primera fase: ANALISIS
FORENSE A MEMORIA FISICA: El anlisis de memoria fsica se basa en
dumpear la memoria fsica y virtual porque ah se encuentra mucha
informacin que seguramente no se encuentra en el disco, pocos
intrusos se toman la molestia de flushear los buffers, y dejan
informacin 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 ejecucin. Anlisis Forense a
Memoria Fsica
- Diapositiva 16
- ALIADOS /usr/src/linux/mm/* (especialmente page_alloc.c)
/usr/src/linux/arch/i386/mm/* Mucha paciencia y dedicacion ;)
- Diapositiva 17
- Organizacion de la memoria fsica 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;
- Diapositiva 18
- Anlisis Forense a Memoria Fsica Los nodos se dividen en bloques
-> ZONAS Zona DMA Zona Normal Zona Alta (HighMem) static char
*zone_names[MAX_NR_ZONES] = { "DMA", "Normal", "HighMem" };
- Diapositiva 19
- 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; Anlisis Forense a Memoria Fsica
- Diapositiva 20
- pg_data_t NormalDMAHighMem node_zon es zone_mem_m ap struct
page [...]struct page [...] Anlisis Forense a Memoria Fsica
- Diapositiva 21
- 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;
Anlisis Forense a Memoria Fsica
- Diapositiva 22
- Imagen del Kernel -> 1 MiB(0x00100000) Se traduce a la
direccin 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 fsica son traducidas
a 'struct pages' tratndolas como un indice dentro del array
'mem_map', en la macros esta como traduce todo. Weird0, huh? Como
se mapea la memoria fsica
- Diapositiva 23
- 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 prcticos
- Diapositiva 24
- Consejos practicos
- Diapositiva 25
- Ahora bien toda la informacin recopilada nos dar un dump de
memoria el cual podremos analizar en la carpeta de Windows
obteniendo el archivo memory.dmp, con esta informacin deberemos
analizar los datos por ejemplo: Mira lo que dejaste
- Diapositiva 26
- Diapositiva 27
- Forensics Data Recovery
- Diapositiva 28
- 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
- Diapositiva 29
- 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
- Diapositiva 30
- Fragmentacin: Con el tiempo los archivos se van disipando por
el disco, a este paso se le llama fragmentacin de archivos. Un
archivo fragmentado es aquel cuyos sectores no se encuentran mas
alocados en reas asncronas 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. Translacin a Nmeros de Sector: Los
controladores de disco duro realizan un proceso llamado translacin,
la conversin de la geometra de un disco duro fisico a una
estructura de datos que es entendida al final por el sistema
operativo, todo esto es normalmente realizado va firm-ware. Despus
de la translacin el sistema operativo puede trabajar con lo que es
llamado sectores numericos logicos, estos siempre son sequenciales
empezando desde 0. Forensics DataRecovery
- Diapositiva 31
- Particiones (Volumenes). Un disco duro simple es dividido en
una o mas unidades lgicas llamadas particiones, cada particin
representa espacio para alocar la informacin, existen dos tipos de
particiones: -Primarias -Extendidas Las configuraciones comunes son
las siguientes: -Arriba de 3 particiones primarias y una particin
extendida. -Arriba de 4 particiones primarias y ninguna extendida.
Cada particin extendida puede ser dividida en particiones lgicas
ilimitadas. Las particiones primaras pueden hacerse booteables,
pero las particiones lgicas no. Ahora bien cada particion puede ser
FORMATEADA con el filesystem de nuestra preferencia.* Despus 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
- Diapositiva 32
- 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
- Diapositiva 33
- 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
- Diapositiva 34
- 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
- Diapositiva 35
- -Ext2 tiene la implementacin de symlinks rpidos, esto quiere
decir que este symlink no utiliza ningn 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 cdigo del kernel para indicar el estatus del filesystem. Esto
ayuda a las labores de restauracin 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 configuracin. 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
- Diapositiva 36
- 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
- Diapositiva 37
- 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
- Diapositiva 38
- 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
- Diapositiva 39
- Cambiar nombres o borrar: rename() El nombre de la funcion lo
dice todo remove() usa unlink() para eliminar el hardlink hacia el
file rmdir() El nombre de la funcion lo dice todo 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
- Diapositiva 40
- 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
- Diapositiva 41
- 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 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
- Diapositiva 42
- 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
- Diapositiva 43
- los directorios se alojan en chunks, los directorios se rompen
respecto al tamao de la variable que es igual al numero de archivos
como 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
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
- Diapositiva 44
- Entendiendo lo anterior ahora debemos entender lo siguiente:
Inodos: Cada archivo es representado por una estructura llamada
inodo. Cada inodo contiene una descripcin del archivo: -Tipo de
archivo -Permisos de acceso -Dueos -Timestamps -Punteros a los
sectores de datos. Las direcciones de los bloques de datos que
tienen que ver con el archivo estn localizadas en estos inodos.
Cuando un usuario solicita una operacin de entrada y salida (I/O) a
un archivo el kernel convierte el offset corriente a un numero de
bloque, la utilizacin de este numero en un index de bloques de
direcciones lee y escribe al bloque fsico. La siguiente figura
muestra el proceso. Forensics DataRecovery
- Diapositiva 45
- Diapositiva 46
- 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. Las tablas de alocacin maestras de
archivos funcionan de diferente manera para cada sistema de
archivos, es por ello que los inodos y las listas de replicacin de
informacin son de diferente tamao, diferente formato y diferente
alocacin. Forensics DataRecovery
- Diapositiva 47
- VFS:
- Diapositiva 48
- El proceso de informacin y dumpeado de las mismas es un proceso
arduo, existen utileras (software libre y comercial) que aminoran
este arduo proceso a simples comandos y clics. Restaurando la
informacin 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.
- Diapositiva 49
- The sleuth Kit and Autopsy WB Restaurando la informacin A
diferencia de TCT, cabe mencionar que sleuthkit es una suite de
utileras un poco mas completa, adems de contar con autopsy, una
suite web para ayudarnos en la ardua tarea de restauracin de datos
completamente borrados sobre una gran diversidad de sistemas de
archivos. Esto hace a sleuthkit una expansin de TCT y una utilera
difcil de dejar pasar. http://www.sleuthkit.org/
- Diapositiva 50
- Restaurando la informacin FTimes La diferencia mas
significativa de esta utilera, para con las dems es que esta
portada para mltiples sistemas operativos incluyendo Windows, adems
de permitir lo siguiente: -Monitoreo de integridad -Colectividad de
evidencia -Anlisis de una intrusin -Administracin centralizada de
esa informacin. -Chequeo de archivos crticos de sys. -Chequeo de
archivos crticos de apli. -Chequeo de sistemas remotos. -ETC.
http://ftimes.sourceforge.net/
- Diapositiva 51
- GDB for FAT and NTFS Esta es una utilera magnifica de
reconstitucin de datos borrados y alterados que tiene la opcin de
funcionar en sistemas Windows nicamente y reconstituir particiones
NTFS/FAT12/FAT16/FAT32, asi como RAID devices. El nico problema es
que esta utilera no es software libre ni OSS. Restaurando la
informacion http://www.runtime.org/gdb.htm
- Diapositiva 52
- PC Inspector File Recovery Esta utilera nos permite
reconstituir informacin borrada y alterada de sistemas de archivos
FAT(x) y NTFS, esta utilera es software libre y puede ser
descargada de manera gratuita. Restaurando la informacion
http://www.pcinspector.de/
- Diapositiva 53
- Stellar Phoenix for NTFS/FAT and EXT2/3 Esta utilera nos
permite reconstituir informacin borrada y alterada de sistemas de
archivos NTFS/FAT(x)/EXT(x) y otros muchos sistemas de archivos.
Esta utilera no es libre Restaurando la informacin
http://www.pcinspector.de/
- Diapositiva 54
- Existen distribuciones que ayudan a realizar anlisis forense,
muchas de ellas son DISK-LESS (muy al estilo knoppix), podemos
utilizarlas para generar nuestros anlisis forenses de todo tipo.
Restaurando la informacin 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/
- Diapositiva 55
- 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
- Diapositiva 56
- Veamos algunas de estas utileras en accin: Restaurando la
informacin
- Diapositiva 57
- Es difcil 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 anlisis para llegar a un veredicto sano y real.
Emitiendo un veredicto
- Diapositiva 58
- 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 anlisis forense como si se tratara de un verdadero anlisis
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 informacin sensitiva. 6.NUNCA se debe realizar el anlisis
forense (data recovery) en el disco que contiene las pruebas.
7.Tener un checklist con los pasos que realizamos y poner
metodologas para los mismos. (Debemos recordar que en caso de ser
una institucin gubernamental, podemos perseguir legalmente a
nuestro perpetrador). 8.Recordar que nada es seguro, todo tiene un
punto de quiebra. 9.Si no encontramos ningn archivo borrado o
alterado deberemos generar las pruebas pertinentes. Consejos
Prcticos
- Diapositiva 59
- Post-Hack Pentesting
- Diapositiva 60
- Porque no ser nuestro propio penetrador? (nada sexual
porfavor). Que es el pentesting: El pentesting
(Pen:Penetration:Penetracion) (Test:Prueba) es la realizacion de
cmo 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
- Diapositiva 61
- Veamos una vulnerabilidad explotada en su totalidad, para
demostrar que como lo mencionamos una y otra vez, NADA es seguro.
Ejemplos:
- Diapositiva 62
- Forensics Network Discovery
- Diapositiva 63
- Esta ultima tcnica es por dems olvidada, al realizar un anlisis
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
difcil 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
aos 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
- Diapositiva 64
- 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.
- Diapositiva 65
- 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. Honeypots
- Diapositiva 66
- 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)
- Diapositiva 67
- 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.
- Diapositiva 68
- 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/)
- Diapositiva 69
- 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.
- Diapositiva 70
- 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.
- Diapositiva 71
- ViruSNORT un caso especial. ViruSNORT entra dentro de las
caractersticas 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
disearon una modificacin a snort para poder traquear donde se
inicia el problema, Incorporando tecnologa propietaria disearon dos
pre-procesadores y un set de reglas completo para detectar gusanos
e incidentes de comportamiento anmalo en redes, haciendo de
virusnort una solucin para administradores y empresas as como para
usuarios finales del producto. Anteriormente el producto era
totalmente libre, ahora por distintas situaciones ViruSNORT es un
producto propietario
- Diapositiva 72
- Debemos de mantener una buena seguridad en nuestra red. Debemos
de ser paranoicos (siempre). Debemos de generar anlisis 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 anlisis forense ayuda a poder dictaminar como fue que
se dio una penetracin, pero tambin 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
- Diapositiva 73
- System Internals http://www.sysinternals.com
http://www.sysinternals.com Anlisis Forense a memoria fisica
(shadown g-con 2) http://www.two.g-con.org 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