Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
dufflebag — Поиск секретов в открытых томах EBS | Kitploit
Инструменты/GitHubGitHub/bishopfox/dufflebag
Анализ уязвимостейСбор информацииБезопасность облачных средОбнаружение Секретов
GitHubbishopfox/dufflebag

dufflebag

Поиск секретов в открытых томах EBS

Репозиторий
305393 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Dufflebag

Dufflebag — это инструмент для поиска секретов, которые могли быть случайно оставлены в общедоступных снимках Elastic Block Storage (EBS). Вы можете удивиться, сколько паролей и секретов просто валяется!

Инструмент организован как приложение Elastic Beanstalk (сокращённо EB, не путать с EBS) и определённо не будет работать, если попытаться запустить его на своей собственной машине.

У Dufflebag много движущихся частей, потому что на практике довольно нетривиально читать тома EBS. Вам нужно находиться в среде AWS, клонировать снимок, создать том из снимка, подключить том, смонтировать том и т.д. Именно поэтому он сделан как приложение Elastic Beanstalk — чтобы автоматически масштабироваться вверх или вниз по вашему желанию, и чтобы всё это можно было легко разобрать, когда работа закончена.

Просто следите за консолью AWS, чтобы убедиться, что всё идёт по плану и не накручиваются счета. Мы постарались предусмотреть все возможные аварийные ситуации и добавить обработку ошибок... но вы предупреждены!

Начало работы

Разрешения

Вам нужно добавить некоторые дополнительные разрешения IAM AWS для роли: aws-elasticbeanstalk-ec2-role. В качестве альтернативы можно создать новую роль с этими разрешениями и настроить 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.

Create Environment

Затем в следующем окне выберите Worker environment и нажмите Select.

Worker Environment

В следующем окне для Platform выберите Preconfigured -> Go.

Go Platform

Под Application Code выберите Upload your Code.

Upload Your Code

Нажмите кнопку Upload и выберите только что собранный dufflebag.zip.

Code Origins

Наконец, нажмите 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.

Scaling

Получение добычи

Dufflebag будет копировать все интересные файлы в созданную вами ранее корзину S3. (Технически Dufflebag использует первую найденную корзину S3, имя которой начинается с "dufflebag".)

Вы можете просто наблюдать, как файлы поступают один за другим в вашу корзину 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, который нужно обработать:

Code Origins

Столбец Messages Available показывает, сколько томов ещё не обработано. Столбец Messages in Flight показывает, сколько томов обрабатывается прямо сейчас.

Настройка того, что искать

Dufflebag запрограммирован на поиск того, что, по нашему мнению, может быть «интересным». Закрытые ключи, пароли, ключи AWS и т.д. Но что, если вы хотите найти что-то конкретное для себя? Например, вы работаете в bank.com и хотите посмотреть, что есть в открытом доступе, связанное с bank.com.

Для этого потребуется небольшая модификация кода Dufflebag, но не очень большая. Не волнуйтесь! Логика поиска находится в inspector.go. Функция pilfer() — это goroutine, которая занимается проверкой файла. Код там может сначала показаться пугающим, но вот что он делает (и как вы можете его модифицировать без особого труда).

Чёрные списки имён файлов:

  1. Проверка имени файла по точному чёрному списку. (blacklist_exact)
  2. Проверка имени файла по чёрному списку «содержит». (Отклонить файл, если он содержит заданную строку) (blacklist_contains)
  3. Проверка имени файла по чёрному списку префиксов. (Отклонить файл, если он начинается с заданной строки) (blacklist_prefix)

Вы можете довольно легко изменить логику поиска, просто изменив содержимое этих трёх списков. Однако в целом я бы рекомендовал оставить их как есть. Эти чёрные списки предназначены для исключения скучных файлов, которые присутствуют во многих файловых системах, и предотвращают необходимость глубокого анализа каждого файла во всём AWS. Чувствительные данные, которые вы ищете, МОГУТ быть в этих файлах... но, вероятно, нет.

Белый список имён файлов:

  1. Функция IsSensitiveFileName() проверяет имя файла на соответствие регулярному выражению, которое находит чувствительные имена файлов (например, /etc/shadow, bash_history и т.д.).

Содержимое файлов:

  1. Функция checkContentsRegex() проверяет содержимое файла на соответствие набору регулярных выражений. (Аргумент file input является построчным, поэтому ввод в эту функцию — это одна строка файла, а не весь файл.) Таким образом, чтобы искать ключевые слова, связанные с вашей организацией, просто измените регулярные выражения внутри checkContentsRegex().
Скачать инструмент