PDA

Ver la versión completa : Formación análisis forense/hacking ético



tanathos
13-09-2011, 18:47
Me gustaría formarme en análisis forense y hacking ético para poder aplicarlo como complemento en mi trabajo de auditor de sistemas. ¿Me podrían recomendar manuales y programas para adquirir una base decentilla?

Tengo cierta base técnica debido a la carrera (teleco) y a que llevo unos años trabajando en el mundo de la auditoría de sistemas, pero nunca me he especializado en estos temas.

Llevo unas semanas trabajando con deft 6.1, sleuthkit, autopsy y Hiren´s boot 14.1, pero ni con mucho he conseguido dominarlos.

Cualquier recomendación será bien recibida y estoy dispuesto a compartir mis escasos conocimientos (de momento, jeje) con todos.

Muchas gracias por adelantado.

Saludos

hystd
13-09-2011, 23:05
Lo primero bienvenido/a. Las dos temáticas de las que hablas son mundos a partes, pero ligados...

El hacking ético está relacionado con el testing, mientras que el análisis forense, está más relacionado con la recopilación de información. A veces, en ciertas ocasiones, para hacer testing, es necesario hacer previamente análisis forense... recopilar código, datos, hacer ingeneniería inversa, etc... y una vez que tienes esos datos, haces pruebas funcionales, de seguridad, de estrés, etc... sobre el código.

Me explico, un usuario cualquiera de una aplicación, la ve como "una caja negra", no sabe lo que tiene "por dentro", ni cómo funciona... hacer hacking ético significa, que el usuario ya no es cualquiera, sino alguien que intuye cómo puede funcionar "por dentro", e intenta "probar" (hacer testing), para ver cómo reacciona la aplicación para una entrada de datos introducida a conciencia.

Ejemplo: aplicación web que contiene un formulario en el que se introduce una fecha. Hacking ético sería "comprobar que la fecha introducida es correcta" y no admite valores del tipo: "68/56/9834", o "mellamopepito". Se intuye que la aplicación debe validar:

1º Que se introduce una cadena del tipo: "xx/xx/xxxx" o "xx-xx-xxxx", y además,
2º Que x sólo puede ser un numero [0-9], y además,
3º Que los dias, los meses y el año, están dentro de los rangos permitidos para la coherencia de la aplicación.

Para este ejemplo, si la aplicación falla, está frente a un bug. Si además en los requisitos de la aplicación está contemplado que se debe validar las fechas antes de almacenarse en cualquier sitio, entonces el bug es además un defecto.

Evidentemente para las fechas está muy bien, y cualquiera que muestre atención por ello puede darse cuenta y ponerse a "trastear". A veces, encontrar bugs ocurre de forma involuntaria... yo quería introducir "02/03/1984", y en vez de ello puse "02/93/1984"... puse un 9, en donde iba un 0, involuntariamente... Que el desarrollador contemple que esto puede pasar, y que contemple también que el usuario se puede dejar una sesión abierta y su gato está encima del teclado pulsando teclas aleatoriamente, entonces va por buen camino para securizar su aplicación.

A veces, sólo basta darse cuenta cómo viajan los datos, desde que salen del navegador (cliente), pasan por tu interfaz de red (ya sea cableada o inalámbrica), y si se pueden manipular por el camino antes de que lleguen a su destino, el servidor web y la base de datos (si la hay). Durante este viaje, para el caso de las aplicaciones web y cliente/servidor, puedes hablar de técnicas de hacking ético cómo por ejemplo, del lado del cliente: desde un simple spyware que monitorice todo lo que haces en tu navegador, proceso que se ejecuta en tu sistema operativo, a un XSS, SQL injection, RFI, Session Poissoning, etc... o en tu red local: sniffing o un MITM.

Por el contrario, un análisis forense, se basa más bien en intentar desvelar cómo funciona esa aplicación "por dentro", en convertir esa "caja negra" en una "caja blanca", para ver su código, su circuito o en definitiva "cómo funciona por dentro". Normalmente las técnicas de análisis forense consisten en hacer reversing (ingeniería inversa) del producto final. Y cuando digo producto, me refiero a una aplicación, un sistema operativo, o cualquier otra cosa... a saber, por ejemplo un móvil o un frigorífico que te hace la compra online.

Ocurre que a veces no siempre se dispone del soporte físico o del código al que se desea hacer reversing. En tal caso, se recurre a lo que en la terminología del testing se llama "diseñar un driver". Un driver es una porción de software o hardware que emula el comportamiento real de un sistema para llevar a cabo tus pruebas de "hacking ético", normalmente máquinas virtuales o emuladores. Para hacer estos drivers, es necesario que se de una de estas dos posibilidades:

1º O eres el desarrollador, y conoces el sistema.
2º Haces reversing para ver su funcionamiento y emularlo.

