
Инструментарий для атак на системы управления исходным кодом
Source Code Management Attack Toolkit — SCMKit — это набор инструментов, который можно использовать для атаки на SCM-системы. SCMKit позволяет пользователю указать SCM-систему и модуль атаки, а также указать действительные учётные данные (имя пользователя/пароль или API-ключ) для соответствующей SCM-системы. В настоящее время SCMKit поддерживает следующие SCM-системы: GitHub Enterprise, GitLab Enterprise и Bitbucket Server. Поддерживаемые модули атак включают разведку, повышение привилегий и закрепление. SCMKit построен по модульному принципу, чтобы в будущем сообщество специалистов по информационной безопасности могло добавлять новые модули и SCM-системы.
В этом проекте используются следующие сторонние библиотеки.
| Библиотека | URL | Лицензия |
|---|---|---|
| Octokit | https://github.com/octokit/octokit.net | Лицензия MIT |
| Fody | https://github.com/Fody/Fody | Лицензия MIT |
| GitLabApiClient | https://github.com/nmklotas/GitLabApiClient | Лицензия MIT |
| Newtonsoft.Json | https://github.com/JamesNK/Newtonsoft.Json | Лицензия MIT |
Выполните следующие шаги для настройки Visual Studio, чтобы скомпилировать проект самостоятельно. Для этого требуется библиотека .NET, которую можно установить из диспетчера пакетов NuGet.
https://api.nuget.org/v3/index.jsonInstall-Package Costura.Fody -Version 3.3.3Install-Package OctokitInstall-Package GitLabApiClientInstall-Package Newtonsoft.JsonВ таблице ниже показано, в каких системах поддерживается каждый модуль
| Сценарий атаки | Модуль | Требуются права администратора? | GitHub Enterprise | GitLab Enterprise | Bitbucket Server |
|---|---|---|---|---|---|
| Разведка | listrepo | Нет | X | X | X |
| Разведка | searchrepo | Нет | X | X | X |
| Разведка | searchcode | Нет | X | X | X |
| Разведка | searchfile | Нет | X | X | X |
| Разведка | listsnippet | Нет | X | ||
| Разведка | listrunner | Нет | X | ||
| Разведка | listgist | Нет | X | ||
| Разведка | listorg | Нет | X | ||
| Разведка | privs | Нет | X | X | |
| Разведка | protection | Нет | X | ||
| Закрепление | listsshkey | Нет | X | X | X |
| Закрепление | removesshkey | Нет | X | X | X |
| Закрепление | createsshkey | Нет | X | X | X |
| Закрепление | listpat | Нет | X | X | |
| Закрепление | removepat | Нет | X | X | |
| Закрепление | createpat | Да (только GitLab Enterprise) | X | X | |
| Повышение привилегий | addadmin | Да | X | X | X |
| Повышение привилегий | removeadmin | Да | X | X | X |
| Разведка | adminstats | Да | X |
Обнаружение репозиториев, используемых в конкретной SCM-системе
Укажите модуль listrepo, а также соответствующие данные аутентификации и URL. В результате будут выведены имя репозитория и его URL.
Будут выведены все репозитории, которые видит пользователь.
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
Будут выведены все репозитории, которые видит пользователь.
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
Будут выведены все репозитории, которые видит пользователь.
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