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.