
Nosey Parker — это инструмент командной строки, который находит секреты и конфиденциальную информацию в текстовых данных и истории Git.
См. наш анонс https://www.praetorian.com/blog/titus-open-source-secret-scanner/. Репозиторий Titus находится по адресу https://github.com/praetorian-inc/titus
Nosey Parker — это CLI-инструмент для поиска секретов и конфиденциальной информации в текстовых данных.
По сути, это специализированная утилита, похожая на grep, предназначенная для обнаружения секретов.
Он разработан для наступательной безопасности (например, для обеспечения латерального перемещения в рамках red team), но также может быть полезен для тестирования защитной безопасности. Он находил секреты в сотнях наступательных проектов по безопасности в Praetorian.
Ключевые особенности:
Типичный рабочий процесс состоит из трёх этапов:
scanreportbrew install noseyparker
На странице последнего релиза доступны предварительно собранные бинарные файлы для x86_64/aarch64 Linux и macOS.
docker pull ghcr.io/praetorian-inc/noseyparker:latest
Самый последний коммит также доступен по тегу main.
docker pull ghcr.io/praetorian-inc/noseyparker-alpine:latest
Самый последний коммит также доступен по тегу main.
https://aur.archlinux.org/packages/noseyparker
Nosey Parker не собирается нативно в Windows (#121). Однако его можно запустить в Windows с помощью WSL1 и нативного Linux-релиза.
Проверено с несколькими версиями Ubuntu Linux и macOS на x86_64 и aarch64.
Необходимые зависимости:
cargo: рекомендуется установить с https://rustup.rscmake: необходим для сборки крейта vectorscan-sys и некоторых других зависимостейboost: необходим для сборки крейта vectorscan-sys (поддерживаемая версия >=1.57)git: необходим для встраивания информации о версии в CLI noseyparkerpatch: необходим для сборки крейта vectorscan-syspkg-config: необходим для сборки крейта Запуск бинарного файла noseyparker без аргументов выводит справку верхнего уровня и завершает работу.
Вы можете получить сокращённую справку для конкретной команды, выполнив noseyparker КОМАНДА -h.
Более подробная справка доступна с помощью команды help или длинного флага --help.
Предварительно собранные релизы также содержат man-страницы, в которых собрана справка командной строки в одном месте. Эти man-страницы, преобразованные в формат Markdown, также включены в репозиторий здесь.
Если у вас есть вопрос, на который нет ответа в этой документации, пожалуйста, начните обсуждение.
Хранилище — это специальный каталог, который Nosey Parker использует для записи своих находок и поддержания внутреннего состояния.
Хранилище будет неявно создано командой scan, если это необходимо.
Каждый сканируемый входной элемент называется blob'ом. Каждый blob имеет уникальный идентификатор blob ID, представляющий собой SHA-1-дайджест, вычисляемый так же, как это делает git.
С каждым blob'ом связана одна или несколько записей происхождения (provenance). Запись происхождения — это метаданные, описывающие, как был обнаружен входной элемент, например, файл в файловой системе или файл в истории Git-репозитория.
Nosey Parker — это система на основе правил, использующая регулярные выражения.
Каждое правило имеет один шаблон с хотя бы одной группой захвата, которая изолирует содержимое совпадения от окружающего контекста.
Вы можете просмотреть доступные правила с помощью noseyparker rules list.
Набор правил объединяется в набор правил (ruleset).
Набор правил по умолчанию Nosey Parker включает правила, которые обнаруживают то, что выглядит как секреты.
Доступны и другие наборы правил; вы можете просмотреть их с помощью noseyparker rules list.
Когда шаблон правила совпадает с входным элементом, создаётся совпадение (match). Совпадение однозначно определяется правилом, blob ID, начальным смещением в байтах и конечным смещением в байтах; эти поля используются для вычисления уникального идентификатора совпадения.
Совпадения, имеющие одно и то же правило и группы захвата, объединяются в находку (finding). Другими словами, находка — это группа совпадений. Это основная единица отчётности Nosey Parker.
При использовании Docker-образа замените noseyparker в следующих командах на вызов Docker с смонтированным томом:
docker run -v "$PWD":/scan ghcr.io/praetorian-inc/noseyparker:latest <АРГУМЕНТЫ>
Docker-контейнер работает с рабочим каталогом /scan, поэтому монтирование $PWD в /scan в контейнере сделает автодополнение и относительные пути в вашей командной строке рабочими.

Nosey Parker имеет встроенную поддержку сканирования файлов, каталогов и всей истории Git-репозиториев.
Например, если у вас есть локальный клон CPython по пути cpython.git, вы можете отсканировать его с помощью команды scan.
Nosey Parker создаст новое хранилище в cpython.np и сохранит там свои находки.
(Имя cpython.np не является обязательным и может быть любым.)
$ noseyparker scan -d cpython.np cpython.git
Отсканировано 19.19 ГБ из 335,849 blob'ов за 17 секунд (1.11 ГБ/с); 2,178/2,178 новых совпадений
Rule Находки Совпадения Принято Отклонено Смешанные Неразмеченные
──────────────────────────────────────────────────────────────────────────────────────────────────────
Generic API Key 1 8 0 0 0 1
Generic Password 8 1,283 0 0 0 8
Generic Username and Password 2 40 0 0 0 2
HTTP Bearer Token 1 108 0 0 0 1
PEM-Encoded Private Key 61 151 0 0 0 61
netrc Credentials 27 588 0 0 0 27
Затем выполните команду `report` для отображения подробностей находок.
См. noseyparker help scan для получения дополнительной информации.
Например, для сканирования самого репозитория Nosey Parker:
noseyparker scan --datastore np.noseyparker --git-url https://github.com/praetorian-inc/noseyparker
См. noseyparker help scan для получения дополнительной информации.
Используйте --github-user=ПОЛЬЗОВАТЕЛЬ или --github-org=ОРГАНИЗАЦИЯ. Например, для сканирования доступных репозиториев, принадлежащих пользователю octocat:
noseyparker scan --datastore np.noseyparker --github-user octocat
Эти спецификаторы входных данных будут использовать токен GitHub, если он доступен в переменной окружения NP_GITHUB_TOKEN.
Предоставление токена доступа даёт более высокий лимит API и может сделать для вас доступными дополнительные репозитории.
См. noseyparker help scan для получения дополнительной информации.
См. сопутствующий проект Nosey Parker Explorer:



Nosey Parker выводит сводку по находкам после завершения сканирования. Вы также можете выполнить этот шаг отдельно после сканирования:
$ noseyparker summarize --datastore np.cpython
Rule Distinct Groups Total Matches
───────────────────────────────────────────────────────────
PEM-Encoded Private Key 1,076 1,192
Generic Secret 331 478
netrc Credentials 42 3,201
Generic API Key 2 31
md5crypt Hash 1 2
Поддерживаются дополнительные форматы вывода, включая JSON и JSON lines, с помощью опции --format=FORMAT.
См. noseyparker help summarize для получения дополнительной информации.
Используйте команду github repos list для вывода списка URL репозиториев, принадлежащих пользователям или организациям GitHub.
Эта команда использует REST API GitHub для перечисления репозиториев, принадлежащих пользователям или организациям.
Например:
$ noseyparker github repos list --user octocat
https://github.com/octocat/Hello-World.git
https://github.com/octocat/Spoon-Knife.git
https://github.com/octocat/boysenberry-repo-1.git
https://github.com/octocat/git-consortium.git
https://github.com/octocat/hello-worId.git
https://github.com/octocat/linguist.git
https://github.com/octocat/octocat.github.io.git
https://github.com/octocat/test-repo1.git
Эта команда будет использовать токен GitHub, если он доступен в переменной окружения NP_GITHUB_TOKEN.
Предоставление токена доступа даёт более высокий лимит API и может сделать для вас доступными дополнительные репозитории.
Поддерживаются дополнительные форматы вывода, включая JSON и JSON lines, с помощью опции --format=FORMAT.
См. noseyparker help github для получения дополнительной информации.
Nosey Parker имеет несколько сторонних интеграций:
Если у вас есть интеграция, которой вы хотели бы поделиться и которая не указана здесь, создайте PR.
Задавайте вопросы или делитесь идеями в разделе Обсуждения.
Приветствуются любые вклады, особенно новые правила регулярных выражений. Разработка новых правил регулярных выражений подробно описана в отдельном документе.
Если вы планируете внести существенные изменения в код, пожалуйста, сначала откройте issue или начните обсуждение.
В этом проекте включены некоторые pre-commit хуки, которые рекомендуется использовать.
Чтобы установить их в локальном репозитории, убедитесь, что pre-commit установлен, и выполните:
$ pre-commit install
Эти проверки помогут быстро обнаружить простые ошибки.
Nosey Parker лицензирован в соответствии с Apache License, Version 2.0.
vectorscan-syssha256sum: необходим для вычисления дайджестов (часто предоставляется пакетом coreutils)zsh: необходим для сборочных скриптовcreate-release.zsh$ rm -rf release && ./scripts/create-release.zsh
При успешном выполнении в каталоге release будет создана структура с артефактами релиза.
Программа командной строки будет находиться по пути release/bin/noseyparker.