Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Firmware_Slap — Обнаружение уязвимостей в прошивке с помощью конколического анализа и кластеризации функций. | Kitploit
Инструменты/GitHubGitHub/christhecoolhut/firmware_slap
Анализ уязвимостейЭксплуатацияАнализ Бинарных ФайловАнализ Прошивок
GitHubchristhecoolhut/firmware_slap

Firmware_Slap

Обнаружение уязвимостей в прошивке с помощью конколического анализа и кластеризации функций.

Репозиторий
47681186 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Firmware Slap

Firmware Slap объединяет конколический анализ с кластеризацией функций для обнаружения уязвимостей и поиска схожих функций в прошивках. Firmware Slap построен в виде набора библиотек и экспортирует большую часть информации в формате pickle или JSON для интеграции с другими инструментами.

Firmware Slap

Слайды с доклада можно найти здесь

Установка

Firmware Slap следует запускать в виртуальном окружении. Протестировано на Python3.6.

sudo apt install python3-virtualenv
virtualenv -p python3 fwslap
source fwslap/bin/activate

-- или --

cd ~
mkdir .virtualenvs
pip install virtualenv
which virtualenv #note path warnings
pip install virtualenvwrapper
echo "export PATH=$PATH:~/.local/bin" >> ~/.bashrc
echo "export WORKON_HOME=~/.virtualenvs" >> ~/.bashrc
echo "source ~/.local/bin/virtualenvwrapper.sh" >> ~/.bashrc

#usually best here to open new terminal

mkvirtualenv fwslap -p /usr/bin/python3
workon fwslap
python setup.py install

Вам потребуются rabbitmq, docker и (radare2 или Ghidra)

# Ubuntu
sudo apt install rabbitmq-server docker.io
# OSX
brew install rabbitmq

# Radare2
git clone https://github.com/radare/radare2.git
sudo ./radare2/sys/install.sh
# Ghidra
wget https://ghidra-sre.org/ghidra_9.0.4_PUBLIC_20190516.zip
unzip ghidra_9.0.4_PUBLIC_20190516.zip -d ghidra
echo "export PATH=\$PATH:$PWD/ghidra/ghidra_9.0.4/support" >> ~/.bashrc

Ghidra требует JDK 11.

sudo apt install default-jdk
java --version

Если вы хотите использовать Elasticsearch, запустите сценарий Elasticsearch_and_kibana.sh

Быстрый старт

Убедитесь, что rabbitmq-server запущен.

# In a Separate terminal, run this in the top level "Firmware_Slap" directory
celery -A firmware_slap.celery_tasks worker --loglevel=info
# Basic buffer overflow
Discover_And_Dump.py examples/iwconfig -D iwconfig_results
Load_And_View_Results.py iwconfig_results.all.pickle

# Click management on the left pane
# Click Saved Objects
# Click Import
# Select 'elastic_export.json' under the elastic directory in firmware slap
# Navigate to dashboards on left pane and select 'Overview Dashboard'

Load_And_View_Results.py iwconfig_results.all.pickle -s

# Command injection
tar -xvf examples/Almond_libs.tar.gz
Vuln_Discover_Celery.py examples/upload.cgi -L Almond_Root/lib/

Использование

# Get the firmware used for examples
wget https://firmware.securifi.com/AL3_64MB/AL3-R024-64MB
binwalk -Mre AL3-R024-64MB

Запустите celery worker из корневого каталога проекта:

# In a separate terminal
celery -A firmware_slap.celery_tasks worker --loglevel=info

В другом окне терминала запустите задачу поиска уязвимостей.

$ Vuln_Discover_Celery.py Almond_Root/etc_ro/lighttpd/www/cgi-bin/upload_bootloader.cgi -L Almond_Root/lib/
[+] Getting argument functions
[+] Analyzing 1 functions
  0%|                                                                                                                                                                                                                                   | 0/1 [00:01<?, ?it/s]
{   'Injected_Location': {   'base': '0x7ffefde8',
........................ SNIP ......................
    'type': 'Command Injection'}
Python 3.5.2 (default, Nov 12 2018, 13:43:14) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.3.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: 

Возвращаемый объект уязвимости

Указанная выше команда вернет объект в переменной result. Это словарь, содержащий массу полезной информации об уязвимости. В объекте есть три основных ключа: аргументы функции, память и место инъекции.

In [3]: result.keys()                                                                                 
Out[3]: dict_keys(['args', 'file_name', 'type', 'mem', 'Injected_Location'])

Аргументы

Ключ args содержит информацию о восстановленном аргументе и о том, какими должны быть значения аргумента для воспроизведения уязвимости. В приведенном ниже примере восстанавливается один аргумент, и для запуска инъекции команд этот аргумент должен быть char*, содержащим "`reboot`", чтобы инициировать перезагрузку.

In [1]: result['args']                                                           
Out[1]: 
[{'base': 'a1',
  'type': 'int',
  'value': "0x0 -> b'`reboot`\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x00'"}]
Скачать инструмент