berryk6490/embedded-ics-vulnerability-research
GitHub: berryk6490/embedded-ics-vulnerability-research
一份结构化的个人学习日志,追踪从原生 C 到嵌入式与 ICS 漏洞研究的渐进式学习路径,强调严谨的证据标准与研究方法论。
Stars: 0 | Forks: 0
# 嵌入式与 ICS 漏洞研究日志
本仓库记录了我在嵌入式、固件和工业控制系统漏洞研究方面的结构化进展。
它保留了我的原始技术工作、证据、解释、修正以及随着技能提升而产生的验证结果。这是一份积极的学习日志,而不是复制来的操作指南集合,也不是对专业精通程度的声明。
## 当前状态
- **当前阶段:** 原生 C 基础
- **已完成:** 模块 1 — 原生 C 构建 pipeline
- **下一步:** 模块 2 — 变量、整数类型、值与存储
- **主要环境:** x86-64 Ubuntu Linux
- **仓库状态:** 积极更新的学习日志
## 进度
| 模块 | 主题 | 状态 | 证据 |
|---|---|---|---|
| 01 | 原生 C 构建 pipeline | 完成 | [概述](module-01/README.md) · [完整研究笔记](module-01/MODULE_1_BUILD_PIPELINE_NOTE.md) |
| 02 | 变量、整数类型、值与存储 | 下一步 | 未开始 |
## 已完成的工作
### 模块 1 — 原生 C 构建 Pipeline
模块 1 通过以下步骤跟踪一个原始的 C 程序:
```
Source
↓
Preprocessing
↓
Compilation proper
↓
Assembly
↓
Linking
↓
Runtime loading
↓
Running process
```
收集的证据包括:
- 源码与环境识别
- SHA-256 源码验证
- 显式的中间构建阶段
- 使用 `file` 进行产物分类
- 使用 `nm` 检查未定义的 symbol
- 使用 `readelf` 检查 ELF 头部
- 动态库依赖项检查
- 运行时验证
- 原创机制解释
- 客观的局限性说明与遗留疑问
从 [模块 1 概述](module-01/README.md) 开始阅读。
## 研究方法
实验遵循以下循环:
1. **预测** — 陈述预期结果。
2. **观察** — 收集直接证据。
3. **解释** — 将观察与解释分开。
4. **修改** — 更改一个相关条件。
5. **证明** — 测试提出的机制。
6. **修复** — 纠正问题并验证修正结果。
## 证据标准
仅仅命令执行成功或程序崩溃本身不足以构成充分的证据。
根据任务的不同,证据可能包括:
- 带注释的源码
- 编译器诊断信息
- 调试器记录
- 寄存器和内存观察结果
- 反汇编
- Sanitizer 输出
- 最小化测试用例
- 覆盖率证据
- Packet 捕获
- 堆栈跟踪
- 补丁
- 回归测试
- 原创机制解释
安全发现将明确区分:
- 症状与机制
- 崩溃位置与首次无效操作
- 首次无效操作与根本原因
- 已证实的实际影响与推测性影响
- 拒绝服务与代码执行
## 安全与授权
研究仅限于:
- 原创软件
- 开源软件
- 教育目标
- 个人拥有的硬件
- 受明确书面授权涵盖的系统
雇主系统、客户系统、生产系统以及随机的公共目标均不在授权范围内。
请参阅 [AUTHORIZATION.md](AUTHORIZATION.md)。
## 计划方向
后续工作将逐步涵盖:
- C 数据表示与内存安全
- 编译器诊断与未定义行为
- Linux 进程与可执行文件内部机制
- 调试与崩溃分类
- 逆向工程
- 覆盖率引导的模糊测试
- 固件提取与分析
- 嵌入式 Linux 攻击面
- 工业协议实现
- 安全的 Modbus TCP、EtherNet/IP、CIP、DNP3 和 OPC UA 研究
这些是计划的学习领域,并非宣称已具备的能力。
## 仓库导航
- [模块 1 概述](module-01/README.md)
- [模块 1 完整研究笔记](module-01/MODULE_1_BUILD_PIPELINE_NOTE.md)
- [授权边界](AUTHORIZATION.md)
- [研究笔记模板](templates/research-note.md)
- [崩溃报告模板](templates/crash-report.md)
标签:固件, 学习笔记, 嵌入式系统, 工控系统, 情报收集, 漏洞研究