温馨提示×

怎样用linux strings学安全

小樊
39
2026-09-08 12:05:27
栏目: 智能运维

在 Linux 安全学习中,strings 是一个非常基础但很有用的命令,用来从二进制文件、内存镜像、日志、固件等中提取可读字符串。下面从“为什么学”“怎么用”“安全场景示例”三个角度讲。


一、为什么安全要学 strings

很多安全分析对象本身不是文本:

  • 恶意软件 / 木马
  • 取证镜像(磁盘、内存)
  • 固件(路由器、IoT)
  • 加密或打包的程序

这些文件中常留下:

  • 域名 / IP
  • 密码、密钥
  • 调试信息
  • 函数名、路径
  • 攻击者注释

strings 能快速“看一眼里面有什么”。


二、strings 基础用法

1️⃣ 基本用法

strings file

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

2️⃣ 指定最小长度

strings -n 6 file

只显示长度 ≥ 6 的字符串,减少噪音

3️⃣ 查看偏移(定位用)

strings -t x file

以十六进制显示字符串位置(配合 hexdump / gdb 很有用)

4️⃣ 配合 grep 过滤

strings malware.bin | grep -i "http"
strings firmware.bin | grep -i "password"

三、安全学习中的典型用法

✅ 1. 分析恶意样本

strings virus.exe | grep -E "http|ftp|/bin|sh"

可发现:

  • C2 服务器
  • 执行的命令
  • 下载地址

✅ 2. CTF / 逆向入门

strings crackme

常能直接看到:

  • 提示信息
  • 隐藏 flag
  • 编译路径

✅ 3. 固件安全分析

binwalk router.bin
strings router.bin | grep "admin"

找:

  • 默认密码
  • 后门路径

✅ 4. 内存取证

strings memory.dmp | grep -i "password"

从内存中提取:

  • 明文凭证
  • 聊天内容
  • 命令行历史

✅ 5. 日志 / 配置泄露

strings app | grep -i "api_key"

四、进阶组合(安全常用)

与 grep + 正则

strings file | grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"

与 less

strings bigfile | less

与 file / binwalk

file unknown
binwalk unknown
strings unknown

五、学习建议(实战路线)

  1. 下载 CTF 题或样本(如:
    • https://github.com/ytisf/theZoo
    • https://crackmes.one)
  2. 先用 strings
  3. 再用 objdump / gdb / radare2
  4. 形成“先广后深”的分析习惯

六、注意事项(很重要)

  • strings 只能看明文
  • 加密 / 压缩内容看不到
  • 不能替代逆向,只是第一步
  • 分析恶意软件请在虚拟机 / 隔离环境

如果你愿意,我可以:

  • 给你一套 strings 安全练习题
  • 或结合 CTF / 恶意代码 / 固件 具体讲
  • 或教你 strings + 其他工具的分析流程

你更想往哪个方向学?

0