freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

UEFI_RETool:一款针对UEFI固件的逆向工程分析工具
2020-08-07 21:51:39

UEFI_RETool是一款专门针对UEFI固件设计的逆向工程分析工具,该工具基于Python开发,并通过uefi_retool.py脚本实现其功能。

使用uefi_retool.py脚本进行UEFI固件分析

工具安装

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/yeggor/UEFI_RETool.git

工具配置

首先,我们需要将ida_plugin/uefi_analyser.py脚本和ida_plugin/uefi_analyser目录移动到IDA插件目录下。接下来,编辑config.json文件中的各项配置参数:

-PE_DIR:PE_DIR目录中包含了UEFI固件中的所有可执行镜像; -DUMP_DIR:DUMP_DIR目录中包含了固件文件系统中的全部组件; -LOGS_DIR:LOGS_DIR目录专门用于存放日志文件; -IDA_PATH/IDA64_PATH:这两个路径为IDA Pro针对x32和x64架构的不同版本可执行文件;

配置完成后,运行下列命令安装工具依赖组件:

pip install -r requirements.txt

依赖组件配置完成后,我们就可以使用下列命令运行工具,并显示帮助信息了:

python uefi_retool.py

工具使用命令

python uefi_retool.py
Usage: uefi_retool.py [OPTIONS] COMMAND [ARGS]...
Options:
  --help  显示帮助信息和退出
Commands:
  get-images  从UEFI固件获取可执行镜像
  get-info    分析整个UEFI固件文件
  get-pp      获取UEFI固件文件中的专有协议列表

命令解析

get-images

python uefi_retool.py get-images --help
Usage: uefi_retool.py get-images [OPTIONS] FIRMWARE_PATH
  Get executable images from UEFI firmware. Images are stored in "modules"
  directory.
Options:
  --help  Show this message and exit.

使用样例:

python uefi_retool.py get-images test_fw/fw-tp-x1-carbon-5th.bin

get-info

python uefi_retool.py get-info --help
Usage: uefi_retool.py get-info [OPTIONS] FIRMWARE_PATH
  Analyze the entire UEFI firmware. The analysis result is saved to .json
  file.
Options:
  -w, --workers INTEGER  Number of workers (8 by default).
  --help                 Show this message and exit.

使用样例:

python uefi_retool.py get-info -w 6 test_fw/fw-tp-x1-carbon-5th.bin

get-pp

python uefi_retool.py get-pp --help
Usage: uefi_retool.py get-pp [OPTIONS] FIRMWARE_PATH
  Get a list of proprietary protocols in the UEFI firmware. The result is
  saved to .json file.
Options:
  -w, --workers INTEGER  Number of workers (8 by default).
  --help                 Show this message and exit.

使用样例:

python uefi_retool.py get-pp -w 6 test_fw/fw-tp-x1-carbon-5th.bin

额外工具

tools/update_edk2_guids.py脚本可以从edk2项目更新协议GUID列表。

IDA插件

针对UEFI分析的IDA插件:【点我获取

分析&协议

使用方法

首先,将uefi_analyser和uefi_analyser.py拷贝到%IDA_DIR%/plugins目录中。然后在IDA中打开UEFI镜像,点击“编辑”->“插件”->“UEFI analyser”。

使用样例

分析之前

分析之后

协议浏览窗口

依赖查看&依赖图

首先,我们需要使用uefi_retool.py来对目标固件进行分析:

python uefi_retool.py get-info FIRMWARE_PATH

接下来,将<LOGS_DIR>/<FIRMWARE_NAME>-all-info.json文件加载进IDA中:

使用样例

依赖浏览窗口

依赖图

项目地址

UEFI_RETool:【GitHub传送门

# 固件分析 # UEFI # 固件安全 # UEFI固件安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者