Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Firmware_Slap — Scoperta di vulnerabilità nel firmware tramite analisi concolica e clustering di funzioni. | Kitploit
Strumenti/GitHubGitHub/christhecoolhut/firmware_slap
Analisi delle VulnerabilitàExploitAnalisi di BinariAnalisi del Firmware
GitHubchristhecoolhut/firmware_slap

Firmware_Slap

Scoperta di vulnerabilità nel firmware tramite analisi concolica e clustering di funzioni.

Vedi Repository
47681186 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Firmware Slap

Firmware slap combina l'analisi concolica con il clustering di funzioni per la scoperta di vulnerabilità e la similarità di funzioni nel firmware. Firmware slap è costruito come una serie di librerie e esporta la maggior parte delle informazioni come pickle o JSON per l'integrazione con altri strumenti.

Firmware Slap

Le slide del talk sono disponibili qui

Configurazione

Firmware slap dovrebbe essere eseguito in un ambiente virtuale. È stato testato su Python3.6

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

-- oppure --

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

#di solito è meglio aprire un nuovo terminale qui

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

Avrai bisogno di rabbitmq, docker e (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 richiede JDK 11.

sudo apt install default-jdk
java --version

Se vuoi usare le funzionalità di Elastic search esegui lo script Elasticsearch_and_kibana.sh

Avvio rapido

Assicurati che rabbitmq-server sia in esecuzione.

# In un terminale separato, esegui questo dalla directory principale "Firmware_Slap"
celery -A firmware_slap.celery_tasks worker --loglevel=info
# Buffer overflow di base
Discover_And_Dump.py examples/iwconfig -D iwconfig_results
Load_And_View_Results.py iwconfig_results.all.pickle

# Clicca su "management" nel pannello di sinistra
# Clicca su "Saved Objects"
# Clicca su "Import"
# Seleziona 'elastic_export.json' nella directory elastic all'interno di firmware slap
# Naviga su "dashboards" nel pannello di sinistra e seleziona 'Overview Dashboard'

Load_And_View_Results.py iwconfig_results.all.pickle -s

# Iniezione di comandi
tar -xvf examples/Almond_libs.tar.gz
Vuln_Discover_Celery.py examples/upload.cgi -L Almond_Root/lib/

Utilizzo

# Scarica il firmware usato per gli esempi
wget https://firmware.securifi.com/AL3_64MB/AL3-R024-64MB
binwalk -Mre AL3-R024-64MB

Avvia un worker celery dalla directory principale del progetto:

# In un terminale separato
celery -A firmware_slap.celery_tasks worker --loglevel=info

In una finestra terminale diversa, esegui un job di scoperta di vulnerabilità.

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

L'oggetto vulnerabilità restituito

Il comando sopra restituirà un oggetto nella variabile result. Questo è un dizionario con tutti i tipi di informazioni fantastiche sulla vulnerabilità. Ci sono tre chiavi principali nell'oggetto: Gli argomenti della funzione, La memoria e la posizione iniettata.

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

args

La chiave args dettaglierà le informazioni sull'argomento recuperato e quali devono essere i valori degli argomenti per riprodurre la vulnerabilità. Nell'esempio seguente, è stato recuperato un argomento e per attivare l'iniezione di comandi quell'argomento deve essere un char* che contenga "`reboot`" per attivare un riavvio.

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'"}]
Scarica lo strumento