Revista Tecnología

RedTeaming: Command and Control con Pupy Parte II

Publicado el 04 mayo 2020 por Debadastra @jdaanial

En la entrada anterior se ha hablado sobre el proceso de instalación de Pupy y la generación de payloads, los cuales evidentemente se tendrán que ejecutar en las máquinas comprometidas. A partir de éste punto es posible ejecutar operaciones de post-explotación utilizando el Command and Control de Pupy una vez se reciba la conexión por parte de la víctima.

Post-explotación en sistemas Linux con Pupy

Una vez se ejecuta el payload en una máquina comprometida basada en Linux, es posible ver la sesión generada en el C&C de Pupy y ver las opciones disponibles con el comando “help”.

RedTeaming: Command and Control con Pupy Parte II

Con “help” únicamente aparecerán los comandos básicos, pero si se utiliza la opción “help -M” se podrá ver un listado completo de todas las alternativas disponibles de cara a realizar procedimientos de post-explotación en profundidad.
Por otro lado, los comandos ejecutados desde la consola de Pupy afectan a todas las sesiones que se encuentren abiertas, es decir, que se ejecutarán sobre todos los zombies. Para cambiar este comportamiento y especificar que los comandos deben ejecutarse sobre un único zombie o un subconjunto de ellos es necesario utilizar el comando “sessions” con la opción “-i” en donde es posible especificar un listado de identificadores de sesiones separados por coma. Si se indica un único identificador los módulos/comandos se ejecutarán contra ese zombie. Si se especifica una lista de identificadores separados por comas los comandos se ejecutarán contra todos y cada uno de los zombies relacionados con dichos identificadores.
A partir de éste momento es posible comenzar con la ejecución de algunos de los módulos disponibles en Pupy. A continuación se listan unos cuantos.
• shell: Es un comando que funciona en todos los payloads independiente de si es Linux/Windows o Android. En ocasiones resulta conveniente tener una shell directa contra el sistema y ejecutar comandos de todo tipo. En éste caso es una shell interactiva, lo que significa que el canal de comunicación no se va a cortar en el caso de utilizar comandos como “sudo”, “passwd” o cualquier otro que requiera interacción.
• mount: Permite listar todas las particiones en el sistema comprometido y los dispositivos que se encuentran montados.
• migrate: Aquellos que habéis trabajado con Metasploit y Meterpreter seguramente ya sabréis de qué va éste comando. En el caso de Pupy, no solamente se encarga de migrar el payload a otro proceso más estable en el sistema sino que además permite crear un proceso nuevo en el caso de que haga falta. Todo esto sin escribir nada en disco para evitar la detección.
RedTeaming: Command and Control con Pupy Parte II

• privesc_checker: Un módulo interesante que en sistemas basados en Linux permite encontrar defectos de configuración que puedan conducir a elevación de privilegios. Utiliza una herramienta muy conocida en este tipo de procesos llamada “LinEnum”.

RedTeaming: Command and Control con Pupy Parte II

• persistence. En todos los payloads disponibles en Pupy se encuentra habilitada la persistencia por defecto. En el caso de Linux utiliza un fichero de configuración para “systemd” que se cargará justo cuando arranque el sistema, de tal forma que se garantizan los accesos futuros. Cuando se ejecuta el módulo sin ningún parámetro simplemente se encarga de habilitar o deshabilitar la persistencia en el sistema comprometido. Cuenta con más opciones de configuración para sistemas Windows que para Linux. En el caso de que el payload sea para Linux solamente se puede utilizar el argumento “-s” para indicar que el mecanismo de persistencia utilizado deberá ser una librería compartida en lugar de un fichero de configuración Systemd. Finalmente, la opción “–remove” permite eliminar cualquier fichero relacionado con el mecanismo de persistencia, realizando una limpieza básica en el sistema comprometido.

RedTeaming: Command and Control con Pupy Parte II

• duplicate: Simplemente duplica el payload actual y genera un nuevo proceso con él. Con la opción “-m” intentará impersonalizar el token de usuario actual. Aunque se puede utilizar en sistemas Linux ya que el comando no dará ningún error, en realidad solo tiene sentido (y efecto) en sistemas Windows. Una vez se ejecuta el módulo es normal obtener una nueva sesión.

RedTeaming: Command and Control con Pupy Parte II

• exploit_suggester: Se trata de un módulo que basándose en información básica del objetivo, intenta determinar cuáles son los exploits públicos que podrían funcionar a la hora de elevar privilegios.

RedTeaming: Command and Control con Pupy Parte II

• tcpdump: Este módulo representa un subconjunto de las funcionalidades disponibles en la herramienta tcpdump. Entre otras cosas, permite la captura pasiva de tráfico utilizando filtros BPF y guardar los resultados en un fichero PCAP.
• users: Permite obtener el listado de usuarios interactivos en el sistema.
• port_scan: Se trata de un escáner de puertos muy básico basado en TCP. Puede ser útil en el caso de que no sea posible subir/instalar nmap u otra utilidad más potente al sistema comprometido.

RedTeaming: Command and Control con Pupy Parte II

• search: Ideal para realizar búsquedas de forma recursiva sobre un directorio. Admite expresiones básicas para buscar ficheros/directorios que coincidan con la cadena especificada.
• download: Descarga uno o varios ficheros del sistema comprometido. También admite expresiones básicas, ficheros que se pueden incluir o excluir del proceso de descarga y también, realizar solamente el cálculo del tamaño de la descarga lo cual es muy útil para hacerse una idea de cuántos se descargaría en el caso de continuar.

RedTeaming: Command and Control con Pupy Parte II

• upload: Se trata de un módulo muy simple que se encarga de subir un fichero o directorio a una ruta concreta en la máquina comprometida.

Existen bastantes más módulos para sistemas Linux que merece la pena explotar. Como se ha mencionado antes, basta con ejecutar el comando “help -M” para ver los comandos y módulos disponibles. En el caso de Pupy enseña cada módulo en verde o gris lo que permite saber si dicho módulo se puede ejecutar sobre el sistema comprometido o no.
En el próximo post se hablará sobre el payload de Pupy para Windows y algunos módulos más que son específicos para estas plataformas.

Un saludo y Happy Hack
Adastra.


Volver a la Portada de Logo Paperblog