
Инструментарий для атак на системы управления исходным кодом
Source Code Management Attack Toolkit — это набор инструментов для атаки на системы управления исходным кодом (SCM). SCMKit позволяет пользователю указать систему SCM и используемый модуль атаки, а также действительные учётные данные (имя пользователя/пароль или API-ключ) для соответствующей системы SCM. В настоящее время SCMKit поддерживает такие системы SCM, как GitHub Enterprise, GitLab Enterprise и Bitbucket Server. Поддерживаемые модули атаки включают разведку, повышение привилегий и закрепление. SCMKit построен по модульному принципу, чтобы в будущем сообщество специалистов по информационной безопасности могло добавлять новые модули и системы SCM.
В этом проекте используются следующие сторонние библиотеки.
Выполните следующие действия для настройки 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В таблице ниже показано, в каких системах поддерживается каждый модуль
Обнаружение репозиториев, используемых в конкретной системе 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
Name | Visibility | URL
MaraudersMap | Private | https://gitlab.hogwarts.local/hpotter/maraudersmap
testingStuff | Internal | https://gitlab.hogwarts.local/adumbledore/testingstuff
Spellbook | Internal | https://gitlab.hogwarts.local/hpotter/spellbook
findShortestPathToGryffindorSword | Internal | https://gitlab.hogwarts.local/hpotter/findShortestPathToGryffindorSword
charms | Public | https://gitlab.hogwarts.local/hgranger/charms
Secret-Spells | Internal | https://gitlab.hogwarts.local/adumbledore/secret-spells
Monitoring | Internal | https://gitlab.hogwarts.local/gitlab-instance-10590c85/Monitoring
### Поиск репозиториев
#### Сценарий использования
> *Поиск репозиториев по имени в конкретной системе SCM*
#### Синтаксис
Укажите модуль `searchrepo` и критерии поиска в параметре командной строки `-o`, а также соответствующую информацию для аутентификации и URL. Результатом будет вывод имени и URL совпадающего репозитория.
##### GitHub Enterprise
Поиск репозиториев в GitHub — это поиск по "вхождению", где введённая строка ищет репозитории, имена которых содержат ваш поисковый запрос.
`SCMKit.exe -s github -m searchrepo -c userName:password -u https://github.something.local -o "some search term"`
`SCMKit.exe -s github -m searchrepo -c apikey -u https://github.something.local -o "some search term"`
##### GitLab Enterprise
Поиск репозиториев в GitLab — это поиск по "вхождению", где введённая строка ищет репозитории, имена которых содержат ваш поисковый запрос.
`SCMKit.exe -s gitlab -m searchrepo -c userName:password -u https://gitlab.something.local -o "some search term"`
`SCMKit.exe -s gitlab -m searchrepo -c apikey -u https://gitlab.something.local -o "some search term"`
##### Bitbucket Server
Поиск репозиториев в Bitbucket — это поиск по "начинается с", где введённая строка ищет репозитории, имена которых начинаются с вашего поискового запроса.
`SCMKit.exe -s bitbucket -m searchrepo -c userName:password -u https://bitbucket.something.local -o "some search term"`
`SCMKit.exe -s bitbucket -m searchrepo -c apikey -u https://bitbucket.something.local -o "some search term"`
#### Пример вывода```
C:\>SCMKit.exe -s gitlab -m searchrepo -c apiKey -u https://gitlab.hogwarts.local -o "spell"
==================================================
Module: searchrepo
System: gitlab
Auth Type: API Key
Options: spell
Target URL: https://gitlab.hogwarts.local
Timestamp: 1/14/2022 8:32:30 PM
==================================================
Name | Visibility | URL
----------------------------------------------------------------------------------------------------------
Spellbook | Internal | https://gitlab.hogwarts.local/hpotter/spellbook
Secret-Spells | Internal | https://gitlab.hogwarts.local/adumbledore/secret-spells
Поиск кода, содержащего заданное ключевое слово, в конкретной системе SCM
Укажите модуль searchcode и критерии поиска в параметре командной строки -o, а также соответствующую информацию для аутентификации и URL. Результатом будет вывод URL соответствующего файла кода и строки кода, в которой найдено совпадение.
Поиск кода в GitHub — это поиск "содержит", где введённая строка будет искать код, содержащий ваш поисковый запрос в любой строке.
SCMKit.exe -s github -m searchcode -c userName:password -u https://github.something.local -o "some search term"
SCMKit.exe -s github -m searchcode -c apikey -u https://github.something.local -o "some search term"
Поиск кода в GitLab — это поиск "содержит", где введённая строка будет искать код, содержащий ваш поисковый запрос в любой строке.
SCMKit.exe -s gitlab -m searchcode -c userName:password -u https://gitlab.something.local -o "some search term"
SCMKit.exe -s gitlab -m searchcode -c apikey -u https://gitlab.something.local -o "some search term"
Поиск кода в Bitbucket — это поиск "содержит", где введённая строка будет искать код, содержащий ваш поисковый запрос в любой строке.
SCMKit.exe -s bitbucket -m searchcode -c userName:password -u https://bitbucket.something.local -o "some search term"
SCMKit.exe -s bitbucket -m searchcode -c apikey -u https://bitbucket.something.local -o "some search term"
C:>SCMKit.exe -s gitlab -m searchcode -c username:password -u https://gitlab.hogwarts.local -o "api_key"
================================================== Module: searchcode System: gitlab Auth Type: Username/Password Options: api_key Target URL: https://gitlab.hogwarts.local
[>] URL: https://gitlab.hogwarts.local/adumbledore/secret-spells/stuff.txt |_ API_KEY=abc123
Total number of items matching code search: 1
### Поиск файлов
#### Вариант использования
> *Поиск файлов в репозиториях, содержащих заданное ключевое слово в имени файла в определенной системе SCM*
#### Синтаксис
Укажите модуль `searchfile` и критерии поиска в параметре командной строки `-o`, а также соответствующую информацию для аутентификации и URL. Это выведет URL соответствующего файла в его репозитории.
##### GitHub Enterprise
Поиск файлов GitLab — это поиск по вхождению, при котором введенная строка ищет файлы, содержащие ваш поисковый запрос в имени файла.
`SCMKit.exe -s github -m searchfile -c userName:password -u https://github.something.local -o "some search term"`
`SCMKit.exe -s github -m searchfile -c apikey -u https://github.something.local -o "some search term"`
##### GitLab Enterprise
Поиск файлов GitLab — это поиск по вхождению, при котором введенная строка ищет файлы, содержащие ваш поисковый запрос в имени файла.
`SCMKit.exe -s gitlab -m searchfile -c userName:password -u https://gitlab.something.local -o "some search term"`
`SCMKit.exe -s gitlab -m searchfile -c apikey -u https://gitlab.something.local -o "some search term"`
##### Bitbucket Server
Поиск файлов Bitbucket — это поиск по вхождению, при котором введенная строка ищет файлы, содержащие ваш поисковый запрос в имени файла.
`SCMKit.exe -s bitbucket -m searchfile -c userName:password -u https://bitbucket.something.local -o "some search term"`
`SCMKit.exe -s bitbucket -m searchfile -c apikey -u https://bitbucket.something.local -o "some search term"`
#### Пример вывода```
C:\source\SCMKit\SCMKit\bin\Release>SCMKit.exe -s bitbucket -m searchfile -c apikey -u http://bitbucket.hogwarts.local:7990 -o jenkinsfile
==================================================
Module: searchfile
System: bitbucket
Auth Type: API Key
Options: jenkinsfile
Target URL: http://bitbucket.hogwarts.local:7990
Timestamp: 1/14/2022 10:17:59 PM
==================================================
[>] REPO: http://bitbucket.hogwarts.local:7990/scm/~HPOTTER/hpotter
[>] FILE: Jenkinsfile
[>] REPO: http://bitbucket.hogwarts.local:7990/scm/STUD/cred-decryption
[>] FILE: subDir/Jenkinsfile
Total matching results: 2
Список сниппетов, принадлежащих текущему пользователю в GitLab
Укажите модуль listsnippet, а также соответствующие данные аутентификации и URL.
SCMKit.exe -s gitlab -m listsnippet -c userName:password -u https://gitlab.something.local
SCMKit.exe -s gitlab -m listsnippet -c apikey -u https://gitlab.something.local
C:>SCMKit.exe -s gitlab -m listsnippet -c username:password -u https://gitlab.hogwarts.local
================================================== Module: listsnippet System: gitlab Auth Type: Username/Password Options: Target URL: https://gitlab.hogwarts.local
Title | Raw URL
spell-script | https://gitlab.hogwarts.local/-/snippets/2/raw
### Список раннеров
#### Вариант использования
> *Перечислить все раннеры GitLab, доступные текущему пользователю в GitLab*
#### Синтаксис
Укажите модуль `listrunner`, а также соответствующую информацию для аутентификации и URL. Если пользователь является администратором, вы сможете перечислить все раннеры в экземпляре GitLab Enterprise, включая общие и групповые раннеры.
##### GitLab Enterprise
`SCMKit.exe -s gitlab -m listrunner -c userName:password -u https://gitlab.something.local`
`SCMKit.exe -s gitlab -m listrunner -c apikey -u https://gitlab.something.local`
#### Пример вывода```
C:\>SCMKit.exe -s gitlab -m listrunner -c username:password -u https://gitlab.hogwarts.local
==================================================
Module: listrunner
System: gitlab
Auth Type: Username/Password
Options:
Target URL: https://gitlab.hogwarts.local
Timestamp: 1/25/2022 11:40:08 AM
==================================================
ID | Name | Repo Assigned
---------------------------------------------------------------------------------
2 | gitlab-runner | https://gitlab.hogwarts.local/hpotter/spellbook.git
3 | gitlab-runner | https://gitlab.hogwarts.local/hpotter/maraudersmap.git
Список gist'ов, принадлежащих текущему пользователю в GitHub
Укажите модуль listgist, а также соответствующие данные аутентификации и URL.
SCMKit.exe -s github -m listgist -c userName:password -u https://github.something.local
SCMKit.exe -s github -m listgist -c apikey -u https://github.something.local
C:>SCMKit.exe -s github -m listgist -c username:password -u https://github-enterprise.hogwarts.local
================================================== Module: listgist System: github Auth Type: Username/Password Options: Target URL: https://github-enterprise.hogwarts.local
Description | Visibility | URL
Shell Script to Decode Spell | public | https://github-enterprise.hogwarts.local/gist/c11c6bb3f47fe67183d5bc9f048412a1
### Список организаций
#### Вариант использования
> *Вывести список всех организаций, в которых состоит текущий пользователь на GitHub*
#### Синтаксис
Укажите модуль `listorg`, а также соответствующие данные аутентификации и URL.
##### GitHub Enterprise
`SCMKit.exe -s github -m listorg -c userName:password -u https://github.something.local`
`SCMKit.exe -s github -m listorg -c apiKey -u https://github.something.local`
#### Пример вывода```
C:\>SCMKit.exe -s github -m listorg -c username:password -u https://github-enterprise.hogwarts.local
==================================================
Module: listorg
System: github
Auth Type: Username/Password
Options:
Target URL: https://github-enterprise.hogwarts.local
Timestamp: 1/14/2022 9:44:48 PM
==================================================
Name | URL
-----------------------------------------------------------------------------------
Hogwarts | https://github-enterprise.hogwarts.local/api/v3/orgs/Hogwarts/repos
Получить назначенные привилегии для токена доступа, используемого в конкретной системе SCM
Укажите модуль privs, а также ключ API и URL.
SCMKit.exe -s github -m privs -c apiKey -u https://github.something.local
SCMKit.exe -s gitlab -m privs -c apiKey -u https://gitlab.something.local
C:>SCMKit.exe -s gitlab -m privs -c apikey -u https://gitlab.hogwarts.local
================================================== Module: privs System: gitlab Auth Type: API Key Options: Target URL: https://gitlab.hogwarts.local
Token Name | Active? | Privilege | Description
hgranger-api-token | True | api | Read-write for the complete API, including all groups and projects, the Container Registry, and the Package Registry. hgranger-api-token | True | read_user | Read-only for endpoints under /users. Essentially, access to any of the GET requests in the Users API. hgranger-api-token | True | read_api | Read-only for the complete API, including all groups and projects, the Container Registry, and the Package Registry. hgranger-api-token | True | read_repository | Read-only (pull) for the repository through git clone. hgranger-api-token | True | write_repository | Read-write (pull, push) for the repository through git clone. Required for accessing Git repositories over HTTP when 2FA is enabled.
### Добавление администратора
#### Вариант использования
> *Повышение обычного пользователя до административной роли в конкретной системе SCM*
#### Синтаксис
Укажите модуль `addadmin`, а также соответствующие данные аутентификации и URL. Дополнительно укажите целевого пользователя, которому вы хотите назначить административную роль.
##### GitHub Enterprise
`SCMKit.exe -s github -m addadmin -c userName:password -u https://github.something.local -o targetUserName`
`SCMKit.exe -s github -m addadmin -c apikey -u https://github.something.local -o targetUserName`
##### GitLab Enterprise
`SCMKit.exe -s gitlab -m addadmin -c userName:password -u https://gitlab.something.local -o targetUserName`
`SCMKit.exe -s gitlab -m addadmin -c apikey -u https://gitlab.something.local -o targetUserName`
##### Bitbucket Server
Для выполнения действий, не связанных с репозиториями или проектами в Bitbucket, поддерживается только аутентификация по имени пользователя и паролю.
`SCMKit.exe -s bitbucket -m addadmin -c userName:password -u https://bitbucket.something.local -o targetUserName`
#### Пример вывода```
C:\>SCMKit.exe -s gitlab -m addadmin -c apikey -u https://gitlab.hogwarts.local -o hgranger
==================================================
Module: addadmin
System: gitlab
Auth Type: API Key
Options: hgranger
Target URL: https://gitlab.hogwarts.local
Timestamp: 1/14/2022 9:19:32 PM
==================================================
[+] SUCCESS: The hgranger user was successfully added to the admin role.
Понижение административного пользователя до роли обычного пользователя в определенной системе SCM
Укажите модуль removeadmin, а также соответствующие данные аутентификации и URL. Дополнительно укажите целевого пользователя, у которого вы хотите удалить административную роль.
SCMKit.exe -s github -m removeadmin -c userName:password -u https://github.something.local -o targetUserName
SCMKit.exe -s github -m removeadmin -c apikey -u https://github.something.local -o targetUserName
SCMKit.exe -s gitlab -m removeadmin -c userName:password -u https://gitlab.something.local -o targetUserName
SCMKit.exe -s gitlab -m removeadmin -c apikey -u https://gitlab.something.local -o targetUserName
Поддерживается только аутентификация по имени пользователя и паролю для выполнения действий, не связанных с репозиториями или проектами в Bitbucket.
SCMKit.exe -s bitbucket -m removeadmin -c userName:password -u https://bitbucket.something.local -o targetUserName
C:>SCMKit.exe -s gitlab -m removeadmin -c username:password -u https://gitlab.hogwarts.local -o hgranger
================================================== Module: removeadmin System: gitlab Auth Type: Username/Password Options: hgranger Target URL: https://gitlab.hogwarts.local
[+] SUCCESS: The hgranger user was successfully removed from the admin role.
### Создать токен доступа
#### Использование
> *Создать токен доступа для использования в конкретной SCM-системе*
#### Синтаксис
Укажите модуль `createpat`, а также соответствующую информацию аутентификации и URL. Дополнительно укажите целевого пользователя, для которого вы хотите создать токен доступа.
##### GitLab Enterprise
Эту операцию может выполнить только администратор. Вы укажете имя пользователя, для которого хотите создать PAT.
`SCMKit.exe -s gitlab -m createpat -c userName:password -u https://gitlab.something.local -o targetUserName`
`SCMKit.exe -s gitlab -m createpat -c apikey -u https://gitlab.something.local -o targetUserName`
##### Bitbucket Server
Создаёт PAT для аутентифицирующегося текущего пользователя. В Bitbucket нельзя создать PAT для другого пользователя, даже будучи администратором. Поддерживается только аутентификация по имени пользователя и паролю для выполнения действий, не связанных с репозиториями или проектами в Bitbucket. Запомните ID PAT, который отображается после создания. Он понадобится вам, когда потребуется удалить PAT в будущем.
`SCMKit.exe -s bitbucket -m createpat -c userName:password -u https://bitbucket.something.local `
#### Пример вывода```
C:\>SCMKit.exe -s gitlab -m createpat -c username:password -u https://gitlab.hogwarts.local -o hgranger
==================================================
Module: createpat
System: gitlab
Auth Type: Username/Password
Options: hgranger
Target URL: https://gitlab.hogwarts.local
Timestamp: 1/20/2022 1:51:23 PM
==================================================
ID | Name | Token
-----------------------------------------------------
59 | SCMKIT-AaCND | R3ySx_8HUn6UQ_6onETx
[+] SUCCESS: The hgranger user personal access token was successfully added.
Список токенов доступа для пользователя в определённой системе SCM
Укажите модуль listpat, а также соответствующую информацию для аутентификации и URL.
Требует прав администратора только если необходимо вывести PAT другого пользователя. Обычный пользователь может вывести свои собственные PAT.
SCMKit.exe -s gitlab -m listpat -c userName:password -u https://gitlab.something.local -o targetUser
SCMKit.exe -s gitlab -m listpat -c apikey -u https://gitlab.something.local -o targetUser
Список токенов доступа для текущего пользователя. Поддерживается только аутентификация по имени пользователя и паролю для выполнения действий, не связанных с репозиториями или проектами в Bitbucket.
SCMKit.exe -s bitbucket -m listpat -c userName:password -u https://bitbucket.something.local
Список токенов доступа для другого пользователя (требуются права администратора). Поддерживается только аутентификация по имени пользователя и паролю для выполнения действий, не связанных с репозиториями или проектами в Bitbucket.
SCMKit.exe -s bitbucket -m listpat -c userName:password -u https://bitbucket.something.local -o targetUser
C:>SCMKit.exe -s gitlab -m listpat -c username:password -u https://gitlab.hogwarts.local -o hgranger
================================================== Module: listpat System: gitlab Auth Type: Username/Password Options: hgranger Target URL: https://gitlab.hogwarts.local
59 | SCMKIT-AaCND | True | api, read_repository, write_repository
### Удалить токен доступа
#### Вариант использования
> *Удалить токен доступа для пользователя в определенной системе SCM*
#### Синтаксис
Укажите модуль `removepat`, а также соответствующие данные аутентификации и URL. Кроме того, укажите ID целевого PAT пользователя, для которого вы хотите удалить токен доступа.
##### GitLab Enterprise
Требует прав администратора только если вы хотите удалить PAT другого пользователя. Обычный пользователь может удалить свой собственный PAT. Вы должны указать ID PAT для удаления. Этот ID отображался при создании PAT, а также при выводе списка PAT.
`SCMKit.exe -s gitlab -m removepat -c userName:password -u https://gitlab.something.local -o patID`
`SCMKit.exe -s gitlab -m removepat -c apikey -u https://gitlab.something.local -o patID`
##### Bitbucket Server
Поддерживается только аутентификация по имени пользователя/паролю для выполнения действий, не связанных с репозиториями или проектами в Bitbucket. Вы должны указать ID PAT для удаления. Этот ID отображался при создании PAT.
`SCMKit.exe -s bitbucket -m removepat -c userName:password -u https://bitbucket.something.local -o patID`
#### Пример вывода```
C:\>SCMKit.exe -s gitlab -m removepat -c apikey -u https://gitlab.hogwarts.local -o 58
==================================================
Module: removepat
System: gitlab
Auth Type: API Key
Options: 59
Target URL: https://gitlab.hogwarts.local
Timestamp: 1/20/2022 1:56:47 PM
==================================================
[*] INFO: Revoking personal access token of ID: 59
[+] SUCCESS: The personal access token of ID 59 was successfully revoked.
Создание SSH-ключа для использования в определённой системе управления исходным кодом (SCM)
Укажите модуль createsshkey, а также соответствующую информацию для аутентификации и URL.
Создаёт SSH-ключ для текущего аутентифицированного пользователя.
SCMKit.exe -s github -m createsshkey -c userName:password -u https://github.something.local -o "ssh public key"
SCMKit.exe -s github -m createsshkey -c apiToken -u https://github.something.local -o "ssh public key"
Создаёт SSH-ключ для текущего аутентифицированного пользователя. Запомните идентификатор SSH-ключа, который отобразится после создания. Он понадобится вам для удаления SSH-ключа в будущем.
SCMKit.exe -s gitlab -m createsshkey -c userName:password -u https://gitlab.something.local -o "ssh public key"
SCMKit.exe -s gitlab -m createsshkey -c apiToken -u https://gitlab.something.local -o "ssh public key"
Создаёт SSH-ключ для текущего аутентифицированного пользователя. В Bitbucket поддерживается только аутентификация по имени пользователя и паролю для выполнения действий, не связанных с репозиториями или проектами. Запомните идентификатор SSH-ключа, который отобразится после создания. Он понадобится вам для удаления SSH-ключа в будущем.
SCMKit.exe -s bitbucket -m createsshkey -c userName:password -u https://bitbucket.something.local -o "ssh public key"
C:>SCMKit.exe -s bitbucket -m createsshkey -c username:password -u https://bitbucket.hogwarts.local -o "ssh-rsa..."
================================================== Module: createsshkey System: bitbucket Auth Type: Username/Password Options: ssh-rsa ... Target URL: http://bitbucket.hogwarts.local:7990
16
[+] SUCCESS: The hpotter user SSH key was successfully added.
### Список SSH-ключей
#### Вариант использования
> *Вывести список SSH-ключей для пользователя в определённой системе SCM*
#### Синтаксис
Укажите модуль `listsshkey`, а также соответствующую аутентификационную информацию и URL.
##### GitHub Enterprise
Вывести список SSH-ключей для текущего пользователя. Будут включены идентификаторы SSH-ключей, которые необходимы для удаления ключа.
`SCMKit.exe -s github -m listsshkey -c userName:password -u https://github.something.local`
`SCMKit.exe -s github -m listsshkey -c apiToken -u https://github.something.local`
##### GitLab Enterprise
Вывести список SSH-ключей для текущего пользователя.
`SCMKit.exe -s gitlab -m listsshkey -c userName:password -u https://gitlab.something.local`
`SCMKit.exe -s gitlab -m listsshkey -c apiToken -u https://gitlab.something.local`
##### Bitbucket Server
Вывести список SSH-ключей для текущего пользователя. Для выполнения действий, не связанных с репозиториями или проектами в Bitbucket, поддерживается только аутентификация по имени пользователя и паролю.
`SCMKit.exe -s bitbucket -m listsshkey -c userName:password -u https://bitbucket.something.local`
#### Пример вывода```
C:\>SCMKit.exe -s gitlab -m listsshkey -u http://gitlab.hogwarts.local -c apiToken
==================================================
Module: listsshkey
System: gitlab
Auth Type: API Key
Options:
Target URL: https://gitlab.hogwarts.local
Timestamp: 2/7/2022 4:09:40 PM
==================================================
SSH Key ID | SSH Key Value | Title
---------------------------------------------------------------
9 | .....p50edigBAF4lipVZkAM= | SCMKIT-RLzie
10 | .....vGJLPGHiTwIxW9i+xAs= | SCMKIT-muFGU
Удаление SSH-ключа для пользователя в определенной системе SCM
Укажите модуль removesshkey вместе с соответствующими данными аутентификации и URL. Также укажите идентификатор SSH-ключа целевого пользователя для удаления.
Вы должны указать идентификатор SSH-ключа для удаления. Этот идентификатор отображается при выводе списка SSH-ключей.
SCMKit.exe -s github -m removesshkey -c userName:password -u https://github.something.local -o sshKeyID
SCMKit.exe -s github -m removesshkey -c apiToken -u https://github.something.local -o sshKeyID
Вы должны указать идентификатор SSH-ключа для удаления. Этот идентификатор отображается при создании SSH-ключа, а также при выводе списка SSH-ключей.
SCMKit.exe -s gitlab -m removesshkey -c userName:password -u https://gitlab.something.local -o sshKeyID
SCMKit.exe -s gitlab -m removesshkey -c apiToken -u https://gitlab.something.local -o sshKeyID
Для выполнения действий, не связанных с репозиториями или проектами в Bitbucket, поддерживается только аутентификация по имени пользователя/паролю. Вы должны указать идентификатор SSH-ключа для удаления. Этот идентификатор отображается при создании SSH-ключа, а также при выводе списка SSH-ключей.
SCMKit.exe -s bitbucket -m removesshkey -c userName:password -u https://bitbucket.something.local -o sshKeyID
C:>SCMKit.exe -s bitbucket -m removesshkey -u http://bitbucket.hogwarts.local:7990 -c username:password -o 16
================================================== Module: removesshkey System: bitbucket Auth Type: Username/Password Options: 16 Target URL: http://bitbucket.hogwarts.local:7990
[+] SUCCESS: The SSH key of ID 16 was successfully revoked.
### Список статистики администратора
#### Сценарий использования
> *Получение статистики администратора в GitHub Enterprise*
#### Синтаксис
Укажите модуль `adminstats`, а также соответствующую информацию аутентификации и URL. Для использования этого модуля требуется доступ администратора сайта в GitHub Enterprise.
##### GitHub Enterprise
`SCMKit.exe -s github -m adminstats -c userName:password -u https://github.something.local`
`SCMKit.exe -s github -m adminstats -c apikey -u https://github.something.local`
#### Пример вывода```
C:\>SCMKit.exe -s github -m adminstats -c username:password -u https://github-enterprise.hogwarts.local
==================================================
Module: adminstats
System: github
Auth Type: Username/Password
Options:
Target URL: https://github-enterprise.hogwarts.local
Timestamp: 1/14/2022 9:45:50 PM
==================================================
Admin Users | Suspended Users | Total Users
------------------------------------------------------
1 | 0 | 5
Total Repos | Total Wikis
-----------------------------------
4 | 0
Total Orgs | Total Team Members | Total Teams
----------------------------------------------------------
1 | 0 | 0
Private Gists | Public Gists
-----------------------------------
0 | 1
Просмотр защиты ветвей в GitHub Enterprise
Укажите модуль protection, а также любую соответствующую информацию аутентификации и URL. При желании укажите строку в параметре options, чтобы вернуть совпадающие результаты, содержащиеся в именах репозиториев.
SCMKit.exe -s github -m protection -c userName:password -u https://github.something.local
SCMKit.exe -s github -m protection -c apikey -u https://github.something.local
SCMKit.exe -s github -m protection -c apikey -u https://github.something.local -o reponame
C:>.\SCMKit.exe -u http://github.hogwarts.local -s github -c apiToken -m protection -o public-r
================================================== Module: protection System: github Auth Type: API Key Options: public-r Target URL: http://github.hogwarts.local
Repo | Branch | Protection
public-repo | dev | Protected: True
Status checks must pass before merge:
Branch must be up-to-date before merge: True
Owner review required before merge: True
Approvals required before merge: 2
Protections apply to repo admins: True
public-repo | main | Protected: False
## Обнаружение
Ниже приведены статические сигнатуры для конкретного использования этого инструмента в его состоянии по умолчанию:
* Project GUID - `{266C644A-69B1-426B-A47C-1CF32B211F80}`
* См. [SCMKit Yara Rule](https://github.com/h4wkst3r/scmkit/blob/main/Detections/SCMKit.yar) в этом репозитории.
* Строка User-Agent - `SCMKIT-5dc493ada400c79dd318abbe770dac7c`
* См. [SCMKit Snort Rule](https://github.com/h4wkst3r/scmkit/blob/main/Detections/SCMKit.rules) в этом репозитории.
* Имена токенов доступа и SSH-ключей - Токены доступа и SSH-ключи, созданные с помощью инструмента, получают префикс `SCMKIT-` в имени.
Руководство по обнаружению методов, используемых инструментом, см. в [блог-посте](https://securityintelligence.com/posts/abusing-source-code-management-systems) X-Force Red.
## Ссылки
* Документация API Bitbucket
* https://developer.atlassian.com/server/bitbucket/reference/rest-api/
* Документация Octokit
* https://octokitnet.readthedocs.io/en/latest/
* https://github.com/octokit/octokit.net
* Документация API GitHub
* https://docs.github.com/en/rest/overview
* Документация API GitLab
* https://docs.gitlab.com/ee/api/api_resources.html
* Документация пакета Nuget GitLabApiClient
* https://github.com/nmklotas/GitLabApiClient
| Библиотека | URL | Лицензия |
|---|
| 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 |
| Сценарий атаки | Модуль | Требуется ли администратор? | 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 |