
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: необходим для сборки крейта vectorscan-syssha256sum: необходим для вычисления дайджестов (часто предоставляется пакетом coreutils)zsh: необходим для сборочных скриптовcreate-release.zsh$ rm -rf release && ./scripts/create-release.zsh
При успешном выполнении в каталоге release будет создана структура с артефактами релиза.
Программа командной строки будет находиться по пути release/bin/noseyparker.
Запуск бинарного файла 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 новых совпадений