ANÁLISIS INFORMÁTICA FORENSES DE MEMORIA RAM PARA RECUPERAR CONTRASEÑAS E INFORMACIÓN CONFIDENCIAL CON MXTRACT
La información almacenada en un equipo de cómputo no siempre termina en las unidades de almacenamiento permanente (discos duros, unidades de estado sólido, almacenamiento extraíble, entre otras), sino que también es almacenada en RAM, mencionan expertos en borrado seguro de datos del Instituto Internacional de Seguridad Cibernética (IICS).
No obstante, cabe mencionar que la información disponible en RAM y los datos almacenados en un disco duro pueden variar. Dependiendo de cada caso, pueden presentarse las siguientes situaciones:
- Los datos pueden estar cifrados en el disco duro, pero no en la RAM (por ejemplo, un archivo de texto con contraseña se almacena en un disco VeraCrypt cifrado, que se abre en un editor de texto; en este caso, las contraseñas de este archivo estarán en RAM como texto sin formato)
- La información se puede crear en el proceso de cálculo o recibir datos de la red (en este caso, la información original está ausente en los almacenamientos permanentes)
Los expertos en borrado seguro de datos mencionan que el análisis del contenido (volcado) de un proceso en ejecución se utiliza a menudo en ingeniería inversa cuando el archivo de origen está cifrado. Para su ejecución, el archivo aún debe estar descifrado en RAM, por lo que analizar el proceso en ejecución facilita la ingeniería inversa.
Puede pensar en otras formas de analizar y buscar información en la memoria de un dispositivo:
- Identificar aplicaciones que analizan el portapapeles
- Evaluación de la calidad de los programas de almacenamiento de contraseñas: Si al ejecutar estos programas contienen contraseñas en la RAM en forma de texto sin formato, se desaconseja encarecidamente utilizar dichos programas
- Buscar una aplicación que contenga ciertas cadenas o que se conecte a un host específico
A continuación los expertos en borrado seguro de datos realizarán una demostración de mXtract, una herramienta de pentesting para escanear la memoria RAM de un dispositivo en busca de claves privadas, direcciones IP y contraseñas expuestas.
Este programa puede ser utilizado tanto como herramienta de explotación posterior como para el análisis de seguridad, ayudando a los investigadores a evaluar la seguridad de aplicaciones en un sistema determinado. Entre sus principales características destacan:
- La búsqueda de cadenas de procesos en ejecución utilizando expresiones regulares
- Búsqueda de un proceso o todos los procesos en ejecución a la vez
- Exposición de los resultados encontrados de forma completamente comprensible
INSTALACIÓN
- Para instalar mXtract, ejecute los siguientes comandos en su terminal Kali Linux:
1 2 3 4 5 | git clone https://github.com/rek7/mXtract cd mXtract && sh compile.sh sudo mv bin/mxtract /usr/bin/ sudo mkdir -p /usr/share/doc/mxtract/ mv example_regexes.db /usr/share/doc/mxtract/ |
- Para instalar mXtract en BlackArch, deberá usar el siguiente comando:
1 | sudo pacman -S mxtract |
La herramienta cuenta con múltiples opciones, aunque para comenzar abordaremos las dos principales: -r y -wm. Si desea buscar ciertos hilos en RAM, los expertos en borrado seguro de datos recomiendan la opción -r =; posteriormente deberá especificar la ruta a un archivo que contenga una o más expresiones regulares.
Por otra parte, si desea registrar toda la información que tiene el proceso en la RAM, deberá usar la opción -wm. Estas opciones pueden ser usadas al mismo tiempo, posteriormente se realizará una búsqueda y se almacenarán los volcados de todos los procesos.
Comencemos a buscar hilos en los procesos. Los expertos en borrado seguro de datos mencionan que el archivo example_regexes.db contiene la siguiente expresión regular:
1 | (\d{1,3}(\.\d{1,3}){3}) |
Corresponde aproximadamente a direcciones IPv4. Ahora podremos iniciar la búsqueda:
1 | sudo mxtract -wr -e -i -d =/tmp/output/ -r =/usr/share/doc/mxtract/example_regexes.db |
A continuación se muestra el significado de las siguientes opciones:
- -r =/usr/share/doc/mxtract/example_regexes.db: Ruta al archivo con expresiones regulares
- -e: Escaneo de los archivos del entorno del proceso
- -i: Debe indicarse para obtener información detallada sobre el proceso/usuario
- -d =/tmp/output/: Directorio de salida personalizado. Cuando se usa la opción -wm, los volcados de proceso se guardan en esta opción. También se almacena un archivo con los resultados si se usa la opción –wr
- -wr: Esta opción es necesaria para escribir coincidencias encontradas en un archivo (aparecerá en el directorio de salida)
A continuación se muestra un ejemplo de la salida cuando el programa se está ejecutando:
Estas son las direcciones IP que contiene el proceso de NetworkManager:
Estas son las IP del proceso de LibreOffice Writer (aunque esto no significa que el programa esté conectado al menos a una de ellas, según los expertos en borrado seguro de datos):
Como resultado de la ejecución del comando anterior, se creará el archivo /tmp/output/regex_results.txt con las coincidencias encontradas. A continuación los expertos en borrado seguro de datos revisarán algunos de los escenarios para usar la búsqueda de RAM. También podrá usar sus propias ideas en esta herramienta.
EVALUACIÓN DE LA CALIDAD DE PROGRAMAS DE ALMACENAMIENTO DE CONTRASEÑAS
Existen algunos programas para almacenar contraseñas (administradores de contraseñas). También puede probar diferentes formas de almacenar contraseñas, por ejemplo, en un archivo de texto sin formato en un disco cifrado.
Se pueden especificar cadenas de búsqueda literal en lugar de expresiones regulares, mencionan los expertos en borrado seguro de datos. Puede escribir varias contraseñas para estas líneas, cada expresión regular debe estar en líneas separadas. Por ejemplo, puede crear un archivo passwords.db y escribir algo como en el ejemplo siguiente:
1 2 3 | password1 password2 password3 |
Sobre las letras del alfabeto, lo más probable es que sean procesadas en otra codificación, por lo que es poco probable que sea posible encontrar una coincidencia literal en las cadenas. Por ello, primero deberá escribir las cadenas como una secuencia de caracteres en la codificación deseada.
Después de eso, puede buscar el contenido de los procesos en RAM:
1 | sudo mxtract -wr -e -i -d =/tmp/output/ -r =passwords.db |
Por ejemplo, es posible encontrar las contraseñas en un archivo de texto sin formato empleando este método, incluso si está en una sección cifrada del sistema objetivo.
ENCONTRAR PROGRAMAS QUE TENGAN ACCESO AL PORTAPAPELES
Los expertos en borrado seguro de datos mencionan que la información que se copia en el portapapeles suele estar disponible en texto plano (esto depende de cada programa). Además, de esta forma el usuario podrá encontrar un programa de espionaje/monitoreo del portapapeles.
- Cree un archivo clipboard.db y escriba una cadena única en él, por ejemplo:
1 | fghfgjhgfhkgjlbnmnvbregfghdgfjgch |
- A continuación, copiemos al portapapeles y comencemos a escanear los procesos:
1 | sudo mxtract -wm -wr -e -i -d =/tmp/output/ -r =clipboard.db |
- Podrá encontrar programas que contengan esta línea:
BUSCAR CONTRASEÑAS Y CLAVES EN PROCESOS EN EJECUCIÓN
A continuación buscaremos aquellas líneas que tienen alta entropía y que, por lo tanto, pueden tratarse de contraseñas, claves y otros datos confidenciales.
Puede combinar el trabajo de estos dos programas. Hagamos que mXtract extraiga casi todas las cadenas creando un archivo strings.db y copiando algo como lo siguiente en él:
1 | [ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=]{30,} |
Los caracteres entre corchetes son los que pueden aparecer en la cadena, y entre las llaves se encuentra el tamaño mínimo de la cadena. Ejecute el siguiente comando:
1 | sudo mxtract -wr -e -i -d =/tmp/output/ -r =strings.db |
Posteriormente, usando DumpsterDiver podrá buscar líneas con la entropía requerida, mencionan los expertos en borrado seguro de datos:
1 | python3 DumpsterDiver.py -p /tmp/output/ --entropy 5.3 |
Este es un concepto muy burdo, por lo que en escenarios reales necesitará un ajuste más detallado de DumpsterDriver.
CÓMO DETECTAR QUÉ PROGRAMAS ESTÁN CONECTADOS A UN HOST ESPECÍFICO
¿Qué podremos hacer si encontramos una conexión sospechosa a un host específico después de su finalización? Los expertos en borrado seguro de datos mencionan que en los puertos cerrados, si el proceso aún se está ejecutando, existe la posibilidad de detectarlo. Para hacer esto, especifique el nombre de host o la dirección IP de interés como una cadena de búsqueda.
BUSCAR UN PROGRAMA QUE CONTENGA CIERTOS DATOS
La técnica anterior se puede utilizar no solo para direcciones de red, sino también para cualquier cadena. Así, es posible encontrar un programa que guarde determinados archivos o muestre ventanas con determinadas líneas.
EXTRAER EL CONTENIDO DEL PORTAPAPELES
Dependiendo del software utilizado, puede encontrar un programa que almacene el portapapeles en texto sin formato. Con la opción -p =, puede especificar el identificador (PID) de un proceso para escanear el objetivo. Si configura las expresiones regulares correctamente, puede extraer el contenido del portapapeles.
Para un análisis detallado del contenido de un proceso puede utilizar la opción -wm; cuando se especifica, se guardarán los datos sin procesar el contenido completo de cada proceso.
CÓMO ENCONTRAR EL ID DEL PROCESO ANALIZADO
Recuerde que, si desea escanear un proceso específico, puede encontrar su número con comandos como los que se muestran a continuación:
1 2 | ps a | grep -E 'cli(p)board' ps a | grep -E 'libre(o)ffice' |
Preste atención a los paréntesis: aunque no modifican la esencia del análisis, gracias al uso de estos caracteres el proceso con grep no termina en la lista de salida.
Para obtener solo el número, puede ejecutar el siguiente comando:
1 | ps a | grep -E 'cli(p)board' | awk '{print $1}' |
Post a Comment