Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Firmware_Slap — Descubriendo vulnerabilidades en firmware mediante análisis concolico y agrupación de funciones. | Kitploit
Herramientas/GitHubGitHub/christhecoolhut/firmware_slap
Análisis de VulnerabilidadesExplotaciónAnálisis de BinariosAnálisis de Firmware
GitHubchristhecoolhut/firmware_slap

Firmware_Slap

Descubriendo vulnerabilidades en firmware mediante análisis concolico y agrupación de funciones.

Ver Repositorio
4768118hace 6 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Firmware Slap

Firmware Slap combina análisis concolico con agrupación de funciones para el descubrimiento de vulnerabilidades y similitud de funciones en firmware. Firmware Slap está construido como una serie de bibliotecas y exporta la mayoría de la información como pickles o JSON para la integración con otras herramientas.

Firmware Slap

Las diapositivas de la charla se pueden encontrar aquí

Configuración

Firmware Slap debe ejecutarse en un entorno virtual. Se ha probado en Python3.6

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

-- o --

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

Necesitarás rabbitmq, docker y (radare2 o 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 requiere JDK 11.

sudo apt install default-jdk
java --version

Si quieres usar las características de Elastic search, ejecuta el script Elasticsearch_and_kibana.sh

Inicio rápido

Asegúrate de que rabbitmq-server esté en ejecución.

# En una terminal separada, ejecuta esto en el directorio superior "Firmware_Slap"
celery -A firmware_slap.celery_tasks worker --loglevel=info
# Desbordamiento de búfer básico
Discover_And_Dump.py examples/iwconfig -D iwconfig_results
Load_And_View_Results.py iwconfig_results.all.pickle

# Haz clic en Administración en el panel izquierdo
# Haz clic en Objetos guardados
# Haz clic en Importar
# Selecciona 'elastic_export.json' en el directorio elastic de firmware slap
# Navega a Paneles de control en el panel izquierdo y selecciona 'Panel general'

Load_And_View_Results.py iwconfig_results.all.pickle -s

# Inyección de comandos
tar -xvf examples/Almond_libs.tar.gz
Vuln_Discover_Celery.py examples/upload.cgi -L Almond_Root/lib/

Uso

# Obtén el firmware usado para los ejemplos
wget https://firmware.securifi.com/AL3_64MB/AL3-R024-64MB
binwalk -Mre AL3-R024-64MB

Inicia un trabajo de celery desde el directorio raíz del proyecto:

# En una terminal separada
celery -A firmware_slap.celery_tasks worker --loglevel=info

En otra ventana de terminal, ejecuta un trabajo de descubrimiento de vulnerabilidades.

$ 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]: 

El objeto de vulnerabilidad devuelto

El comando anterior devolverá un objeto en la variable result. Este es un diccionario con todo tipo de información útil sobre la vulnerabilidad. Hay tres claves principales en el objeto: Los argumentos de la función, la memoria y la ubicación inyectada.

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

args

La clave args detalla información sobre el argumento recuperado y cuáles deben ser los valores del argumento para recrear la vulnerabilidad. En el siguiente ejemplo, se recupera un argumento, y para desencadenar la inyección de comandos, ese argumento debe ser un char* que contenga "`reboot`" para desencadenar un reinicio.

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'"}]
Descargar herramienta