编译系统:Docker
编译器版本:Docker version 20.10.24
编译依赖环境:
- 操作系统:基础镜像为Ubuntu 16.04 (xenial)
- 软件包:存放评估脚本的目录
- virtualenvwrapper
- python2.7-dev
- build-essential
- libxml2-dev
- libxslt1-dev
- git
- libffi-dev
- cmake
- libreadline-dev
- libtool
- debootstrap
- debian-archive-keyring
- libglib2.0-dev
- libpixman-1-dev
- libqt4-dev
- graphviz-dev
- binutils-multiarch
- nasm
- libc6:i386, libgcc1:i386, libstdc++6:i386, libtinfo5:i386, zlib1g:i386 (32位库)
- vim
- python-pip
- libssl-dev
- curl
- tmux
- net-tools
- software-properties-common, dirmngr, apt-transport-https, lsb-release, ca-certificates (用于添加PPA和其他软件源)
- nodejs (通过deb.nodesource.com安装)
- openjdk-11-jdk (通过PPA安装)
- binwalk
编译步骤:
- 切换到代码目录:
cd Ftaint
- 使用Dockerfile构建docker镜像:
docker build . -t Ftaint
- 运行Ftaint(需要自己添加映射目录):
docker run -v <mapping>:<mapping> -it Ftaint
各目录文件的功能说明:
deps
:存放依赖文件的目录eval
:存放评估脚本的目录src
:存放源代码的目录Dockerfile
:用于构建Docker镜像的文件README.md
:项目说明文件init.sh
:初始化脚本scraper
: 固件爬虫目录
-
进入目录
cd scraper
-
执行固件抓取命令:
scrapy crawl 固件厂商
例如要爬取dlink的固件映像:
scrapy crawl dlink
ftaint.py使用方法
-d 或 --directory
:指定固件路径,例如:-d /root/path/_ac18.extracted
-o 或 --output
:指定输出结果的文件夹,例如:-o /root/output
--ghidra_script
:指定运行的Ghidra脚本,例如:--ghidra_script ref2sink_cmdi
--taint_check
:启用污点分析-b 或 --bin
:添加指定边界程序,例如:-b /var/ac18/bin/httpd
-l 或 --len
:添加指定前几个为边界程序,例如:-l 3