trufflehog使用教程

trufflehog 是 Kali Linux 中一款专注于 敏感凭证检测的开源工具,核心功能是扫描各类数据源(如代码仓库、文件系统、云存储、Docker 镜像等),自动识别并提取其中的敏感信息(如 API 密钥、密码、令牌、私钥、访问密钥等),帮助开发者、安全测试人员发现"硬编码凭证"这类高危安全隐患,避免因凭证泄露导致的数据泄露或未授权访问。

其核心特性与优势如下:

  • 多数据源支持:覆盖 Git 仓库(本地/远程)、GitHub/GitLab 平台、文件系统、S3/GCS 云存储、Docker 镜像、CircleCI 配置、系统日志等,适配多场景扫描需求。
  • 高精度检测:内置大量凭证检测规则(Detector),支持验证检测结果(如测试 API 密钥是否有效),减少误报;可自定义包含/排除特定检测规则,灵活适配业务场景。
  • 丰富输出格式:支持 JSON(含 legacy 旧格式)、GitHub Actions 格式输出,便于结果分析、自动化集成(如对接 SIEM 系统、CI/CD 流水线)。
  • 性能可配置:支持并发扫描(自定义工作线程数)、归档文件大小/深度/超时限制,平衡扫描效率与资源占用。
  • 易用性强:提供向导模式(Wizard)简化扫描操作,支持配置文件批量定义扫描规则,适合新手与进阶用户。

二、命令参数解析(表格形式)

1. 初始交互选项(What do you want to do?)

英文选项 中文翻译 功能说明
Scan a source using wizard 使用向导模式扫描数据源 通过交互式引导选择扫描类型、配置参数,适合新手操作
View help docs 查看帮助文档 查看完整工具说明、命令用法、参数细节
View open-source project 查看开源项目 跳转至 trufflehog 开源仓库(如 GitHub),获取源码、更新日志
Inquire about TruffleHog Enterprise 咨询 TruffleHog 企业版 了解企业版功能(如高级检测规则、多团队协作、更全面的数据源支持)
Quit 退出 退出 trufflehog 工具交互界面

2. 全局 Flags(通用参数)

