#api-key #regex #secret #scanner #rusty #secret-key #hog

构建 rusty_hogs

本项目提供了一组扫描器,它们将使用正则表达式尝试检测敏感信息的存在,例如API密钥、密码和个人信息。它默认包含一组正则表达式,但也接受包含您自定义正则表达式的JSON对象。

1个稳定版本

1.0.1 2020年1月23日

#603 in 构建工具

Apache-2.0

2MB
2K SLoC

Rust 1.5K SLoC // 0.0% comments Python 303 SLoC // 0.1% comments Shell 26 SLoC // 0.1% comments

Rusty Hogs

Rusty Hog是一个在Rust中构建的性能秘密扫描器,基于Python编写的TruffleHog。Rusty Hog提供以下二进制文件:

  • Ankamali Hog:扫描Google文档中的秘密。
  • Berkshire Hog:扫描S3存储桶中的秘密。
  • Choctaw Hog:扫描Git存储库中的秘密。

目录

用法

本项目提供了一组使用正则表达式尝试检测敏感信息(如API密钥、密码和个人信息)的扫描器。它默认包含一组正则表达式,但也接受包含您自定义正则表达式的JSON对象。

如何安装

在“发行版”标签页上下载并解压缩最新的ZIP文件。然后,使用 -h 运行每个二进制文件以查看用法。

wget https://github.com/newrelic/rusty-hog/releases/download/v1.0.0/rustyhogs-1.0.0.zip
unzip rustyhogs-1.0.0.zip
darwin_releases/choctaw_hog -h

如何构建

  • 请确保已安装 Rust 并在您的路径中。
  • 克隆此仓库,然后运行 cargo build --release。二进制文件位于 target/release
  • 要构建和查看HTML文档,请运行cargo doc --no-deps --open
  • 要运行单元测试,请运行cargo test
  • 要为AWS Lambda环境交叉编译Berkshire Hog,首先安装cross。然后运行以下命令,并将berkshire_lambda.zip上传到您的AWS Lambda仪表板
cross build --release --target x86_64-unknown-linux-musl
cp target/x86_64-unknown-linux-musl/release/berkshire_hog bootstrap
zip -j berkshire_lambda.zip bootstrap

Anakamali Hog用法

USAGE:
    ankamali_hog [FLAGS] [OPTIONS] <GDRIVEID>

FLAGS:
        --caseinsensitive    Sets the case insensitive flag for all regexes
        --entropy            Enables entropy scanning
        --oauthsecret        Path to an OAuth secret file (JSON) ./clientsecret.json by default
        --oauthtoken         Path to an OAuth token storage file ./temp_token by default
        --prettyprint        Outputs the JSON in human readable format
    -v, --verbose            Sets the level of debugging information
    -h, --help               Prints help information
    -V, --version            Prints version information

OPTIONS:
    -o, --outputfile <OUTPUT>    Sets the path to write the scanner results to (stdout by default)
        --regex <REGEX>          Sets a custom regex JSON file

ARGS:
    <GDRIVEID>    The ID of the Google drive file you want to scan

Berkshire Hog (CLI) 用法

USAGE:
    berkshire_hog [FLAGS] [OPTIONS] <S3URI> <S3REGION>

FLAGS:
        --caseinsensitive    Sets the case insensitive flag for all regexes
        --entropy            Enables entropy scanning
        --prettyprint        Outputs the JSON in human readable format
    -r, --recursive          Recursively scans files under the prefix
    -v, --verbose            Sets the level of debugging information
    -h, --help               Prints help information
    -V, --version            Prints version information

OPTIONS:
    -o, --outputfile <OUTPUT>    Sets the path to write the scanner results to (stdout by default)
        --profile <PROFILE>      When using a configuration file, enables a non-default profile
        --regex <REGEX>          Sets a custom regex JSON file

ARGS:
    <S3URI>       The location of a S3 bucket and optional prefix or filename to scan. This must be written in the form
                  s3://mybucket[/prefix_or_file]
    <S3REGION>    Sets the region of the S3 bucket to scan

Berkshire Hog (Lambda) 用法

