
Полуавтоматический инструмент, управляемый обратной связью, для быстрого поиска в огромных массивах публичных данных на GitHub конфиденциальных секретов.
GitGot — это полуавтоматический инструмент с обратной связью, который позволяет пользователям быстро искать конфиденциальные секреты в огромных массивах общедоступных данных на GitHub.
В ходе сеансов поиска пользователи предоставляют GitGot обратную связь о результатах, которые следует игнорировать, и GitGot сокращает набор результатов. Пользователи могут блокировать файлы по имени файла, имени репозитория, имени пользователя или нечеткому совпадению содержимого файла.
Черные списки, созданные в предыдущих сеансах, можно сохранять и повторно использовать для аналогичных запросов (например, example.com против subdomain.example.com против Example Org). Сеансы также можно приостанавливать и возобновлять в любое время.
Подробнее о полуавтоматическом дизайне с участием человека можно прочитать здесь: https://bishopfox.com/blog/semi-automated-vs-automated-security-tools.
[1] Установите зависимость ssdeep для нечеткого хеширования.
Ubuntu/Debian (или эквивалент для вашего дистрибутива):
apt-get install python3-dev libfuzzy-dev ssdeep
или для Mac OSX:
brew install ssdeep
Для Windows или дистрибутивов *nix без пакета ssdeep см. инструкции по установке ssdeep.
[2] После установки ssdeep установите зависимости Python с помощью pip:
pip3 install -r requirements.txt
Запустите gitgot-docker.sh для сборки образа Docker GitGot (если он еще не существует) и выполнения докеризованной версии инструмента GitGot.
При вызове gitgot-docker.sh создаст и смонтирует каталоги logs и states из текущей рабочей директории хоста. Если этот gitgot-docker.sh выполняется из каталога проекта GitGot, он обновит контейнер Docker с изменениями в gitgot.py или checks/:
./gitgot-docker.sh -q example.com
(Смотрите gitgot-docker.sh для конкретных команд Docker)
GitHub требует токен для ограничения скорости запросов. Создайте токен API GitHub без разрешений/без области. Это будет эквивалентно публичному доступу к GitHub, но позволит использовать API поиска GitHub. Установите этот токен в верхней части gitgot.py, как показано ниже:
ACCESS_TOKEN = "<NO-PERMISSION-GITHUB-TOKEN-HERE>"
(В качестве альтернативы этот токен можно задать через переменную окружения GITHUB_ACCESS_TOKEN)
После добавления токена вы готовы к работе:
# Default RegEx list and logfile location (/logs/<query>.log) are used when no others are specified.
# Query for the string "example.com" using default GitHub search behavior (i.e., tokenization).
# This will find com.example (e.g., Java) or example.com (Website)
./gitgot.py -q example.com
# Query self-hosted GitHub instance
./gitgot.py -q example.com -u https://git.example.com
# Query for the exact string "example.com". See Query Syntax in the next section for more details.
./gitgot.py -q '"example.com"'
# Query through GitHub gists
./gitgot.py --gist -q CompanyName
# Using GitHub advanced search syntax
./gitgot.py -q "org:github cats"
# Custom RegEx List and custom log files location
./gitgot.py -q example.com -f checks/default.list -o example1.log
# Recovery from existing session
./gitgot.py -q example.com -r example.com.state
# Using an existing session (w/blacklists) for a new query
./gitgot.py -q "Example Org" -r example.com.state
Запросы GitGot передаются непосредственно в API поиска кода GitHub, поэтому для получения более продвинутого синтаксиса запросов обратитесь к документации GitHub.
/(secretToken)).