Un framework de post-explotación C2
# Alan Framework Alan Framework es un framework de post-explotación útil durante actividades de red team. **Si encuentras útil mi herramienta, por favor considera <a href="https://github.com/sponsors/enkomio">patrocinarme</a>.** # ⚠⚠⚠ Descargo de responsabilidad ⚠⚠⚠ La creación de este tipo de software siempre ha causado controversias. Si te preguntas por qué decidí crear esta herramienta, es porque estoy convencido de que la mejor experiencia de aprendizaje es implementar lo que aprendiste. Durante el proceso de ingeniería inversa, muchos pequeños detalles pasan desapercibidos. Poco a poco, estos detalles impiden que el investigador tenga una visión completa de lo que está sucediendo. Finalmente, soy programador ante todo, y me encanta desarrollar este tipo de programas 😄 ## Descargar <a href="https://github.com/enkomio/AlanFramework/releases/latest">Descargar Alan C2 Framework</a> ## Características destacadas * Puedes ejecutar tu herramienta preferida directamente en memoria * Ejecución de scripts JavaScript (en memoria sin dependencia de terceros) * Proxy SOCKS5 totalmente compatible * Tipos de agente compatibles: Powershell (x86/x64), DLL (x86/x64), Ejecutable (x86/x64), Shellcode (x86/x64) * Server.exe se puede ejecutar en Linux (a través de dotnet core) * La comunicación en red está completamente cifrada con una clave de sesión no recuperable del binario del agente ni de un volcado de tráfico * Comunicación realizada mediante HTTP/HTTPS * No es necesario instalar dependencias o bibliotecas externas * Un potente shell de comandos * La configuración del agente se puede actualizar sobre la marcha (también puedes cambiar el puerto y el protocolo) ## Documentación: Blog posts * <a href="http://antonioparata.blogspot.com/2022/05/alan-c2-framework-v70-hyper-pivoting.html">Alan c2 Framework v7.0: Hyper-Pivoting</a> * <a href="http://antonioparata.blogspot.com/2022/02/alan-c2-framework-v60-alan-javascript.html">Alan c2 Framework v6.0: Alan + JavaScript = ♡</a> * <a href="https://antonioparata.blogspot.com/2021/12/alan-c2-framework-v50-all-you-can-in.html">Alan c2 Framework v5.0 - Edición todo lo que puedas en memoria</a> * <a href="https://antonioparata.blogspot.com/2021/09/alan-post-exploitation-framework-v40.html">Alan post-exploitation framework v4.0 lanzado</a> * <a href="https://antonioparata.blogspot.com/2021/05/alan-post-exploitation-framework.html">Alan - Un framework de post-explotación</a> Para más información sobre su uso, por favor lee la <a href="https://github.com/enkomio/AlanFramework/tree/main/doc">documentación</a>. ### Compilar el código fuente Para compilar _Alan_ se deben realizar las siguientes acciones: * Asegúrate de tener instalado <a href="https://cmake.org/">cmake</a> y que esté en el PATH (ejecuta _cmake --help_ para ver si funciona) * Instala Visual Studio 2022 (la versión Community está bien). Estos pasos se probaron con la versión VS 2022 17.3.1 * Asegúrate de que _.NET Desktop Development_, _Desktop development with C++_ y el lenguaje F# estén instalados como parte del paquete de Visual Studio * Instala las bibliotecas .NET ejecutando: **./src/server/paket.exe install** * Abre el archivo **.src/server/ServerSln.sln** en Visual Studio. Establece el proyecto **ServerBuilder** como el principal (clic derecho -> Establecer como proyecto de inicio) * Ejecuta el **ServerBuilder** que compilará todo * Si la compilación finaliza correctamente, el archivo Alan .zip se ubicará en el directorio recién creado **Misc/out/release** ## Videos: Videos de demostración | Alan v7.0.514.10 - Proxy SOCKS5 [](https://www.youtube.com/watch?v=66reccDHio8) | Alan v6.0.511.28 - Ejecución JS [](https://www.youtube.com/watch?v=8AvE0SpvBDY) | Alan v5.0.509.20 - Ejecución en memoria [](https://www.youtube.com/watch?v=rFG6PCR6tJM) | | :---: | :---: | :---: | |Alan v4.0.0 - Agente x64 e Inyectar [](https://www.youtube.com/watch?v=D8zDycuZHqg)| Alan v3.0.0 - Comandos varios [](https://www.youtube.com/watch?v=L-DVJO7u5Vw) | Alan v2.0.500.23 [](https://www.youtube.com/watch?v=oLXYUCX7dVY) | |Alan v1.0.0 [](https://www.youtube.com/watch?v=dgEBEAfEseY) | | | # Registro de cambios ### v7.0.514.10 - 15/05/2022 * Se implementó el comando `proxy` para pivoting * Los comandos `info` e `info++` muestran si el agente está usando un proxy * Se corrigió un error en la comunicación de red (Issue 2) * Se corrigió un error en el cargador PE cuando las funciones se importan por ordinal * Se corrigió un error en el módulo JS que causaba liberación de memoria anticipada * Se corrigió un error en el comando `run` que provocaba que la opción `&` no funcionara * Los mensajes de registro ahora se guardan en el archivo `alan.log` * Toda la salida generada y la entrada del usuario se registran en un archivo de evidencia dentro de la carpeta `evidences` * Se añadió información de ID de máquina al comando `info` * Se añadió el tipo de paquete `Vanilla` para la creación de agentes. Esto permite una mejor integración del empaquetador personalizado. ### v6.0.511.28 24/02/2022 * Los cargadores PE x86/x64 se modificaron para actualizar el campo PEB->Ldr. Esto permite que el sistema llame a DLL_PROCESS_DETACH en la DLL inyectada. * Se aumentó el tamaño máximo de respuesta a 1GB. Esto corrige la descarga de archivos grandes. * Se añadió la fecha de expiración del agente a la configuración. * El comando `run` se amplió para admitir la ejecución de archivos Javascript. * El comando `info++` ahora muestra la etiqueta del volumen y el tipo de sistema de archivos. ### v5.0.509.20 - 13/12/2021 * Se implementó el comando `run` * Se implementó el comando `kill` * Se implementó el comando `exec` * Se eliminó el mensaje `inject` ya que se puede lograr con el comando `run` en segundo plano * Se creó un stager y un cargador PE para hacer el agente más sigiloso. Cada archivo de agente generado tiene un hash diferente * Se mejoró la inyección de código para sortear la Mitigación de Política de Código Dinámico * Ahora es posible especificar el nombre del archivo del agente a crear durante el asistente * Se corrigió un error en los comandos `upload` y `download` * Se corrigió un error en la creación del shell. El token del proceso del shell de comandos no tenía el mismo nivel de integridad que el agente * Se eliminó la función exportada del artefacto DLL del agente * Se añadió el directorio de trabajo actual al comando `info` * Se amplió el comando `shell` para ejecutar un solo comando ### v4.0.0 - 26/09/2021 * Se añadió el comando `inject`. Este comando permite al operador inyectar código en un proceso remoto * Se añadió el comando `sleep` realizado en pequeños intervalos de 400 mseg cada uno. * Se introdujo el concepto de Jitter en `sleep` * Se portó el agente a x64 bits (incluido cargador PE32+) * Se corrigieron errores en el cargador PE x86 * El ejecutor de agentes .NET ahora se ejecuta de manera más sigilosa para evitar detección * Ahora es posible especificar un servidor web personalizado en la respuesta del listener HTTP/S * Se eliminó el comando `listeners` por ser superfluo * Se mejoró el comando `info` con más información * Los mensajes de error son más explicativos * Se añadió información sobre el tipo de token del proceso (elevado o no) * Se añadió información sobre los privilegios del token del proceso * Se añadió información sobre los grupos del token del proceso ### v3.0.0 - 15/05/2021 * Se renombró el comando `quit` del shell del agente a `exit` * Se implementó la migración del agente mediante el comando `migrate` * Se corrigió un error al recuperar la versión del SO * Se añadió DLL como formato de agente en el asistente de creación. * Se implementó el comando `ps` para listar los procesos en ejecución * Se implementó el comando `download` para descargar localmente un archivo o un directorio completo * Se implementó el comando `upload` para subir archivos al host comprometido * Se implementó `SuccessRequest` como opción de respuesta del servidor HTTP para personalizar la respuesta del listener http/s * Se implementó `ErrorRequest` para personalizar la respuesta del listener http/s para solicitudes incorrectas * Se implementaron `prepend` y `append` como opciones de solicitud del servidor HTTP para especificar en el perfil del agente ### v2.0.500.23 - 20/03/2021 * Se implementó el comando `detach` del agente para salir temporalmente de un agente unido * Se implementó el comando `detach` del shell para salir temporalmente de un shell de comandos * Se implementó el comando `listeners` para listar los listeners disponibles * Se implementó el listener HTTPS para comunicarse con el agente mediante TLS * Se implementó el comando `get-config` para descargar la configuración actual del agente * Se implementó el comando `update` para actualizar la configuración del agente * Ahora se admite Windows 7 ### v1.0.0 - 22/02/2021 * Primera versión