martes, octubre 02, 2018

Cómo usar Dropbox como canal de hacking utilizando Powershell Empire en la post-explotación #pentest

Pasó la Ekoparty. Un evento especial que se celebra desde hace 14 años en la ciudad de Buenos Aires, Argentina. Por primera vez estuve allí, en el espacio Konex, un ambiente distinto, especial, un rollo que no había visto en muchas ocasiones. Una experiencia que he podido disfrutar gracias al trabajo del equipo de Ideas Locas del área CDO de Telefónica. Allí estuve hablando sobre dos proyectos Open Source que hemos trabajado en el último año UAC-A-Mola e ibombshell.

Figura 1: Cómo usar Dropbox como canal de hacking
utilizando Powershell Empire en la post-explotación

Estas ideas son dos ideas que van madurando. Si bien UAC-A-Mola fue a BlackHat Europa el año pasado, todavía tiene un largo recorrido, por lo que si quieres colaborar puedes hacerlo a través del repositorio del proyecto. Te animamos a jugar con el proyecto y ayudarnos a mejorarlo.


Por otro lado, este año llegó ibombshell, un proyecto especial para mí ya que llevaba tiempo dándole vueltas. La parte ‘everywhere’ del proyecto estaba en mi cabeza desde hacía tiempo, mientras que gracias a la interacción con mi compañero y amigo Álvaro Nuñez se concibió el modo ‘silently’. Aprovecho estas líneas para anunciar que ibombshell estará en BlackHat Europe 2018. Es un orgullo poder estar allí por segundo año.


Además, hablé de Empire como una de las herramientas referencia en el mundo de la post-explotación. Comenté la existencia de un listener en la herramienta que permitía al pentester gestionar y dar instrucciones a un agente de Empire sobre una máquina comprometida sin la necesidad de disponer de una conexión directa, utilizando para ello una app OAuth de Dropbox. Esto mismo se puede hacer con una cuenta de Onedrive, tal y como hacíamos en el trabajo sobre ataques SAPPO.


Figura 4: Solo hay que besar un Sappo

DBX Listener en Empire

Un listener en Empire es un elemento que permite recibir las conexiones y comunicaciones de los agentes que se despliegan sobre las máquinas comprometidas. En otras palabras, es una forma de poder gestionar y controlar las acciones que los agentes realizarán sobre las máquinas comprometidas. El DBX listener es un elemento distinto al resto por el flujo de acción que tiene.

Como se puede visualizar en la imagen, tanto atacante y víctima se conectan a Dropbox a través de una app OAuth. Para ello utilizan un API Token generado por el atacante al disponer de una cuenta en Dropbox y generar una app. El atacante envía las instrucciones a una carpeta generada en Dropbox, dónde el agente de Empire que se ejecuta en la máquina víctima se conectará y descargará los Jobs que tiene que realizar.

Figura 5: Esquema de uso de Dropbox como canal

Una vez realizados los Jobs se suben los resultados desde el agente de Empire a una carpeta de Dropbox. Esta carpeta es consultada por el C2, es decir, el atacante y se obtiene la información que se buscaba con las instrucciones.

El envío de datos va cifrado y los datos que se almacenan en la app de Dropbox se encuentran cifrados. Para ello existe el atributo Staging Key en la configuración del listener y del Stager que se convertirá en agente.

Figura 6: Opciones del listener en dropbox

El módulo de dbx de los listeners de Empire se puede cargar utilizando el comando uselistener dbx. Como se puede ver en la imagen hay varios atributos como son:
Name. Nombre que le daremos al listener, por defecto, Dropbox. 
StagingKey. Debe ser igual tanto en el listener como en el stager. 
APIToken. El atributo más importante en el módulo. Aquí se debe indicar el APIToken que Dropbox aporta cuando se genera una app. 
TaskingsFolder. Este parámetro indica el nombre de la carpeta de Dropbox dónde se escribirán las tareas que el agente debe ejecutar.
Para conseguir la APIToken debemos ir al apartado de developers de Dropbox con nuestra cuenta. En este apartado vamos a ir al apartado My Apps, el cual estará vacío si nunca se ha hecho uso de ello. Cuando se genera una nueva app hay que generar el Access Token. Para ello se pulsa sobre el botón de Generate. Como se puede ver en la imagen, se obtiene un Access Token generado. Este token es el que debemos configurar en el listener que mostrábamos anteriormente.

Figura 7: Gestión de Access Tokens en Dropbox

Para la ejecución del agente no hay que hacer nada en especial. Lo único es construir un stager, el que se requiera en el escenario de Ethical Hacking, y apuntarlo al listener que hemos configurado, manteniendo el mismo StagingKey.

Figura 8: Configuración del stager

Por último, os dejamos un vídeo sobre la configuración del listener de Dropbox y su uso. Hay que tener en cuenta que todo hace indicar que Dropbox bloquea las cuentas que hacen uso de esta configuración, por lo que si quieres probarlo en un entorno de pruebas tuyo, utiliza una cuenta que no tenga valor para ti.


Figura 9: Dropbox as a channel for Empire

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 el equipo de "Ideas Locas" de la unidad CDO de Telefónica.

No hay comentarios:

Entrada destacada

Seis recomendaciones personales de libros de @0xWord para disfrutar y aprender

Este verano pude disfrutar de la lectura de un libro que me encantó. El libro de Factfulness que me había regalado mi compañera Beatriz Ce...

Entradas populares