lunes, junio 15, 2020

MSFPC: Un Payload Creator que no hay que confundir con Metasploit

MSFPC o MSFvenom Payload Creator es un script que debido al éxito que ha tenido se ha introducido en la distribución de Kali Linux y ya viene nativo. Muchos pueden pensar que es una herramienta del framework de Metasploit, ya que comienza por msf como otras muchas herramientas del framework: msfvenom, msfconsole, msfd, etcétera. Nada más lejos de la realidad. Lo que ocurre es que si que hace uso de Metasploit y de msfvenom para generar ciertos payloads.

Figura 1: MSFPC: Un Payload Creator que no hay que confundir con Metasploit

La idea de msfpc es sencilla, facilitar el uso de herramientas como msfvenom o hacer más sencillo el proceso de generación de una shellcode o de un payload concreto. Podemos verlo, como se indica en el repositorio de la herramienta, como un wrapper para generar múltiples tipos de payloads. La herramienta de msfpc dispone de un Github dónde se puede encontrar documentación y casos de uso de la herramienta de automatización.

Figura 2: MSFPC en GitHub

También hay que decir que la herramienta tiene una sintaxis sencilla, la cual veremos a continuación, pero hay una serie de tecnicismos con los que hay que estar familiarizados. Por ejemplo, vamos a poder elegir si el payload será de tipo staged o stageless, si queremos una shell de una etapa o un payload de varias etapas, si el sentido de la conexión será de tipo inverso o de tipo bind. Son una serie de cosas que, generalmente, estaréis familiarizados con ellas o quizá no, por lo que no está de más leer la documentación que se aporta en el repositorio de Github.

Figura 3: Metasploit para Pentesters Gold Edition

Si vemos la ayuda de la herramienta mediante el uso del comando msfpc -h vamos a ver en detalle todas las posibilidades de la herramienta. Lo bueno es que todo lo que se indica es todo lo que hay, no podemos buscar más, por lo que estamos ante una herramienta que nos simplifica la generación de ciertos payloads. Es cierto, que en muchos casos, o quizá en la mayoría, serán detectados por un AV o por un IDS, pero también debemos conocer qué elementos pueden hacer que esto no ocurra.

Figura 4: MSFPC en Kali Linux

En esta imagen se puede ver la sintaxis de la herramienta. Como se puede ver, hay una serie de ejemplos de uso, los cuales vienen documentados en el Github del proyecto. Con la opción TYPE se puede indicar cual será el destino del payload. Puede que queramos un payload embebido en un EXE o en una DLL, puede que queramos el código en una Powershell, en un Python, en un PHPTenemos para elegir.

Figura 5: Libro de Pentesting con PowerShell 2ª Edición

El resto de parámetros lo que aporta es una combinatorio y personalización muy grande. Por ejemplo, personalizamos con la dirección IP y puerto, pero con STAGED y STAGELESS estamos entrando en una combinatoria de posibilidades bastante grande. Es cierto que aquí estamos limitados a generar shells o Meterpreters, pero aún así tenemos un abanico de posibilidades. 
msfpc <type> (<domain>) (<port>) (<cmd>) (<bind>)
             (<staged>) (<tcp>) (<batch>) (<verbose>)
A continuación, vamos a mostrar un poco el desglose de cada opción:
  • TYPE: Ya se comentó anteriormente. Elegiremos plataforma o tecnología sobre la que el payload funcionará.
  • DOMAIN o IP: Fácil, indicaremos contra que IP o contra que dominio se conectará el payload o tendremos que irnos a conectar para buscar al payload en ejecución, dependerá de si estamos ante un reverse o un bind.
  • PORT: Puerto dónde se encontrará el handler que recibirá la conexión o el puerto al que el handler deberá conectarse en una máquina remota. Esto dependerá de si la conexión es de tipo reverse o de tipo bind.
Figura 6: Ejecución de msfpc en Kali Linux
  • BIND o REVERSE: Proporciona información sobre si la conexión será desde el handler hacia el payload o al revés.
  • STAGED o STAGELESS: Indica si el payload tendrá dependencias o no, en otras palabras, si el paylaod se construirá con una etapa o con varias. El tipo STAGED está ligado a Metasploit y el STAGELESS es más pequeño y estable, suelen ser pequeñas Shell. El tipo STAGED son mejores en entornos de alta latencia. El tipo STAGELESS son vistas como mejores para bypassear un AV. Estos detalles también se pueden encontrar en el repositorio.
  • VERBOSE: muestra información del proceso de generación, para que se tenga detalla de lo que ocurre.
La generación de un payload es sencilla, si entendemos los parámetros comentados anteriormente. Lo más interesante es que, aparte de proporcionarnos el payload generado, nos dan información de cómo se ha generado con msfvenom, es decir, la línea ejecutado internamente contra msfvenom y, además, nos dan información sobre cómo lanzar el handler de Metasploit de forma automática. Esto último, se puede ver a través de un fichero RC que nos proporciona la ejecución de msfpc

Figura 7: Ejecución de msfconsole en Kali Linux

Ahora, cuando este binario sea ejecutado, de la forma que sea, en una máquina dentro del pentest se obtendrá el control de ésta. Como os digo hay muchas opciones para explorar y, puede, que más adelante veamos más ejemplos de uso de esta interesante herramienta que ayuda a simplificar el uso de msfvenom para los usuarios.
     
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.  Para consultas puedes usar el Buzón Público para contactar con Pablo González

Figura 8: Contactar con Pablo González

No hay comentarios:

Publicar un comentario