
概述
Pillager旨在提供一种简单的方法,利用Go的强并发模型递归地搜索目录中的敏感信息。Pillager基于目前几个功能强大的项目实现其功能,一旦Pillager找到与指定模式匹配的文件,就会使用一系列并发工作线程扫描该文件,每个并发工作线程从作业队列中提取一行文件,并查找敏感模式匹配项。所有可用的模式过滤器可以在一个rules.toml文件中定义,或者广大研究人员也可以选择使用默认的规则集。
工具安装
Go
如果你已经在系统中安装好了Go环境,我们就可以使用go get来安装Pillager了:
go get github.com/brittonhayes/pillager
Scoop(Windows)
scoop bucket add pillager https://github.com/brittonhayes/pillager-scoop.git scoop install pillager
Homebrew(macOS/linux)
brew tap brittonhayes/homebrew-pillager brew install pillager
工具使用
我们可以使用pillager命令来查看该工具所有支持的命令:
# To see instructions for the entire application pillager # From any subcommand pillager [cmd] --help
工具配置
Gitleaks规则
Pillager提供了针对Gitleaks规则的完整支持,我们可以通过一个rules.toml文件来传递规则,或者直接使用默认规则:
# rules.toml title = "pillager rules" [[rules]] description = "AWS Access Key" regex = '''(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}''' tags = ["key", "AWS"] [[rules.entropies]] Min = "3.5" Max = "4.5" Group = "1" [[rules]] description = "Email Address" regex = '''(?i)([A-Za-z0-9!#$%&'*+//=?^_{|.}~-]+@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)''' tags = ["email", "User Info"]
内置输出格式
Pillager拥有一系列内置的输出格式,我们可以自行选择。
基本格式:
pillager hunt .
JSON:
pillager hunt ./example -f json | jq .
YAML:
pillager hunt . -f yaml
HTML:
pillager hunt . -f html > results.html
HTML Table:
pillager hunt . -f html-table > results.html
Markdown:
pillager hunt . -f markdown > results.md
Markdown Table:
pillager hunt . -f table > results.md
自定义Go模板:
pillager hunt . --template "{{ range .Leaks}}Leak: {{.Line}}{{end}}"
来自文件的自定义Go模板:
pillager hunt . -t "$(cat templates/simple.tmpl)"
自定义模板
Pillager允许我们使用功能强大的go text/template来自定义开发输出格式。
基础风格:
{{/*basic.tmpl*/}} {{ range .Leaks -}} File: {{ .File }} Line: {{.LineNumber}} Offender: {{ .Offender }} {{ end -}}
Markdown风格:
{{/*markdown.tmpl*/}} # Results {{ range .Leaks}} ## {{ .File }} - Location: {{.LineNumber}} {{end}}
关于Gitleaks
你是否将未加密的密码、机密和任何其它不需要的数据类型存储在你的git源代码存储库中?Gitleaks为你提供了一种方法来扫描你的git存储库,以查找这些不需要的数据,这些数据应该是私有的,扫描可以自动化,以完全适合CI/CD工作流程,以便在密码识别更深入到代码库之前进行识别。
Gitleaks的一些很酷的功能包括:
支持私有存储库扫描以及需要基于密钥的身份验证的存储库。
支持Gitlab批量组织和存储库所有者(用户)存储库扫描,并提取请求扫描以在常见CI工作流中使用。
可以输出JSON和CSV格式的扫描结果以及其他报告工具和框架中的消费格式。
用于特定于环境的自定义的外部化配置,包括正则表达式规则。
可自定义的存储库名称,文件类型,提交ID,分支机构和正则表达式白名单,以减少误报。
通过使用src-d的go-git框架实现高性能。
工具运行截图

项目地址
Pillager:【GitHub传送门】

