
Ferramenta de Análise e Comparação de Firmware
A análise de firmware pode ser usada para alcançar vários objetivos interessantes. Os principais são identificar funcionalidades, componentes e potenciais fragilidades de segurança em firmware de caixa preta.
A Ferramenta de Análise e Comparação de Firmware (FACT) visa automatizar o máximo possível do trabalho manual de análise de firmware. O FACT combina um conjunto crescente de análises poderosas para criar uma interface unificada que leva o usuário de uma amostra de firmware arbitrária a uma análise concluída. Algumas das principais características da análise do FACT é que os resultados são
Além disso, o FACT oferece várias maneiras de navegar e visualizar os resultados das análises e o conteúdo do firmware para fácil acessibilidade. A interface principal do FACT é uma interface web baseada em html/js/css que pode ser hospedada localmente ou compartilhada em rede. Além disso, o FACT oferece uma API HTTP semelhante a REST que pode ser explorada com um SwaggerUI integrado. Alguns recursos principais da interface web são:
Embora o FACT seja mantido como um protótipo de pesquisa, o projeto é bem testado, inclui uma base de documentação e oferece uma infinidade de recursos de nível de produção. Estamos sempre em busca de feedback e solicitações de recursos.
Mais detalhes e algumas capturas de tela podem ser encontrados em nossa página do projeto.
O FACT é projetado como uma aplicação multiprocesso; quanto mais Núcleos e RAM, melhor.
| Mínimo | Recomendado |
|---|---|
| 4 Núcleos | 16 Núcleos |
| 8 GB de RAM | 64 GB de RAM |
| 10 GB de espaço em disco | 10* GB de espaço em disco |
[!NOTE] Cerca de 10 GB são necessários para configurar o código, o contêiner e os binários do FACT. Espaço adicional é necessário para armazenamento de arquivos descompactados e resultados de análise. Isso pode ser em uma partição ou unidade separada.
É possível, em princípio, instalar o FACT em qualquer distribuição Linux, mas o instalador é limitado a
A instalação em distribuições mais antigas (por exemplo, Debian 11 "Bullseye" ou Ubuntu 20.04 "Focal") pode ainda funcionar, mas não é considerada estável, pois essas distribuições atingiram o fim da vida útil.
O FACT requer Python 3.10–3.14 (deve ser o padrão em todas as distribuições suportadas)
O processo de configuração é amplamente automatizado e encapsulado em um único script. No entanto, alguns recursos podem ser selecionados especificamente. Para um guia detalhado sobre como instalar o FACT, consulte INSTALL.md.
[!IMPORTANT] Observe que, embora faça uso extensivo de contêineres, o FACT ainda contém muitas dependências (e não há desinstalação fornecida). Se você deseja manter seu sistema limpo, pode tentar uma das opções de configuração fornecidas a seguir.
Fornecemos boxes vagrant mensais e prontas para uso do nosso branch master. Vagrant é uma maneira fácil e conveniente de começar a usar o FACT sem precisar instalá-lo em sua máquina. Basta configurar o vagrant e importar nossa box fornecida para o VirtualBox. Nossas boxes podem ser encontradas no site vagrantup!
Confira como começar a usar o FACT e o vagrant em nosso tutorial.
Há também uma versão dockerizada, mas atualmente não é mantida. (consulte o repositório FACT_docker para mais informações).
Você pode iniciar o FACT executando o script start_fact.py. O script detecta automaticamente todos os componentes instalados.
src/start_fact.py
Depois disso, o FACT pode ser acessado em http://localhost:5000 (padrão) ou https://localhost (se o FACT estiver instalado com nginx).
Você pode desligar o sistema pressionando Ctrl + c ou enviando um SIGTERM ao script start_fact.py.
[!CAUTION] O FACT não se destina a ser usado como um serviço público de internet. A interface web não é uma aplicação endurecida. Tentamos limitar os problemas de segurança aplicando SecDevOps, mas o FACT ainda pode oferecer vulnerabilidades. Certifique-se de redefinir todas as senhas na configuração do FACT se planeja hospedá-lo em redes não totalmente confiáveis.
[!TIP] Mais documentação sobre como usar o FACT pode ser encontrada em nossas páginas wiki.
Você também pode dar uma olhada em nossa documentação Sphinx.
Informações sobre o que é o FACT e como ele funciona também podem ser encontradas nos slides na pasta docs.
O FACT fornece uma API REST. Mais informações podem ser encontradas na página wiki.
O FACT fornece uma autenticação básica opcional, gerenciamento de papéis e usuários. Mais informações podem ser encontradas na página wiki.
A maneira mais fácil de contribuir é escrever seu próprio plugin. Nosso Manual do Desenvolvedor pode ser encontrado no wiki do GitHub.
Plugins adicionais atualmente disponíveis:
O script src/firmware_import_export.py pode ser usado para exportar arquivos descompactados e resultados de análise e importá-los em outra instância do FACT. Os dados são armazenados como um arquivo ZIP, e este também é o formato que o script espera durante a importação. Para exportar arquivos e dados de análise de imagens de firmware analisadas, execute
python3 firmware_import_export.py export FW_UID [FW_UID_2 ...] [-o OUTPUT_DIR]
[!NOTE] Os arquivos exportados podem ocupar um espaço em disco significativo. Não há uma relação fixa, mas pode ultrapassar o tamanho do firmware original por um fator de 2 a 10.
Depois disso, você pode importar os arquivos exportados com
python3 firmware_import_export.py import FW.zip [FW_2.zip ...]
Tivemos o prazer de mostrar o FACT em várias sessões do BlackHat Arsenal.
Agradecimentos a @botlabsDev, que inicialmente forneceu um Vagrantfile que agora, no entanto, está obsoleto.
Este projeto é parcialmente financiado pelo Escritório Federal Alemão de Segurança da Informação (BSI) e outros.
Ferramenta de Análise e Comparação de Firmware (FACT)
Copyright (C) 2015-2026 Fraunhofer FKIE
Este programa é software livre: você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU, conforme publicada pela Free Software Foundation, seja a versão 3 da Licença ou (a seu critério) qualquer versão posterior. Este programa é distribuído na esperança de que seja útil, mas SEM NENHUMA GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM.
Consulte a Licença Pública Geral GNU para obter mais detalhes. Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa.
Se não, veja http://www.gnu.org/licenses/.Alguns plugins podem ter licenças diferentes. Se for o caso, um arquivo de licença é fornecido na pasta do plugin.