1个稳定版本
1.0.1 | 2020年1月23日 |
---|
#603 in 构建工具
2MB
2K SLoC
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,请设置以下内容
- 配置输入存储桶,为每个PUSH/PUT事件向SQS发送一个"事件"。
- 设置SQS主题以接受来自S3的事件,包括IAM权限。
- 使用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生成“保存状态”。
- 代理/管理模型
- 调度程序进程(受保存状态支持阻止)
- 支持Github API进行更大的组织管理
这个名字的含义是什么?
TruffleHog被认为是事实上的标准/原始密钥扫描器。我已经基于TruffleHog为各种平台构建了一系列秘密扫描工具,需要一种命名方案,所以我从Wikipedia的猪品种列表开始。因此,每个工具名称都是以“猪”开始的品种,从“A”开始。
依赖项
~59MB
~1M SLoC