En la memoria esta todo. (o casi de todo).
Se nos puede dar el caso de que un usuario quiera recuperar las contraseñas de acceso a una aplicación o sitio web de un PC que anteriormente ha iniciado la sesión. Depende de la aplicación o del navegador las puede almacenar en disco, cifrando el contenido de las contraseñas, por lo cual este método de recuperación no es valido. (se entiende que el usuario no recuerda la contraseña)
Para ello utilizamos la siguiente 'tool': pd, disponible en la web 'http://www.trapkit.de'
pd es una utilidad que permite extraer de la memoria un determinado proceso basándose en el identificador de proceso (PID) que el sistema le asigna y poder volcarlo a disco. De esta forma no tenemos que 'dumpear' toda la memoria para hacer lo mismo.
En este caso necesito recuperar las contraseñas de acceso a la web de movistar para el envío de mensajes por SMS (desde un puesto de trabajo Linux y con navegador Firefox).
Si vemos el código fuente de la página nos encontramos con las posibles variables a buscar entre ellas (TM_LOGIN, TM_PASSWORD, TM_ACTION)
Manos a la obra:
LINUX:
pd -p 19323 > firefox.dump (donde 19323 es el PID de firefox)
Extraigo el texto del fichero binario a otro fichero más humano (txt)
strings -el firefox.dump> memorystrings.txt
Editamos el fichero TXT y buscamos las cadenas anteriormente citadas
Nos encontramos que la cadena TM_LOGIN, lleva asociado un número (deducimos que es un teléfono), mientras que las demas cadenas no muestran nada coherente.
Curiosamente si buscamos por el número de teléfono, nos da muchisima información, agendas, otros números de contacto, etc. y sobre todo la posible contraseña.
Este procedimiento es identico para Windows con la misma herramienta.
ahora vamos a examinar en caso que se presupone que puede haber información de cuentas de GMAIL en memoria RAM o almacenadas por el proceso. Como bien comenta Pedro, el proceso puede guardar, dependiendo de cómo esté de recursos la máquina en ese momento, la información en varios lugares. Nosotros intentaremos realizarlo desde la RAM. Para ello vamos a utilizar una herramienta de Spectra que, no sé por qué, ha pasado desapercibida durante mucho tiempo. La herramienta se llama
User Mode Process Dumper, y sobre ella vamos a trabajar. Esta herramienta tiene la capacidad de volcar al vuelo, y sin tener que matar al proceso, la memoria del proceso que le pasemos como parámetro. Vuelca incluso procesos de sistema!
Para ello, tenemos dentro de la herramienta, un ejecutable llamado Userdump.exe, el cual utilizaremos para este fin. La herramienta tiene soporte para 64 bits y plataformas basadas en Itanium, lo cual es un punto a su favor.
Y para los desarrolladores, esta herramienta tiene un instalador, el cual instala un driver en el sistema, para que pueda Hookear ciertas llamadas al kernel. Realizará estas funciones para dotar a la herramienta de volcar la memoria de un proceso cuando éste finalice de forma no planeada, forzosa, etc…
El funcionamiento de esta herramienta es bastante lógico y muy sencillo de utilizar. Para ello, no tendremos ni que utilizar la herramienta
TaskList para visualizar los procesos por línea de comandos, ya que la herramienta viene programada, con el parámetro -p, para realizar esta función.
Imagen 1.- Userdump mostrando procesos
Una vez que hayamos visualizado los procesos por línea de comandos, podremos extraer el contenido de la memoria del proceso que queramos, utilizando para ello la herramienta userdump.exe. El funcionamiento básico, como hemos dicho antes, es bastante sencillo de utilizar.
Imagen 2.- UserDump extrayendo memoria de un proceso determinado
Una vez extraído la memoria del proceso, podremos utilizar le herramienta de SysInternals-Spectra
Strings para extraer el texto.
Strings iexplore.dmp > iexplore.txt Una vez realizado ese cambio, podremos buscar, con la herramienta
FindStr o Find texto específico o cadenas de texto específico.
Imagen 3.- Resultado extracción Strings
gracias a Pedro Sánchez por sus inspiraciones xD
saludos