
Um framework C2 ciente de proxy usado para auxiliar red teamers com pós-exploração e movimento lateral.

O PoshC2 é um framework C2 consciente de proxies usado para auxiliar testadores de penetração em red teaming, pós-exploração e movimento lateral.
O PoshC2 é escrito principalmente em Python3 e segue um formato modular para permitir que os utilizadores adicionem os seus próprios módulos e ferramentas, permitindo um framework C2 extensível e flexível. De fábrica, o PoshC2 vem com implantes em PowerShell/C# e Python2/Python3, com payloads escritos em PowerShell v2 e v4, código fonte em C++ e C#, uma variedade de executáveis, DLLs e shellcode bruto, além de um payload em Python2/Python3. Estes permitem funcionalidade C2 numa vasta gama de dispositivos e sistemas operativos, incluindo Windows, *nix e OSX.
Outras características notáveis do PoshC2 incluem:
Mantemos a documentação do PoshC2 em https://poshc2.readthedocs.io/en/latest/
Encontre-nos no #Slack - poshc2.slack.com (para solicitar um convite, envie um e-mail para [email protected])
Pode instalar o PoshC2 diretamente ou usar as imagens Docker; as instruções para ambos estão abaixo.
É fornecido um script de instalação para instalar o PoshC2:
*** Script de instalação do PoshC2 ***
Uso:
./Install.sh -b <ramo git> -p <Diretório para clonar o PoshC2>
Os padrões são o ramo master para /opt/PoshC2
São necessários privilégios elevados, pois o script de instalação realiza atualizações e instalações apt.
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install.sh | sudo bash
Alternativamente, o repositório pode ser clonado e o script de instalação executado manualmente.
sudo ./Install.sh
Pode definir manualmente o diretório de instalação do PoshC2 passando-o ao script Install.sh como argumento -p. O valor predefinido é /opt/PoshC2:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install.sh | sudo bash -s -- -p /root/PoshC2
Queremos manter o ramo master estável para garantir que os utilizadores possam confiar nele quando necessário e, por esta razão, as alterações podem frequentemente estar completas em termos de funcionalidades, mas ainda não presentes no master porque não foram testadas completamente e aprovadas.
Se quiser ver as funcionalidades futuras do PoshC2, pode consultar o ramo dev, ou qualquer ramo de funcionalidade individual derivado do dev.
Como as funcionalidades são testadas antes de serem fundidas no dev, este ramo deve continuar a ser relativamente estável e os operadores podem optar por usar este ramo ou um ramo de funcionalidade específico para o seu envolvimento.
No entanto, isto troca estabilidade por novas funcionalidades, por isso faça-o por sua conta e risco.
Para usar o dev ou um ramo de funcionalidade, passe o nome do ramo ao script Install.sh como argumento -b:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/dev/Install.sh | sudo bash -s -- -b dev
Note que o URL também inclui o nome do ramo (aqui dev em vez de master).
Também pode executar o PoshC2 usando Docker; isto permite uma execução mais estável e permite que o PoshC2 seja facilmente executado noutros sistemas operativos.
A instalação Docker não clona o PoshC2, pois são usadas as imagens PoshC2 no Docker Hub; portanto, apenas é realizada uma instalação mínima de algumas dependências e scripts.
Para começar, instale o Docker no anfitrião e depois adicione o diretório de projetos do PoshC2 ao Docker como um diretório partilhado, se necessário para o seu SO. Por predefinição, este é /var/poshc2 em *nix e /private/var/poshc2 em Mac.
Script de instalação:
*** Script de instalação do PoshC2 para Docker ***
Uso:
./Install-for-Docker.sh -b <ramo git>
O padrão é o ramo master
São necessários privilégios elevados, pois o script de instalação realiza instalações de scripts.
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install-for-Docker.sh | sudo bash
Para usar o ramo dev ou ramos de funcionalidade com Docker, faça curl do Install-for-Docker.sh no ramo apropriado e passe o nome do ramo como argumento:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/BRANCHNAME/Install-for-Docker.sh | sudo bash -s -- -b BRANCHNAME
No Windows, importe o módulo PowerShell PoshC2.psm1.
Import-Module -DisableNameChecking C:\PoshC2\resources\scripts\PoshC2.psm1
posh-project -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project" -Arg1 "-n" -Arg2 "newproject"
posh-config -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project"
posh-server -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project"
posh -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project" username
Criar um novo projeto:
posh-project -n <nome-do-projeto>
Os projetos podem ser alterados ou listados usando este script:
[*] Uso: posh-project -n <novo-nome-do-projeto>
[*] Uso: posh-project -s <projeto-para-mudar>
[*] Uso: posh-project -l (lista projetos)
[*] Uso: posh-project -d <projeto-para-eliminar>
[*] Uso: posh-project -c (mostra o projeto atual)
Editar a configuração do seu projeto:
posh-config
Iniciar o servidor PoshC2:
posh-server
Alternativamente, iniciá-lo como um serviço:
posh-service
Separadamente, execute o ImplantHandler para interagir com os implantes:
posh -u <nome-de-utilizador>
Consulte https://poshc2.readthedocs.io/en/latest/ para documentação completa sobre o PoshC2.
Se estiver a usar Docker, pode especificar a tag da imagem Docker a executar com a opção -t para posh-server e posh.
Ex.:
posh-server -t latest
Não é recomendado atualizar o PoshC2 durante um engagement. As alterações recebidas podem ser incompatíveis com um projeto existente e podem resultar em comportamento errático.
Ao usar uma versão clonada do git do PoshC2, pode atualizar a sua instalação do PoshC2 usando o seguinte comando:
*** Script de atualização do PoshC2 ***
Uso:
posh-update -b <ramo git>
O padrão é o ramo master
Pode usar uma versão antiga do PoshC2 referenciando a tag apropriada. Note que isto só funciona se tiver clonado o repositório. Pode listar as tags do repositório emitindo:
git tag --list
Se tiver um clone local do PoshC2, pode alterar a versão em uso enquanto estiver offline, simplesmente fazendo checkout da versão que pretende usar:
git reset --hard <nome da tag>
Por exemplo:
git reset --hard v4.8
No entanto, note que isto irá sobrescrever quaisquer alterações locais nos ficheiros, como alterações nos ficheiros de configuração, e poderá ter que re-executar o script de instalação para essa versão ou reconfigurar o ambiente adequadamente.
Este software deve ser usado apenas para atividades de teste autorizadas e não para uso malicioso.
Ao descarregar este software, está a aceitar os termos de uso e o contrato de licenciamento.