返回更新列表
新发布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许可证
Fodyhttps://github.com/Fody/FodyMIT 许可证
Newtonsoft.Jsonhttps://github.com/JamesNK/Newtonsoft.JsonMIT 许可证

预编译版本

  • 使用 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 域下的 UserAuthentication cookie。
    • /credential:UserAuthentication=ABC123
  • 窃取的 Cookie - AadAuthentication - 该 cookie 是用户计算机上 .dev.azure.com 域下的 AadAuthentication cookie。
    • /credential:eyJ0...
  • 个人访问令牌 (PAT) - 这是一个访问令牌/API 密钥,为单个字符串。
    • /credential:apiToken
  • 窃取的访问令牌 - 如果你能窃取或刷新一个合适的访问令牌,也可以使用它。使用时,访问令牌必须对 Azure 资源管理器 (ARM) 资源有效("aud":"https://management.core.windows.net/")或对 Azure DevOps 资源有效("aud":"499b84ac-1321-427f-aa17-267ca6975798")
    • /credential:eyJ0..

模块详情表

下表显示了每个模块所需的权限。

分类