温馨提示×

怎样分析linux strings输出

小樊
41
2026-09-14 14:37:31
栏目: 智能运维

strings 是 Linux 下一个常用命令,用于从二进制文件、core 文件或内存镜像中提取可打印的字符串(通常是 ASCII/Unicode 文本)。分析 strings 输出,常用于逆向、取证、漏洞分析、排查程序行为等。

下面从基本用法 → 输出分析思路 → 实战技巧逐步说明。


一、strings 基本用法

strings binary_file

常见参数:

  • -n <num>:只显示长度 ≥ num 的字符串(默认 4)
  • -a:扫描整个文件(不只是数据段)
  • -e <encoding>:指定编码(如 s=7-bit, l=16-bit LE, b=16-bit BE)
  • -t x / -t d:显示字符串在文件中的偏移(十六进制/十进制)
  • -f:显示文件名

示例:

strings -n 6 -a -t x ./malware.bin

二、strings 输出通常包含什么?

典型内容:

  • 文件路径(/etc/passwd, /bin/sh)
  • 函数名、符号(若未 strip)
  • 错误信息(Permission denied, Usage: ...)
  • URL / IP / 域名
  • SQL 语句、命令拼接
  • 加密相关字符串(AES, key, encrypt)
  • 调试信息、日志格式
  • 硬编码密码或 token(⚠️ 安全风险)

三、分析 strings 输出的思路

1️⃣ 先看“可疑字符串”

快速过滤:

strings binary | grep -iE "http|ip|password|key|shell|exec|/bin/"

重点关注:

  • /bin/sh, system(, execve
  • 外联地址:http://, 192.168, dns
  • 加密函数名:RSA, AES, md5

2️⃣ 结合偏移定位代码

使用偏移:

strings -t x binary

输出示例:

0x1a34 /bin/sh

然后用:

objdump -d binary | less
# 或
gdb binary

查找 0x1a34 附近逻辑。


3️⃣ 判断是否 stripped

file binary
  • not stripped → 有大量符号,分析简单
  • stripped → 只能靠字符串 + 反汇编

4️⃣ 识别程序功能

从字符串反推:

  • 大量 SQL → 数据库程序
  • 配置文件路径 → 服务程序
  • 加密算法名 → 安全工具 / 恶意软件

5️⃣ 恶意样本分析要点

重点看:

  • C2 地址
  • 持久化路径(cron, rc.local)
  • 提权字符串(setuid, root)
  • 混淆字符串(需动态分析验证)

四、进阶技巧

✅ 联合其他工具

strings binary | grep -i "password"

配合:

  • grep
  • xxd
  • radare2 / IDA
  • strace / ltrace

✅ Unicode 字符串

strings -e l binary

✅ 从内存镜像提取

strings memory.dump | grep -i "secret"

五、注意事项

  • strings 不能证明逻辑,只能提供线索
  • 字符串可被加密 / 混淆 / 动态生成
  • 分析恶意程序请在隔离环境进行

如果你有具体文件类型(如 ELF、固件、恶意样本),或想看某个 strings 输出怎么解读,可以贴出来,我可以帮你逐条分析。

0 踩