Download Análisis Forense

Document related concepts

Hollywood (lenguaje de programación) wikipedia , lookup

Transcript
Análisis Forense
Roberto Lopez Santoyo
INDICE
Montando el Laboratorio y Clonado con DD ............. 3
Foremost: Como Recuperar Archivos Borrados ........... 7
Autopsy: Como analizar un disco duro ................. 9
Cómo funciona la papelera de Windows ................ 18
Volatility: Como analizar la memoria RAM de Windows . 21
Como ocultar un archivo ............................................................... 27
Montando el Laboratorio y Clonado con DD
La labor de un perito en informática forense es a partir de unos datos de entrada realizar
unas prácticas forenses para llegar a obtener una serie de pruebas/evidencias. Es
importante no confundir la evidencia con el indicio. Entre otras cosas lo más común es
mirar la forma en la que se ha accedido al sistema informático, que es lo que se ha
hecho en este, el alance de las actividades y si hay puertas traseras o malware. Como
incidentes más comunes tenemos accesos no autorizados, malware, interrupción de
servicio y utilización no autorizada de un servicio.
Cada evidencia que vas encontrando debes hay que identificarla y numerarla. Para llevar
a cabo unas buenas prácticas, siempre habrá que hacer 2 copias del disco duro original
a analizar. La primera copia siempre la tendremos de reserva, y trabajaremos con la
segunda copia. Si esta segunda se estropea, aun tenemos la primera copia. Entonces
tendremos que hacer otra copia de la primera copia, para que no sea necesario tocar el
disco duro original y poder trabajar siempre sobre una copia, a su vez teniendo otra
copia de repuesto.
Siempre habrá que analizar la información en función de su volatilidad, es decir,
analizaremos antes la memoria de la RAM que la información de un DVD, ya que este
puede conservar su contenido durante años. Cuando vayamos a analizar un PC que esté
encendido deberemos de utilizar herramientas de línea de comandos ya que son más
ligeras y se modifica menos la memoria RAM. Debemos utilizar herramientas que utilicen
sus propias APIs para detectar procesos ocultos y conexiones ocultas, puesto que
muchas veces el malware avanzado es capaz de modificar el retorno de las llamadas a
las APIs de Windows y no veríamos nada extraño con las herramientas propias de
Windows que utilizan las APIs nativas.
Como resumen se puede decir que la labor del informático forense será de Adquirir,
Examinar, Analizar y Reportar. Si no dispones de una clonadora siempre podrás utilizar
la herramienta DD para realizar una copia del disco entero.
Para esta prueba vamos a utilizar dos discos duros virtuales (VHD) y los vamos a montar
en la distribución forense CAINE que arrancaremos desde una maquina virtual.
Para montarte el laboratorio en casa, primero creamos una maquina virtual con la ISO de
CAINE, y antes de encenderla iremos a su configuración (botón derecho ->
configuración) y aquí vamos a la pestaña de almacenamiento. Una vez aquí añadiremos
dos discos duros virtuales (VHD). El primero será el disco duro que queramos analizar, el
segundo será otro en donde realizaremos la copia de seguridad que será la que
analicemos (nunca se analiza el disco duro original). Como he comentado antes
deberíamos hacer dos copias del original, en este caso haré solo una puesto que la
segunda se haría igual.
Una vez ya tenemos la maquina virtual con los 3 discos duros puestos, procederemos a
encenderla.. Lo primera será cambiar la distribución de teclado para ponerla en español.
Pinchamos en el icono del teclado y escribimos “es” en la terminal que sale, y al darle a
enter se habrá cambiado el idioma del teclado.
Despues abriremos una terminal y con “ls /dev/sd” podremos ver los discos duros que
tenemos en la maquina (sda será el propio de la distribución CAINE, sdb es el primero
que hemos añadido en la configuración de almacenamiento “paraCopiar.vhd” y sdc es el
segundo que hemos añadido “copia.vhd”). Lo primero que haremos será obtener un hash
del disco duro sdb, para luego poder compararlo con el hash que hagamos al disco duro
que contenga el clonado, si estos dos hashes no coinciden quiere decir que la copia no
se ha realizado correctamente y habrá que volver a realizar la copia. Para tener más
garantías de que la copia está bien hecha hay que sacar dos hashes del disco origen,
otros dos del disco destino y comprobar que coinciden ambos.
Despues con la herramienta DD haremos un borrado seguro del disco duro en el que se
va a realizar la copia (para asegurarnos que no tiene datos de otro analisis anterior) lo
que haremos será llenarlo de ceros. Para esto tenemos en linux “/dev/zero”, que lo
pondremos como origen en la herramienta DD y en el destino pondremos el disco duro
donde queremos realizar la copia. Utilizaremos un block size (bs) de 1mega para que no
tarde mucho la copia (el bs es el tamaño del bloque que coge la herramienta DD para ir
copiando bloque a bloque). Una vez tenemos el disco destino lleno de ceros, habrá que
hacer la copia del disco original que en este caso es sdb, al disco de destino que
tenemos a ceros. Por utlimo se mira el hash del disco sdc (la copia) a ver si coincide con
el que obtuvimos anteriormente de sdb. En la siguiente imagen puedes ver todo el
procedimiento:
Habíamos visto que sdb tiene una partición que es sdb1. Es decir que sdc debería de
tener también la misma partición que sería sdc1 después de la copia. Lo que pasa que la
maquina todavía no la ha reconocido, y para que esto suceda habrá que llamar a la
herramienta fdisk e introducir la opción “w”. Y ya vemos como si que reconoce la
maquina la partición de nuestro disco duro copia.
Por ultimo vamos a explicar como montar una partición para que puedas examinar el
contenido del disco duro virtual que hemos clonado. En la foto he hecho la prueba con el
sdb, pero sería exactamente igual para la copia sdc. Primero tendremos que crear una
carpeta en donde montaremos el disco duro. A continuación el comando “mount” le
indicaremos que partición queremos montar y en que carpeta queremos montarla. De
esta forma cuando entremos a la carpeta podremos ver el contenido del disco duro. Para
desmontar la carpeta solo tendremos que escribir el comando “umount” seguido del
nombre de la carpeta.
Foremost: Como Recuperar Archivos Borrados
Vamos a ver como se utiliza la herramienta Foremost que es capaz de detectar tipos de
ficheros por su cabecera (no por su extensión que puede estar cambiada para engañar y
ocultar información) y para encontrar ficheros borrados. Montaremos la partición sdb1
para borrar un fichero y ver como podemos recuperarlo luego.
Una vez hemos borrado el fichero que es una foto y hemos desmontado la partición,
procederemos a realizar un clonado del disco sdb al disco sdc. Como siempre
realizaremos el análisis en el disco clonado que será sdc.
Para utilizar la herramienta Foremost le pondremos la opción
-s: quiere decir cuantos bytes va a leer de la cabecera de cada fichero
-t: será un filtro en el que indicaremos el tipo de fichero que queremos buscar
-i: el disco en el que queremos realizar la búsqueda
-o: la carpeta en la que queremos que nos guarde los resultados encontrados y un
informe sobre estos
Al ejecutar la herramienta nos genera un archivo con nombre audit.txt, que es el informe
de los resultados. En estos resultados podemos ver que nos ha rescatado 5 imagenes.
De esto obtenemos 2 conclusiones:
1. Hemos recuperado la foto que habíamos borrado en el disco original antes de hacer la
copia.
2. En el disco original solo había 4 ficheros con extensión .jpeg, esto quiere decir que
había uno de ellos que era una foto pero que le habian cambiado o quitado la extensión
para ocultar la foto
Como veis es bien sencilla de utilizar esta herramienta para Linux para recuperar
vuestros ficheros borrados.
Autopsy: Como analizar un disco duro
Como una imagen vale más que mil palabras, voy a hacer una explicación en imágenes
que creo que se va a entender mejor. Haremos la prueba en Kali. Fijaros que en cada
imagen está el ratón sobre el botón que hemos pulsado. Lo primero será arrancar el
autopsy.
En Linux se accede a la aplicación de Autopsy desde el navegador ya que la arranca
como servicio.
Creamos un caso nuevo.
Añadimos un nombre al equipo que vamos a investigar.
Añadimos la imagen que queremos analizar.
Escribiremos la ruta del disco duro que tenemos en formato .dd y le indicamos que es
una partición, si fuese un disco entero pincharíamos en la opción “disk”. A la hora de
importar tenemos 3 métodos. Los 2 más utilizados son el primero, que trabaja
directamente sobre la copia que le pasemos (si tenemos las 2 copias hechas del original
como dije en el primer post de la serie, esta es la mejor opción) y el segundo que trabaja
la copia que realiza la propia herramienta.
Aquí podemos pedirle que nos calcule el hash MD5 del disco a analizar o ponerle
nosotros uno para verificar que se ha realizado la copia correctamente. En nuestro caso
el hash del original y el de la copia lo hemos comprobado anteriormente por nuestra
cuenta. Vemos como nos ha reconocido que se trata de un sistema de ficheros NTFS y
asume como punto de montaje C:
Ya hemos terminado de preparar nuestra imagen y entonces procedemos a analizarla.
La primera de las pestañas que tiene la herramienta es la de analizar los ficheros. Aquí
nos aparecen también los archivos borrados. Hay una carpeta que se llama
$OrphanFiles que es donde se guarda todo lo que se elimina.
La segunda pestaña es para buscar cadenas en ASCII y Unicode en toda la imagen.
La tercera pestaña es para que te ordene y clasifique todos los ficheros de la imagen por
su tipo.
La cuarta pestaña es para ver detalles de la imagen como el tipo de archivos o la versión
del sistema operativo (siempre que sea posible) entre otras cosas.
La ultima pestaña es para buscar el cluster que te interese a partir de su número.
Esta imagen es en realidad un pequeño reto para aprender a utilizar la herramienta
autopsy, así que voy a resolverlo para que lo veáis.
Como hemos comentado anteriormente en la carpeta $OrphanFiles podemos encontrar
ficheros borrados. Si pinchamos en el primero y seleccionamos que nos muestro el
ASCII del fichero podremos ver que hay un numero en hexadecimal.
Seguimos explorando y encontramos un .doc que al descargarlo vemos que tiene una
contraseña.
Podemos pensar que el numero hexadecimal que hemos encontrado antes es en
realidad una contraseña y lo transformamos de Hexadecimal a ASCII.
Despues lo introducimos como contraseña al .doc y vemos que era la contraseña que
protegía el fichero.
Pues ya sabéis utilizar la herramienta forense Autopsy y habéis obtenido una noción
básica sobre como resolver un reto forense.
Cómo funciona la papelera de Windows
Vamos a ver como funciona la papelera de Windows. Funciona de forma distinta en XP,
que en las versiones posteriores (Vista, 7 y 8). Veremos los dos tipos de funcionamiento.
Hay que recordar que cada usuario solo puede acceder a su “basura”, es decir, que para
poder ver los ficheros borrados del resto de usuarios debes de ser administrador en la
maquina. Para realizar esta prueba vamos a mandar un fichero de texto a la papelera
que contiene la cadena de texto “buenas tardes”.
Primero vamos a ver como funciona la papelera de Windows XP. La papelera es la
carpeta RECYCLER que se situa en la raiz de C. Una vez dentro de esta carpeta si
listamos su contenido con “dir” podemos ver que no muestra nada. Para que se muestre
su contenido tendremos que invocar el comando “dir” con la opción “/a”. Para cada
archivo borrado se genera una carpeta, en el nombre de la carpeta aparece el
identificador de Windows del usuario que lo ha borrado, en este caso será el 500. Si
accedemos dentro de la carpeta y listamos el contenido vemos que hay un fichero que
se llama Dc7.txt nada más.
Tendremos de nuevo que listar el contenido de la carpeta con la opción “/a”. Entonces
podemos ver que también aparece un fichero con el nombre “INFO2″, donde se guardan
los nombres originales de los ficheros y la información asociada a este como puede ser
su ruta original antes de ser borrado. Si mostramos el contenido del archivo Dc7.txt con
el comando “more” podemos ver su contenido que era “buenas tardes” como hemos
dicho anteriormente.
Si mostramos el fichero INFO2 con el mismo comando “more”, podemos ver que en su
contenido aparece la ruta original del fichero borrado y su nombre original (“poc.txt” era
el nombre original).
Ahora vamos a ver como funciona en Windows Vista, 7 y 8.
La carpeta de la papelera se llama $Recycle.Bin y tambien está en la raiz de C. De la
misma manera que antes, para listar los ficheros de esta hay que hacer con “dir /a”.
Podemos ver que el nombre de las carpetas que almacenan cada fichero borrado tiene
el mismo formato que en Windows XP. La diferencia es que aquí la información dentro
de cada carpeta se guarda en ficheros distintos. Tendremos 2 ficheros con el mismo
nombre ambos salvo la segunda letra, uno tendrá la I como segunda letra (que será el
que almacene la ruta original del fichero borrado) y el otro tendrá la R como segunda
letra (que será el que almacene el contenido del fichero borrado). Así que si mostramos
el contenido del fichero $RVE905H.txt podremos ver su contenido que era como en el
caso anterior “buenas tardes”.
Y si hacemos un “more $IVE905H.txt” para mostar el contenido del fichero que almacena
la ruta original del fichero borrado y su nombre original podemos ver como se nos
muestra.
Pues ya sabeis como funciona la papelera de los Windows por dentro.
Volatility: Como analizar la memoria RAM
de Windows
Vamos a ver como utilizar una de las herramientas más potentes para analizar memoria
RAM. Es una herramienta en donde la gente va aportando los distintos plugins que tiene
la herramienta. Se usa para analizar memoria RAM de Windows. Para obtener la RAM
de Windows podemos hacerlo con esta herramienta que explico en este post Sacar
passwords de la RAM, aunque si fuese para un proceso judicial, sería recomendable
hacer la copia de la memoria con una herramienta menos pesada que alterase menos la
RAM.
Para utilizar la herramienta en Linux habrá que llamarla por linea de comandos
introduciendo el fichero de la memoria con el comando “-f” y a continuación llamar al
plugin que queramos utilizar.
Pslist: Lista los procesos que había activos en el momento.
Consoles: Te muestra un historico de la terminal. En la parte de abajo de la foto aparece
primero los comandos que se introdujeron, y después aparece la consola con los
comandos introducidos y la respuesta de la máquina.
Connections: Listado de las conexiones que estaban abiertas.
Sockets: Listado de los sockets que estaban abiertos.
Pstree: Imprime la lista de procesos en forma de arbol.
Svcscan: Muestra los servicios que estaban activos.
Hashdump: Imprime los hashes (LM/NTLM) de la memoria. Para utilizar esta
herramienta es necesario ejecutar antes del plugin Hivelist para obtener las posiciones
de memoria de SYSTEM y SAM. Si nos fijamos en el principio de la foto, si ejecutamos el
plugin “hashdump” sin argumentos de entrada, nos mostará un error y nos pide la
posicion de memoria de SYSTEM y de SAM. Para saber los argumentos de entada de
estos plugins que necesitan argumentos solo tienes que ver su ayuda: “vol -h
hashdump”. Entonces podemos ver como en la foto se ha seleccionado la posición de
memoria de la SAM para pasarselo al plugin “hashdump”.
Pues estos son solo algunos de los plugins que tiene esta potente herramienta de
análisis de RAM. Si muestras la ayuda “vol -h” podrás ver todos los plugins que trae
incorporados.
Como ocultar un archivo
Vamos a ver como podemos ocultar ficheros dentro de otros en Windows gracias a un
fallo en el diseño del sistema de archivos NTFS.
Primero crearemos crearemos un fichero de texto llamado flujos.txt en el que
introduciremos el contenido “flujo1″. Lo que vamos a hacer será ocultar un fichero de
texto llamado flujos2.txt (y le meteremos de contenido “flujo2″) dentro de flujos.txt. Para
hacer esto lo que haremos será lo siguiente:
echo flujo2 > flujos.txt:flujos2.txt
De esta forma cuando abrimos el fichero flujos.txt con el bloc de notas de windows
(notepad) solo veremos el contenido “flujo1″, pero también podemos abrir nuestro fichero
que acabamos de ocultar de la siguiente manera:
start notepad flujos.txt:flujos2.txt
Y vemos como aparece el contenido que habíamos ocultado.
En la siguiente imagen podéis ver como se ha realizado la prueba.
Ahora vamos a realizar la misma prueba, pero lo que vamos a esconder es una imagen.
Procederemos de la misma forma que antes pero cambiando el texto por una foto, y el
tipo de fichero a ocultar por una imagen:
type “Puesta de sol.jpg” > flujos.txt:imagen.jpg
Podemos comprobar como podemos abrir este fichero oculto con la apliación paint
(mspaint) de Windows.
Cuando queramos buscar la foto que está oculta, no la encontraremos. Si listamos el
contenido de la carpeta Escritorio que es donde está oculta la foto, dentro de nuestro
archivo flujos.txt, podemos ver como solo se nos lista el fichero de texto flujos.txt, y no
hay ni rastro de la foto. En Windows XP no es posible detectarlo con las herramietnas
propias de Windows, pero vamos a ver como en posteriores versiones de Windows, sí
que será posible identificar estos ficheros ocultos con un nuevo comando que sacaron
que es “/r”.
Si repetimos el mismo procedimiento que acabamos de utilizar en un Windows 7
obtendríamos el mismo resultado. El fichero quedaría oculto. Pero como acabo de decir
a partir de Vista implementaron el comando “/r” de “dir” para poder identificar estos
ficheros ocultos. Y como podemos ver en la siguiente foto, si hacemos un dir no veremos
el fichero oculto, pero si hacemos
dir /r
Podemos ver como si que podemos identificar el fichero oculto.
Pues esta es una manera de ocultar ficheros en Windows.