Automated Dynamic Firmware Analysis at Scale: A Case Study on Embedded Web Interfaces

In Proceedings of the 11th ACM Asia Conference on Computer and Communications Security (ASIACCS), June 2016.
介绍
嵌入式设备的web接口用于用户交互和管理,也暴露了一个攻击面
本文开发了一款自动化动态固件分析框架挖掘web层漏洞,全系统模拟,仅软件相关的环境,无需任何物理设备,动态+静态分析方法
静态分析局限:web页面多种技术 php/cgi/html/jsp等,误报率高
动态分析局限:服务端语言支持较差,需要执行环境,不适用于复杂的IOT系统
可扩展动态分析:需要真实物理设备,成本高;运行环境依赖性
模拟固件方法:硬件、内存等环境要求;手工配置,可扩展性差
研究的固件都是基于Linux系统,这些设备交互来自kernel,web层接口间接或不与硬件交互

静态分析
优点:可扩展 易自动化
缺点:误报、漏报高 IOT语言支持差
动态分析
优点:服务端无关,确认静态漏洞
缺点:需要运行环境,漏洞检测模块等
运行web接口
1、非原生web接口系统搭建
简单部署、容易自动化和扩展
平台依赖和CGI型固件支持性差,甚至自定义web server和版本
2、固件和web接口模拟
读取固件架构 多种架构情况(upgrade时选择某种架构)
方法:读取ELF文件头;统计操作分布

分析框架细节
A、固件选择
1)Linux系统
2)web服务文件(httpd,lighttpd)、配置文件(boa.conf,lighttpd.conf)
3)client server脚本文件(html/javascript/php/perl)
B、文件系统预处理
查找root文件系统 — 搜索关键目录(/bin/,/sbin/,/etc/)
关键文件(/init,/bin/sh,)
1)固件解包
2) web server探索
配置文件,启动命令,文件路径,站点地图
C、分析 动态+静态
D、结果分析
动态+静态结果输出,log分析
1)文件系统变化
模拟前、模拟后、动态分析后 diff 文件区别 — log文件、新创建文件等
2)抓取交互信息
input output交互信息
E、结果攻击验证
编写poc进行exp,自动化攻击模块(future),手动验证等

局限性
1、仅限网上公开的固件
2、仅限基于Linux的固件
3、只支持arm/mips/mipsel架构
4、新版本固件漏洞可能已经修补
实验结果
1925固件、54厂商 — 246满足模拟条件(web server/chroot) — 45固件存在漏洞
future work
支持更多固件镜像,更精确更深入的动态分析
总结:
本文主要针对IOT设备的Web层进行漏洞检测,对网络公开的固件进行解压和过滤,提取存在web server和chroot文件系统的固件系统,使用已有工具进行静态和动态分析,设计了一款可扩展和自动化的动态固件分析框架,并发现了数量可观的web漏洞。
难点在于需要部署模拟执行环境,适应IOT固件的复杂性。