参数 英文说明 中文解析 使用场景
--help Show context-sensitive help (also try --help-long and --help-man) 显示上下文帮助信息(--help-long 查看详细说明,--help-man 查看手册格式) 忘记命令用法时查询
--debug Run in debug mode 启用调试模式,输出详细运行日志(如扫描进度、检测规则触发情况) 排查扫描失败、结果异常等问题
--trace Run in trace mode 启用跟踪模式,输出更细粒度的日志(如函数调用、数据流转) 深度调试工具运行逻辑
--profile Enables profiling and sets a pprof and fgprof server on :18066 启用性能分析,在 18066 端口启动 pprof/fgprof 服务(用于分析 CPU、内存占用) 优化扫描性能、定位资源消耗瓶颈
-j, --json Output in JSON format 以 JSON 格式输出扫描结果(便于后续自动化分析、存储) 对接脚本、SIEM 系统、数据报表工具
--json-legacy Use the pre-v3.0 JSON format. Only works with git, gitlab, and github sources 使用 v3.0 之前的旧版 JSON 格式(仅支持 git、gitlab、github 数据源) 兼容旧版工具或脚本(依赖旧格式输出)
--github-actions Output in GitHub Actions format 以 GitHub Actions 格式输出(在 GitHub 流水线中显示结构化结果) 集成到 GitHub CI/CD 流水线,触发告警或阻断流程
--concurrency=4 Number of concurrent workers 设置并发工作线程数(默认 4,可根据 CPU 核心数调整) 提升扫描速度(如 8 核 CPU 设为 --concurrency=8)
--no-verification Don't verify the results 不验证检测结果(仅识别疑似凭证,不测试有效性) 追求扫描速度,暂时无需确认凭证是否可用
--only-verified Only output verified results 仅输出已验证有效的凭证(过滤未通过验证的疑似结果) 需精准结果,减少误报(如生产环境安全审计)
--filter-unverified Only output first unverified result per chunk per detector if there are more than one results 若同一数据块、同一检测规则下有多个未验证结果,仅输出第一个 平衡结果数量与可读性,避免未验证结果刷屏
--config=CONFIG Path to configuration file 指定配置文件路径(批量定义扫描规则、数据源、检测规则等) 批量扫描、标准化扫描流程(如企业统一安全检测配置)
--print-avg-detector-time Print the average time spent on each detector 输出每个检测规则(Detector)的平均耗时 分析检测规则性能,优化扫描效率
--no-update Don't check for updates 不检查工具更新(避免扫描前的更新检测耗时) 离线环境或无需实时更新工具版本
--fail Exit with code 183 if results are found 若检测到凭证,工具以 183 状态码退出(正常无结果退出码为 0) 集成到 CI/CD 流水线(如检测到凭证则阻断构建)
--verifier=VERIFIER ... Set custom verification endpoints 设置自定义验证端点(用于测试非默认类型凭证的有效性) 检测自定义业务系统的凭证(如内部 API 密钥)
--archive-max-size=ARCHIVE-MAX-SIZE Maximum size of archive to scan. (Byte units eg. 512B, 2KB, 4MB) 设置待扫描归档文件(如 .zip、.tar)的最大大小(支持 B/KB/MB 单位) 避免超大归档文件占用过多资源(如 --archive-max-size=10MB)
--archive-max-depth=ARCHIVE-MAX-DEPTH Maximum depth of archive to scan 设置归档文件的最大扫描深度(如子目录层级) 限制归档文件内深层目录的扫描,提升效率
--archive-timeout=ARCHIVE-TIMEOUT Maximum time to spend extracting an archive 设置归档文件提取的最大超时时间(避免无限等待) 处理可能损坏或提取缓慢的归档文件
--include-detectors="all" Comma separated list of detector types to include. Protobuf name or IDs may be used, as well as ranges 指定需包含的检测规则(用逗号分隔,支持 Protobuf 名称、ID 或 ID 范围,默认 "all" 即所有规则) 仅扫描特定类型凭证(如 --include-detectors="AWS,Google" 只检测 AWS/Google 凭证)
--exclude-detectors=EXCLUDE-DETECTORS Comma separated list of detector types to exclude. Protobuf name or IDs may be used, as well as ranges. IDs defined here take precedence over the include list 指定需排除的检测规则(格式同上,优先级高于 --include-detectors) 过滤无需检测的凭证类型(如 --exclude-detectors="Slack" 不检测 Slack 令牌)
--version Show application version 显示工具版本号 确认工具版本,排查版本兼容性问题

3. 核心 Commands(命令)

命令 英文说明 中文解析 基础用法示例
help [...] Show help 查看指定命令的帮助信息(不指定则显示所有命令帮助) trufflehog help git(查看 git 命令用法)
git [] Find credentials in git repositories 扫描 Git 仓库(本地路径或远程 URI,如 GitHub/GitLab 仓库地址) trufflehog git https://github.com/example/repo.git(扫描远程 Git 仓库)
github [] Find credentials in GitHub repositories 扫描 GitHub 仓库(支持个人/组织仓库、指定分支/标签) trufflehog github --org example-org(扫描 example-org 组织下的所有仓库)
gitlab --token=TOKEN [] Find credentials in GitLab repositories 扫描 GitLab 仓库(需 GitLab 访问令牌 --token,支持项目/群组仓库) trufflehog gitlab --token=glpat-xxx --project 123(扫描 ID 为 123 的 GitLab 项目)
filesystem [] [...] Find credentials in a filesystem 扫描文件系统(本地目录或文件路径,支持多个路径) trufflehog filesystem /home/user/project(扫描指定本地目录)
s3 [] Find credentials in S3 buckets 扫描 AWS S3 存储桶(需 AWS 凭证,支持指定桶名、前缀) trufflehog s3 --bucket my-bucket --prefix docs/(扫描 my-bucket 桶下 docs/ 前缀的文件)
gcs [] Find credentials in GCS buckets 扫描 Google Cloud Storage(GCS)存储桶(需 GCP 凭证,支持指定桶名、前缀) trufflehog gcs --bucket my-gcs-bucket(扫描 my-gcs-bucket 存储桶)
syslog [] Scan syslog 扫描系统日志(支持本地日志文件、远程 syslog 服务) trufflehog syslog /var/log/syslog(扫描本地 syslog 文件)
circleci --token=TOKEN Scan CircleCI 扫描 CircleCI 配置(需 CircleCI 访问令牌 --token,检测配置中的敏感凭证) trufflehog circleci --token=circleci-token-xxx(扫描当前账号下的 CircleCI 配置)
docker --image=IMAGE Scan Docker Image 扫描 Docker 镜像(需指定镜像名 --image,检测镜像内文件中的敏感凭证) trufflehog docker --image=ubuntu:22.04(扫描 ubuntu:22.04 镜像)

