La posexplotación con Meterpreter
Descripción general de Meterpreter
Una vez que la máquina objetivo se ve comprometida, es posible inyectar una carga útil (payload) creada, por ejemplo, por un administrador en el sistema remoto, crear una conexión remota o ejecutar un programa remoto.
Aunque estos casos de uso ya permiten tener control sobre la máquina de destino, es posible simplificar la fase posterior a la explotación usando una payload particular: Meterpreter.
Meterpreter es una carga útil (payload) particularmente avanzada, que permite simplificar la fase posterior a la explotación porque proporciona un shell interactivo. Esta payload, ejecutada completamente en memoria, integra muchas funcionalidades y permite extenderlas gracias a una API de Ruby.
Después de la explotación, la máquina de destino realiza la transferencia inicial (normalmente, bind o reverse). A continuación, el stager carga Meterpreter (como una DLL) en la memoria, antes de iniciar una conexión cifrada a través de TLS que permite la interacción entre el cliente y el servidor.
Inyectar y ejecutar datos en la memoria, no tener datos escritos en el disco duro y usar una conexión cifrada dificultan el análisis forense.
Meterpreter existe para muchos sistemas de destino, como Windows, Linux, Android, iOS, Python, PHP, etc.
msf6 > search reverse_https
payload/android/meterpreter/reverse_https
payload/android/meterpreter_reverse_https...
Los comandos básicos de Meterpreter
Meterpreter integra muchos comandos básicos. Aquí se presentan algunos que se utilizan de manera más regular que otros. El comando help dentro de Meterpreter permite mostrar todos los comandos accesibles, agrupados en categorías:
meterpreter > help
Core Commands
=============
[...]
Stdapi: File system Commands
============================
[...]
Stdapi: Networking Commands
===========================
[...]
Stdapi: System Commands
=======================
[...]
Stdapi: Webcam Commands
=======================
[...]
Stdapi: Mic Commands
====================
[...]
Stdapi: Audio Output Commands
=============================
Meterpreter existe para varios sistemas de destino. Así, es importante tener en cuenta que el comando help no devuelve los mismos resultados en función del sistema operativo subyacente. Algunos comandos específicos de Windows no se pueden presentar en Linux, por ejemplo.
En los siguientes comandos, el Meterpreter se ejecuta en una máquina Metasploitable que utiliza un sistema Unix. Sin embargo, también se pueden presentar algunos comandos que afectan a los sistemas Windows, ya que se consideran importantes.
1. Comandos Core
El comando background (con el alias bg) se utiliza para poner la sesión Meterpreter en segundo plano con el fin de volver temporalmente a Metasploit:
meterpreter > background
[*] Backgrounding session 2...
msf6 exploit(linux/postgres/postgres_payload)>
Como se ha visto en el capítulo Utilizar sesiones, es posible recuperar el control de una sesión Meterpreter usando el comando sessions:
msf6 exploit(linux/postgres/postgres_payload) > sessions -l
Active sessions
===============
Id Name Type Information
Connection
-- ---- ---- -----------
----------
2 meterpreter x86/linux uid=108, gid=117, euid=108...