
** DESCONTINUADO ** C2 framework que usa o Background Intelligent Transfer Service (BITS) como protocolo de comunicação e Direct Syscalls + Dinvoke para evasão de hooking em modo de usuário do EDR.
██╗ ██████╗ ██╗ ██████╗ ██╗████████╗███████╗
██║ ██╔═══██╗██║ ██╔══██╗██║╚══██╔══╝██╔════╝
██║ ██║ ██║██║ ██████╔╝██║ ██║ ███████╗
██║ ██║ ██║██║ ██╔══██╗██║ ██║ ╚════██║
███████╗╚██████╔╝███████╗██████╔╝██║ ██║ ███████║
╚══════╝ ╚═════╝ ╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚══════╝
O LOLBITS é um framework de C2 que utiliza o Background Intelligent Transfer Service (BITS) da Microsoft para estabelecer o canal de comunicação entre o host comprometido e o backend. O backend do C2 está oculto atrás de uma aplicação web flask aparentemente inofensiva e só é acessível quando as requisições HTTP recebidas pela aplicação contêm um cabeçalho de autenticação válido. Como esta ferramenta foi projetada para ser usada em ambientes altamente monitorados, os seguintes recursos foram implementados para evitar a detecção por EDR e AV:
Em relação à arquitetura, o LOLBITS é composto por 3 elementos principais:
Para impedir a inspeção de conteúdo por proxies, todo o conteúdo relevante enviado entre o agente e o servidor C2 é criptografado usando RC4 com uma chave secreta pré-compartilhada gerada aleatoriamente. Um diagrama de alto nível do comportamento da infraestrutura seria como mostrado na imagem a seguir:
Para evitar que a Equipe Azul possa reproduzir algumas das requisições antigas e descobrir a infraestrutura do backend C2, cada cabeçalho de autenticação é gerado aleatoriamente e é válido apenas para um único ciclo (um ciclo é composto por uma requisição POST seguida de uma requisição GET, nessa ordem). Cabeçalhos de autenticação antigos serão ignorados e o site inofensivo será exibido para essas requisições.
Algumas funcionalidades desta ferramenta foram implementadas reutilizando código de outros projetos ou graças ao esforço de vários pesquisadores de segurança cibernética. Abaixo listo alguns dos trabalhos e projetos externos que foram usados de uma forma ou de outra para melhorar esta ferramenta:
Para a infraestrutura C2, é necessário um Windows Server 2016 ou superior com Python 3.4+ e PowerShell 5.1+. O agente C# foi testado com sucesso no Windows Server 2012, Windows Server 2016, Windows Server 2019, Windows 7, Windows 8.1 e Windows 10. Para compilá-lo, é necessário:
git clone https://github.com/Kudaes/LOLBITS.git
Também instale os recursos do .NET Framework e do BITS para o IIS.
Execute o script setup.ps1 como administrador para implantar toda a infraestrutura e configurar o agente C#.
Compile o agente C#. A compilação gerará um .exe e uma dependência externa (Newtonsoft.Json.dll). Você pode gerar um único .exe usando ILMerge ou apenas enviar ambos os arquivos para o host comprometido. Para evitar a saída de DEBUG, certifique-se de compilar o projeto como Aplicação Windows.
Url em Program.cs para usar HTTPS em vez de HTTP, que é o comportamento padrão.Para obter a shell reversa, basta digitar python lawlbin.py em um cmd do servidor C2 e executar o agente C# no host comprometido.
Como este projeto nasce das cinzas de um projeto anterior e fracassado, algumas das funcionalidades antigas foram mantidas. O projeto antigo era uma shell onde todos os comandos disponíveis seriam executados exclusivamente usando Living of The Land Binaries. É daí que vem o LOL do LOLBITS, e é por isso que as seguintes funcionalidades são executadas exclusivamente usando LOLBINS (isso pode ajudar a contornar a AWS e alguns filtros de AV/EDR):
Embora essas funcionalidades possam ser interessantes em alguns ambientes (hmm, baixar arquivos remotos sem usar PowerShell? Eu gosto disso!), eu as mantive apenas para reutilizar parte do código antigo para o console C2. Abaixo está uma lista com algumas outras funcionalidades que tenho certeza que serão mais úteis em um contexto clássico de red team:
Para obter dicas de uso, basta digitar help ou <algumcomando> help.
Quaisquer contribuições serão muito apreciadas.
git checkout -b feature/AmazingFeature)git commit -m 'Adicionar alguma funcionalidade incrível')git push origin feature/AmazingFeature)Distribuído sob a Licença GNU. Veja LICENSE para mais informações.