Alan Framework
Alan Framework é um framework de pós-exploração útil durante atividades de red-team.
Se você achar minha ferramenta útil, por favor considere me patrocinar.
⚠⚠⚠ Aviso ⚠⚠⚠
A criação deste tipo de software sempre causou controvérsias. Se você está se perguntando por que decidi criar esta ferramenta, é porque estou convencido de que a melhor experiência de aprendizado é implementar o que você aprendeu. Durante o processo de engenharia reversa, muitos pequenos detalhes são ignorados. Pouco a pouco, esses detalhes impedem o pesquisador de ter uma visão completa do que está acontecendo. Finalmente, sou programador em primeiro lugar e adoro desenvolver esse tipo de programa 😄
Download
Baixar Alan C2 Framework
Características Notáveis
- Você pode executar sua ferramenta preferida diretamente na memória
- Execução de scripts JavaScript (na memória sem dependência de terceiros)
- Proxy SOCKS5 totalmente compatível
- Tipos de agente suportados: Powershell (x86/x64), DLL (x86/x64), Executável (x86/x64), Shellcode (x86/x64)
- Server.exe pode ser executado no Linux (via dotnet core)
- A comunicação de rede é totalmente criptografada com uma chave de sessão não recuperável a partir do binário do agente ou de um dump de tráfego
- Comunicação realizada via HTTP/HTTPS
- Nenhuma dependência externa ou bibliotecas precisam ser instaladas
- Um shell de comando poderoso
- A configuração do agente pode ser atualizada em tempo real (você também pode alterar porta e protocolo)
Documentação:
Postagens no blog
Para mais informações sobre seu uso, por favor leia a documentação.
Compilar o código fonte
Para compilar o Alan, as seguintes ações devem ser realizadas:
- Certifique-se de que você instalou o cmake e que ele está no PATH (execute cmake --help para ver se funciona)
- Instale o Visual Studio 2022 (a edição Community é suficiente). Esses passos foram testados na versão VS 2022 17.3.1
- Certifique-se de que .NET Desktop Development, Desktop development with C++ e a linguagem F# estão instalados como parte do pacote do Visual Studio
- Instale as bibliotecas .NET executando: ./src/server/paket.exe install
- Abra o arquivo .src/server/ServerSln.sln no Visual Studio. Defina o projeto ServerBuilder como principal (clique direito -> Definir como Projeto de Inicialização)
- Execute o ServerBuilder que compilará tudo
- Se a compilação terminou com sucesso, o arquivo .zip do Alan estará localizado no diretório recém-criado Misc/out/release
Vídeos:
Vídeos de demonstração
Changelog
v7.0.514.10 - 15/05/2022
- Implementado o comando
proxy para pivoting
- Os comandos
info e info++ exibem se o agente está usando um proxy
- Corrigido bug na comunicação de rede (Issue 2)
- Corrigido erro no carregador PE quando funções são importadas por ordinal
- Corrigido módulo JS que causava liberação de memória antecipada
- Corrigido erro no comando
run que fazia a opção & não funcionar
- As mensagens de log agora são salvas no arquivo
alan.log
- Toda a saída gerada e entrada do usuário é registrada em um arquivo de evidência dentro da pasta
evidences
- Adicionada informação de ID da máquina ao comando
info
- Adicionado tipo de pacote
Vanilla para criação de agente. Isso permite uma melhor integração de packer personalizado.
v6.0.511.28 24/02/2022
- Carregadores PE x86/x64 modificados para atualizar o campo PEB->Ldr. Isso permite que o sistema chame DLL_PROCESS_DETACH na DLL injetada.
- Aumentado o tamanho máximo de resposta para 1GB. Isso corrige o download de arquivos grandes.
- Adicionada data de expiração do agente à configuração.
- O comando
run foi estendido para suportar a execução de arquivos Javascript.
- O comando
info++ agora mostra o rótulo do volume e o tipo do sistema de arquivos.
v5.0.509.20 - 13/12/2021
- Implementado o comando
run
- Implementado o comando
kill
- Implementado o comando
exec
- Removida a mensagem
inject já que pode ser alcançada com o comando run em segundo plano
- Criado stager e carregador PE para tornar o agente mais furtivo. Cada arquivo de agente gerado tem um hash diferente
- Melhorada a injeção de código para contornar a Mitigação de Política de Código Dinâmico
- Agora é possível especificar o nome do arquivo do agente a ser criado durante o wizard
- Corrigido erro nos comandos
upload e download
- Corrigido erro na criação do shell. O token do processo do shell de comando não tinha o mesmo nível de integridade do agente
- Removida função exportada do artefato DLL do agente
- Adicionado diretório de trabalho atual ao comando
info
- Estendido o comando
shell para executar um único comando
v4.0.0 - 26/09/2021
- Adicionado o comando
inject. Este comando permite ao operador injetar código em um processo remoto
- Adicionado comando
sleep realizado em pequenos intervalos de 400 msec cada.
- Introduzido conceito de Jitter no
sleep
- Portado agente para x64 (incluído carregador PE32+)
- Corrigidos erros no carregador PE x86
- O executor do agente .NET agora é executado de forma mais furtiva para evitar detecção
- Agora é possível especificar um servidor Web personalizado na resposta do listener HTTP/S
- Removido comando
listeners por ser supérfluo
- Melhorado o comando
info com mais informações
- Mensagens de erro são mais explicativas
- Adicionada informação sobre o tipo de token do processo (elevado ou não)
- Adicionada informação sobre os privilégios do token do processo
- Adicionada informação sobre os grupos do token do processo
v3.0.0 - 15/05/2021
- Renomeado comando
quit do shell do agente para exit
- Implementada migração do agente via comando
migrate
- Corrigido erro na obtenção da versão do SO
- Adicionado DLL como formato de agente no wizard de criação.
- Implementado comando
ps para listar os processos em execução
- Implementado comando
download para baixar localmente um arquivo ou um diretório inteiro
- Implementado comando
upload para enviar arquivos para o host comprometido
- Implementado
SuccessRequest como opção de resposta do servidor HTTP para personalizar a resposta do listener http/s
- Implementado
ErrorRequest para personalizar a resposta do listener http/s para requisições ruins
- Implementado
prepend e append como opção de requisição do servidor HTTP para especificar no perfil do agente
v2.0.500.23 - 20/03/2021
- Implementado comando
detach do agente para sair temporariamente de um agente conectado
- Implementado comando
detach do shell para sair temporariamente de um shell de comando
- Implementado comando
listeners para listar os listeners disponíveis
- Implementado listener HTTPS para se comunicar com o agente via TLS
- Implementado comando
get-config para baixar a configuração atual do agente
- Implementado comando
update para atualizar a configuração do agente
- Windows7 agora é suportado
v1.0.0 - 22/02/2021