
Ferramenta de Ataque para Gerenciamento de Código Fonte
Source Code Management Attack Toolkit - SCMKit é um kit de ferramentas que pode ser usado para atacar sistemas SCM. O SCMKit permite ao usuário especificar o sistema SCM e o módulo de ataque a ser usado, além de especificar credenciais válidas (nome de usuário/senha ou chave de API) para o respectivo sistema SCM. Atualmente, os sistemas SCM suportados pelo SCMKit são GitHub Enterprise, GitLab Enterprise e Bitbucket Server. Os módulos de ataque suportados incluem reconhecimento, escalonamento de privilégios e persistência. O SCMKit foi construído de forma modular, para que novos módulos e sistemas SCM possam ser adicionados no futuro pela comunidade de segurança da informação.
As seguintes bibliotecas de terceiros são usadas neste projeto.
| Biblioteca | URL | Licença |
|---|---|---|
| Octokit | https://github.com/octokit/octokit.net | MIT License |
| Fody | https://github.com/Fody/Fody | MIT License |
| GitLabApiClient | https://github.com/nmklotas/GitLabApiClient | MIT License |
| Newtonsoft.Json | https://github.com/JamesNK/Newtonsoft.Json | MIT License |
Siga as etapas abaixo para configurar o Visual Studio e compilar o projeto você mesmo. Isso requer uma biblioteca .NET que pode ser instalada a partir do gerenciador de pacotes NuGet.
https://api.nuget.org/v3/index.jsonInstall-Package Costura.Fody -Version 3.3.3Install-Package OctokitInstall-Package GitLabApiClientInstall-Package Newtonsoft.JsonA tabela abaixo mostra onde cada módulo é suportado
| Cenário de Ataque | Módulo | Requer Admin? | GitHub Enterprise | GitLab Enterprise | Bitbucket Server |
|---|---|---|---|---|---|
| Reconhecimento | listrepo | Não | X | X | X |
| Reconhecimento | searchrepo | Não | X | X | X |
| Reconhecimento | searchcode | Não | X | X | X |
| Reconhecimento | searchfile | Não | X | X | X |
| Reconhecimento | listsnippet | Não | X | ||
| Reconhecimento | listrunner | Não | X | ||
| Reconhecimento | listgist | Não | X | ||
| Reconhecimento | listorg | Não | X | ||
| Reconhecimento | privs | Não | X | X | |
| Reconhecimento | protection | Não | X | ||
| Persistência | listsshkey | Não | X | X | X |
| Persistência | removesshkey | Não | X | X | X |
| Persistência | createsshkey | Não | X | X | X |
| Persistência | listpat | Não | X | X | |
| Persistência | removepat | Não | X | X | |
| Persistência | createpat | Sim (apenas GitLab Enterprise) | X | X | |
| Escalonamento de Privilégios | addadmin | Sim | X | X | X |
| Escalonamento de Privilégios | removeadmin | Sim | X | X | X |
| Reconhecimento | adminstats | Sim | X |
Descobrir repositórios em uso em um sistema SCM específico
Forneça o módulo listrepo, juntamente com qualquer informação de autenticação relevante e URL. Isso exibirá o nome do repositório e a URL.
Isso listará todos os repositórios que um usuário pode ver.
SCMKit.exe -s github -m listrepo -c userName:password -u https://github.something.local
SCMKit.exe -s github -m listrepo -c apiKey -u https://github.something.local
Isso listará todos os repositórios que um usuário pode ver.
SCMKit.exe -s gitlab -m listrepo -c userName:password -u https://gitlab.something.local
SCMKit.exe -s gitlab -m listrepo -c apiKey -u https://gitlab.something.local
Isso listará todos os repositórios que um usuário pode ver.
SCMKit.exe -s bitbucket -m listrepo -c userName:password -u https://bitbucket.something.local
SCMKit.exe -s bitbucket -m listrepo -c apiKey -u https://bitbucket.something.local
C:>SCMKit.exe -s gitlab -m listrepo -c username:password -u https://gitlab.hogwarts.local
================================================== Module: listrepo System: gitlab Auth Type: Username/Password Options: Target URL: https://gitlab.hogwarts.local