Firmware Analysis and Comparison Tool (FKIE-CAD / Fraunhofer). Веб-платформа для анализа и сравнения прошивок. 60+ плагинов: извлечение файловых систем, анализ строк, поиск CVE, сравнение версий прошивок, обнаружение Open Source-компонентов и лицензий.
git clone https://github.com/fkie-cad/FACT_core.git cd FACT_core && python3 -m venv venv && source venv/bin/activate src/install/pre_install.sh # После перезагрузки: src/install/install.py src/start_fact.py # веб-интерфейс на порту 5000
Анализ прошивок может использоваться для достижения нескольких интересных целей. Среди основных — выявление функциональности, компонентов и потенциальных проблем безопасности в проприетарных прошивках.
Инструмент анализа и сравнения прошивок (FACT) предназначен для автоматизации большей части ручной работы по анализу прошивок. FACT объединяет растущий набор мощных анализов для создания единого интерфейса, который позволяет пользователю перейти от произвольного образца прошивки к готовому анализу. Некоторые ключевые особенности анализа FACT заключаются в том, что результаты:
Кроме того, FACT предлагает множество способов навигации и визуализации результатов анализа и содержимого прошивок для удобного доступа. Основной интерфейс FACT — это веб-интерфейс на основе html/js/css, который может быть размещен локально или распространен через сеть. Дополнительно FACT предоставляет REST-подобный HTTP API, который можно изучить с помощью встроенного SwaggerUI. Некоторые ключевые особенности веб-интерфента:
Хотя FACT поддерживается как исследовательский прототип, проект хорошо протестирован, включает базовую документацию и предлагает множество функций уровня производства. Мы всегда рады обратной связи и предложениям по улучшению.
Более подробную информацию и несколько скриншотов можно найти на нашей странице проекта.
FACT разработан как многопроцессное приложение: чем больше ядер и оперативной памяти, тем лучше.
| Минимальные | Рекомендуемые |
|---|---|
| 4 ядра | 16 ядер |
| 8 ГБ ОЗУ | 64 ГБ ОЗУ |
| 10 ГБ дискового пространства | 10* ГБ дискового пространства |
[!NOTE] Для установки кода FACT, контейнеров и исполняемых файлов требуется около 10 ГБ. Дополнительное пространство необходимо для хранения распакованных файлов и результатов анализа. Это может быть на отдельном разделе или диске.
В принципе, FACT можно установить на любом дистрибутиве Linux, но установщик ограничен
Установка на более старых дистрибутивах (например, Debian 11 "Bullseye" или Ubuntu 20.04 "Focal") все еще может работать, но не считается стабильной, поскольку эти дистрибутивы достигли конца поддержки.
FACT требует Python 3.10–3.14 (должен быть по умолчанию во всех поддерживаемых дистрибутивах)
Процесс установки в основном автоматизирован и обернут в один скрипт. Однако некоторые функции можно выбрать отдельно. Для подробного руководства по установке FACT см. INSTALL.md.
[!IMPORTANT] Обратите внимание, что хотя FACT широко использует контейнеры, он все еще содержит множество зависимостей (и не предоставляет функцию удаления). Если вы хотите сохранить вашу систему чистой, вы можете попробовать один из вариантов установки, предложенных ниже.
Мы предоставляем ежемесячные готовые к использованию vagrant-боксы с нашей ветки master. Vagrant — это простой и удобный способ начать работу с FACT без необходимости устанавливать его на вашей машине. Просто настройте vagrant и импортируйте наш предоставленный бокс в VirtualBox. Наши боксы можно найти на сайте vagrantup!
Ознакомьтесь с тем, как начать работу с FACT и vagrant в нашем руководстве.
Также существует версия в контейнерах Docker, но в настоящее время она не поддерживается. (см. репозиторий FACT_docker для получения дополнительной информации).
Вы можете запустить FACT, выполнив скрипт start_fact.py.
Скрипт автоматически обнаруживает все установленные компоненты.
src/start_fact.py
После этого FACT становится доступен по адресу http://localhost:5000 (по умолчанию) или https://localhost (если FACT установлен с nginx).
Вы можете выключить систему, нажав Ctrl + c или отправив SIGTERM скрипту start_fact.py.
[!CAUTION] FACT не предназначен для использования в качестве публичной интернет-службы. Веб-интерфейс не является защищенным приложением. Мы стараемся минимизировать проблемы с безопасностью, применяя SecDevOps, но FACT все еще может содержать уязвимости. Обязательно сбросьте все пароли в конфигурации fact, если планируете размещать FACT на не полностью доверенных сетях.
[!TIP] Более подробную документацию по использованию FACT можно найти на наших страницах wiki.
Вы также можете ознакомиться с нашей документацией Sphinx.
Информация о том, что такое FACT и как он работает, также доступна в презентациях в
папке docs.
FACT предоставляет REST API. Более подробную информацию можно найти на странице wiki.
FACT предоставляет опциональную базовую аутентификацию, управление ролями и пользователями. Более подробную информацию можно найти на странице wiki.
Простейший способ внести вклад — написать собственный плагин. Наше Руководство разработчика можно найти на wiki в GitHub.
В настоящее время доступные дополнительные плагины:
Скрипт src/firmware_import_export.py может использоваться для экспорта распакованных файлов и результатов анализа и их импорта
в другой экземпляр FACT.
Данные хранятся как ZIP-архив, и это также формат, который скрипт ожидает при импорте.
Для экспорта файлов и данных анализа проанализированных образов прошивок выполните
python3 firmware_import_export.py export FW_UID [FW_UID_2 ...] [-o OUTPUT_DIR]
[!NOTE] Экспортируемые архивы могут занимать значительное место на диске. Нет фиксированной зависимости, но их размер может превышать размер исходной прошивки в 2–10 раз.
После этого вы можете импортировать экспортированные файлы с помощью
python3 firmware_import_export.py import FW.zip [FW_2.zip ...]
Мы рады были представить FACT на нескольких сессиях BlackHat Arsenal.
Благодарим @botlabsDev, который первоначально предоставил Vagrantfile, который сейчас, однако, устарел.
Данный проект частично финансируется Федеральным ведомством по информационной безопасности Германии (BSI) и другими организациями.
Firmware Analysis and Comparison Tool (FACT)
Авторское право (C) 2015-2026 Fraunhofer FKIE
Данная программа является свободным программным обеспечением. Вы можете распространять её и/или изменять в соответствии с условиями GNU General Public License, опубликованной Free Software Foundation, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии. Данная программа распространяется в надежде, что она будет полезна, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА или ПРИГОДНОС ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ.
Подробности см. в GNU General Public License. Вы должны получить копию GNU General Public License вместе с этой программой. Если её нет, см. http://www.gnu.org/licenses/.Некоторые плагины могут иметь другие лицензии. В таком случае файл лицензии предоставляется в папке плагина.