Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
draytek-arsenal — Draytek防火墙的逆向工程与可观测性工具包 | Kitploit
工具/GitHubGitHub/infobyte/draytek-arsenal
嵌入式系统安全漏洞分析逆向工程渗透测试硬件安全硬件与物联网安全二进制分析固件分析
GitHubinfobyte/draytek-arsenal

draytek-arsenal

Draytek防火墙的逆向工程与可观测性工具包

查看仓库
5381年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Draytek Arsenal:Draytek边缘设备的可观测性与加固工具集

高级攻击者越来越多地将边缘设备作为目标。然而,这些设备由闭源软件(即固件)控制,通常以专有格式分发。这对于防御者和研究人员来说增加了难度,他们必须了解如何提取固件以评估其安全性。

这不仅仅是一种假设场景,正如我们最近在客户遭到入侵时发现的那样。由于客户基础设施边缘部署了Draytek设备,自然而然地产生了疑问:这是攻击者的入口点吗?超过50万台Draytek设备暴露在互联网上。然而,目前尚无有效的工具可以提取其固件并帮助研究人员和防御者处理这些设备。

在评估过程中,我们对Draytek的固件格式进行了逆向工程,该格式包含一个引导加载程序、一个压缩的RTOS内核以及两个文件系统。通过调查,我们开发了提取这些组件的工具,揭示了实时操作系统动态加载代码模块的能力。这些模块在启动时从固件镜像中的一个文件系统加载,但也可以在系统运行时加载,并存储在闪存中的另一个文件系统中。攻击者可以利用此功能实现持久化,通过加载一个即使重启或固件升级后仍然保持活跃的模块,而最终用户无法检测此类攻击。因此,我们开发了自己的模块来检查内存中已加载模块的完整性,从而缓解这种潜在威胁。

为了追求更安全的互联网,我们将这套工具提供给社区,以实现对Draytek边缘设备的可观测性、加固、透明度和漏洞研究。

演示

该工具作为研究项目的一部分开发,已在 DEFCON HHV 和 La Villa Hacker 上展示。您可以在此处找到幻灯片和 PoC 视频:链接。

注意

我们最初将其作为内部工具开发。它只是一组脚本,但显示出巨大潜力,促使我们将其开源。从那时起,我们一直在努力将这些脚本集成到您将在本仓库中找到的 Python 包中,并使其与其他设备型号兼容。

开始使用

要求:

  • Python3
  • Docker(可选)

安装

(可选)创建并激活Python虚拟环境:

root@kitploit:~
$ python3 -m virtualenv .venv
$ source .venv/bin.activate

安装 draytek_arsenal:

root@kitploit:~
$ cd draytek_arsenal
$ python3 -m pip install -r requirements.txt
$ python3 -m pip install .

测试安装:

root@kitploit:~
$ python3 -m draytek_arsenal

开发者安装

此安装将受本地代码更改影响

root@kitploit:~
$ python3 -m pip install -e .

Mips-tools

某些命令(如 mips_compile 和 mips_merge)需要额外的 Docker 镜像才能工作。
如果尚未下载,则会显示此错误消息:

root@kitploit:~
[x] Image 'draytek-arsenal' not found. Please build or download the image.

您可以通过以下命令下载镜像:

root@kitploit:~
$ docker pull ghcr.io/infobyte/draytek-arsenal:main

或使用以下命令构建:

root@kitploit:~
$ docker build -t draytek-arsenal ./mips-tools

用法

draytek-arsenal 是一组集成在 Python 包中的脚本。因此,要使用它,您需要选择一个命令:

root@kitploit:~
usage: draytek-arsenal [-h] [command] args..

部分命令如下:

parse_firmware

解析并显示 Draytek 固件的信息。

root@kitploit:~
usage: parse_firmware [-h] firmware

positional arguments:
  firmware    固件路径

options:
  -h, --help  显示此帮助信息并退出

extract small business

用于提取和解压缩运行 RTOS 的 Draytek 设备的命令。

root@kitploit:~
usage: extract_rtos [-h] [--rtos RTOS] [--fs FS] [--dlm DLM] [--dlm-key1 DLM_KEY1]
                  [--dlm-key2 DLM_KEY2]
                  firmware

positional arguments:
  firmware              固件路径

options:
  -h, --help            显示此帮助信息并退出
  --rtos RTOS, -r RTOS  提取并解压缩 RTOS 的目标文件路径
  --fs FS, -f FS        提取并解压缩文件系统的目标目录路径
  --dlm DLM, -d DLM     提取并解压缩 DLM 的目标目录路径
  --dlm-key1 DLM_KEY1   用于解密 DLM 的第一个密钥
  --dlm-key2 DLM_KEY2   用于解密 DLM 的第二个密钥

extract linux

用于提取和解压缩运行 Linux 的 Draytek 设备的命令。

root@kitploit:~
usage: extract_linux [-h] [--fs FS] --key KEY firmware

positional arguments:
  firmware        固件路径

options:
  -h, --help      显示此帮助信息并退出
  --fs FS, -f FS  提取并解压缩文件系统的目标目录路径
  --key KEY       用于解密的密钥

dlm_hash

获取 DLM 模块的哈希值。

root@kitploit:~
usage: dlm_hash [-h] [-c] dlm

positional arguments:
  dlm          DLM 路径

options:
  -h, --help   显示此帮助信息并退出
  -c           以 .c 代码格式输出

find_loading_addr

查找 RTOS 通过第一条跳转指令加载的地址。

root@kitploit:~
usage: find_loading_addr [-h] rtos

positional arguments:
  rtos         RTOS 路径

options:
  -h, --help   显示此帮助信息并退出

find_endianness

检查 RTOS 是小端序还是大端序。

root@kitploit:~
usage: find_endianness [-h] rtos

positional arguments:
  rtos         RTOS 路径

options:
  -h, --help   显示此帮助信息并退出

mips_compile

编译 MIPS 可重定位二进制文件(用于 DLMs)。

root@kitploit:~
usage: mips_compile [-h] output [input ...]

positional arguments:
  output      输出文件
  input       输入文件

options:
  -h, --help  显示此帮助信息并退出

mips_merge

合并两个 ELF MIPS 可重定位文件。

root@kitploit:~
usage: mips_merge [-h] first_input second_input output

positional arguments:
  first_input   第一个输入文件
  second_input  第二个输入文件
  output        输出文件

options:
  -h, --help    显示此帮助信息并退出
下载工具