插件窝 干货文章 Linux strings命令能找出哪些隐藏信息

Linux strings命令能找出哪些隐藏信息

strings 字符串 文件 binary 413    来源:    2025-05-04

strings 是 Linux 中一个强大的工具,用于提取二进制文件中的可打印字符串。它能帮助挖掘许多隐藏信息,尤其在逆向工程、取证分析和安全审计中非常有用。以下是它能发现的隐藏信息类型及示例:


1. 硬编码的敏感信息

  • 密码/密钥:二进制文件中可能硬编码的数据库密码、API密钥、加密密钥等。 bash strings /path/to/binary | grep -i "password\|key\|secret"
  • 示例输出DB_PASSWORD=SuperSecret123 API_KEY=abcd1234efgh5678

2. 调试/日志信息

  • 调试路径:开发阶段遗留的日志路径、调试标志或测试函数名称。 bash strings binary | grep -i "debug\|log\|test"
  • 示例输出[DEBUG] Connection established /var/log/app/error.log

3. 隐藏的文件或路径

  • 配置文件路径:二进制可能引用的外部配置文件路径。
  • 临时文件路径:如 /tmp/ 下的可疑文件。 bash strings binary | grep "/etc/\|/tmp/"

4. 网络相关痕迹

  • IP/域名:连接的服务器地址或恶意域名。
  • 协议标识:如 HTTP://ftp:// 或自定义协议头。 bash strings binary | grep -E "http://|ftp://|192.168."

5. 版权/版本信息

  • 开发者信息:编译时嵌入的作者、版本号或编译时间。 bash strings binary | grep "Copyright\|Version\|Build"
  • 示例输出Version 2.1.5 (Build 2023-10-01)

6. 可疑函数/系统调用

  • 危险函数:如 system()exec() 调用的命令片段。 bash strings binary | grep "system(\|exec(\|chmod"
  • 示例输出system("rm -rf /tmp/*")

7. 加密/哈希特征

  • 算法标识:如 AESRSAMD5 等字符串。
  • Base64数据:可能隐藏的编码后的数据。 bash strings binary | grep -E "AES|RSA|^[a-zA-Z0-9+/=]{20,}$"

8. 环境变量

  • 依赖的变量:如 $HOME$PATH 或自定义变量。 bash strings binary | grep "\$[A-Z_]\+"

9. 语言/编码残留

  • 多语言字符串:未清理的翻译字符串(如 UTF-16 编码需加 -e l 选项)。 bash strings -e l binary # 搜索宽字符(如Windows PE文件)

10. 隐藏的广告或注释

  • 开发者注释:编译时未删除的注释或玩笑(如 "Easter eggs")。

使用技巧

  1. 结合 grep 过滤:按关键词(如 passadmin)缩小范围。
  2. 控制字符串长度-n 选项指定最小长度(如 -n 8 过滤短字符串)。
  3. 搜索特定段:用 objdump -s -j .rodata 先定位只读数据段。
  4. 非ASCII字符:尝试 -e 选项支持其他编码(如 -e s 用于16位大端)。

注意事项

  • 误报率高:需人工验证提取的字符串是否有效。
  • 加壳/混淆:若二进制被加壳(如UPX),需先脱壳再使用 strings
  • 权限问题:读取系统文件需 sudo

通过 strings 快速筛查,再结合 hexdumpradare2 等工具深入分析,可以高效发现隐藏信息。