浙江省台州市 1F
这工具看着挺猛,真能扫出来一堆密钥吗?
江苏省常州市 2F
感觉还行,比手动翻文件强点。
印度 3F
gitleaks规则能自定义挺方便,改改正则就行 👍
印度 4F
要是误报太多就头疼了,有没有人试过实际效果?
河北省 B1
@ 光子吟游者 这个rules.toml文件应该放在项目根目录吧
湖南省郴州市 5F
之前用过类似工具,结果一堆false positive,烦死了
台湾省 6F
JSON输出对自动化处理友好,配合CI应该能跑起来
广东省佛山市 7F
Windows下scoop安装还算方便,省事了
海南省海口市 B1
@ Sky小飞鸟 Windows下scoop装完直接能用,挺省心的
菲律宾 8F
我刚入门,这个rules.toml具体放哪个目录啊?
广东省 9F
听说并发大了容易卡死,是不是得调工作线程数?
江苏省无锡市 10F
扫描大项目时性能咋样,SSD会不会直接被干趴?
湖南省衡阳市 11F
感觉默认规则不够用啊,还得自己加正则
浙江省嘉兴市 B1
@ 兔子甜点师 感觉默认规则确实不够用,我补了好几个自定义的
韩国 12F
用go写的工具确实快,扫了10G文件没卡
内蒙古包头市 B1
@ 梦魇笔记 要是能集成到pre-commit里就完美了,每次提交自动扫。
越南 13F
有人试过在Windows下跑吗?兼容性怎么样
河北省唐山市 B1
@ 笑笑的 Win10下跑过,wsl和powershell都正常,就是路径带空格得加引号。
广东省东莞市 B1
@ 笑笑的 Win10上跑过,兼容性没啥问题,就是杀软偶尔报错
日本 14F
误报率确实是个问题,得手动过滤一遍
澳大利亚 B1
@ 铁衣侯 误报确实需要手动筛,但总比漏报强
北京市 15F
扫出来一堆邮箱地址,实际有用的没几个 🤔
山东省滨州市 16F
之前用其他工具扫密钥,结果把测试数据都报出来了
重庆市 17F
并发数调到4比较稳,再高就容易崩
印度 18F
这工具配合git hooks用应该不错
菲律宾 B1
@ 孤僻症患者 我也在项目里加了git hooks,配合起来挺顺畅的
湖北省武汉市 19F
默认规则能覆盖常见场景吗?
河北省保定市 B1
@ 发呆的冰淇淋 基本够用,常见的API密钥、数据库连接串都能扫到。
四川省乐山市 B1
@ 发呆的冰淇淋 感觉默认规则够用了,没必要自己折腾
新喀里多尼亚 20F
之前用别的工具扫过SVN仓库,这玩意儿能支持不?
上海市 21F
默认规则里AWS密钥正则好像有点问题,实测漏报过。
上海市 B1
@ 小鹿橙子 AWS密钥那个正则我测试也漏了,得自己改改
日本 22F
扫出来的结果能直接导出到jira吗,不然还得手工整理。
日本 23F
命令行参数有点多,刚试了下-h没看明白output格式咋选。
泰国 24F
这玩意儿跟trufflehog比哪个误报少点啊?
日本 25F
我们公司项目扫出来200多个疑似泄露,结果全是测试数据。
浙江省 B1
@ 顽皮企鹅 实际用下来误报确实有点多,得花时间过滤
云南省 26F
为啥我brew安装报错啊,是不是tap源有问题?
广东省佛山市 27F
5G左右代码库跑起来内存占用大概多少?
日本 28F
感觉规则文件放项目根目录就行,跟.gitignore一个位置。
湖南省长沙市 B1
@ 被风吹散的拼图 刚试了下,配置文件位置确实放根目录最方便
江苏省南京市 29F
这个工具对代码安全审计很有帮助
日本 30F
想问下支持扫描压缩包里的文件吗?
马来西亚 31F
默认规则覆盖范围够用吗?感觉需要自己补充一些正则
日本 32F
Windows下用scoop装确实省事,不用折腾环境
浙江省绍兴市 33F
扫描大项目时内存占用怎么样?怕把机器跑崩了
江苏省扬州市 34F
用go写的工具性能就是好,扫起来飞快
北京市海淀区 35F
这玩意儿跟trufflehog相比哪个更好用?
日本 36F
扫了下公司旧项目,真挖出几个API key,吓一跳 666
新西兰 37F
gitleaks规则文件结构有点绕,新手估计得看半天
浙江省杭州市 38F
想问问扫描时能不能排除指定目录啊,比如node_modules?
日本 39F
我调到8个线程也没崩,可能跟硬件有关?
浙江省杭州市 40F
之前用trufflehog误报更多,这个至少结果整齐些
湖南省 41F
扫压缩包这事好像没提,文档里也没看到支持不
陕西省西安市 42F
我们CI里集成了,配合pre-commit用着还行
日本 43F
这个工具扫压缩包里的文件好像不行?
印度 44F
用go写的确实快,试了下扫20G没压力
江苏省淮安市 45F
要是能直接对接jira就完美了
黑龙江省哈尔滨市 46F
扫出来结果格式挺整齐,比手动查方便多了
安徽省合肥市 47F
刚试了下mac安装没问题,brew源挺稳的
日本 48F
正则规则写得好的话误报能少很多
浙江省 49F
这工具对代码审计挺有帮助的,准备团队推广下
重庆市 50F
挺好用的,直接上手。
印度 51F
rules.toml放根目录就行。
北京市 52F
这个工具在Mac M1上能跑吗?
海南省儋州市 53F
误报多到炸了,别指望全准。
越南 54F
文档里压缩包支持啊?
日本 55F
并发线程调到8,扫描速度真的飞起,CPU占用也还行。挺满意的
广东省东莞市 56F
默认规则已经能抓到AWS钥和邮箱,省了不少手工。真的省心
日本 57F
能排除node_modules目录吗?
台湾省 58F
输出json后想直接用jq过滤,参数怎么写最方便?还有格式化需求
北京市 59F
前几天我也用Pillager扫了个老项目,结果一堆泄露的API Key和密码,真是帮我省了好几天的手动审计时间 😂 估计再大点的仓库也能hold住。
韩国 60F
我公司刚用了这工具,快速定位到几个误泄的内部凭证,安全团队立马修复,还把规则细化,后面再也没出现同类问题,真省心。
广东省广州市 61F
有人说默认规则漏掉了部分AWS密钥,实际测了下发现确实有遗漏,建议自行补全。
湖南省 62F
看到有人把结果直接导入Jira,流程自动化好像更顺畅,大家可以分享一下实现细节吗?
马来西亚 63F
如果想把扫描结果写入数据库,需要自行实现哪些hook?有现成的插件吗?
日本 64F
输出格式还挺多,直接做成报告方便
日本 B1
@ 刘芳 导出报告省心多了
天津市 65F
这个并发模型挺高效的,适合批量处理。
台湾省 B1
@ Wraithshroud Go的并发处理大文件效率蛮高的
河南省周口市 66F
gitleaks规则可以自定义啊,这个灵活性不错
天津市 67F
这玩意儿还能扫私有仓库?
台湾省 B1
@ 老巷口 应该可以吧,就是用来扫敏感信息的
江苏省无锡市 68F
支持多种输出格式挺方便的
韩国 B1
@ NetherGhast 自定义模板也挺灵活的