Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
dufflebag — 搜索暴露的EBS卷中的机密 | Kitploit
工具/GitHubGitHub/bishopfox/dufflebag
漏洞分析信息收集云安全秘密检测
GitHubbishopfox/dufflebag

dufflebag

搜索暴露的EBS卷中的机密

查看仓库
305393年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Dufflebag

Dufflebag 是一个工具,用于搜索公共弹性块存储(EBS)快照中可能意外遗留的秘密。你可能会惊讶于到处都是密码和秘密!

该工具以 Elastic Beanstalk("EB",不要与 EBS 混淆)应用程序的形式组织,如果你试图在自己的机器上运行它,它绝对无法工作。

Dufflebag 有很多活动部件,因为实际上读取 EBS 卷并非易事。你必须在 AWS 环境中,克隆快照,从快照创建卷,附加卷,挂载卷等等...这就是为什么它被做成一个 Elastic Beanstalk 应用,这样它可以自动地根据需要上下扩展,并且当你完成后整个东西可以轻松拆除。

只需留意你的 AWS 控制台,确保没有出现问题导致账单激增。我们已经尽力考虑各种可能情况并提供了错误处理...但你已经得到了警告!

开始使用

权限

你需要在角色 aws-elasticbeanstalk-ec2-role 上添加一些额外的 AWS IAM 权限。或者,你可以创建一个具有这些权限的全新角色,并设置 EB 使用该角色,但这会稍微复杂一些。无论如何,你需要添加:

  • AttachVolume (ec2)
  • CopySnapshot (ec2)
  • CreateVolume (ec2)
  • DeleteSnapshot (ec2)
  • DeleteVolume (ec2)
  • DescribeSnapshots (ec2)
  • DescribeVolumes (ec2)
  • DetachVolume (ec2)
  • PurgeQueue (sqs)
  • ListQueues (sqs)
  • ListAllMyBuckets (s3)
  • PutObject (s3)

构建

核心应用程序是用 Go 编写的,因此你需要一个 Golang 编译器。但 EB 应用程序实际上会被构建成一个 .zip 文件(EB 就是这样工作的),所以 makefile 会为你输出一个 zip 文件。

  1. 检查你的区域。Dufflebag 一次只能在一个 AWS 区域中操作。如果你想搜索每个区域,你必须部署那么多实例。要更改区域,请更改源代码文件 region.go 的内容。

  2. 安装依赖项:Ubuntu 18.04 x64:

root@kitploit:~
sudo apt install make golang-go git
go get -u github.com/aws/aws-sdk-go
go get -u github.com/deckarep/golang-set
go get -u github.com/lib/pq
go get -u lukechampine.com/blake3
  1. 然后使用以下命令将 EB 应用构建为 zip 文件:
root@kitploit:~
make

你现在应该会在项目根目录中看到一个 dufflebag.zip 文件。

  1. 最后,你需要创建一个 S3 存储桶。在 Dufflebag 内部自动设置这个可能可行,但实际上很难。所以请自己动手。你只需要创建一个具有默认权限的 S3 存储桶,并且名称以 dufflebag 开头。S3 存储桶名称必须是全局唯一的,因此你可能需要添加一些随机字符作为后缀。

部署到 Elastic Beanstalk

前往你的 AWS 控制台,找到 Elastic Beanstalk 菜单选项。这可能也可以通过 CLI 完成,但本描述将使用控制台。选择 Actions -> Create Environment。

创建环境

然后在下一个窗口中选择 Worker environment 并点击 Select。

工作者环境

在下一个窗口中,为 Platform 选择 Preconfigured -> Go。

Go  平台

在 Application Code 下,选择 Upload your Code。

上传你的代码

点击 Upload 按钮,选择刚刚构建的 dufflebag.zip 文件。

代码源

最后,点击 Create Environment 开始。

AWS 需要几分钟来创建所有东西并开始。创建完成后,Dufflebag 会立即启动。无需做其他事情。

移除此安全阀

