如何使用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安装:

  1. pip3 install whispers

GitHub安装:

  1. git clone https://github.com/Skyscanner/whispers
  2. cd whispers
  3. make install

工具使用

命令行接口:

  1. whispers --help
  2. whispers --info
  3. whispers source/code/fileOrDir
  4. whispers --config config.yml source/code/fileOrDir
  5. whispers --output /tmp/secrets.yml source/code/fileOrDir
  6. whispers --rules aws-id,aws-secret source/code/fileOrDir
  7. whispers --severity BLOCKER,CRITICAL source/code/fileOrDir
  8. whispers --exitcode 7 source/code/fileOrDir

Python:

  1. from whispers.cli import parse_args
  2. from whispers.core import run
  3. src = "tests/fixtures"
  4. configfile = "whispers/config.yml"
  5. args = parse_args(["-c", configfile, src])
  6. for secret in run(args):
  7. print(secret)

工具配置

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

  1. include:
  2. files:
  3. - "**/*.yml"
  4. exclude:
  5. files:
  6. - "**/test/**/*"
  7. - "**/tests/**/*"
  8. keys:
  9. - ^foo
  10. values:
  11. - bar$
  12. rules:
  13. starks:
  14. message: Whispers from the North
  15. severity: CRITICAL
  16. value:
  17. regex: (Aria|Ned) Stark
  18. ignorecase: True

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

  1. whispers --config config.yml --rules starks src/file/or/dir

自定义规则

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

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

插件

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

  1. class PluginName:
  2. def pairs(self, file):
  3. yield "key", "value"

项目地址

Whispers:【GitHub传送门】

什么是SIEM?如何发挥出SIEM的价值?

SIEM一般被认为是一个日志聚合的设备。然而,SIEM的主要能力是提供威胁检测,最好还能够实现事件调查、加速事件响应时间,同时还能有统一、整体的基础设施视角。SIEM只是保护和监控网络和系统的拼图之一;而从Michael Oberlaender看来,这块拼图由...
服务器安全网络安全SIEM

Qlog:一款功能强大的Windows安全日志工具

关于QlogQlog是一款功能强大的Windows安全日志工具,该工具可以为Windows操作系统上的安全相关事件提供丰富的事件日志记录功能。该工具目前仍处于积极开发状态,当前版本为Alpha版本。Qlog没有使用API钩子技术,也不需要在目标系统上安装驱动程...
服务器安全安全工具Qlog安全日志工具

隐藏在网站CSS中的窃密脚本

在过去的两年里,网络犯罪分子使用了各种各样的方法来在网上商城的各个地方隐藏针对Credit Card的信息窃取代码,以防止被安全检测方案所发现,而这些信息窃取代码也被称之为Web Skimmer或Magecart脚本。在此之前,研究人员曾在网站Logo、缩略图...
服务器安全恶意代码css脚本

三招教企业抵御小流量DDoS攻击

很多由僵尸网络驱动的DDoS攻击利用了成千上万的被感染的物联网,通过向受害者网站发起大量的流量为攻击手段,最终造成严重后果。不断推陈出新的防御方式使这种分布式拒绝服务攻击也在变化着自己的战术,从大流量向“小流量”转变。一项数据显示,5 Gbit/s及以下的攻击...
服务器安全DDos攻击僵尸网络IoT