在 Linux 下进行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 # 扫描整个文件(不跳过某些段)
strings suspicious.bin
strings -n 8 -t x suspicious.bin
关注内容:
/etc/, /tmp/, /home/)sh, wget, curl, bash -i)base64, AES, xor)strings memory.raw | grep -i password
strings -n 10 memory.raw | less
常用组合:
strings memory.raw | grep -E "http|ftp|ssh|password|token"
注意:
volatility 使用strings disk.img > strings.txt
grep -i "username" strings.txt
或只看某分区:
strings /dev/sdb1
strings /var/log/auth.log
strings deleted.img | grep -i "secret"
strings -t x -n 6 file
输出示例:
1a2b3c /etc/passwd
可用于:
xxd / binwalkstrings file | grep -iE "password|token|key"
strings file | grep -aoE "https?://[^\"]+"
strings -e l file
strings -e b file
适用于:
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 取证命令。