Si dispones de un driver, es porque se conoce el funcionamiento de ese sistema. Por lo que puedes "probar" y hacer tu hacking ético, sin dañar el sistema real. Puedes diseñar un "stub", en la terminología del testing, para probar la eficacia del sistema (del driver).

Evidentemente, disponiendo del driver, del emulador, y conoces cómo funciona "por dentro", es más fácil hacer "hacking ético". Por eso, es mucho más fácil hacer hacking ético, si previamente se hace análisis forense.

Si ni eres desarrollador, ni es posible hacer reversing (porque no siempre se puede), pero está estandarizado o normalizado el funcionamiento del sistema, entonces, a partir de una serie de datos que necesita ese sistema, puedes obtener gran información, recuperar datos o desvelarlos. Un ejemplo de ello, lo tienes por ejemplo con la encriptación. Las wifi's por ejemplo. Se conoce la encriptación WEP, y a partir de una captura de paquetes, puede descifrarse los datos contenidos en esos paquetes. O sin ir más lejos, tienes por ejemplo el caso de recuperación de datos en un disco del cual se conoce su tabla de particiones, o si no, vámonos al formato GIF o MP3... podría recuperarse una imagen o un audio dañado, puesto que se conoce la estructura de estos ficheros.

Igualmente, una cosa muy común en el análisis forense, que no incluye reversing, y se basa exclusivamente en recopilar información, está en los metadatos... datos que parecen no estar, pero que si que están. Tal es el caso de un simple fichero en tu sistema operativo (hora de creación, acceso, permisos, etc...), o una simple fotografía hecha con cierta cámara o cierto móvil, para saber la úbicación geográfica en coordenadas en donde se hizo la foto, la fecha, modelo de la cámara, etc... Algo que, sinceramente, desconozco si es viable para utilizar como pruebas en un juicio, pero que si que puede ayudar para realizar investigaciones. Del mismo modo, conocer el formato de cierto fichero puede ayudar a saber si fue manipulado o no.

En fin, se tiene dos grandes campos, aparentemente independientes, pero ligados.

Un saludo.

tanathos
14-09-2011, 10:35
Muchas gracias por la aclaración hystd. Da gusto que leer a alguien que sabe tanto y lo explica tan claramente.

Voy a intentar ser más específico respecto a mis espectativas, puesto que no pretendo abarcar todo.

Lo que pretendo es aprender la parte de análisis forense a través de metadatos, puesto que no soy programador ni tengo habilidad para ello. También me interesa la parte del cifrado de datos.
Y referente al hacking ético, en la parte de wireless ya he practicado con lo típico de Wifislax, pero me gustaría aprender más de eso y de la parte de descubrir debilidades (SQL Injection, Session Poissoning...). También me motiva bastante la parte de red local: sniffing o MITM (Man in the middle).

Y sí, como bien has dicho, creo que ambas áreas son complementarias desde el punto de vista que pretendo darle. Voy a intentar dar mi punto de vista: al combinar ambas, se puede obtener bastante información para digamos, detectar y localizar el fraude generado por una empresa o un empleado. Se puede analizar un ordenador mediante todas las herramientas basadas en linux (o windows) existentes y conocer mejor los hábitos, posibles passwords o los procesos principales que corren en el sistema. Y con dichos conocimientos, es más facil orientar los "ataques" o incluso hacerlos desde dentro al habernos "adueñado" de las claves o identidad del usuario del ordenador.
ej: si un ordenador trabaja con una maqueta corporativa (versión personalizada de un SO como windows) que obliga a la identificación del usuario como primera fase para poder usar el ordenador y que dicha identificación es posterior a la identificación de windows, podemos iniciar el ordenador con un kernel de linux, explorar cuales son los procesos iniciales que se ejecutan, identificar los que obligan a la autentificación del usuario y modificarlos para que no se ejecuten la próxima vez que se inicie el sistema. Y ya una vez dentro, investigar las claves almacenadas, acciones realizadas, registros, mensajes, programas,...

De igual forma, se pude usar el hacking para introducirse en un sistema o analizar tráfico para descubrir información que posterior se puede utilizar para optimizar un análisis forense.

No se si me he explicado o estoy confundiendo conceptos, de momento son algunas de las pruebas que he hecho yo. !Cualquier corrección será bien recibida y aprendida!

¿Alguna recomendación para documentarme?

clarinetista
14-09-2011, 13:11
También te recuerdo el subforo de Formación:

http://foro.hackhispano.com/forumdisplay.php?f=73

tanathos
14-09-2011, 16:12
Muchas gracias clarinetista, pero mi idea es más bien de autoformación. No tengo tiempo para cursos presenciales.

moises9633
10-10-2011, 03:34
gracias men1!!!!!!!!!!!!!!!!!!!!!!!!!