
暗号化されたFortinet FortiOSファームウェアイメージを復号化する
Fortinet FortiOS ファームウェアの暗号化イメージを復号します
Bishop Fox Team X 開発

このツールは Linux 環境での実行を想定しています。
お使いのシステムに python3 と gzip パッケージをインストールしてください。
Fortinet サポートサイトから暗号化されたファームウェアイメージをダウンロードし、このツールを実行します。
❯ ./forticrack.py -h
Usage: python3 forticrack.py <FILENAME>
FortiCrack は既知平文攻撃を利用してファイルの暗号化キーを導出し、イメージデータを復号します。詳細はブログ「Breaking Fortinet Firmware Encryption」をご覧ください。
❯ ./forticrack.py FGT_100D-v6-build9451-FORTINET.out
___ __ __ ___ __ __ __
|__ / \ |__) | | / ` |__) /\ / ` |__/
| \__/ | \ | | \__, | \ /~~\ \__, | \
[+] Decrypting FGT_100D-v6-build9451-FORTINET.out
[+] Loaded image data
[+] Found key: oAbBIcDde7FfgGHhiIjJ7KlLmsnN3OPP
[+] Validated: FG100D-6.04-FW-build1966-23031
[+] Decrypted: FGT_100D-v6-build9451-FORTINET.decrypted
本稿執筆時点では、暗号化された Fortinet ファームウェアイメージはすべて同じ脆弱な暗号化方式を使用していますが、そのすべてが同じ既知平文を持つわけではありません。この攻撃は大半のイメージに対して有効ですが、一部の製品ではキーを正常に導出するためにエクスプロイトの修正が必要になる場合があります。
このプロジェクトは GPL v3 の下でライセンスされています。