
TruffleHog сканирует Git-репозитории и их историю в поисках строк с высокой энтропией и секретов (по регулярным выражениям). Эти находки могут содержать учётные данные, для доступа к базам данных, облачным аккаунтам или сторонним сервисам.
Сегодня мы научимся использовать TruffleHog — инструмент с открытым исходным кодом для сканирования Git-репозиториев с целью обнаружения случайно раскрытых секретов. Он способен находить строки, похожие на API-ключи, токены, пароли или другие конфиденциальные данные. Злоумышленники любят TruffleHog, потому что он проверяет каждый коммит, тег и запись метаданных. Даже если разработчик позже удалит секрет, он по-прежнему хранится в истории Git, и TruffleHog его найдёт.
Подпишись на наш канал в телеграме , там ты найдешь огромное количество качественного контента, без инфошума и воды!
Установка
Установим два инструмента, которые нам понадобятся: git-dumper и trufflehog. Обратите внимание, что версия TruffleHog в виде Python-библиотеки немного отличается от отдельного релиза на GitHub.
kali > pip3 install git-dumper
kali > pip3 install trufflehog
Мы будем использовать git-dumper для извлечения .git директорий перед запуском сканирования Trufflehog. Некоторые серверы случайно раскрывают все свои .git директории, как в приведённом ниже примере.

С помощью инструмента вы можете легко их извлечь, указав цель и директорию, в которую следует сохранить файлы:
kali > git-dumper http://target.ru/.git dump

Есть веб-сайты, которые блокируют доступ к директории .git, но некоторые её файлы всё же могут быть доступны.

Тут мы также можем использовать git-dumper, чтобы извлечь каждый доступный объект, коммит и ссылку в локальную папку dump.

Анализ репозиториев
После того как репозиторий успешно сдамплен, давайте посмотрим, что мы сможем найти. Существует несколько способов поиска ценных строк в файлах с помощью trufflehog. По умолчанию, для поиска инструмент использует энтропию. Второй вариант — использовать регулярные выражения (в нашем случае это оказался наиболее эффективный подход).
kali > trufflehog --regex --entropy NO dump


В одном из файлов мы обнаружили УЗ для базы данных.
Теперь попробуем готовый инструментом из Github репозитория.
kali > curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin
kali > trufflehog filesystem /home/kali/Documents/dump

Этот подход более гибкий, но часто создаёт зашумленный вывод и возникают ложные срабатывания.
Сканирование репозитория на предмет подтверждённых секретов
kali > trufflehog git https://github.com/trufflesecurity/test_keys --results=verified,unknown

Вывод команды показывает находки, которые TruffleHog смог провалидировать через API сервисов (AWS, GitHub) — категория «verified» (подтверждённые), а также совпадения по высокой энтропии или регулярным выражениям — категория «unknown» (неизвестные).
Массовое сканирование репозиториев
kali > trufflehog git https://github.com/trufflesecurity/test_keys --results=verified,unknown --json

Инструмент проходит по каждому репозиторию и выводит JSON с находками.
Сканирование GitHub репозитория, issues и pull request'ов
kali > trufflehog github --repo=https://github.com/trufflesecurity/test_keys --issue-comments --pr-comments

Проверяет описания issues, комментарии, текст PR и комментарии к PR — иногда секреты утекают в обсуждениях.
Сканирование локального Git-репозитория
kali > trufflehog git file://test_keys --results=verified,unknown
Проверяет клонированный репозиторий на вашем диске, а не удаленный по HTTP.
Итог
TruffleHog — это мощный инструмент, экономящий время как для атакующих, так и для команды защиты. Он быстро проверяет каждый уголок вашей Git истории, используя энтропию, регулярные выражения и проверку через API. С небольшой индивидуальной настройкой вы можете отсеять ложные срабатывания и сосредоточить поиск на действительно важном. Независимо от того, охотитесь ли вы за забытыми ключами или защищаете собственный код, TruffleHog — важная часть вашего набора инструментов.
Подпишись на наш канал в телеграме , там ты найдешь огромное количество качественного контента, без инфошума и воды!
*Информация в данной статье представлена исключительно в образовательных целях. Автор не несёт ответственности за возможные последствия применения советов или рекомендаций, изложенных в материале.