在 Debian(或一般的 Linux)系统中,strings 命令用于从二进制文件(如可执行文件、库文件、内核模块等)中提取可打印的字符串。分析 strings 结果,通常用于:
下面系统地讲一下如何分析 Debian 上的 strings 结果。
strings /usr/bin/xxx
常用选项:
strings -n 6 file # 只显示长度≥6的字符串
strings -a file # 扫描整个文件(包括数据段)
strings -e l file # 指定字符编码(l=16位小端)
在 Debian 上常见对象:
/usr/bin/*/lib/*、/usr/lib/*.so 动态库.ko快速浏览输出,关注以下几类内容:
"Error: cannot open config file"
"Failed to connect to server"
➡ 暗示程序逻辑、失败路径
/etc/xxx.conf
/var/log/xxx.log
➡ 可能读取/写入的位置
http://example.com/update
192.168.1.1
➡ 网络行为线索(安全分析重点)
--verbose
debug_level
timeout=30
➡ 功能与可调参数
main
do_parse
sqlite3_exec
➡ 使用的库或模块
grep 精准分析strings /usr/bin/xxx | grep -i error
strings /usr/bin/xxx | grep -E "http|ftp|ip"
strings /usr/bin/xxx | grep -i config
常见组合:
strings -n 8 binary | grep -i "password\|token\|key"
⚠ 注意:敏感信息(密钥、token)可能直接硬编码
在 Debian 安全分析中常用:
strings official_binary > a.txt
strings suspicious_binary > b.txt
diff a.txt b.txt
异常新增字符串(如异常 URL、命令)是重点。
| 工具 | 作用 |
|---|---|
file |
确认文件类型 |
ldd |
查看动态依赖 |
objdump |
反汇编 |
nm |
查看符号表 |
readelf |
ELF 结构分析 |
strace |
运行时系统调用 |
示例:
strings binary | grep exec
strace -f ./binary
strings app | grep -i "permission"
找:
strings app | grep -iE "wget|curl|bash|/bin/sh"
判断是否:
strings app | grep -i "version\|license\|GPL"
dpkg -S /usr/bin/xxx
apt-get source xxx
file binary
strings -n 6 binary > str.txt
grep -iE "error|fail|config|http|/bin|password|key" str.txt
如果你愿意,可以:
我可以帮你逐行分析或判断风险。