
Kit Cobalt Strike para Movimento Lateral
Movekit é uma extensão do movimento lateral embutido do Cobalt Strike, utilizando a função execute_assembly com os assemblies .NET SharpMove e SharpRDP. O script aggressor lida com a criação do payload lendo os arquivos de template para um tipo de execução específico.
IMPORTANTE: Para usar o script, o usuário só precisa carregar o script aggressor MoveKit.cna, que carregará todos os outros scripts necessários. Além disso, dependendo das ações tomadas, os assemblies SharpMove e SharpRDP precisarão ser compilados e colocados no diretório Assemblies. Finalmente, algumas das movimentações de arquivos exigem compilação dinâmica, que requer o Mono.
Ao carregar o script aggressor, um seletor será carregado na menubar chamado Move. Há várias seleções que o usuário pode escolher. Primeiro, os usuários podem selecionar executar um comando em um sistema remoto através de WMI, DCOM, Task Scheduler, RDP ou SCM. Segundo, há o mecanismo de execução Command que usa download cradles para buscar e executar os arquivos. Terceiro, o método File coloca um arquivo no sistema e o executa. Há Write File Only que não faz nenhuma execução, apenas move dados. Finalmente, há uma configuração Default para tornar o uso da GUI mais rápido e usado com comandos beacon. As configurações padrão são usadas para qualquer coisa que possa aceitar um padrão.
Para usar os comandos beacon, ele lerá as configurações padrão e usará alguns argumentos de linha de comando. Um exemplo de comando beacon:
<exec-type> <target> <listener> <filename>
move-msbuild 192.168.1.1 http move.csproj
Além disso, o comando beacon customizado pré-construído é um pouco diferente. Exemplo de comando:
move-pre-custom-file <target> <local-file> <remote-filename>
move-pre-custom-file computer001.local /root/payload.exe legit.exe
O campo location é a parte mais complicada do projeto. Ao selecionar WMI para movimento de arquivos, location será usado; se SMB for selecionado, ele não será usado (portanto, pode ser deixado vazio). Location aceita três valores diferentes. Primeiro, se location for uma URL, quando o payload for criado, ele será hospedado pelo servidor web do Cobalt Strike. O host beacon a partir do qual o assembly será executado fará uma requisição web à URL e obterá o arquivo, que será usado em um event sub no host alvo para escrever o arquivo. Segundo, se location for um diretório Windows, ele fará upload do arquivo criado para o host beacon e o assembly o lerá do sistema de arquivos e armazenará no event sub para escrever no host remoto. Finalmente, se o campo location for um caminho linux ou a palavra local, então ele compilará dinamicamente o payload no assembly que está sendo executado. No entanto, se o arquivo estiver acima do limite de tamanho de 1MB, ele mostrará um erro.
Para todos os métodos de arquivo, o payload será criado através do script aggressor. No entanto, se um payload já estiver criado, os usuários podem selecionar a opção Custom (Prebuilt) para movê-lo e executá-lo.
O kit contém diferentes técnicas de movimento de arquivos, gatilhos de execução e tipos de payload.
Movimento de arquivo é considerado o método usado para levar um arquivo a um host remoto. Tipos de movimento de arquivo:
Gatilho de comando é considerado o método usado para executar um comando específico em um host remoto. Tipos de gatilho de comando:
Execução apenas de shellcode:
Sequestros:
Para substituir um template, você deve atender a dois requisitos. Primeiro, o template deve ser nomeado com a técnica (exemplo: msbuild.csproj). Segundo, o código-fonte deve conter a string $$PAYLOAD$$ onde o shellcode codificado em base64 será inserido e ser capaz de converter uma string base64 em um array de bytes. Exemplo para C#:
string strSC = "$$PAYLOAD$$";
byte[] sc = Convert.FromBase64String(strSC);
Uma alteração foi adicionada que permite que os padrões atualizem a 'string Find and Replace' e os formatos de shellcode no 'Update Defaults dialog'. Por padrão, são $$PAYLOAD$$ e base64.
execute-assembly do Cobalt Strike, então injetará em um processo sacrificial como outros jobs pós-exFile ou CommandAlguns dos códigos, templates ou inspiração vêm de outras pessoas e projetos
Provavelmente há bugs em algum lugar, eles tendem a aparecer de vez em quando. Apenas reporte-os que eu os corrigirei