Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Firmware_Slap — कंकोलिक विश्लेषण और फंक्शन क्लस्टरिंग के माध्यम से फर्मवेयर में कमजोरियों की खोज करना। | Kitploit
उपकरण/GitHubGitHub/christhecoolhut/firmware_slap
भेद्यता विश्लेषणशोषणबाइनरी विश्लेषणफर्मवेयर विश्लेषण
GitHubchristhecoolhut/firmware_slap

Firmware_Slap

कंकोलिक विश्लेषण और फंक्शन क्लस्टरिंग के माध्यम से फर्मवेयर में कमजोरियों की खोज करना।

रिपॉजिटरी देखें
476815 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Firmware Slap

फर्मवेयर स्लैप (Firmware slap) भेद्यता खोज और फर्मवेयर में फंक्शन समानता के लिए कॉन्कोलिक विश्लेषण को फंक्शन क्लस्टरिंग के साथ जोड़ता है। फर्मवेयर स्लैप को लाइब्रेरीज़ की एक श्रृंखला के रूप में बनाया गया है और अधिकांश जानकारी को अन्य टूल्स के साथ एकीकरण के लिए या तो पिकल्स (pickles) या JSON के रूप में निर्यात करता है।

Firmware Slap

वार्ता से स्लाइड्स यहाँ पाई जा सकती हैं here

सेटअप

फर्मवेयर स्लैप को वर्चुअल एनवायरनमेंट में चलाया जाना चाहिए। इसका परीक्षण Python3.6 पर किया गया है।

root@kitploit:~
sudo apt install python3-virtualenv
virtualenv -p python3 fwslap
source fwslap/bin/activate

-- या --

root@kitploit:~
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
root@kitploit:~
python setup.py install

आपको rabbitmq, docker, और (radare2 या Ghidra) की आवश्यकता होगी।

root@kitploit:~
# 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 की आवश्यकता है।

root@kitploit:~
sudo apt install default-jdk
java --version

यदि आप Elastic search की सुविधाओं का उपयोग करना चाहते हैं तो Elasticsearch_and_kibana.sh स्क्रिप्ट चलाएँ।

त्वरित आरंभ

सुनिश्चित करें कि rabbitmq-server चल रहा है।

root@kitploit:~
# In a Separate terminal, run this in the top level "Firmware_Slap" directory
celery -A firmware_slap.celery_tasks worker --loglevel=info

बुनियादी बफर ओवरफ्लो

root@kitploit:~
Discover_And_Dump.py examples/iwconfig -D iwconfig_results
Load_And_View_Results.py iwconfig_results.all.pickle

बाएँ पैनल पर क्लिक मैनेजमेंट पर क्लिक करें

सेव्ड ऑब्जेक्ट्स पर क्लिक करें

इम्पोर्ट पर क्लिक करें

फर्मवेयर स्लैप में elastic निर्देशिका के अंतर्गत 'elastic_export.json' चुनें

बाएँ पैनल पर डैशबोर्ड पर जाएँ और 'Overview Dashboard' चुनें

root@kitploit:~
Load_And_View_Results.py iwconfig_results.all.pickle -s

कमांड इंजेक्शन

root@kitploit:~
tar -xvf examples/Almond_libs.tar.gz
Vuln_Discover_Celery.py examples/upload.cgi -L Almond_Root/lib/

उपयोग

root@kitploit:~
# उदाहरणों के लिए उपयोग किए जाने वाले फर्मवेयर प्राप्त करें
wget https://firmware.securifi.com/AL3_64MB/AL3-R024-64MB
binwalk -Mre AL3-R024-64MB

प्रोजेक्ट रूट निर्देशिका से एक celery कार्य प्रारंभ करें:

root@kitploit:~
# In a separate terminal
celery -A firmware_slap.celery_tasks worker --loglevel=info

एक अन्य टर्मिनल विंडो में, एक भेद्यता खोज कार्य चलाएँ।

root@kitploit:~
$ 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 वेरिएबल में एक ऑब्जेक्ट लौटाएगा। यह एक डिक्शनरी है जिसमें भेद्यता के बारे में सभी प्रकार की शानदार जानकारी होती है। ऑब्जेक्ट में तीन प्रमुख कुंजियाँ हैं: फंक्शन आर्गुमेंट, मेमोरी, और इंजेक्टेड लोकेशन।

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

args

args कुंजी पुनर्प्राप्त किए गए आर्गुमेंट के बारे में विस्तृत जानकारी देगी और यह कि भेद्यता को पुनः बनाने के लिए आर्गुमेंट के मान क्या होने चाहिए। नीचे दिए गए उदाहरण में, एक आर्गुमेंट पुनर्प्राप्त किया गया है, और कमांड इंजेक्शन को ट्रिगर करने के लिए उस आर्गुमेंट को एक char* होना चाहिए जिसमें रीबूट ट्रिगर करने के लिए "reboot" शामिल हो।

root@kitploit:~
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'"}]

