如何使用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.  
  3. whispers --info 
  4.  
  5. whispers source/code/fileOrDir 
  6.  
  7. whispers --config config.yml source/code/fileOrDir 
  8.  
  9. whispers --output /tmp/secrets.yml source/code/fileOrDir 
  10.  
  11. whispers --rules aws-id,aws-secret source/code/fileOrDir 
  12.  
  13. whispers --severity BLOCKER,CRITICAL source/code/fileOrDir 
  14.  
  15. whispers --exitcode 7 source/code/fileOrDir 

Python:

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

工具配置

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

  1. include: 
  2.  
  3.   files: 
  4.  
  5.     - "**/*.yml" 
  6.  
  7.   
  8.  
  9. exclude: 
  10.  
  11.   files: 
  12.  
  13.     - "**/test/**/*" 
  14.  
  15.     - "**/tests/**/*" 
  16.  
  17.   keys: 
  18.  
  19.     - ^foo 
  20.  
  21.   values: 
  22.  
  23.     - bar$ 
  24.  
  25.   
  26.  
  27. rules: 
  28.  
  29.   starks: 
  30.  
  31.     message: Whispers from the North 
  32.  
  33.     severity: CRITICAL 
  34.  
  35.     value: 
  36.  
  37.       regex: (Aria|Ned) Stark 
  38.  
  39.       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.  
  3.   description: Values formatted like AWS Session Token 
  4.  
  5.   message: AWS Session Token  # report will show this message 
  6.  
  7.   severity: BLOCKER           # one of BLOCKER, CRITICAL, MAJOR, MINOR, INFO 
  8.  
  9.   
  10.  
  11.   key:        # specify key format 
  12.  
  13.     regex: (aws.?session.?token)? 
  14.  
  15.     ignorecase: True   # case-insensitive matching 
  16.  
  17.   
  18.  
  19.   value:      # specify value format 
  20.  
  21.     regex: ^(?=.*[a-z])(?=.*[A-Z])[A-Za-z0-9\+\/]{270,450}$ 
  22.  
  23.     ignorecase: False  # case-sensitive matching 
  24.  
  25.     minlen: 270        # value is at least this long 
  26.  
  27.     isBase64: True     # value is base64-encoded 
  28.  
  29.     isAscii: False     # value is binary data when decoded 
  30.  
  31.     isUri: False       # value is not formatted like a URI 
  32.  
  33.   
  34.  
  35.   similar: 0.35        # maximum allowed similarity between key and value 
  36.  
  37.                        # (1.0 being exactly the same) 

插件

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

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

项目地址

Whispers:【GitHub传送门

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/148741.html<

(0)
管理的头像管理
上一篇2025-03-12 07:18
下一篇 2025-03-12 07:19

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注