
** DESCONTINUADO ** Marco de C2 que utiliza el Servicio de Transferencia Inteligente en Segundo Plano (BITS) como protocolo de comunicación y Direct Syscalls + Dinvoke para la evasión de hooking en modo usuario de EDR.
██╗ ██████╗ ██╗ ██████╗ ██╗████████╗███████╗
██║ ██╔═══██╗██║ ██╔══██╗██║╚══██╔══╝██╔════╝
██║ ██║ ██║██║ ██████╔╝██║ ██║ ███████╗
██║ ██║ ██║██║ ██╔══██╗██║ ██║ ╚════██║
███████╗╚██████╔╝███████╗██████╔╝██║ ██║ ███████║
╚══════╝ ╚═════╝ ╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚══════╝
LOLBITS es un framework C2 que utiliza el Servicio de Transferencia Inteligente en Segundo Plano (BITS) de Microsoft para establecer el canal de comunicación entre el host comprometido y el backend. El backend C2 está oculto tras una aplicación web Flask aparentemente inofensiva y solo es accesible cuando las solicitudes HTTP recibidas por la aplicación contienen un encabezado de autenticación válido. Dado que esta herramienta está diseñada para usarse en entornos altamente monitorizados, se han implementado las siguientes características para evitar la detección por EDR y AV:
En cuanto a la arquitectura, LOLBITS se compone de 3 elementos principales:
Para denegar la inspección de contenido por parte de proxies, todo el contenido relevante enviado entre el agente y el servidor C2 se cifra usando RC4 con una clave secreta precompartida generada aleatoriamente. Un diagrama de alto nivel del comportamiento de la infraestructura sería como se muestra en la siguiente imagen:
Para evitar que el Equipo Azul pueda reproducir algunas de las solicitudes antiguas y descubrir la infraestructura del backend C2, cada encabezado de autenticación se genera aleatoriamente y es válido solo para un único ciclo (un ciclo se compone de una solicitud POST seguida de una solicitud GET, en ese orden). Los encabezados de autenticación antiguos serán ignorados y se mostrará el sitio web inofensivo para esas solicitudes.
Algunas de las características de esta herramienta se han implementado reutilizando código de otros proyectos o gracias al esfuerzo de varios investigadores de ciberseguridad. A continuación, enlazo algunos de los trabajos y proyectos externos que se han utilizado de una u otra forma para mejorar esta herramienta:
Para la infraestructura C2 se requiere un Windows Server 2016 o superior con Python 3.4+ y PowerShell 5.1+. El agente en C# ha sido probado con éxito en Windows Server 2012, Windows Server 2016, Windows Server 2019, Windows 7, Windows 8.1 y Windows 10. Para compilarlo se requiere:
1.- Clone este repositorio en su servidor C2
git clone https://github.com/Kudaes/LOLBITS.git
2.- Instale el Servidor Web (IIS) a través del Administrador del Servidor Windows. Asegúrese de instalar los roles CGI, ASP.NET y .NET Extensibility.
También instale las características .NET Framework y BITS para IIS.
3.- Ejecute el script setup.ps1 como administrador para desplegar toda la infraestructura y configurar el agente en C#.
4.- Compile el agente en C#. La compilación generará un .exe y una dependencia externa (Newtonsoft.Json.dll). Puede generar un único .exe usando ILMerge o simplemente enviar ambos archivos al host comprometido. Para evitar la salida DEBUG, asegúrese de compilar el proyecto como una Aplicación de Windows.
5.- (Opcional) Por defecto, el script setup.ps1 creará un nuevo Sitio Web en su IIS llamado lawlbits escuchando en el puerto HTTP predeterminado (80/TCP). Este nuevo Sitio Web no utiliza HTTP sobre TLS y, aunque el contenido de las solicitudes enviadas por el agente C# al C2 está cifrado usando RC4 con una clave secreta precompartida generada aleatoriamente, se recomienda configurar el uso de HTTPS para el nuevo sitio. Para ello, recomiendo usar Let's Encrypt sobre lawlbits, que es una de las formas más sencillas de configurar HTTPS. Después de eso, recuerde modificar la variable Url en Program.cs para usar HTTPS en lugar de HTTP, que es el comportamiento predeterminado.
Para obtener la shell reversa, simplemente escriba python lawlbin.py en una terminal del servidor C2 y ejecute el agente C# en el host comprometido.
Dado que este proyecto nace de las cenizas de un proyecto anterior y fallido, algunas de las funcionalidades antiguas se han conservado. El proyecto anterior era una shell donde todos los comandos disponibles se ejecutaban utilizando exclusivamente Living of The Land Binaries. De ahí proviene el LOL de LOLBITS, y por eso las siguientes funcionalidades se ejecutan utilizando exclusivamente LOLBINS (esto podría ayudar a evadir AWS y algunos filtros de AV/EDR):
A pesar de que estas funcionalidades podrían ser interesantes en algunos entornos (¡descargar archivos remotos sin usar PowerShell? ¡Me gusta!) las mantuve solo para reutilizar parte del código antiguo de la consola C2. A continuación se muestra una lista con otras funcionalidades que seguramente serán más útiles en un contexto clásico de red team:
Para obtener consejos de uso, simplemente escriba help o <comando> help.
Cualquier contribución será muy apreciada.
git checkout -b feature/CaracteristicaIncreible)git commit -m 'Añadir alguna característica increíble')git push origin feature/CaracteristicaIncreible)Distribuido bajo la Licencia GNU. Consulte LICENSE para más información.