Recientemente he estado probando este script de bash llamado Meterpreter Paranoid Mode. La idea del autor de este script, seguramente, venga de este artículo de Rapid 7 sobre cómo de paranoicos podemos volvernos a la hora de configurar un Meterpreter. Sin duda, es un tema interesante, ya que los payloads que manejamos manejan, al final, información importante. Evitar que nos detecten por la evaluación de la comunicación mediante el cifrado de ésta, es algo que, en algunos entornos, puede ser fundamental. Eso sí, a nosotros nos ha llamado la atención el nombre por nuestro querido WordPress in Paranoid Mode.
Figura 1: Meterpreter Paranoid Mode
Meterpreter Paranoid Mode permite a los usuarios fortificar los staged/stageless de las conexiones de Meterpreter, teniendo que chequear para ello un certificado. La idea es sencilla: el script crea un certificado en formato PEM, el cual será utilizado para validar la conexión. Para tener la conexión validada, el handler al que se conecta el payload, debe disponer de acceso al certificado PEM. Además, se tendrá que tener habilitado el chequeo de este certificado, con la opción stagerverifysslcert a TRUE, dentro de los parámetros de Meterpreter avanzados. Esto lo veremos más adelante.
Figura 2: Meterpreter in Paranoid Mode
Una vez que el payload es creado por el script, mediante la herramienta msfvenom a bajo nivel, se debe configurar el handler para crear la conexión utilizando el certificado PEM. Se utilizará un hashSHA1 para la validación. Este es el resumen de la idea, de todo lo que automatiza el scriptMeterpreter in Paranoid Mode.
Figura 3: Meterpreter Paranoid Mode
Al ejecutar el script, éste solicita la creación de un certificado o importación de éste. Para hacerlo sencillo, se puede 'impersonar' un dominio. Para este ejemplo, se ha utilizado el dominio de Google. El script proporciona algunos pop-ups a la hora de poder seleccionar opciones, lo hace mucho más sencillo de utilizar por parte del usuario.
Figura 4: Creación de un certificado para un dominio suplantado
Una vez que rellenamos la opción del dominio y se lleva a cabo la 'suplantación' del dominio, se genera un nuevo certificado en formato PEM, el cual es almacenado en el directorio output. Más tarde, veremos detalles de dicho certificado almacenado. Lo que hay que entender es que es ese certificado el que será utilizado por el handler para validar la conexión segura con nuestro Meterpreter.
Ahora, nos toca elegir si vamos a utilizar un staged o un stageless. La herramienta nos dará dos opciones, la primera nos generará un .bat, mientras que la segunda nos generará un .exe. En este artículo se ve la perspectiva y diferencias entre un staged y un stageless. Es una lectura totalmente recomendada.
Figura 5: Staged payload
Una vez seleccionado el tipo de stage, se debe indicar el tipo de payload que se quiere utilizar. Para este ejemplo, hemos utilizado un staged, por lo que podemos utilizar los siguientes payloads:
Para este ejemplo, hemos utilizado la opción windows/meterpreter/reverse_https. Ahora tenemos, en la carpeta output, generado un fichero .bat con el código adecuado para lograr la conexión cifrada con el handler. Más abajo veremos parte del código para que entendamos qué utiliza.
Figura 6: Elección del payload
Antes de continuar, vamos a mostrar el certificado generado con la herramienta y la opción 'impersonar'
Figura 7: Fichero PEM del certificado del dominio suplantado
El código que está en el interior del fichero .bat es el que se puede ver en la imagen. Como se puede ver, la automatización utiliza Powershell para ejecutar el Meterpreter con las opciones de la validación del certificado activadas.
Figura 8: Script en powershell a ejecutar
Como se puede ver en la siguiente imagen, desde el handler que Meterpreter Paranoid Mode ha configurado se obtiene la sesión.
Figura 9: Sesión establecida
Además, se pueden ver las opciones que se han configurado, lo cual es importante por si se quiere hacer el procedimiento a mano, en vez de utilizar la herramienta. Las opciones importantes son:
" StagerVerifySSLCert a true. Con esta opción el handler verifica la conexión.
" EnableUnicodeEncoding a true.
" HandlerSSLCert apuntando a la ruta del certificado en formato PEM.
Por último, os dejamos un video del proceso para que veáis la automatización y algunos de los detalles que se pueden visualizar.