# 附录2：工具列表

### 一、手动分析

#### 1.1 通用工具

* [**IDA Pro**](https://www.bing.com/ck/a?!&\&p=2b2043cedde697622ff6f0d33da37b22787da468e35b978425c4ffc6bb78a157JmltdHM9MTY1NzUwNjAyMCZpZ3VpZD1iMDk5NTAwZS1mYWU3LTQyMTktODE2MS1kMmY0M2U4NmE0MzAmaW5zaWQ9NTE1OA\&ptn=3\&fclid=030d5c6d-00c0-11ed-b4a6-5aa8acbcb884\&u=a1aHR0cHM6Ly9oZXgtcmF5cy5jb20vSURBLXByby8\&ntb=1)
* [**Ghidra**](https://www.bing.com/ck/a?!&\&p=57540f265bd8c6cf6a036f9a96cdbba8b54974fd727a8b211a0a3eaa2b2ce208JmltdHM9MTY1NzUwNjAzNyZpZ3VpZD03ZWJhNDZjNS05ODhlLTRjMDctYjg3YS03MmMxN2Y5ZTJkNjYmaW5zaWQ9NTE2Ng\&ptn=3\&fclid=0d07190c-00c0-11ed-b3d8-ac03029aeb18\&u=a1aHR0cHM6Ly9naGlkcmEtc3JlLm9yZy8\&ntb=1)
* [**Hopper**](https://www.bing.com/ck/a?!&\&p=2c1f5f78d14208597f0ec795cb4b23a20500a2fa640d1a3b9bca249d1c330ca8JmltdHM9MTY1NzUwNjA4MyZpZ3VpZD1hZWQxZThlNC1hZGExLTRjZGYtODg1MS02N2ZiN2I0Y2U3ZmUmaW5zaWQ9NTE0OQ\&ptn=3\&fclid=28b49154-00c0-11ed-8d67-bcc2b58294bb\&u=a1aHR0cHM6Ly93d3cuaG9wcGVyYXBwLmNvbS8\&ntb=1)
* [**Capstone**](http://www.capstone-engine.org)
* [**Binary Ninja**](https://binary.ninja/)

#### 1.2 插件

* <https://github.com/KeenSecurityLab/BinAbsInspector>
* <https://github.com/NSSL-SJTU/SaTC>
* <https://github.com/buptsseGJ/BinSeeker>
* <https://github.com/xrkk/awesome-ida>
* <https://github.com/maddiestone/IDAPythonEmbeddedToolkit>
* <https://github.com/0xdea/ghidra-scripts/**Rhabdomancer**>
* <https://github.com/tacnetsol/ghidra_scripts>

### 二、自动分析

#### 2.1 firmwalker

`firmwalker` 分析内容范围如下：

* etc/shadow and etc/passwd
* etc/ssl
* 与 ssl 相关的文件，如：.pem .crt 等
* 搜索配置文件
* 寻找脚本文件
* 搜索其他 .bin 文件
* 查找 admin、password、remote、AWS key 等关键字
* 搜索物联网设备上使用的通用Web服务器
* 搜索常见的二进制文件，如：ssh、tftp、dropbear 等
* 搜索禁止的C函数
* 搜索常见的易受命令注入攻击的功能
* 搜索URL、电子邮件、IP地址……

`Aaron Guzman` 在原生代码基础上添加了一些其他的检查，可参照 [https://github.com/scriptingxss/firmwalker。](https://github.com/scriptingxss/firmwalker%E3%80%82)

**案例：在 OWASP IOTGoat 中使用 firewalker分析**

`firmwalk` 分析文件系统需使用绝对路径：

`./firmwalker.sh /home/embedos/firmware/_IoTGoat-rpi-2.img.extracted/squashfs-root/`

分析结果如下：

![](https://1174461437-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlLEV5Rrf0TFHD0Ld3R7q%2Fuploads%2FX85iQWkMJOYijKIaW2nj%2Fimage.png?alt=media\&token=48f0b952-567b-4ec7-a13a-c480fc6aa009)

分析结果存储在 `/data/` 目录下的两个文件：`firmwalker.txt` 和 `firmwalkerappsec.txt`，需手动检查这些文件。

#### 2.2 FACT

`FACT` 固件分析比较工具包分析内容如下：

* 标识软件组件（如：操作系统、CPU体系结构和第三方组件）及其关联的版本信息
* 从映像中提取固件文件系统
* 检测证书和私钥
* 检测CWE
* 基于提要和签名的漏洞检测
* 基于静态行为分析
* 固件版本和文件的比较（差异）
* 使用QEMU对文件系统中的二进制文件进行用户仿真
* 缓冲区溢出防护机制 NX, DEP, ASLR, stack canaries, RELRO, and FORTIFY\_SOURCE
* REST API...

**案例：在EmbedOS 中使用FACT分析**

```bash
cd ~/tools/FACT_core 
sudo ./start_all_installed_fact_components
```

浏览器访问：<http://127.0.0.1:5000> ，

![](https://1174461437-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlLEV5Rrf0TFHD0Ld3R7q%2Fuploads%2FpmjYxtAQqMA20tOa9he0%2Fimage.png?alt=media\&token=8b82c15f-6b9b-49bd-83ca-cb5a75cbd655)

将固件上传到FACT进行分析（可以将带有文件系统的完整固件）

![](https://1174461437-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlLEV5Rrf0TFHD0Ld3R7q%2Fuploads%2F5wTCzGNVjKLdqiewI3c7%2Fimage.png?alt=media\&token=20c26193-170d-4065-9ad5-db84f511a86d)

根据给FACT硬件资源，扫描时间会相应不同

![](https://1174461437-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlLEV5Rrf0TFHD0Ld3R7q%2Fuploads%2FEwSyc05NNRGlKr8NGjkU%2Fimage.png?alt=media\&token=cb93b655-90c5-41b4-a0c5-ad82c511e1ec)

FACT分析结果

![](https://1174461437-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlLEV5Rrf0TFHD0Ld3R7q%2Fuploads%2FhJ9iMOuvBbDEHWbyIKUm%2Fimage.png?alt=media\&token=f78eee9f-71b9-4db0-b08b-009b3771c78d)

笔者撰写了[**FACT插件开发指南**](https://www.freebuf.com/sectool/323613.html)，可作为参考。

#### 三、动态测试

设备在正常运行或者在仿真环境中运行中的动态测试，此阶段的测试可能会由于项目和访问级别有所差异，可用分析手段：

* 篡改引导程序配置
* Web 和 API 测试
* 模糊测试（网络和应用程序服务）

使用各种工具集进行的主动扫描以获取提升的访问权限或代码执行：

* Burp Suite
* OWASP ZAP
* Commix
* Fuzzers such as - American fuzzy loop (AFL)
* Network and protocol fuzzers such as - [Mutiny](https://github.com/Cisco-Talos/mutiny-fuzzer), [boofuzz](https://github.com/jtpereyda/boofuzz), and [kitty](https://github.com/cisco-sas/kitty)
* Nmap
* NCrack
* Metasploit

#### 四、调试

设备在正常运行或在仿真环境中运行时，对正在运行的进程或二进制文件进行调试。如下是分析步骤：

* 1、`sudo chroot . ./qemu-arch -L <optionalLibPath> -g <gdb_port> <binary>`
* 2、使用gdb-multiarch或IDA进行调试
* 3、为步骤4中的功能点设置断点，如： `memcpy`, `strncpy`, `strcmp`，等
* 4、确认漏洞点，比如：通过发送较大的有效载荷来识别溢出或进程崩溃点

一些可能使用的工具：

* gdb-multiarch
* [Peda](https://github.com/longld/peda)
* Frida
* ptrace
* strace

### 六、(商业)平台

* **见附录7**
