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.
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.
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.
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
PHP.
Tenemos para elegir.
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.
- 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.
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.