Berkshire Hog目前设计为用作Lambda函数。这是基本的数据流

    ┌───────────┐              ┌───────┐     ┌────────────────┐     ┌────────────┐
    │ S3 bucket │ ┌────────┐   │       │     │ Berkshire Hog  │     │ S3 bucket  │
    │  (input) ─┼─┤S3 event├──▶│  SQS  │────▶│    (Lambda)    │────▶│  (output)  │
    │           │ └────────┘   │       │     │                │     │            │
    └───────────┘              └───────┘     └────────────────┘     └────────────┘

为了以这种方式运行Berkshire Hog,请设置以下内容

  1. 配置输入存储桶,为每个PUSH/PUT事件向SQS发送一个"事件"。
  2. 设置SQS主题以接受来自S3的事件,包括IAM权限。
  3. 使用IAM对SQS和S3的访问权限运行Berkshire Hog。

Choctaw Hog用法

USAGE:
    choctaw_hog [FLAGS] [OPTIONS] <GITPATH>

FLAGS:
        --caseinsensitive    Sets the case insensitive flag for all regexes
        --entropy            Enables entropy scanning
        --prettyprint        Outputs the JSON in human readable format
    -v, --verbose            Sets the level of debugging information
    -h, --help               Prints help information
    -V, --version            Prints version information

OPTIONS:
    -o, --outputfile <OUTPUT>            Sets the path to write the scanner results to (stdout by default)
        --regex <REGEX>                  Sets a custom regex JSON file
        --since_commit <SINCECOMMIT>     Filters commits based on date committed (branch agnostic)
        --until_commit <SINCECOMMIT>     Filters commits based on date committed (branch agnostic)
        --sshkeypath <SSHKEYPATH>        Takes a path to a private SSH key for git authentication; defaults to ssh-agent
        --sshkeyphrase <SSHKEYPHRASE>    Takes a passphrase to a private SSH key for git authentication; defaults to
                                         none
        --httpsuser <HTTPSUSER>          Takes a username for HTTPS-based authentication
        --httpspass <HTTPSPASS>          Takes a password for HTTPS-based authentication

ARGS:
    <GITPATH>    Sets the path (or URL) of the Git repo to scan. SSH links must include username (git@)

项目信息

开源许可

本项目采用Apache 2许可

支持

New Relic已开源此项目。本项目按现状提供,不提供保修或支持,尽管您可以在GitHub上报告问题和贡献项目。

请勿向New Relic全球技术支持报告此软件的问题。

社区

New Relic主办并管理一个在线论坛,客户可以与New Relic员工以及其他客户互动,获取帮助和分享最佳实践。与所有官方New Relic开源项目一样,New Relic Explorer的Hub中有一个相关的社区主题。您可以在以下位置找到此项目的话题/线程

https://discuss.newrelic.com/t/rusty-hog-multi-platform-secret-key-scanner/90117

问题/增强请求

此存储库的问题标签页中提交问题和增强请求。在提交新问题之前,请搜索和审查现有开放问题。

贡献

欢迎贡献(如果您提交增强请求,则预期您将受邀自行贡献)。请查看我们的贡献指南

请注意,在提交您的pull请求时,您需要通过CLA-Assistant的点击通过签署CLA。如果您想执行我们的企业CLA,或如果您有任何问题,请通过[email protected]给我们发邮件。

功能路线图

  • 1.1:企业功能

    • 支持配置文件(而不是命令行参数)
    • 支持环境变量而不是CLI参数
    • 多线程
    • 更好的上下文检测和误报过滤(GitHound,机器学习)
    • 使用Rusoto而不是s3-rust
    • 添加JIRA扫描器
    • 添加文件系统和存档扫描器
    • 使用Rust功能来减少编译依赖?
  • 1.2:与更大的脚本和UI的集成

    • 支持Github API进行更大的组织管理
      • 扫描所有存储库以获取用户列表
      • 扫描组织中的所有存储库
    • 生成网络报告或网络界面。支持从UI生成“保存状态”。
    • 代理/管理模型
    • 调度程序进程(受保存状态支持阻止)

这个名字的含义是什么?

TruffleHog被认为是事实上的标准/原始密钥扫描器。我已经基于TruffleHog为各种平台构建了一系列秘密扫描工具,需要一种命名方案,所以我从Wikipedia的猪品种列表开始。因此,每个工具名称都是以“猪”开始的品种,从“A”开始。

依赖项

~59MB
~1M SLoC