三、trufflehog 完整使用教程(全场景覆盖)

1. 前提准备:工具安装与环境确认

trufflehog 支持多种安装方式,Kali 推荐使用 Go 安装或直接下载二进制文件,确保工具版本为最新(功能更全面):

1.1 安装方式(任选一种)

复制代码
# 方式 1:Go 安装(需已安装 Go 1.20+)
go install github.com/trufflesecurity/trufflehog/v3/cmd/trufflehog@latest
# 验证:将 Go 二进制目录加入 PATH(如 echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc),执行 trufflehog --version

# 方式 2:下载二进制文件(适合无 Go 环境)
# 查看最新版本:https://github.com/trufflesecurity/trufflehog/releases
wget https://github.com/trufflesecurity/trufflehog/releases/download/v3.x.x/trufflehog_3.x.x_linux_amd64.tar.gz
tar -zxvf trufflehog_3.x.x_linux_amd64.tar.gz
sudo mv trufflehog /usr/local/bin/
# 验证安装
trufflehog --version
# 输出类似 "trufflehog version 3.x.x" 即安装成功

1.2 环境依赖确认

  • Git 仓库扫描 :需安装 git 工具(Kali 默认预装,验证:git --version);
  • 云存储(S3/GCS)扫描 :需配置对应云厂商凭证(如 AWS 配置 ~/.aws/credentials,GCP 配置 GOOGLE_APPLICATION_CREDENTIALS 环境变量);
  • Docker 镜像扫描 :需安装 docker 并启动服务(sudo systemctl start docker),且当前用户有权限操作 docker(sudo usermod -aG docker $USER,需重启终端)。

2. 场景 1:向导模式扫描(新手友好)

场景描述:首次使用工具,通过交互式向导选择数据源(如本地目录、Git 仓库),无需手动输入复杂命令。

复制代码
# 步骤 1:启动向导模式
trufflehog

# 步骤 2:选择扫描类型(通过方向键选择 "Scan a source using wizard",按 Enter 确认)
# 输出交互提示:"What source would you like to scan?"

# 步骤 3:选择数据源(如选择 "Filesystem",按 Enter)
# 按提示输入本地目录路径(如 /home/user/test-project)

# 步骤 4:配置扫描参数(默认按 Enter 即可,或按需调整并发数、输出格式)
# 工具自动开始扫描,结果实时显示在终端

# 步骤 5:查看结果
# 扫描完成后,终端会列出检测到的敏感凭证(含类型、位置、是否验证通过)

3. 场景 2:扫描本地文件系统(检测硬编码凭证)

场景描述:扫描本地项目目录(如 /home/user/web-project),检测代码、配置文件中的 API 密钥、密码等。

复制代码
# 基础扫描命令(默认所有检测规则,输出文本格式)
trufflehog filesystem /home/user/web-project

# 进阶命令(仅输出已验证凭证,JSON 格式保存结果)
trufflehog filesystem /home/user/web-project --only-verified -j > filesystem_results.json

