Towards Automated Dynamic Analysis for Linux-based Embedded Firmware

NDSS ’16, 21-24 February 2016, San Diego, CA, USA
Copyright 2016 Internet Society, ISBN 1-891562-41-X
FIRMADYNE
https://github.com/firmadyne/firmadyne
基于Linux系统的网络物联网设备自动化可扩展动态分析系统

1、网络爬虫
从ftp和web站点爬取固件镜像,设置爬取规则,比如文件扩展名白名单(img/chk/bin/stk/zip/tar/sys/rar/pkg/rmt等),过滤掉升级包和无用的包等
2、提取解压
读取ELF头,确定架构和文件类型,使用binwalk API解压,注意设置的黑名单(PE32 windows/ELF Linux/ binaries Mactosh等),使用第三方工具库如jefferson/sasquatch提取JFFS32/SquashFS文件类型,以及结合其他工具jffsdump/unsquashfs/bat/firmware-mod-kit等
3、模拟执行
主要关注的几种架构类型 — MIPS(大端序、小端序) ARM(小端序)
模拟工具QEMU
4、自动分析
1)web页面
提取web server页面,过滤掉静态文件(png/css/js等),注意Response状态码2xx,过滤4xx和5xx等,用户认证过程和方式–客户端cookie、server ip、账号登录等
2)snmp信息
使用snmpwalk工具进行SNMP协议分析,注意OIDs等敏感信息
3)漏洞检测
使用Metasploit框架的POC和EXP进行漏洞检测
4)额外功能
调试和攻击模块,代码执行动态跟踪功能,可以结合IDA Pro
结果
在固件样本中发现了14个未知的漏洞,使用metasploit中的60个poc进行检测
漏洞类型 — 命令注入、缓冲区溢出、信息泄露、 CVE-2014-0659 (配置信息读取和任意代码执行)、CVE-2013-0229(DOS)、CVE-2014-0224(openssl ChangeCipherSpec 导致mitm攻击)
总结
此工具整合了爬虫、提取、模拟和漏洞检测模块,可以有效检测出固件中的漏洞
受限于支持的固件类型,固件架构和漏洞检测EXP数量
未来可以扩展至RTOS(实时操作系统)系统如VxWorks中,固件提取时加入统计分析技术,处理混淆和加密的固件类型等。