如何使用Whispers识别静态结构化文本中的硬编码敏感信息

2022-10-05    分类: 网站建设

如何使用Whispers识别静态结构化文本中的硬编码敏感信息

关于Whispers

Whispers是一款功能强大的静态代码分析工具,该工具可以帮助广大研究人员解析各种常见的数据格式,并搜索硬编码凭证和危险函数。Whispers支持在命令行终端中运行,或者也可以将其集成到CI/CD管道中。

检测功能 密码 API令牌 AWS密钥 私钥 凭证哈希 身份认证令牌 危险函数 敏感文件 支持的格式

Whispers本质上来说是一款结构化的问版本解析工具,而不是一个代码分析工具。

下面列出的是当前版本Whispers支持的数据格式:

YAML JSON XML .npmrc .pypirc .htpasswd .properties pip.conf conf / ini Dockerfile Dockercfg Shell scripts Python3

Python3文件会以AST进行解析,因为这是原生语言支持。

声明和赋值格式

该工具可以将下列语言文件解析为文本,并检测常见的变量声明和赋值模式:

JavaScript Java Go PHP 特殊格式支持 AWS凭证文件 JDBC连接字符串 Jenkins配置文件 SpringFramework配置文件 Java属性文件 Dockercfg注册认证文件 GitHub令牌 工具安装

通过PyPI安装:

pip3 install whispers

GitHub安装:

git clone https://github.com/Skyscanner/whispers cd whispers make install 工具使用

命令行接口:

whispers --help   whispers --info   whispers source/code/fileOrDir   whispers --config config.yml source/code/fileOrDir   whispers --output /tmp/secrets.yml source/code/fileOrDir   whispers --rules aws-id,aws-secret source/code/fileOrDir   whispers --severity BLOCKER,CRITICAL source/code/fileOrDir   whispers --exitcode 7 source/code/fileOrDir

Python:

from whispers.cli import parse_args   from whispers.core import run       src = "tests/fixtures"   configfile = "whispers/config.yml"   args = parse_args(["-c", configfile, src])   for secret in run(args):   print(secret) 工具配置

Whispers工具支持多种配置选项,我们可以根据需要来配置是否在结果中互殴文件路径、密钥或其他值等。config.yml的参考格式如下:

include:   files:   - "**/*.yml"       exclude:   files:   - "**/test/**/*"   - "**/tests/**/*"   keys:   - ^foo   values:   - bar$       rules:   starks:   message: Whispers from the North   severity: CRITICAL   value:   regex: (Aria|Ned) Stark   ignorecase: True

最快的配置方法就是将config.yml文件拷贝至一个新的文件中,然后直接将其以参数形式传递给Whispers:

whispers --config config.yml --rules starks src/file/or/dir 自定义规则

我们可以通过下列方式,在whispers/rules文件中添加和编辑自己的自定义规则:

rule-id: # unique rule name   description: Values formatted like AWS Session Token   message: AWS Session Token # report will show this message   severity: BLOCKER # one of BLOCKER, CRITICAL, MAJOR, MINOR, INFO       key: # specify key format   regex: (aws.?session.?token)?   ignorecase: True # case-insensitive matching       value: # specify value format   regex: ^(?=.*[a-z])(?=.*[A-Z])[A-Za-z0-9\+\/]{270,450}$   ignorecase: False # case-sensitive matching   minlen: 270 # value is at least this long   isBase64: True # value is base64-encoded   isAscii: False # value is binary data when decoded   isUri: False # value is not formatted like a URI       similar: 0.35 # maximum allowed similarity between key and value   # (1.0 being exactly the same) 插件

Whispers中所有的解析功能都是通过插件实现的,每一个插件都会使用pairs()方法实现一个类,并返回匹配规则的键值对:

class PluginName:   def pairs(self, file):   yield "key", "value" 项目地址

Whispers:【GitHub传送门】

原文地址:https://www.freebuf.com/sectool/317584.html

网站标题:如何使用Whispers识别静态结构化文本中的硬编码敏感信息
地址分享:/news8/202208.html

成都网站建设公司_创新互联,为您提供网站策划做网站网站建设响应式网站建站公司网站导航

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司