
Многофункциональный инструмент безопасности, который использует публичные REST API GitHub для OSINT, криминалистики, пентестинга и многого другого.
Gitxray (сокращение от Git X-Ray) — это многофункциональный инструмент безопасности, предназначенный для использования в репозиториях GitHub. Он может служить многим целям, включая OSINT и Forensics. gitxray использует публичные REST API GitHub для сбора информации, которую вручную получить было бы крайне трудоёмко. Кроме того, он ищет информацию в нетрадиционных местах.

Gitxray можно использовать, например, для:
Поиска конфиденциальной информации в профилях участников, раскрытой случайно, например, в бронированных PGP-ключах (Armored PGP Keys) или именах ключей.
Выявления злоумышленников в репозитории. Вы можете обнаружить совместно используемые или общие учётные записи, а также проверить публичные события, чтобы заметить поддельных Stargazer'ов.
Выявления поддельных или заражённых репозиториев. Он может обнаруживать поддельные даты коммитов, а также, например, обновлённые после релиза файлы релизов.
Сценариев форензики, таких как фильтрация результатов по дате, чтобы проверить, что ещё произошло в день инцидента.
И многое другое! Запустите полное X-Ray, чтобы собрать кучу данных.
gitxray -r https://github.com/some-org/some-repository
gitxray -r https://github.com/some-org/some-repository -f user_input -outformat text
gitxray -r https://github.com/some-org/some-repository -f keys,association,starred -outformat text
gitxray -r https://github.com/some-org/some-repository -f warning -outformat text
gitxray -r https://github.com/some-org/some-repository -f 2024-09-01 -outformat text
Пожалуйста, обратитесь к документации за дополнительными вариантами использования и вводной информацией.
Gitxray корректно обрабатывает ограничения скорости (Rate Limits) и может работать «из коробки» без токена GitHub API, но вы, скорее всего, довольно быстро достигнете лимитов (небольшой или средний репозиторий с 10+ участниками может обрабатываться часами, пока ожидается сброс лимитов). GitHub подробно описывает это в своей документации.
Однако создание простого токена только для чтения с доступом к ПУБЛИЧНЫМ репозиториям поможет значительно смягчить эти ограничения. Если вы не спешите или можете оставить gitxray работать, вы сможете использовать его в полной мере, так как он приостанавливает выполнение в ожидании снятия лимитов.
Затем вы можете безопасно загрузить токен, используя (это предотвращает отображение токена на экране или его запись в истории команд оболочки):
read -rs GH_ACCESS_TOKEN
export
Gitxray может опционально использовать API VirusTotal для проверки любых хостов, обнаруженных с помощью API поиска кода GitHub, но для этого требуется ключ API VirusTotal. Инструкции по получению ключа API VirusTotal доступны по адресу: https://docs.virustotal.com/docs/please-give-me-an-api-key
К сожалению, персональные ключи API (на сегодняшний день) ограничены VirusTotal до 500 запросов в день.
Получив ключ API, вы можете безопасно загрузить его в своё окружение с помощью:
read -rs VT_API_KEY
export
gitxray был написан без использования внешних зависимостей пакетов, кроме библиотеки requests.
gitxray находится на PyPI и может быть установлен и обновлён с помощью:
pip install gitxray --upgrade
После установки просто запустите gitxray из командной строки, введя:
gitxray -h
gitxray -o https://github.com/kulkansecurity

Вы также можете запустить gitxray напрямую, клонировав или загрузив его репозиторий GitHub и выполнив:
python3 -m pip install -r requirements.txt
cd src/
python3 -m gitxray.gitxray
Необходимо указать один из следующих:
-r, --repository [URL] - Указывает один репозиторий для проверки. URL может необязательно начинаться с https://github.com/. Пример: --repository https://github.com/example/repo
-rf, --repositories-file [FILEPATH] - Указывает путь к файлу, содержащему список репозиториев, каждый на новой строке. Файл должен существовать. Пример: --repositories-file ./list_of_repos.txt
-o, --organization [URL] - Указывает организацию для проверки всех репозиториев в этой организации. URL может необязательно начинаться с https://github.com/. Пример: --organization https://github.com/exampleOrg
Ниже приведены необязательные, но очень полезные аргументы в обычном использовании gitxray.
-l, --list - Вывести список участников, если указан репозиторий, или список репозиториев, если указана организация. Полезно для дальнейшего фокусирования на конкретных сущностях. Пример: --list
-c, --contributor [USERNAMES] - Список имён пользователей GitHub через запятую, на которых следует сосредоточиться в указанном репозитории или организации. Пример: --contributor user1,user2
-f, --filters [KEYWORDS] - Ключевые слова через запятую для фильтрации результатов, например, 'user_input', 'association' или 'mac'. Пример: --filters user_input,association,mac
-out, --outfile [FILEPATH] - Указывает путь к выходному файлу журнала. Не может быть каталогом. Пример: --outfile ./output.log
-outformat, --output-format [FORMAT] - Устанавливает формат файла журнала. Поддерживаемые форматы: html, text и json. По умолчанию html. Пример: --output-format json
--shush - Делает Gitxray более тихим, не отображая вывод, связанный с прогрессом. Пример: --shush--debug - Включает режим отладки для подробного и расширенного вывода. Пример: --debugПользователь несёт единоличную ответственность за то, чтобы этот инструмент использовался в соответствии с применимыми законами и нормативными актами, включая получение надлежащего разрешения на сканирование репозиториев и распространение любых сгенерированных результатов. Несанкционированное использование или распространение результатов может нарушать местные, национальные или международные законы.