温馨提示×

怎样用linux strings取证

小樊
44
2026-10-14 06:38:04
栏目: 智能运维

在 Linux 下进行strings 取证(从二进制、内存镜像、磁盘映像等中提取可读字符串以辅助分析),通常按下面几个步骤来做。


一、strings 基本用法

strings 用于从文件中提取可打印字符序列(默认长度 ≥ 4)。

strings file

常见参数:

strings -n 6 file        # 只显示长度≥6的字符串
strings -e l file        # 指定编码(l=16位小端,b=16位大端)
strings -t x file        # 显示字符串在文件中的偏移(十六进制)
strings -a file          # 扫描整个文件(不跳过某些段)

二、典型取证场景

1️⃣ 分析可疑二进制程序

strings suspicious.bin
strings -n 8 -t x suspicious.bin

关注内容:

  • 路径(/etc/, /tmp/, /home/)
  • IP / 域名
  • 命令字符串(sh, wget, curl, bash -i)
  • 加密或编码特征(base64, AES, xor)

2️⃣ 内存镜像取证(RAM image)

strings memory.raw | grep -i password
strings -n 10 memory.raw | less

常用组合:

strings memory.raw | grep -E "http|ftp|ssh|password|token"

注意:

  • 内存中字符串可能碎片化
  • 可配合 volatility 使用

3️⃣ 磁盘映像 / dd 镜像

strings disk.img > strings.txt
grep -i "username" strings.txt

或只看某分区:

strings /dev/sdb1

4️⃣ 日志 / 删除文件恢复

strings /var/log/auth.log
strings deleted.img | grep -i "secret"

三、进阶技巧(取证常用)

✅ 按偏移定位(非常重要)

strings -t x -n 6 file

输出示例:

1a2b3c /etc/passwd

可用于:

  • 在 hex 编辑器中定位
  • 配合 xxd / binwalk

✅ 结合 grep 精准搜索

strings file | grep -iE "password|token|key"
strings file | grep -aoE "https?://[^\"]+"

✅ 编码识别

strings -e l file
strings -e b file

适用于:

  • Windows 程序
  • 固件
  • 跨平台样本

✅ 提取 URL / IP

strings file | grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"
strings file | grep -oE "https?://[a-zA-Z0-9./_-]+"

四、与其他工具配合

工具 用途
binwalk 固件 / 嵌套文件
xxd / hexdump 精确定位
foremost 文件 carving
volatility 内存取证
grep / awk 字符串过滤

示例:

binwalk firmware.bin
strings firmware.bin | grep -i "admin"

五、取证注意事项

⚠️ 只读分析

mount -o ro,loop disk.img /mnt

⚠️ 保留原始证据

  • 使用哈希校验:
sha256sum evidence.bin

⚠️ strings 不是万能

  • 可能遗漏编码/加密内容
  • 需结合动态分析

如果你有具体场景(如:恶意样本 / 内存镜像 / 手机固件 / 服务器入侵),我可以给你更针对性的 strings 取证命令。

0 踩