# 参数解析
# --only-verified:过滤无效凭证,仅保留已验证有效的结果;
# -j:JSON 格式输出,重定向到文件便于后续分析;
# 结果文件查看:cat filesystem_results.json | jq(需安装 jq:sudo apt install jq)

# 常见过滤场景(仅检测 AWS 凭证,排除 Slack 凭证)
trufflehog filesystem /home/user/web-project --include-detectors="AWS" --exclude-detectors="Slack" -v
# -v:显示详细扫描过程(如当前扫描的文件路径)

4. 场景 3:扫描远程 Git 仓库(检测代码历史中的凭证)

场景描述:扫描 GitHub 远程仓库(如 https://github.com/example/test-repo),检测所有分支、提交历史中的敏感信息(含已删除但未清理的硬编码凭证)。

复制代码
# 基础扫描(默认扫描所有分支,文本格式输出)
trufflehog git https://github.com/example/test-repo.git

# 进阶扫描(指定分支,并发 8 线程,结果输出到日志)
trufflehog git https://github.com/example/test-repo.git --branch main --concurrency=8 --debug > git_scan.log 2>&1

# 参数解析
# --branch main:仅扫描 main 分支(减少扫描范围,提升速度);
# --concurrency=8:8 线程并发(匹配 8 核 CPU,避免资源浪费);
# --debug:输出调试日志(便于排查扫描卡顿问题);
# 2>&1:将错误日志也重定向到文件,完整记录扫描过程

# 扫描本地 Git 仓库(路径而非远程 URI)
trufflehog git /home/user/local-repo --depth=100
# --depth=100:仅扫描最近 100 次提交(适合大型仓库,减少扫描时间)

5. 场景 4:扫描 GitHub 组织/个人仓库(批量扫描)

场景描述:扫描 GitHub 个人账号或组织下的所有仓库(需 GitHub 个人访问令牌,获取地址:https://github.com/settings/tokens,权限勾选 repo、read:org)。

复制代码
# 步骤 1:设置 GitHub 令牌(临时环境变量)
export GITHUB_TOKEN="ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# 步骤 2:扫描个人账号下所有仓库
trufflehog github --user my-github-username --only-verified -j > github_user_results.json

# 步骤 3:扫描组织下所有仓库(如 example-org)
trufflehog github --org example-org --exclude-forks --archive-max-size=5MB
# 参数解析
# --exclude-forks:排除 Fork 的仓库(仅扫描组织原生仓库);
# --archive-max-size=5MB:跳过超过 5MB 的归档文件(避免超大文件拖慢速度)

# 扫描指定 GitHub 仓库的特定标签(如 v1.0)
trufflehog github --repo example-org/test-repo --tag v1.0

6. 场景 5:扫描 GitLab 项目(需 GitLab 令牌)

场景描述:扫描 GitLab 私有项目(ID 为 123),需 GitLab 访问令牌(获取地址:https://gitlab.com/-/profile/personal_access_tokens,权限勾选 api)。

复制代码
# 基础扫描(指定项目 ID,输出文本结果)
trufflehog gitlab --token=glpat-xxxxxxxxxxxxxxxxxxxx --project 123

# 进阶扫描(扫描 GitLab 群组下所有项目,验证凭证并保存日志)
trufflehog gitlab --token=glpat-xxxxxxxxxxxxxxxxxxxx --group 456 --only-verified --debug > gitlab_group_scan.log
# 参数解析
# --group 456:扫描 ID 为 456 的 GitLab 群组下所有项目;
# 其他参数与 GitHub 扫描一致

# 扫描 GitLab 项目的特定分支(如 dev 分支)
trufflehog gitlab --token=glpat-xxxxxxxxxxxxxxxxxxxx --project 123 --branch dev

7. 场景 6:扫描 Docker 镜像(检测镜像内敏感信息)

场景描述:扫描本地或远程 Docker 镜像(如 ubuntu:22.04、私有仓库镜像),检测镜像内文件(如配置文件、脚本)中的凭证。

复制代码
# 步骤 1:确保 Docker 服务启动
sudo systemctl start docker

# 步骤 2:扫描本地 Docker 镜像(如 ubuntu:22.04)
trufflehog docker --image=ubuntu:22.04 -v

# 步骤 3:扫描远程私有仓库镜像(需先登录 Docker 仓库)
sudo docker login my-private-registry.com
trufflehog docker --image=my-private-registry.com/app:v1.0 --archive-max-depth=3
# 参数解析
# --archive-max-depth=3:归档文件扫描深度限制为 3 层(避免深层目录过度扫描);
# 扫描结果会显示镜像内包含敏感凭证的文件路径(如 /etc/config.ini)

# 扫描 Docker 镜像并输出 JSON 结果
trufflehog docker --image=nginx:latest -j > docker_scan_results.json

8. 场景 7:扫描 AWS S3 存储桶(检测云存储凭证)

场景描述:扫描 AWS S3 存储桶(如 my-app-bucket),检测桶内文件(如 CSV、配置文件)中的敏感信息,需先配置 AWS 凭证。

复制代码
# 步骤 1:配置 AWS 凭证(两种方式任选)
# 方式 1:手动编辑凭证文件
echo -e "[default]\naws_access_key_id = AKIAXXXXXXXXXXXXXX\naws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" > ~/.aws/credentials
chmod 600 ~/.aws/credentials

# 方式 2:设置环境变量
export AWS_ACCESS_KEY_ID="AKIAXXXXXXXXXXXXXX"
export AWS_SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# 步骤 2:基础扫描(扫描整个 S3 桶)
trufflehog s3 --bucket=my-app-bucket

# 步骤 3:进阶扫描(指定桶内前缀,限制归档大小)
trufflehog s3 --bucket=my-app-bucket --prefix=prod/config/ --archive-max-size=10MB --only-verified
# 参数解析
# --prefix=prod/config/:仅扫描桶内 prod/config/ 路径下的文件;
# --only-verified:仅输出已验证有效的凭证(如 AWS 密钥可正常调用 API)

# 扫描结果保存到文件
trufflehog s3 --bucket=my-app-bucket -j > s3_scan_results.json

9. 场景 8:集成到 CI/CD 流水线(阻断凭证泄露)

场景描述:在 GitHub Actions 流水线中集成 trufflehog,若代码提交中包含敏感凭证,自动阻断构建流程(需在项目根目录创建 .github/workflows 目录)。

复制代码
# 步骤 1:创建 GitHub Actions 配置文件(.github/workflows/trufflehog.yml)
cat > .github/workflows/trufflehog.yml << EOF
name: TruffleHog Scan
on: [push, pull_request]  # 推送代码、创建 PR 时触发扫描

jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0  # 拉取所有提交历史(便于完整扫描)
          
      - name: Install TruffleHog
        run: |
          wget https://github.com/trufflesecurity/trufflehog/releases/download/v3.x.x/trufflehog_3.x.x_linux_amd64.tar.gz
          tar -zxvf trufflehog_3.x.x_linux_amd64.tar.gz
          sudo mv trufflehog /usr/local/bin/
          
      - name: Run TruffleHog Scan
        run: trufflehog filesystem . --fail  # --fail 检测到凭证时退出码 183,阻断流水线
EOF

# 步骤 2:提交配置文件到 GitHub
git add .github/workflows/trufflehog.yml
git commit -m "Add TruffleHog CI scan"
git push origin main

# 效果说明
# 当代码提交中包含敏感凭证(如 API 密钥),流水线会失败并显示检测结果;
# 需修复凭证泄露问题(如删除硬编码、使用环境变量)后,重新提交才能通过构建。

四、常见问题与解决方案

常见问题 可能原因 解决方案
"command not found: trufflehog" 1. 工具未安装或安装路径未加入 PATH;2. 二进制文件权限不足 1. 确认安装路径(如 Go 安装路径 GOPATH/bin,二进制安装路径 /usr/local/bin),执行 `export PATH=PATH:$GOPATH/bin;2. 赋予权限:sudo chmod +x /usr/local/bin/trufflehog`
Git 仓库扫描提示"fatal: could not read Username for 'https://github.com': No such device or address" 远程 Git 仓库为私有仓库,需身份验证(未配置凭证或令牌) 1. 使用带凭证的仓库 URL(如 https://username:token@github.com/example/repo.git);2. 提前执行 git config --global credential.helper store 保存凭证
Docker 镜像扫描提示"permission denied while trying to connect to the Docker daemon socket" 当前用户无 Docker 操作权限 1. 执行 sudo usermod -aG docker $USER 将用户加入 docker 组;2. 重启终端或重新登录,验证:docker ps(无需 sudo 即可执行)
S3 扫描提示"access denied" 1. AWS 凭证无效或权限不足;2. S3 桶策略限制访问 1. 验证凭证有效性(执行 aws s3 ls s3://my-app-bucket 测试);2. 确保凭证拥有 s3:ListBucket、s3:GetObject 权限;3. 检查 S3 桶策略是否允许当前 IP 访问
扫描结果存在大量误报(如识别普通字符串为凭证) 1. 未启用结果验证(--no-verification 默认关闭);2. 检测规则过于宽泛 1. 加入 --only-verified 参数,仅保留已验证有效的结果;2. 使用 --exclude-detectors 排除易误报的规则(如 --exclude-detectors="GenericPassword")
扫描速度极慢(大型 Git 仓库或 S3 桶) 1. 并发数过低;2. 扫描范围过广(如全部分支、深层归档);3. 网络延迟(远程数据源) 1. 提升并发数(--concurrency=CPU 核心数,如 8 核设为 8);2. 缩小扫描范围(Git 用 --branch/--depth,S3 用 --prefix,归档用 --archive-max-size);3. 本地克隆远程仓库后扫描(减少网络依赖)

五、注意事项与安全规范

  • 凭证安全处理 :扫描结果包含敏感凭证,需加密存储(如用 gpg -c results.json 加密),避免结果文件泄露导致二次安全风险;扫描完成后建议及时清理临时凭证(如环境变量、配置文件)。
  • 扫描范围控制:避免扫描生产环境核心数据源(如生产 S3 桶、核心 Git 仓库)时影响业务,建议先在测试环境验证扫描规则,再批量应用到生产环境。
  • 法律与合规:仅可扫描合法授权的数据源(如企业内部项目、客户签署授权书的第三方仓库),未经授权扫描他人或公共平台的私有数据,涉嫌违反《网络安全法》《数据安全法》,需承担法律责任。
  • 工具更新 :trufflehog 检测规则会定期更新(新增凭证类型、修复误报),建议定期执行 trufflehog --version 检查版本,通过 Go 或二进制方式更新到最新版。
  • 自定义规则:若业务中存在特殊格式的凭证(如内部系统 API 密钥),可通过配置文件(--config)自定义检测规则(参考官方文档:https://docs.trufflesecurity.com/trufflehog/configuration),提升检测精准度。
相关推荐
未知鱼2 小时前
Python安全开发之简易Xss检测工具(详细注释)
python·安全·xss
代码AC不AC2 小时前
【Linux】System V 通信方式
linux·消息队列·共享内存·信号量·system v
vortex52 小时前
vmware虚拟机设置启动时进入live cd
linux·网络安全
禾小西2 小时前
性能测试后的瓶颈定位与调优:自下而上找问题,自上而下解难题
java·测试工具
Lugas Luo2 小时前
Ascend 310B 定制 SDHCI 主机控制器源码深层次劫持与优化解析
linux·嵌入式硬件
钟智强2 小时前
Linux SSH密码爆破脚本,从原理到实践
linux·运维·ssh
一只鼠标猴2 小时前
甲方应急响应:从事件处置到溯源闭环实战指南
安全·web安全·网络安全·应急响应·应急·应急溯源
阿提哈德2 小时前
患者病历归档流程流程图绘制指南
安全·信息可视化·架构·流程图·能源
wangjialelele3 小时前
一文读懂 Redis 持久化与事务
linux·数据库·redis·bootstrap