
Nosey Parker é uma ferramenta de linha de comando que encontra segredos e informações sensíveis em dados textuais e histórico do Git.
Veja nossa postagem de anúncio https://www.praetorian.com/blog/titus-open-source-secret-scanner/. O repositório Titus pode ser encontrado em https://github.com/praetorian-inc/titus
Nosey Parker é uma ferramenta CLI que encontra segredos e informações sensíveis em dados textuais.
É essencialmente uma ferramenta especializada do tipo grep para detecção de segredos.
Foi projetada para segurança ofensiva (por exemplo, possibilitando movimento lateral em red teams), mas também pode ser útil para testes de segurança defensiva. Ela encontrou segredos em centenas de engajamentos de segurança ofensiva na Praetorian.
Principais funcionalidades:
O fluxo de trabalho típico é de três fases:
scanreportbrew install noseyparker
A página da última versão contém binários pré-compilados para Linux e macOS x86_64/aarch64.
docker pull ghcr.io/praetorian-inc/noseyparker:latest
O commit mais recente também está disponível através da tag main.
docker pull ghcr.io/praetorian-inc/noseyparker-alpine:latest
O commit mais recente também está disponível através da tag main.
https://aur.archlinux.org/packages/noseyparker
Nosey Parker não compila nativamente no Windows (#121). É possível executá-lo no Windows usando WSL1 e a versão nativa do Linux.
Isso foi testado com várias versões do Ubuntu Linux e macOS em ambas as arquiteturas x86_64 e aarch64.
Dependências necessárias:
cargo: abordagem recomendada: instale de https://rustup.rscmake: necessário para compilar a crate vectorscan-sys e algumas outras dependênciasboost: necessário para compilar a crate vectorscan-sys (versão suportada >=1.57)git: necessário para incorporar informações de versão na CLI noseyparkerpatch: necessário para compilar a crate vectorscan-syspkg-config: necessário para compilar a crate Executar o binário noseyparker sem argumentos imprime a ajuda de alto nível e sai.
Você pode obter ajuda abreviada para um comando específico executando noseyparker COMANDO -h.
Ajuda mais detalhada está disponível com o comando help ou a opção longa --help.
As versões pré-compiladas também incluem páginas de manual que reúnem a ajuda da linha de comando em um só lugar. Essas páginas de manual convertidas para o formato Markdown também estão incluídas no repositório aqui.
Se você tiver uma pergunta que não seja respondida por esta documentação, por favor inicie uma discussão.
O datastore é um diretório especial que o Nosey Parker usa para registrar suas descobertas e manter seu estado interno.
Um datastore será criado implicitamente pelo comando scan se necessário.
Cada entrada escaneada é chamada de blob. Cada blob tem um ID único, que é um digest SHA-1 calculado da mesma forma que o git faz.
Cada blob possui uma ou mais entradas de proveniência associadas a ele. Uma entrada de proveniência são metadados que descrevem como a entrada foi descoberta, como um arquivo no sistema de arquivos ou um arquivo no histórico do repositório Git.
Nosey Parker é um sistema baseado em regras que usa expressões regulares.
Cada regra possui um único padrão com pelo menos um grupo de captura que isola o conteúdo da correspondência do contexto ao redor.
Você pode listar as regras disponíveis com noseyparker rules list.
Uma coleção de regras é organizada em um conjunto de regras.
O conjunto de regras padrão do Nosey Parker inclui regras que detectam coisas que parecem ser segredos.
Outros conjuntos de regras estão disponíveis; você pode listá-los com noseyparker rules list.
Quando o padrão de uma regra corresponde a uma entrada, ele produz uma correspondência. Uma correspondência é definida exclusivamente por uma regra, ID do blob, deslocamento inicial em bytes e deslocamento final em bytes; esses campos são usados para calcular um identificador único de correspondência.
Correspondências que compartilham uma regra e grupos de captura são combinadas em uma descoberta. Em outras palavras, uma descoberta é um grupo de correspondências. Esta é a unidade de alto nível de relatório do Nosey Parker.
Ao usar a imagem Docker, substitua noseyparker nos comandos a seguir por uma invocação Docker que use um volume montado:
docker run -v "$PWD":/scan ghcr.io/praetorian-inc/noseyparker:latest <ARGS>
O contêiner Docker é executado com /scan como seu diretório de trabalho, então montar $PWD em /scan no contêiner fará com que a conclusão por tabulação e caminhos relativos em sua invocação de linha de comando funcionem.

Nosey Parker possui suporte nativo para escanear arquivos, diretórios e todo o histórico de repositórios Git.
Por exemplo, se você tiver um clone Git do CPython localmente em cpython.git, pode escaneá-lo com o comando scan.
Nosey Parker criará um novo datastore em cpython.np e salvará suas descobertas lá.
(O nome cpython.np é irrelevante e pode ser o que você quiser.)
$ noseyparker scan -d cpython.np cpython.git
Scanned 19.19 GiB from 335,849 blobs in 17 seconds (1.11 GiB/s); 2,178/2,178 new matches
Rule Findings Matches Accepted Rejected Mixed Unlabeled
──────────────────────────────────────────────────────────────────────────────────────────────
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
Run the `report` command next to show finding details.
Veja noseyparker help scan para mais detalhes.
Por exemplo, para escanear o próprio repositório Nosey Parker:
noseyparker scan --datastore np.noseyparker --git-url https://github.com/praetorian-inc/noseyparker
Veja noseyparker help scan para mais detalhes.
Use --github-user=USUÁRIO ou --github-org=ORG. Por exemplo, para escanear repositórios acessíveis pertencentes ao usuário octocat:
noseyparker scan --datastore np.noseyparker --github-user octocat
Esses especificadores de entrada usarão um token GitHub opcional se disponível na variável de ambiente NP_GITHUB_TOKEN.
Fornecer um token de acesso oferece um limite de taxa de API mais alto e pode tornar repositórios adicionais acessíveis a você.
Veja noseyparker help scan para mais detalhes.
Veja o projeto complementar, Nosey Parker Explorer:



Nosey Parker imprime um resumo de suas descobertas quando termina de escanear. Você também pode executar esta etapa separadamente após o escaneamento:
$ 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
Formatos de saída adicionais são suportados, incluindo JSON e JSON lines, através da opção --format=FORMAT.
Veja noseyparker help summarize para mais detalhes.
Use o comando github repos list para listar URLs de repositórios pertencentes a usuários ou organizações do GitHub.
Este comando usa a API REST do GitHub para enumerar repositórios pertencentes a usuários ou organizações.
Por exemplo:
$ 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
Este comando usará um token GitHub opcional se disponível na variável de ambiente NP_GITHUB_TOKEN.
Fornecer um token de acesso oferece um limite de taxa de API mais alto e pode tornar repositórios adicionais acessíveis a você.
Formatos de saída adicionais são suportados, incluindo JSON e JSON lines, através da opção --format=FORMAT.
Veja noseyparker help github para mais detalhes.
Nosey Parker possui algumas integrações de terceiros:
Se você tiver uma integração que gostaria de compartilhar e que não está listada aqui, por favor crie um PR.
Faça perguntas ou compartilhe ideias na área de Discussões.
Contribuições são bem-vindas, especialmente novas regras de regex. O desenvolvimento de novas regras de regex é detalhado em um documento separado.
Se você está considerando fazer mudanças significativas no código, por favor abra uma issue ou inicie uma discussão primeiro.
Este projeto possui uma série de hooks pre-commit habilitados que você é incentivado a usar.
Para instalá-los em seu repositório local, certifique-se de ter o pre-commit instalado e execute:
$ pre-commit install
Essas verificações ajudarão a detectar rapidamente erros simples.
Nosey Parker é licenciado sob a Apache License, Versão 2.0.
vectorscan-syssha256sum: necessário para calcular digests (frequentemente fornecido pelo pacote coreutils)zsh: necessário para scripts de compilaçãocreate-release.zsh$ rm -rf release && ./scripts/create-release.zsh
Se for bem-sucedido, isso produzirá uma estrutura de diretórios em release preenchida com artefatos de lançamento.
O programa de linha de comando estará em release/bin/noseyparker.