
新发布Jul 27, 2026
ADOKit v1.4.2
模块化攻击工具包,利用 Azure DevOps REST API 进行侦察、权限提升和持久化,使用窃取的 Cookie 或 PAT。
ADOKit
描述
Azure DevOps Services 攻击工具包 - ADOKit 是一款可利用 Azure DevOps Services 的 REST API 对其进行攻击的工具包。用户可以为相应的 Azure DevOps Services 实例指定攻击模块,同时提供有效的凭据(API 密钥或窃取的身份验证 Cookie)。支持的攻击模块包括侦察、权限提升和持久化。ADOKit 采用模块化设计,便于信息安全社区日后添加新模块。
有关 ADOKit 所用技术的完整详情,请参阅 X-Force Red 白皮书。
Black Hat USA Arsenal 2024
本仓库的 BHUSA Arsenal 2024 文件夹中包含演示幻灯片和演示内容。
版本发布
- ADOKit 1.4.1 版本可在 Releases 中找到
目录
安装/构建
使用到的库
本项目使用了以下第三方库。
| 库 | URL | 许可证 |
|---|---|---|
| Fody | https://github.com/Fody/Fody | MIT 许可证 |
| Newtonsoft.Json | https://github.com/JamesNK/Newtonsoft.Json | MIT 许可证 |
预编译版本
- 使用 Releases 中的预编译二进制文件
自行构建
按照以下步骤设置 Visual Studio 以自行编译项目。需要从 NuGet 包管理器安装两个 .NET 库。
- 加载 Visual Studio 项目,转到“工具”-->“NuGet 包管理器”-->“包管理器设置”
- 转到“NuGet 包管理器”-->“包源”
- 添加一个包源,URL 为
https://api.nuget.org/v3/index.json - 安装 Costura.Fody NuGet 包。
Install-Package Costura.Fody -Version 3.3.3
- 安装 Newtonsoft.Json 包
Install-Package Newtonsoft.Json
- 现在您可以自行构建项目了!
命令模块
- 侦察
- check - 检查组织是否使用 Azure DevOps 以及凭据是否有效
- whoami - 列出当前用户及其组成员身份
- listorgs - 列出 Azure DevOps 中可访问或所有组织
- listrepo - 列出所有仓库
- searchrepo - 搜索指定的仓库
- listproject - 列出所有项目
- searchproject - 搜索指定的项目
- searchcode - 搜索包含指定搜索词的代码
- searchfile - 根据搜索词搜索文件
- listuser - 列出用户
- searchuser - 搜索指定的用户
- listteam - 列出团队
- searchteam - 搜索指定的团队
- getteammembers - 获取指定团队的团队成员
- listgroup - 列出组
- searchgroup - 搜索指定的组
- getgroupmembers - 列出指定组的所有组成员
- getpermissions - 获取指定项目的访问权限信息
- creds - 在代码中搜索凭据(关键词如下所列)
"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"
- getbuildlogs - 下载一个或所有项目的构建日志
- listbuildlogs - 列出一个或所有项目的构建日志
- searchbuildlogs - 搜索构建日志中的指定搜索词
- 持久化
- createpat - 为用户创建个人访问令牌
- listpat - 列出用户的个人访问令牌
- removepat - 移除用户的个人访问令牌
- createsshkey - 创建用户的公共 SSH 密钥
- listsshkey - 列出用户的公共 SSH 密钥
- removesshkey - 移除用户的公共 SSH 密钥
- 权限提升
- addprojectadmin - 将用户添加到指定项目的“项目管理员”组
- removeprojectadmin - 将用户从指定项目的“项目管理员”组中移除
- addbuildadmin - 将用户添加到指定项目的“构建管理员”组
- removebuildadmin - 将用户从指定项目的“构建管理员”组中移除
- addcollectionadmin - 将用户添加到“项目集合管理员”组
- removecollectionadmin - 将用户从“项目集合管理员”组中移除
- addcollectionbuildadmin - 将用户添加到“项目集合构建管理员”组
- removecollectionbuildadmin - 将用户从“项目集合构建管理员”组中移除
- addcollectionbuildsvc - 将用户添加到“项目集合构建服务帐户”组
- removecollectionbuildsvc - 将用户从“项目集合构建服务帐户”组中移除
- addcollectionsvc - 将用户添加到“项目集合服务帐户”组
- removecollectionsvc - 将用户从“项目集合服务帐户”组中移除
- getpipelinevars - 检索指定项目中使用的所有管道变量。
- getpipelinesecrets - 检索指定项目中使用的所有管道机密的名称。
- getvariablegroups - 检索指定项目中使用的所有变量组及其对应的变量。
- getserviceconnections - 检索指定项目中使用的服务连接。
参数/选项
- /credential: - 用于身份验证的凭据(PAT 或 Cookie)。适用于所有模块。
- /url: - Azure DevOps URL。适用于所有模块。
- /search: - 要搜索的关键词。并非适用于所有模块。
- /project: - 要执行操作的项目。并非适用于所有模块。
- /user: - 针对特定用户执行操作。并非适用于所有模块。
- /id: - 与持久化模块配合使用,用于针对特定令牌 ID 执行操作。并非适用于所有模块。
- /group: - 针对特定组执行操作。并非适用于所有模块。
身份验证选项
以下是使用 ADOKit 向 Azure DevOps 实例进行身份验证时可供选择的认证方式。
- 窃取的 Cookie - UserAuthentication - 该 cookie 是用户计算机上
.dev.azure.com域下的UserAuthenticationcookie。/credential:UserAuthentication=ABC123
- 窃取的 Cookie - AadAuthentication - 该 cookie 是用户计算机上
.dev.azure.com域下的AadAuthenticationcookie。/credential:eyJ0...
- 个人访问令牌 (PAT) - 这是一个访问令牌/API 密钥,为单个字符串。
/credential:apiToken
- 窃取的访问令牌 - 如果你能窃取或刷新一个合适的访问令牌,也可以使用它。使用时,访问令牌必须对 Azure 资源管理器 (ARM) 资源有效(
"aud":"https://management.core.windows.net/")或对 Azure DevOps 资源有效("aud":"499b84ac-1321-427f-aa17-267ca6975798")/credential:eyJ0..
模块详情表
下表显示了每个模块所需的权限。