Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CI T
IN
EJÉ
O
ESC
CA
NI
UE
LA
C
SU P TÉ
ERIOR
Adquisición e identificación de
información forense en
memoria (y en volcados).
2
Prefacio
finalidad de evaluar la seguridad de las mismas para luego, mejorarla. Con el fin de lograr el
objetivo he utilizado diversas técnicas, sin embargo, siempre que sea posible me encuentro
cautivado en analizar un lugar en particular, pero que por las particularidades que presenta, se
torna desafiante poder realizarlo en plazos cortos y con calidad en los resultados.
Este lugar es la memoria RAM del computador. Allí dentro, es posible encontrar mucha
información en texto claro, la cual me ha permitido alcanzar diferentes impactos durante las
oportunidades indagamos en cómo recabar datos de diversas fuentes para ser analizados en
principalmente debido a lo costosas que son las herramientas que realizan la actividad de
3
Tales premisas son las que me llevan a desarrollar el presente trabajo descriptivo, de forma tal
que se detallen cuáles son los pasos necesarios para obtener una copia de la memoria en un
archivo físico, para que luego sea evaluado por un investigador o auditor en la búsqueda de
memoria..
La herramienta open source utilizará una técnica para detectar lenguaje que también puede
4
Antecedentes
consideración el caso particular que se esté analizando en un momento determinado, los datos
deben ser obtenidos, analizados y resguardados de forma apropiada y protegida, sin olvidar de
En el pasado, la información referida a la navegación web por parte de los usuarios, y que
el caché de los navegadores, el historial, o en archivos físicos del computador. Sin embargo, el
aplicaciones logra que resulte desafiante para los investigadores forenses la obtención de
contenedores.
existencia de elementos que pudieran ser evidencia durante un proceso judicial. A su vez,
1
Messina, Mariano: Aplicabilidad metodológica de la informática forense en la obtención de resultados
eficientes en procesos judiciales argentinos, 7 de Diciembre del 2012, http://www.segu-
info.com.ar/tesis/
5
contenido en corto tiempo y con calidad, se pretende crear una herramienta open source que
Por último, durante la investigación y desarrollo del presente trabajo se ha determinado que
los datos de diversas aplicaciones son alojados en memoria en forma de texto, sin guardar
relación alguna con el sitio web accedido por parte del usuario, o de la aplicación que se
utilizará una técnica para detectar lenguaje humano. La técnica, también puede ser utilizada
información con alta probabilidad de ser lenguaje humano dentro de la memoria del
6
Desarrollo
con capacitores y resistencias, cuya principal función es la de retener datos informáticos por un
período de tiempo determinado. Si bien existen múltiples tipos de memoria, a fines prácticos
“Una memoria RAM, entonces, es un dispositivo que se utiliza para el manejo de datos e
guardados por su relevancia, sino simplemente de datos necesarios para el desempeño del
La memoria RAM además de ser volátil por lo anteriormente expuesto, cuenta con otra
parte de la misma con el mismo tiempo para cualquier posición. Es decir que no hace falta un
2
RedUsers: Técnico PC: Uso de la memoria RAM, 3 de Agosto del 2012,
http://www.redusers.com/noticias/tecnico-pc-funcionamiento-de-la-memoria-ram/
7
modo en particular (por ejemplo una lectura secuencial) para acceder a cualquier posición en
La asignación y referencia de la memoria RAM para las aplicaciones y los datos es tarea de los
sistemas operativos. Microsoft Windows por ejemplo siempre referencia la memoria RAM a
través de direcciones de memoria virtuales (exceptuando por algunos módulos propios del
kernel).
A fin de proteger los componentes críticos del sistema operativo de forma tal que las
3
CCM: Memoria de acceso aleatorio (memoria RAM o PC), Julio de 2017,
http://es.ccm.net/contents/398-memoria-de-acceso-aleatorio-memoria-ram-o-pc
8
Los privilegios se implementan mediante el uso de cuatro diferentes niveles (comúnmente
corresponde al anillo 0 (ring 0), siendo el más privilegiado. El modo usuario utiliza el anillo 3
El nivel del anillo establece qué tipo de acciones u operaciones se pueden realizar en el sistema
y, para que una aplicación de usuario pueda acceder a componentes críticos (kernel) del
sistema operativo, la aplicación debe utilizar llamadas de sistema (system calls) 4 que se
uso de las APIs que es posible cambiar de modo usuario a modo kernel. 5
Por otra parte, los sistemas operativos modernos a fin de proteger el espacio de memoria de
seguridad en la cual la memoria de los procesos (incluyendo la base del ejecutable y las
posiciones del heap, stack y las librerías) se asigna de forma aleatoria. De esta forma, ASLR
4
Las system calls son funciones de bajo nivel disponibles en el sistema operativo a través de APIs, por
ejemplo, los archivos ntdll.dll y kernel23.dll en Windows.
5
Michael Hale Ligh, Andrew Case, Jamie Levy, Aaron Walters: The Art of Memory Forensics - Detecting
Malware and Threats in Windows, Linux, and Mac Memory, 2014
6
Existen técnicas de evasión a las protecciones de los sistemas operativos, por ejemplo: Bypassing
ASLR/DEP, https://www.exploit-db.com/docs/17914.pdf
9
hace que el espacio de memoria sea impredecible para un atacante, mitigando los ataques de
Debido a que la memoria RAM cuenta con una capacidad limitada para el almacenamiento de
información de forma volátil, los sistemas operativos utilizan la memoria virtual para
almacenar ciertos datos en el disco duro. De esta forma, cuando una aplicación requiere
memoria RAM y la misma no cuenta con los recursos suficientes para satisfacer la demanda, la
memoria virtual utiliza el espacio libre del disco duro para almacenar páginas de la RAM en su
interior.
“En los sistemas Windows, estas páginas "paginadas" se almacenan en uno o más archivos
defecto) 4k. Por lo tanto, los datos podrían estar divididos y esparcidos en diferentes espacios
de la memoria. 8
Es tarea del sistema operativo volver a ensamblar la información de forma tal que guarde
sentido para las aplicaciones y los usuarios. Este fenómeno creado por la paginación (y
7
Michael Howard, Matt Miller, John Lambert and Matt Thomlinson: Windows ISV Software Security
Defenses, Diciembre del 2010, https://msdn.microsoft.com/en-us/library/bb430720.aspx
8
Microsoft Support: RAM, memoria virtual, archivo de paginación y administración de memoria en
Windows, 27 de Julio del 2017, https://support.microsoft.com/es-es/help/2160852/ram,-virtual-
memory,-pagefile,-and-memory-management-in-windows
10
también por los mecanismos de seguridad anteriormente mencionados) de la memoria agrega
Si bien los datos pueden encontrarse divididos y esparcidos a lo largo del espacio de la
versión y el tipo de sistema operativo. Inclusive, las estructuras también podrían variar
Por otra parte, algunos dispositivos (por ejemplo una notebook) cuentan con funcionalidades
que brindan flexibilidad al usuario al contar con poca energía eléctrica o al momento de
transportar el dispositivo hacia una ubicación diferente. Por ejemplo, Microsoft Windows
diversos componentes del sistema de forma tal que al reactivar el suministro, las aplicaciones
“El equipo utiliza el archivo Hiberfil.sys para almacenar una copia de la memoria del sistema en
9
Si bien existen dos mecanismos de gestión de memoria (segmentación y paginación) a fines prácticos
se omite mencionar la segmentación de memoria. Para mayor referencia de por qué se omite
mencionar la segmentación, referirse a la página 9 del libro The Art of Memory Forensics - Detecting
Malware and Threats in Windows, Linux, and Mac Memory
10
SANS DFIR: Digital Forensics How-To: Memory Analysis with Mandiant Memoryze, 08 de Noviembre
de 2010, https://digital-forensics.sans.org/blog/2010/11/08/digital-forensics-howto-memory-analysis-
mandiant-memoryze
11
La memoria RAM y los archivos Pagefile.sys e Hiberfil.sys corresponden entonces a diferentes
contenedores que alojan datos utilizados por el sistema operativo y aplicaciones para su
funcionamiento. Cada uno de estos contenedores deben ser adquiridos y analizados por los
proceso judicial o auditoría, sin embargo, y tal como se verá más adelante, cada uno de ellos
cuenta con alguna particularidad que un analista debe tener en cuenta al momento de realizar
Antes de adquirir la memoria física de un sistema objetivo, el investigador debe ser consciente
contaminación se puede producir debido a que muchos sistemas operativos no cuentan con
funcionalidades nativas que soporten la adquisición de la memoria con los recaudos suficientes
para no alterar su contenido. Por ello, el investigador estará utilizando el sistema de una forma
Michael Hale Ligh, Andrew Case, Jamie Levy, Aaron Walters: The Art of Memory Forensics - Detecting
11
12
Acceder y adquirir la memoria RAM
utilizan aplicaciones que adquieren la misma en formato crudo (raw). Si bien la memoria puede
ser analizada en tiempo real, también se puede guardar una copia de su contenido en un
archivo, para luego ser analizada en mayor detalle. En el presente trabajo, se centrará en la
Una herramienta que se puede utilizar para analizar la memoria en tiempo real es la versión
una imagen en la que se puede apreciar el contenido de la memoria utilizada por la aplicación
12
El software puede ser descargado desde: https://www.x-ways.net/winhex/
13
Si el investigador debe analizar un sistema que forma parte de un ambiente virtual, la
metodología de adquisición a utilizar será distinta dependiendo del escenario con el que el
investigador se encuentre. A continuación se muestra una imagen del proceso (en alto nivel) de
Figura 3 - Diagrama de alto nivel de metodología a seguir en adquisiciones de memoria. Fuente: The
Art of Memory Forensics - Detecting Malware and Threats in Windows, Linux, and Mac Memory
unidad extraíble o en una unidad remota (utilizando la red o Internet). Una vez obtenida la
imagen, es tarea del investigador forense calcular los hashes correspondientes, mantener una
cadena de custodia apropiada y tener en cuenta los pasos necesarios para evitar la invalidación
14
de la evidencia durante un proceso judicial.13 Luego, se debe proceder a analizar la muestra en
un laboratorio.
proceso judicial o auditoría. La razón es debido a que se podrían sobrescribir muchos datos que
Los pasos para adquirir una imagen de la memoria de un sistema Windows utilizando la herramienta
Luego, abrir en modo administrador una consola en Windows y ejecutar el siguiente comando
13
Messina, Mariano: Aplicabilidad metodológica de la informática forense en la obtención de resultados
eficientes en procesos judiciales argentinos, 7 de Diciembre del 2012, http://www.segu-
info.com.ar/tesis/
14
Michael Hale Ligh, Andrew Case, Jamie Levy, Aaron Walters: The Art of Memory Forensics - Detecting
Malware and Threats in Windows, Linux, and Mac Memory, 2014
15
SANS DFIR: Digital Forensics How-To: Memory Analysis with Mandiant Memoryze, 08 de Noviembre
de 2010, https://digital-forensics.sans.org/blog/2010/11/08/digital-forensics-howto-memory-analysis-
mandiant-memoryze
16
El freeware se puede descargar desde: https://www.fireeye.com/services/freeware/memoryze.html
15
G:\memoryze\MemoryDD.bat —output G:\images
- Memoryze realizará la adquisición y una vez finalizado el proceso, se debe corroborar que la
revisar que la información ha sido respaldada de forma correcta. La ruta de los archivos
- Por último, se deberán calcular los hashes correspondientes, se debe actualizar la cadena de
16
Adquisición de RAM en unidad externa: FTK Imager
También es posible utilizar la herramienta “FTK Imager” desde una unidad extraíble (por ejemplo, una
memoria.17
Al momento de realizar la adquisición, el investigador forense debe ser consciente de los riesgos de
utilizar FTK Imager desde una unidad extraíble en un sistema encendido. La herramienta puede alterar el
contenido de la memoria RAM, así como también puede modificar las referencias de la memoria virtual.
En un sistema encendido, los pasos necesarios para realizar la adquisición de la memoria RAM y guardar
- Asegurar la existencia de espacio libre suficiente en el medio extraíble para almacenar la captura
de la memoria en su interior.
17
Brendan, Bone: Run FTK Imager from A Flash Drive (Imager Lite), 23 de Febrero del 2015,
https://support.accessdata.com/hc/en-us/articles/203681809-Run-FTK-Imager-from-a-flash-drive-
Imager-Lite-
18
Brendan, Bone: Run FTK Imager from A Flash Drive (Imager Lite), 23 de Febrero del 2015,
https://support.accessdata.com/hc/en-us/articles/203681809-Run-FTK-Imager-from-a-flash-drive-
Imager-Lite-
17
- A continuación, se debe elegir la unidad externa en la cuál se desea almacenar la captura de la
memoria. Se recomienda cambiar el nombre del fichero de forma tal que guarde relación con la
auditor.
Figura 5 - Captura de Memoria utilizando FTK Imager. Si bien también se puede obtener el archivo
“Pagefile.sys” al momento de realizer la captura de memoria, se recomienda la previa lectura de la
sección “Adquirir archivo PageFile.sys” del presente documento.
- Realizar click en botón “Capture Memory”. El proceso de captura dará comienzo y una vez
finalizado se debe revisar la ubicación a fin de asegurar que el tamaño del archivo condice con el
18
Figura 6 - Captura de Memoria almacenada en disco extraíble
- Por último, se debe calcular los hashes necesarios, mantener una apropiada cadena de custodia
Es posible obtener todas las cadenas de caracteres (strings) alojadas en memoria de una aplicación que
de proceso (PID); un investigador forense o auditor puede utilizar la herramienta “strings2” para realizar
capaz de obtener todas las cadenas de texto cargadas en memoria mientras la aplicación se encuentra
ejecutando, sin importar si las cadenas se encuentran en formato codificado ASCII o Unicode.19
19
Lenny Zeltser: Tools for Analyzing Static Properties of Suspicious Files on Windows, 04 de Marzo del
2014, https://digital-forensics.sans.org/blog/2014/03/04/tools-for-analyzing-static-properties-of-
suspicious-files-on-windows
19
Utilizando comando del ejemplo anterior, podremos observar que dentro del archivo
proceso de referencia:
Por otra parte, también se puede utilizar la herramienta “strings2” para buscar las cadenas de texto en
las capturas de memoria adquiridas por el investigador. Por ejemplo, la siguiente imagen muestra la
ejecución de “strings2” utilizando el archivo correspondiente a la captura de la memoria RAM con “FTK
20
Figura 8 - Utilizando "strings2" se pueden obtener los strings de una captura de memoria
obtenido con la herramienta “Strings2” a fin de identificar determinadas estructuras, que pudieran
resultar en evidencia.
20
Para mayor referencia de la herramienta PsExec, visitar: http://technet.microsoft.com/en-
us/sysinternals/ bb897553.aspx
21
respectivo “listener” no se encuentra cifrada. Por lo tanto, información sensible podría transmitirse a
evidencia en tránsito.
Windows Server 2012 cuenta con Server Message Block (SMB) 3.0 cuya implementación soporta cifrado
comerciales que soportan el envío de las imágenes de memoria a través de la red en forma cifrada.21
Tal como fue mencionado anteriormente, el archivo hiberfil.sys es utilizado por el sistema operativo
Windows para almacenar en disco una copia completa de la memoria al momento de entrar en modo
Asumiendo que los pasos necesarios para realizar una copia forense del disco completo del sistema
objetivo (tomando los recaudos necesarios para evitar contaminar la evidencia durante los mismos), el
realizados, se detallan los pasos necesarios para extraer el archivo hiberfil.sys de una imagen cruda
(raw) de un sistema:
Michael Hale Ligh, Andrew Case, Jamie Levy, Aaron Walters: The Art of Memory Forensics - Detecting
21
22
1) Encontrar el sector inicial de la partición primaria de la imagen del disco utilizando el comando
2) En el resultado de la ejecución del comando se podrán ver las distintas particiones que contiene
la imagen forense. La de mayor tamaño debiera ser la de nuestro interés; tomamos nota del
3) Utilizaremos el comando “fls”22 junto con el número del sector inicial de la partición primaria
4) La ejecución del comando del paso anterior brindará el número de inodo del archivo hiberfil.
Este número será utilizado como parámetro en el comando “icat”23 a fin de extraer el espacio
22
El comando “fls” lista los nombres de archivos y directorios en imágenes forenses. Para mayor
información del comando “fls”, referirse a: http://www.sleuthkit.org/sleuthkit/man/fls.html
23
El comando “icat” obtiene el contenido de un archivo utilizando su número de inodo como
parámetro.
23
Figura 10 - Ejemplo de extracción de archivo hiberfil.sys de una imagen forense. Fuente:
http://digitalresidue.blogspot.com.ar/2016/06/memory-acquisitions-memoryze-ftk-imager.html
(raw). Volatility Framework puede ser utilizado a partir de este paso para poder realizar el
Por otra parte, el investigador o auditor puede también utilizar herramientas disponibles en sistemas
operativos Windows para extraer de una imagen no procesada (raw) el archivo hiberfil.sys.
FTK Imager free puede ser utilizado para agregar la imagen no procesada (raw) como ‘Image file’. Una
vez cargada la imagen en FTK, se debe navegar a la unidad raíz del disco (generalmente c:\) para extraer
24
El archivo hiberfil.sys es un archivo oculto en el sistema operativo. Por lo tanto, para poder visualizarlo,
habilitarlo desde la siguiente ubicación: Panel de control -> Opciones de Carpeta -> Vista. 24
memoria en disco con la finalidad de gestionar de manera eficiente los recursos de la memoria RAM. Por
de la unidad local del disco duro. Por ejemplo, podría encontrarse en la ruta “C:\pagefile.sys”.
No obstante, podría suceder que la ruta al mismo haya sido alterada a fin de almacenar diversos
archivos pagefile.sys en un directorio distinto al por defecto, por lo tanto, se recomienda revisar la
24
Dan Doonan, Catherine Stamm: Volatility: Part 2 – Malware in hiberfil.sys, 4 de Diciembre del 2012,
http://www.champlain.edu/Documents/LCDI/archive/Volatility-Report-Part-2.pdf
25
CC Hameed: Microsoft Ask the Performance Team Blog, What is the Page File for anyway?, 14 de
Diciembre de 2007, https://blogs.technet.microsoft.com/askperf/2007/12/14/what-is-the-page-file-for-
anyway/
25
Figura 11 - Lista y ubicación de PageFile.sys. Fuente:
https://blogs.technet.microsoft.com/askperf/2007/12/14/what-is-the-page-file-for-anyway/
Una vez identificados los archivos “PageFile.sys”, se debe navegar hasta la ubicación del archivo y
realizar la copia forense del mismo, sin olvidar de calcular los hashes correspondientes, de mantener
una cadena de custodia adecuada y también, de los recaudos necesarios para evitar la invalidación de la
Al igual que con el “Hiberfil.sys”, para la obtención del archivo “PageFile.sys”, utilizando sistemas
operativos de código abierto (Open Source) e imágenes forenses previamente adquiridas por un
investigador, se pueden seguir los pasos descriptos en la sección anterior. No obstante, también es
26
Messina, Mariano: Aplicabilidad metodológica de la informática forense en la obtención de resultados
eficientes en procesos judiciales argentinos, 7 de Diciembre del 2012, http://www.segu-
info.com.ar/tesis/
26
posible utilizar la herramienta “FTK Imager” desde una unidad extraíble en un sistema encendido para
su recuperación.27
Al momento de realizar la adquisición, el investigador forense debe ser consciente de los riesgos de
utilizar FTK Imager desde una unidad extraíble en un sistema encendido. La herramienta puede alterar el
contenido de la memoria RAM, así como también puede modificar las referencias de la memoria virtual.
En un sistema encendido, los pasos necesarios para realizar la extracción del archivo “pagefile.sys” y
- Asegurar la existencia de espacio libre suficiente en el medio extraíble para almacenar el archivo
pagefile.sys en su interior.
- Localizar la ruta del archivo a extraer. Por defecto el archivo pagefile.sys se encuentra en la
- Una vez localizado, realizar click derecho sobre el mismo y seleccionar la opción “Export Files”
27
Brendan, Bone: Run FTK Imager from A Flash Drive (Imager Lite), 23 de Febrero del 2015,
https://support.accessdata.com/hc/en-us/articles/203681809-Run-FTK-Imager-from-a-flash-drive-
Imager-Lite-
28
Brendan, Bone: Run FTK Imager from A Flash Drive (Imager Lite), 23 de Febrero del 2015,
https://support.accessdata.com/hc/en-us/articles/203681809-Run-FTK-Imager-from-a-flash-drive-
Imager-Lite-
27
Figura 12 - Exportando el archivo "pagefile.sys"
- Calcular los hashes necesarios, mantener una apropiada cadena de custodia y resguardar la
Anteriormente se han descripto los pasos necesarios para adquirir los datos alojados en memoria, así
como también cómo adquirir las cadenas de texto utilizadas por una aplicación en particular y también,
A partir de este momento el investigador forense o auditor debe realizar la apertura y análisis de cada
uno de los diferentes contenedores mediante la lectura secuencial de los ficheros o utilizando técnicas
28
En el interior de cada uno de los contenedores anteriormente mencionados, yacen distintos tipos de
datos, diferentes estructuras, cadenas de caracteres (strings) y símbolos de todo tipo, esparcidos en
Durante el desarrollo del presente trabajo, se ha tomado el desafío de identificar estructuras específicas
dentro de la memoria. Entre ellas, se pretende analizar la memoria a fin de encontrar información
estructurada, como ser: chats pertenecientes a la aplicación web Facebook, direcciones de enlace (URL),
de texto esparcidas en diferentes ubicaciones de la memoria y de forma aleatoria, que debieran ser
analizadas en profundidad por parte de un investigador o auditor para determinar si resultan elementos
probatorios. Surge entonces el interrogante de cómo detectar información que a priori no respeta una
A fin de identificar chats de Facebook en memoria, he utilizado la herramienta “strings2” con el número
sistema a analizar.
El archivo resultante contenía todas las cadenas de texto (strings) utilizadas por la aplicación, así como
también, de las páginas web que se encontraban abiertas en las diferentes pestañas (tabs) del
navegador.
29
Durante el análisis de diferentes contenedores y luego de realizar varias búsquedas manuales, he
(la cual se encontraba abierta en una de las pestañas del navegador al momento de realizar la
Figura 13 - Estructura de un mensaje de Facebook en memoria. El recuadro rojo representa el contenido del
mensaje enviado a un usuario.
Por otra parte, analizando línea por línea la memoria (más específicamente, analizando las cadenas de
caracteres (strings) obtenidas con la herramienta strings2) se puede observar que existen múltiples
dentro de la memoria.
30
Figura 14 - Ejemplo de representaciones de URL en memoria
Tal como se puede ver en la imagen anterior, el resultado de la ejecución de la herramienta “Strings2”
nos muestra que las URLs pueden estar almacenadas y definidas de diferentes formas en la memoria.
Las mismas, pueden encontrarse de forma unitaria en una línea o también pueden estar definidas como
También, si observamos los números de línea presentes en el lado izquierdo de la Figura 14, se puede
notar que la revisión manual del archivo completo representa un desafío: el poder analizar cada uno de
los contenedores (memoria RAM, pagefile.sys y/o hiberfil.sys) de forma completa, en el menor tiempo
posible y con calidad, es decir, evitando omitir información que pudiera resultar evidencia.
completa de la misma, la revisión manual podría demandar plazos de tiempo que podrían no
31
Continuando con el análisis de las estructuras disponibles en la memoria (o volcados), durante algunas
horas de revisión de archivos he podido notar que algunas aplicaciones almacenan las cadenas de
caracteres (strings) en memoria sin necesitar más que la referencia de la posición de la misma para ser
utilizadas por el sistema operativo o una aplicación en particular. Por ejemplo, al ejecutar la herramienta
“Strings2” utilizando el archivo “pagefile.sys” como parámetro de entrada, la siguiente estructura pudo
Por lo anteriormente expuesto, resulta entonces clave contar con una herramienta automática que sea
capaz de recorrer los ficheros de forma tal que identifique y recupere diferentes estructuras y las
cuenta que a fines prácticos, se puede realizar abstracción del contenedor que se debe analizar. Para el
32
proceso en ejecución o imágenes completas de memoria) que se deba analizar, los pasos necesarios
para identificar chats de Facebook, ciertos mails, direcciones URL, direcciones mails y texto humano se
centran en leer y analizar los datos almacenados a fin de poder identificar ciertas estructuras dentro de
El siguiente archivo de muestra contiene distintas estructuras similares a las figuras anteriores: mails de
GMail, chats de Facebook, URLs, direcciones Mails y texto humano mezclado con datos presentes en las
a fin de asegurar la privacidad de los datos), han servido de base para crear y evaluar la efectividad de la
herramienta Eureka.29
En color rojo se encuentran señaladas las líneas que serán detectadas por la herramienta, de forma
automática:
////
..
90
3 3 3 31
11
[]##~@#@|||¬¬“÷”÷”ø÷ø ∞~~~~
29
El código python se encuentra disponible en el Anexo I del presente trabajo. También publicado en:
https://github.com/MMarianus/Eureka
33
,"\u003capan class\u003d\ "yP\" email\u003d\"atacante@atacante.com\" name\u003d\"Prueba del
memoria junto a mucha basura, falta darle forma al resultado","este json es para que sea detectado por
eureka..",0,"","","11/12/13",True,March 12, 2017 at 22:22 PM", 1384123123,,[] ,,0,[] ,,[] ,,"3", [0]
asdfjadsfofads
dfsa
dfas
sdf
dfs
estas lineas tambien estan tiradas en memoria sin referencia alguna, con suerte son detectadas por
eureka.
asdf
asd
fdsa
dfas¢¢¢dt7idt7idt7i¢¢¢¢q345qq345¢¢¢¢¢¢¢q345¢¢¢¢¢¢¢34534q545¢¢¢¢¢dt7idt7i¢¢¢¢¢¢3245q345435
¢¢¢¢¢¢¢¢¢q34t¢¢¢¢¢¢¢¢dt7idt7i¢¢¢¢fsdfregt34t34tt¢¢¢¢¢¢¢¢¢¢¢r43t34wqt43t34t634t34t34¢¢¢¢¢¢¢d
t7idet7i7dti¢¢¢¢¢¢¢¢¢¢dt7i¢¢¢¢asdf¢¢¢¢¢q345q345q345¢¢¢¢¢¢q45¢¢¢¢¢esgweartw4t34wt6346t¢¢¢¢
dt7iedt7i¢¢¢¢¢q34t5q34t5q34t5¢¢¢¢¢¢¢¢¢dt7idt7i¢¢¢¢¢¢¢asdf¢¢¢¢¢¢¢¢y3g5qyh5u¢¢¢¢¢asdf¢¢¢¢¢¢¢
34
¢¢¢¢¢dt7o7toedoi75e¢¢¢¢¢¢q34t5q34t¢¢¢¢¢¢¢¢¢rewag2345t25245twqtgweqrtgwt4t43t6436t36y5y6¢
¢¢¢¢¢¢¢¢¢¢¢¢¢¢q34t534qtq34t6q34t53q4t5¢¢¢¢¢¢¢¢¢¢¢¢¢dtu7itu7ioed7i¢¢¢¢¢drtui¢¢¢¢¢rurui¢¢¢¢¢
¢ruir¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢
mariano@mariano.com
sdaf
asdf
i34r34i
ff
24X
asdf@fakeemailfortest.com
"24X
35
I"24X
"24X
hola hola, esto es un email alojado en un tab del browser, capaz lo ve eureka.
!$24X
%24X
asdfñlkadsf
asd
¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢sdg
sdf
36
3
while(1);
[[["v","137s2mfg40boa","1c22e772e53ff3
de","-902218240","1","vaknsvbtjz8a"]
,["gn","gsi test502"]
,["cfs",[]
,[]
,["i",50]
,["st",1208038540]
,["qu","0","6616","0","#006633",
0,0,0,"0","6.5"]
,["ft"," este es un texto alojado dentro de un json custom de una herramienta de mail online\u003ca
href\u003d\"http://www.urlGrabbingTestFirst.com\"
asdf
asdf
oooooo
r3
37
t2
42g
24
tfr
2tf
ft2
¢~@#{¢~@¢{|~|{{|~{@
#~{@|~#{@|{#@|~#~|@{3ñ12´ñ}}}}}}}}}
#~{@|~#{@|{#@|~#~|@{3ñ12´ñ}}}}}}}}}#~{@|~#{@|{#@|~#~|@{3ñ12´ñ}}}}}}}}}v
#~{@|~#{@|{#@|~#~|@{3ñ12´ñ}}}}}}}}}
#~{@|~#{@|{#@|~#~|@{3ñ12´ñ}}}}}}}}}#~{@|~#{@|{#@|~#~|@{3ñ12´ñ}}}}}}}}}
########
##########
############
1|@wsecedit.dll
ame=@mscms.dll
7|@wsecedit.dll
txt=@snmptrap.exe
38
http://www.urlGrabbingTestSecondResult.com.ar asdg9go9go http://ww.IIIII.com
Mariano: holaaa!
Mariano: jajajaja
7|@wsecedit.dll
txt=@snmptrap.exe
,["cfs",[]
,[]
,["i",50]
www.grabThisURL.com.ar?evilParam=33&evilParam33=AAA
asdf
fsad
CM_Messaging_Configurat
,"offline_threading_id":"a85578462a04307","author":"fbid:1202a59a2","author_email":"1202a59a2\u0
39
040facebook.com","ephemeral_ttl_mode":0,"timestamp":1498598687640,"is_unread":false,"is_filtered
_content":false,"is_filtered_content_bh":false,"is_filtered_content_account":false,"is_filtered_content_
quasar":false,"is_filtered_content_invalid_app":false,"is_sponsored":false,"commerce_message_type":
null,"customizations":[],"source":"source:chat:web","source_tags":["source:chat"],"tags":["sent","sourc
e:chat:web","inbox"],"is_spoof_warning":false,"folder":"inbox","thread_fbid":"","other_user_fbid":"120
2a59a2","platform_xmd":null,"message_source":null,"montage_reply_data":null,"skip_bump_thread":f
SEARCH","subject":null,"has_attachment":false,"attachments":[],"raw_attachments":null,"meta_ranges
":[],"thread_idd":"mid.1483908536030:5b144a3d20",
fasdfasdfsdf
asdf
ds
fds
daf
40
La ejecución de la herramienta Eureka.py utilizando el archivo de prueba anterior, produce el
siguiente resultado:
Ejecución de Eureka
Mail de Gmail Identificado
URLs Identificadas
41
Conclusión
que satisfagan las necesidades de los investigadores forenses y/o auditores para el análisis de la
información adquirida. Esto se debe a que cada aplicación puede almacenar sus datos de
resultan identificables debido a que yacen en texto claro. En el futuro, cuando las aplicaciones
comiencen a cifrar los datos en memoria, surgirán nuevos desafíos para los investigadores
42
Anexo I - Eureka.py – The Forensics OpenSource Tool
Eureka es una herramienta de código abierto que recorre archivos que contienen datos que se
Eureka busca de forma automática chats de Facebook, direcciones mail, direcciones de enlace, correos
de Google Mail, y lenguaje humano para que luego sea analizado por un investigador forense o auditor
Código:
#!/usr/bin/env python
import re
import subprocess
import argparse
import os
def GetBanner():
def GetUsage():
return 'python eureka.py -f fileName.ext --fb --je --mails --urls --lang eng'
43
def GetDescription():
return """
Eureka! is search tool that identifies Facebook Chats, Emails, URLs, Email Addresses and Human
Language in very, very large files (mostly, in memory dumps). NOTE: To save the results into a file,
"""
def notFound():
def GetLangLetters(lang):
if 'esp' in lang:
def GetOutFileName():
return "stringsOut.txt"
def StringSearch(filename):
cmd = 'strings'
if os.name == 'nt':
cmd = 'strings2'
subprocess.call(cmdStringSearch, shell=True)
44
def WarmingUp():
analyze.")
language in a given file. 'esp' for spanish, 'eng' for english language identification. Example: python
return parser.parse_args()
def SearchMails(fileName):
regex = r".*email\\.*"
re.compile(regex)
found = 0
found += 1
print match.group()
45
if found == 0:
print(notFound())
def FilterFBChat(chat):
filReg = "\"(?:thread_id|message_id|author|timestamp|body)\":\"{0,1}[^\"]+[\"|\,]"
re.compile(filReg)
print match2.group()
def SearchFBChat(fileName):
regChat = r".*\[\"source:chat\"\].*"
re.compile(regChat)
found = 0
found += 1
FilterFBChat(match.group())
if found == 0:
46
print(notFound())
allData = {}
re.compile(regex)
found = 0
found += 1
allData[match.group().replace('u003c','').replace('u003e','').replace('u003d','')] = 'data'
if found == 0:
print(notFound())
else:
print data
def LoadDictionary(lang):
if 'eng' in lang:
dictionaryFile = open('engDict.txt','r')
else:
dictionaryFile = open('espDict.txt','r')
47
wordList = {}
wordList[word] = 'found'
dictionaryFile.close()
return wordList
message = message.lower()
possibleWords = message.split()
if possibleWords == [] or len(possibleWords)==1:
return 0.0
if depShorts(possibleWords):
matches = 0
if word in dictionary:
matches += 1
else:
return 0.0
def depShorts(possibleWords):
48
cantSingle = 0
if len(word) < 2:
cantSingle += 1
lettersOnly = []
if symbol in GetLangLetters(lang):
lettersOnly.append(symbol)
return ''.join(lettersOnly)
message = message.lower()
49
print("\t[!]- No valid language was provided.")
else:
'Spanish'))
dictionary = LoadDictionary(lang)
print line.replace('\n','')
if __name__ == "__main__":
print(GetBanner())
args = WarmingUp()
if not args.je and not args.mails and not args.lang and not args.urls and not args.fb:
print("\n[!]- Maybe you need help, as no parameter was provided. You can try with
\'eureka.py -h\'..\n")
else:
StringSearch(args.f[0])
if args.je:
SearchMails(GetOutFileName())
50
if args.mails:
mailReg = r"(?:[a-z0-9_-]+(?:\.[a-z0-9_-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-
\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-
9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-
9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-
\x09\x0b\x0c\x0e-\x7f])+)\])"
SearchData(GetOutFileName(), mailReg)
if args.urls:
urlReg = r"(?=https?://|www\.|ftp://)([^\s\"\'\)\>]+)"
SearchData(GetOutFileName(), urlReg)
if args.fb:
SearchFBChat(GetOutFileName())
if args.lang:
SearchLanguage(GetOutFileName(), args.lang)
print("\n")
os.remove(GetOutFileName())
51
Bibliografía
Zeltser, L. (2014, 03 04). Tools for Analyzing Static Properties of Suspicious Files on
Windows. Retrieved from SANS Digital Forensics and Incident Response Blog: https://digital-
forensics.sans.org/blog/2014/03/04/tools-for-analyzing-static-properties-of-suspicious-files-on-
windows
Wietse Venema, T. W. (n.d.). ICAT - Manual Page. Retrieved from The Sleuth Kit
http://www.sleuthkit.org/sleuthkit/man/icat.html
X-Ways. (n.d.). WinHex: Computer Forensics & Data Recovery Software, Hex Editor &
https://www.definicionabc.com/tecnologia/memoria-ram.php
Carrier, B. (n.d.). FLS - Manual Page. Retrieved from The Sleuth Kit (TSK) & Autopsy:
CCM. (2017, 07). Memoria de acceso aleatorio (memoria RAM o PC). Retrieved from
CCM: http://es.ccm.net/contents/398-memoria-de-acceso-aleatorio-memoria-ram-o-pc
Report-Part-2.pdf
Fire Eye. (n.d.). Memoryze - Find evil in live memory. Retrieved from FireEye:
https://www.fireeye.com/services/freeware/memoryze.html
52
Hameed, C. (2007, 12 14). What is the Page File for anyway? Retrieved from Microsfot -
is-the-page-file-for-anyway/
Michael Hale Ligh, A. C. (2014). The Art of Memory Forensics - Detecting Malware and
Threats in Windows, Linux, and Mac Memory . Indianapolis: John Wiley & Sons, Inc. .
Michael Howard, M. M. (2010, 12). Windows ISV Software Security Defenses. Retrieved
ar/help/920730/how-to-disable-and-re-enable-hibernation-on-a-computer-that-is-running
es/help/2160852/ram,-virtual-memory,-pagefile,-and-memory-management-in-windows
forensics-howto-memory-analysis-mandiant-memoryze
https://www.exploit-db.com/docs/17914.pdf
RedUsers: http://www.redusers.com/noticias/tecnico-pc-funcionamiento-de-la-memoria-ram/
53
54