El mundo de las shells inversas o de tipo bind es un amplio mundo. En todo pentesting es necesario utilizar, casi de manera constante, diferentes tipos de shells, ya que no solo del Meterpreter de Metasploit vive el pentester en un Ehtical Hacking. Es importante disponer en la mochila del pentester de una herramienta que permita obtener y generar una shell en un momento determinado. Sin duda, una de las herramientas importantes en este ámbito es msfvenom de Metasploit o, incluso, desde el propio msfconsole.
Hoy quería hablaros de una herramienta que también proporciona otro punto de vista y otra forma de lograr generar shells en un momento determinado, bajo las circunstancias que tengamos. La herramienta se llama ShellPop y se puede obtener en su repositorio de Github.
Para llevar a cabo la instalación de ShellPop se debe descargar desde Github, por ejemplo, con la ejecución del comando git clone. Después, se deben instalar las dependencias de Python, ya que la herramienta está escrita en Python. En primer lugar, se ejecuta la siguiente instrucción apt-get install python-argcomplete –y. Posteriormente, se instalan las dependencias que vienen especificadas en el fichero requirements.txt. Esta operativa se realiza de la siguiente manera: pip install –r requierements.txt.
Una vez tenemos todo preparado y con las dependencias resueltas, debemos instalar la aplicación. Para ello, se utiliza la instrucción python setup.py install. De esta manera dispondremos del comando desde la consola en cualquier instante.
La ayuda que proporciona la herramienta es buena. Si ejecutamos shellpop –h obtenemos un listado de todo lo que podemos hacer con la herramienta. Vemos que la herramienta tiene una serie de opciones con las que podemos ‘settear’ el host y el puerto dónde la shell realizará acción, dependiendo de su naturaleza: reverse o bind.
Además, podemos ver en la ayuda una categoría de tipos de shell, de opciones de encoders e, incluso, opciones de stager, lo cual hace que sea flexible la configuración de las shell. Además, la herramienta proporciona una categoría propia para generar shells para Powershell.
Para obtener el listado de shells disponibles y el tipo de conexión de éstas, podemos ejecutar shellpop –list. Como se puede ver en la siguiente imagen tenemos shells de tipo bind y de tipo reverse. El ID que aparece al lado de la shell es importante, ya que después lo tendremos que indicar si queremos utilizar dicha shell.
Lo interesante es ver el número de lenguajes distintos en los que disponemos una shell. Lenguajes como Perl, Python, Ruby o PHP proporcionan una base fuerte e interesante, debido a que podemos ejecutar una shell en diferentes plataformas, indiferentemente del sistema y jugando con más con la tecnología y con el lenguaje.
Una opción interesante que proporciona la herramienta es la opción –clip, el cual permite generar la shell y copiarla al portapapeles. Es una opción interesante cuando se quiere llevar el resultado de la ejecución de la herramienta a una herramienta o script propio.
Para mostrar un ejemplo, en mi querido Ruby, ejecutamos la siguiente instrucción shellpop –reverse –number 4 –host [dirección] –port 4444 –handler. Con la opción –reverse indicamos que la shell será inversa y no de tipo bind. La opción –number nos permite indicar, según el índice del listado, la shell que queremos generar. La opción –host nos permite indicar la dirección dónde la shell se atará, en caso de ser de tipo bind o dónde la shell realizará la petición de conexión en caso de ser inversa. Respecto a la opción –port indicamos el puerto sobre el que trabajará la shell. Por último, la opción –handler configura el handler para recibir las conexiones o generarlas, de nuevo en función de si es reverse o bind.
El handler arranca y llega la primera conexión, cuando en el target remoto se ejecuta el código. A partir de ahí, disponemos de la posibilidad de interactuar con la shell y lanzar instrucciones en el host remoto.
Como se puede ver, las posibilidades que ofrece ShellPop son bastante amplias. Me recuerda a una herramienta de la que ya hablamos aquí llamada ZeroDoor de OWASP, con la que se podía crear diferentes shellcodes para diferentes plataformas. Otra herramienta que hay que tener en la mochila del pentester.
Figura 1: ShellPop: Generación de Shells POP "like a master" |
Hoy quería hablaros de una herramienta que también proporciona otro punto de vista y otra forma de lograr generar shells en un momento determinado, bajo las circunstancias que tengamos. La herramienta se llama ShellPop y se puede obtener en su repositorio de Github.
Figura 2: GitHub de ShellPop |
Para llevar a cabo la instalación de ShellPop se debe descargar desde Github, por ejemplo, con la ejecución del comando git clone. Después, se deben instalar las dependencias de Python, ya que la herramienta está escrita en Python. En primer lugar, se ejecuta la siguiente instrucción apt-get install python-argcomplete –y. Posteriormente, se instalan las dependencias que vienen especificadas en el fichero requirements.txt. Esta operativa se realiza de la siguiente manera: pip install –r requierements.txt.
Figura 3: Instalación en Kali Linux |
Una vez tenemos todo preparado y con las dependencias resueltas, debemos instalar la aplicación. Para ello, se utiliza la instrucción python setup.py install. De esta manera dispondremos del comando desde la consola en cualquier instante.
La ayuda que proporciona la herramienta es buena. Si ejecutamos shellpop –h obtenemos un listado de todo lo que podemos hacer con la herramienta. Vemos que la herramienta tiene una serie de opciones con las que podemos ‘settear’ el host y el puerto dónde la shell realizará acción, dependiendo de su naturaleza: reverse o bind.
Además, podemos ver en la ayuda una categoría de tipos de shell, de opciones de encoders e, incluso, opciones de stager, lo cual hace que sea flexible la configuración de las shell. Además, la herramienta proporciona una categoría propia para generar shells para Powershell.
Figura 4: Ayuda de ShellPop |
Para obtener el listado de shells disponibles y el tipo de conexión de éstas, podemos ejecutar shellpop –list. Como se puede ver en la siguiente imagen tenemos shells de tipo bind y de tipo reverse. El ID que aparece al lado de la shell es importante, ya que después lo tendremos que indicar si queremos utilizar dicha shell.
Figura 5: Lista de shells |
Lo interesante es ver el número de lenguajes distintos en los que disponemos una shell. Lenguajes como Perl, Python, Ruby o PHP proporcionan una base fuerte e interesante, debido a que podemos ejecutar una shell en diferentes plataformas, indiferentemente del sistema y jugando con más con la tecnología y con el lenguaje.
Una opción interesante que proporciona la herramienta es la opción –clip, el cual permite generar la shell y copiarla al portapapeles. Es una opción interesante cuando se quiere llevar el resultado de la ejecución de la herramienta a una herramienta o script propio.
Para mostrar un ejemplo, en mi querido Ruby, ejecutamos la siguiente instrucción shellpop –reverse –number 4 –host [dirección] –port 4444 –handler. Con la opción –reverse indicamos que la shell será inversa y no de tipo bind. La opción –number nos permite indicar, según el índice del listado, la shell que queremos generar. La opción –host nos permite indicar la dirección dónde la shell se atará, en caso de ser de tipo bind o dónde la shell realizará la petición de conexión en caso de ser inversa. Respecto a la opción –port indicamos el puerto sobre el que trabajará la shell. Por último, la opción –handler configura el handler para recibir las conexiones o generarlas, de nuevo en función de si es reverse o bind.
Figura 6: Apertura de handler |
El handler arranca y llega la primera conexión, cuando en el target remoto se ejecuta el código. A partir de ahí, disponemos de la posibilidad de interactuar con la shell y lanzar instrucciones en el host remoto.
Figura 7: Conexión activada |
Como se puede ver, las posibilidades que ofrece ShellPop son bastante amplias. Me recuerda a una herramienta de la que ya hablamos aquí llamada ZeroDoor de OWASP, con la que se podía crear diferentes shellcodes para diferentes plataformas. Otra herramienta que hay que tener en la mochila del pentester.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths
No hay comentarios:
Publicar un comentario