一旦你将其启动并运行,可以移除此安全阀后再试。默认情况下,Dufflebag 只搜索 20 个 EBS 快照。(这样它就不会在你第一次尝试时失控)为了将搜索范围扩大到整个区域,进入 populate.go,移除以下代码行,然后重新构建:

root@kitploit:~
//#####################################################################
//####                    Safety Valve                             ####
//#### Remove this line of code below to search all of your region ####
//#####################################################################
snapshots = snapshots_result.Snapshots[0:20]

扩展

Dufflebag 设计为 Elastic Beanstalk 应用的原因之一是你可以轻松地自动扩展或缩减程序。默认情况下,它只在一个实例上运行,速度相当慢。但如果你想提升性能,可以在 Elastic Beanstalk 中调整自动扩展。完整选项超出本文档范围,所以我让你自行探索。但实践中,我发现简单的 CPU 使用率触发效果很好。

在设置上述环境时,你会在 Configure more options 按钮(而不是点击 Create environment)下找到选项,然后点击 Scaling。

扩展

获取战利品

Dufflebag 会将所有有趣的文件复制到你之前创建的 S3 存储桶中。(从技术上讲,Dufflebag 会使用它找到的第一个名称以 "dufflebag" 开头的 S3 存储桶。)

你可以直接查看 S3 存储桶中逐个进入的文件。它们将被命名为:

originalfilename_blake3sum_volumeid

检查状态

如果一切顺利,你不需要读取日志。但以防万一,Elastic Beanstalk 允许应用在运行时写入日志文件,这些日志可以通过导航到 Logs 选项卡来捕获。然后点击 Request Logs 和 Last 100 Lines。这将获取 Dufflebag 最近的日志批次。点击 Download 按钮读取。该文件将包含许多其他系统日志,但 Dufflebag 部分位于顶部的 "/var/log/web-1.log" 下。

要查看完整的日志历史,请选择 Full Logs 而不是 Last 100 Lines。(注意,EB 默认会非常积极地轮转日志)

此外,你可以通过查看环境的 SQS 队列来了解整体进度。Elastic Beanstalk 工作环境使用 SQS 管理工作流程。Dufflebag 队列中的每条消息代表一个待处理的 EBS 卷:

代码源

Messages Available 列显示尚未处理的卷数。Messages in Flight 列显示当前正在处理的卷数。

调整搜索内容

Dufflebag 被编程为搜索我们认为可能“有趣”的内容。私钥、密码、AWS 密钥等...但如果你真的想搜索与你特定相关的内容呢?比如,也许你在 bank.com 工作,想看看外面有哪些引用 bank.com 的内容。

这样做需要对 Dufflebag 代码进行少量修改,但并不多。别担心!搜索逻辑发生在 inspector.go 中。pilfer() 函数是一个处理检查文件的协程。那里的代码一开始可能看起来有点吓人,但以下是它所做的。(以及如何轻松修改它)

文件名黑名单:

  1. 根据黑名单检查文件名。(blacklist_exact)
  2. 根据“包含”黑名单检查文件名。(如果文件包含给定字符串则拒绝)(blacklist_contains)
  3. 根据前缀黑名单检查文件名。(如果文件以给定字符串开头则拒绝)(blacklist_prefix)

你可以通过更改这三个列表中的内容轻松修改搜索逻辑。不过,我通常建议保持这些列表不变。这些黑名单旨在覆盖许多文件系统中存在的无聊文件,并防止 Dufflebag 需要深入检查 AWS 上的每个文件。你要查找的敏感数据可能在这些文件中...但可能不是。

文件名白名单:

  1. IsSensitiveFileName() 函数根据正则表达式检查文件名,以查找敏感文件名。(例如 /etc/shadow、bash_history 等...)

文件内容:

  1. 函数 checkContentsRegex() 根据一组正则表达式检查文件内容。(文件输入参数是逐行的,因此该函数的输入是文件的一行,而不是整个文件。)因此,要查找与你的组织相关的关键词,只需更改 checkContentsRegex() 中的正则表达式即可。
下载工具