freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

如何使用Whispers识别静态结构化文本中的硬编码敏感信息
2021-12-27 21:11:33
所属地 广西

关于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://github.com/Skyscanner/whispers/blob/master/whispers/config.yml

https://github.com/Skyscanner/whispers/blob/master/whispers/rules

# 敏感数据 # 敏感数据保护 # 结构化数据安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录