温馨提示×

如何分析ubuntu strings结果

小樊
44
2026-09-09 11:27:55
栏目: 智能运维

在 Ubuntu(或其他 Linux 系统)中,strings 命令用于从二进制文件、核心转储或任意文件中提取可打印的字符串(通常是 ASCII/Unicode 文本)。分析 strings 的结果,关键在于结合目标文件用途、上下文和安全/调试目的来解读。

下面从基础使用 → 结果分析思路 → 实战案例 → 进阶技巧系统说明。


一、strings 基本回顾

strings [选项] 文件

常用选项:

  • -n 长度:只显示长度 ≥ 指定值的字符串(默认 4)
  • -e 编码:指定编码(s=7-bit, S=8-bit, b=16-bit, l=32-bit)
  • -a:扫描整个文件(默认可能只扫某些段)
  • -t x/o/d:显示字符串偏移(十六进制/八进制/十进制)
  • -f:显示文件名

示例:

strings -n 6 -t x /bin/ls

二、如何“分析” strings 的结果

1. 先明确分析目的

不同目的,关注点完全不同:

目的 关注内容
逆向/漏洞分析 函数名、错误信息、路径、URL
取证 密码、IP、命令、用户名
调试 日志格式、配置项
合规检查 敏感词、密钥、token

2. 分类阅读字符串内容

通常 strings 输出可分为几类:

✅ 编译信息

GCC: (Ubuntu 11.2.0-19ubuntu1) 11.2.0

→ 可知编译器版本、系统环境

✅ 路径与文件名

/etc/passwd
/var/log/syslog

→ 可能暗示程序行为或依赖

✅ 错误信息

failed to open file
permission denied

→ 帮助理解程序逻辑

✅ 网络相关

http://127.0.0.1:8080
api.example.com

→ 服务地址、潜在后门

✅ 密钥/口令(高危)

password=
AES_KEY=

→ 安全审计重点


3. 结合偏移地址分析(非常重要)

strings -t x binary

输出示例:

 1a2b3c /etc/shadow
 1a2b50 password=123456

然后可用:

objdump -s -j .rodata binary

或:

hexdump -C binary | grep -A2 -B2 1a2b

→ 确认字符串所在段(.rodata / .data


三、实战分析示例

示例 1:分析未知二进制

strings unknown_bin | less

重点看:

  • 是否有 mainusage
  • 是否有 system(exec
  • 是否包含奇怪域名

示例 2:查找硬编码密码

strings app | grep -iE "pass|pwd|token|key"

示例 3:分析恶意样本

strings malware | grep -E "http|/bin|/tmp|wget|curl"

常见危险信号:

  • /tmp/.x
  • wget http://...
  • bash -i

四、配合其他工具效果更好

工具 用途
file 判断文件类型
objdump 看汇编和段
grep 过滤关键词
binwalk 固件/打包分析
radare2 / ghidra 深度逆向

示例:

strings binary | grep -i error
objdump -d binary | less

五、注意事项(很重要)

  1. strings 不等于源码
    • 只能看到“文本残留”
  2. 可能被混淆/加密
    • 无明文 ≠ 无敏感信息
  3. 动态生成字符串看不到
    • 运行时 sprintf 的内容不会出现

六、总结分析流程(推荐)

1. file 确认类型
2. strings -a -n 6 -t x
3. grep 关键词(pass/ip/url)
4. 看偏移 → objdump/hexdump
5. 结合行为判断意图

如果你愿意,可以把某一段 strings 输出贴出来,我可以帮你逐行分析它是正常程序还是可疑样本。

0