Memory

ऑब्जेक्ट का मेमोरी घटक भेद्यता को ट्रिगर करने के लिए सेट किए गए आवश्यक मेमोरी मानों का रिकॉर्ड रखता है। यह आवश्यक मेमोरी बाधाओं को सेट करने के लिए अपराधी कमांडों के साथ स्टैक पते और .text पते भी प्रदान करता है। पहली आवश्यक मेमोरी घटना mtd_write_firmware+0x0 पर है और दूसरी mtd_write_firmware+0x38 पर है। भविष्य के प्रदर्शन कार्य को सुंदर बनाने में मदद के लिए असेंबली प्रदान की गई है।

root@kitploit:~
In [2]: result['mem']                                                                   
Out[2]: 
[{'BBL_ADDR': '0x401138',
  'BBL_DESC': {'DESCRIPTION': 'mtd_write_firmware+0x0 in upload_bootloader.cgi (0x401138)',
   'DISASSEMBLY': ['0x401138:\tlui\t$gp, 0x42',
    '0x40113c:\taddiu\t$sp, $sp, -0x228',
    '0x401140:\taddiu\t$gp, $gp, -0x5e90',
    '0x401144:\tlw\t$t9, -0x7f84($gp)',
    '0x401148:\tsw\t$a2, 0x10($sp)',
    '0x40114c:\tlui\t$a2, 0x40',
    '0x401150:\tmove\t$a3, $a1',
    '0x401154:\tsw\t$ra, 0x224($sp)',
    '0x401158:\tsw\t$gp, 0x18($sp)',
    '0x40115c:\tsw\t$a0, 0x14($sp)',
    '0x401160:\taddiu\t$a1, $zero, 0x200',
    '0x401164:\taddiu\t$a0, $sp, 0x20',
    '0x401168:\tjalr\t$t9',
    '0x40116c:\taddiu\t$a2, $a2, 0x196c']},
  'DATA': "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\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'",
  'DATA_ADDRS': ['0x0']},
 {'BBL_ADDR': '0x401170',
  'BBL_DESC': {'DESCRIPTION': 'mtd_write_firmware+0x38 in upload_bootloader.cgi (0x401170)',
   'DISASSEMBLY': ['0x401170:\tlw\t$gp, 0x18($sp)',
    '0x401174:\tnop\t',
    '0x401178:\tlw\t$t9, -0x7f68($gp)',
    '0x40117c:\tnop\t',
    '0x401180:\tjalr\t$t9',
    '0x401184:\taddiu\t$a0, $sp, 0x20']},
  'DATA': "b'/bin/mtd_write -o 0 -l 0 write `reboot`'",
  'DATA_ADDRS': ['0x7ffefe07']}]

कमांड इंजेक्शन विशिष्ट

चूंकि कमांड इंजेक्शन प्रदर्शित करना सबसे आसान है, मैंने कमांड इंजेक्शन के स्थान को आसानी से प्रदर्शित करने के लिए एक सुविधा डिक्शनरी कुंजी बनाई है।

root@kitploit:~
In [4]: result['Injected_Location']                                                                      
Out[4]: {'base': '0x7ffefde8', 'type': 'char *', 'value': '/bin/mtd_write -o 0 -l 0 write `reboot`'}

नमूना भेद्यता क्लस्टर स्क्रिप्ट

भेद्यता क्लस्टर स्क्रिप्ट नमूना भेद्यता खोज स्क्रिप्ट में दी गई विधि का उपयोग करके भेद्यताओं को खोजने का प्रयास करेगी और फिर एक निकाले गए फर्मवेयर में दिए गए फंक्शनों के सेट पर k-means क्लस्टर बनाकर भेद्य फंक्शनों के समान फंक्शन खोजेगी।

root@kitploit:~
$ Vuln_Cluster_Celery.py -h
usage: Vuln_Cluster_Celery.py [-h] [-L LD_PATH] [-F FUNCTION] [-V VULN_PICKLE]
                              Directory

positional arguments:
  Directory

optional arguments:
  -h, --help            show this help message and exit
  -L LD_PATH, --LD_PATH LD_PATH
                        Path to libraries to load
  -F FUNCTION, --Function FUNCTION
  -V VULN_PICKLE, --Vuln_Pickle VULN_PICKLE

नीचे दिया गया कमांड -F को एक ज्ञात भेद्य फंक्शन के रूप में लेता है। -V को पिछले रन से डंप किए गए पिकल के रूप में लेता है ताकि नई भेद्यताओं की खोज की आवश्यकता न हो और -L को लाइब्रेरी पथ के लिए। एक नमूना उपयोग:

root@kitploit:~
$ python Vuln_Cluster_Celery.py -F mtd_write_firmware -L Almond_Root/lib/ Almond_Root/etc_ro/lighttpd/www/cgi-bin/
[+] Reading Files
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00,  2.80it/s]
Getting functions from executables
Starting main
... Snip ...

टूल डाउनलोड करें