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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
sandsifter — x86 प्रोसेसर फ़ज़र | Kitploit
उपकरण/GitHubGitHub/battelle/sandsifter
भेद्यता विश्लेषणरिवर्स इंजीनियरिंगफज़िंगहार्डवेयर सुरक्षाबाइनरी विश्लेषणपेपर और शोधलर्निंग और शिक्षा
GitHubbattelle/sandsifter

sandsifter

x86 प्रोसेसर फ़ज़र

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

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

सभी देखें →

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

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

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

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

s a n d s i f t e r

: x86 प्रोसेसर फ़ज़र

अवलोकन

sandsifter x86 प्रोसेसर में छिपे निर्देशों और हार्डवेयर बगों का ऑडिट करता है, व्यवस्थित रूप से मशीन कोड उत्पन्न करके प्रोसेसर के निर्देश सेट में खोज करता है, और निष्पादन में विसंगतियों की निगरानी करता है। Sandsifter ने हर प्रमुख विक्रेता के गुप्त प्रोसेसर निर्देशों की खोज की है; डिसअसेंबलर, असेंबलर और इम्यूलेटर में व्याप्त सॉफ़्टवेयर बग; एंटरप्राइज़ हाइपरवाइज़र की कमज़ोरियाँ; और x86 चिप्स में हानिरहित और सुरक्षा-महत्वपूर्ण दोनों प्रकार के हार्डवेयर बग उजागर किए हैं।

मौजूदा x86 प्रोसेसर की भीड़ को देखते हुए, इस उपकरण का लक्ष्य उपयोगकर्ताओं को उनके अपने सिस्टम में छिपे निर्देशों और बगों की जाँच करने में सक्षम बनाना है।

अपने प्रोसेसर के विरुद्ध एक बुनियादी ऑडिट चलाने के लिए:

root@kitploit:~
sudo ./sifter.py --unk --dis --len --sync --tick -- -P1 -t

demo_sandsifter

कंप्यूटर को व्यवस्थित रूप से असामान्य निर्देशों के लिए स्कैन किया जाता है। ऊपरी आधे भाग में, आप उन निर्देशों को देख सकते हैं जिन्हें sandsifter वर्तमान में प्रोसेसर पर परीक्षण कर रहा है। निचले आधे भाग में, sandsifter उसे मिली विसंगतियों की रिपोर्ट करता है।

खोज में कुछ घंटों से लेकर कुछ दिनों तक का समय लगेगा, जो आपके प्रोसेसर की गति और जटिलता पर निर्भर करता है। जब यह पूरी हो जाए, तो परिणामों का सारांश प्रस्तुत करें:

root@kitploit:~
./summarize.py data/log

demo_summarizer

आम तौर पर, आपके प्रोसेसर पर कई मिलियन अप्रलेखित निर्देश पाए जाएँगे, लेकिन ये आम तौर पर कुछ ही अलग-अलग समूहों में आते हैं। विसंगतियों को वर्गीकृत करने के बाद, सारांश उपकरण प्रत्येक निर्देश को एक समस्या श्रेणी में निर्दिष्ट करने का प्रयास करता है:

  • सॉफ़्टवेयर बग (उदाहरण के लिए, आपके हाइपरवाइज़र या डिसअसेंबलर में एक बग),
  • हार्डवेयर बग (आपके CPU में एक बग), या
  • अप्रलेखित निर्देश (एक निर्देश जो प्रोसेसर में मौजूद है, लेकिन निर्माता द्वारा स्वीकार नहीं किया गया है)

बाहर निकलने और सिस्टम स्कैन का टेक्स्ट-आधारित सारांश प्राप्त करने के लिए 'Q' दबाएँ:

स्कैन के परिणामों को कभी-कभी उपकरणों के लिए स्वचालित रूप से वर्गीकृत करना मुश्किल हो सकता है, और मैन्युअल विश्लेषण की आवश्यकता हो सकती है। अपने परिणामों का विश्लेषण करने में सहायता के लिए, बेझिझक ./data/log फ़ाइल को [email protected] पर भेजें। प्रोसेसर के निर्माता, मॉडल और संशोधन (/proc/cpuinfo से) के अलावा कोई व्यक्तिगत जानकारी इस लॉग में शामिल नहीं है।

परिणाम

sandsifter के साथ स्कैन करने से दर्जनों ऑपकोड श्रेणियों में अप्रलेखित प्रोसेसर सुविधाएँ, एंटरप्राइज़ हाइपरवाइज़र की कमज़ोरियाँ, लगभग हर प्रमुख डिसअसेंबली और इम्यूलेशन उपकरण में बग, और प्रोसेसर में ही सुरक्षा कमज़ोरियाँ खोलने वाले गंभीर हार्डवेयर बग उजागर हुए हैं।

परिणामों का विवरण प्रोजेक्ट whitepaper में पाया जा सकता है।

(TODO: विस्तृत परिणामों की सूची यहाँ)

निर्माण

Sandsifter को पहले Capstone डिसअसेंबलर स्थापित करने की आवश्यकता है: http://www.capstone-engine.org/। Capstone को आम तौर पर इस प्रकार स्थापित किया जा सकता है:

root@kitploit:~
sudo apt-get install libcapstone3 libcapstone-dev
sudo pip install capstone

Sandsifter को इस प्रकार बनाया जा सकता है:

root@kitploit:~
make

और फिर इसे इस प्रकार चलाया जाता है:

root@kitploit:~
sudo ./sifter.py --unk --dis --len --sync --tick -- -P1 -t

फ़्लैग

फ़्लैग sifter को --flag के साथ, और injector को -- -f के साथ पास किए जाते हैं।

उदाहरण:

root@kitploit:~
sudo ./sifter.py --unk --dis --len --sync --tick -- -P1 -t

Sifter फ़्लैग:

root@kitploit:~
--len
	सभी निर्देशों में लंबाई के अंतर खोजें (ऐसे निर्देश जो
	डिसअसेंबलर की अपेक्षा से अलग तरीके से निष्पादित हुए, या
	जिनका अस्तित्व तब नहीं था जब डिसअसेंबलर ने उनकी अपेक्षा की थी)

--dis
	मान्य निर्देशों में लंबाई के अंतर खोजें (ऐसे निर्देश जो
	डिसअसेंबलर की अपेक्षा से अलग तरीके से निष्पादित हुए)

--unk
	अज्ञात निर्देशों की खोज करें (ऐसे निर्देश जिनके बारे में डिसअसेंबलर
	नहीं जानता लेकिन वे सफलतापूर्वक निष्पादित होते हैं)

--ill
	--unk का उल्टा, अमान्य डिसअसेंबली खोजें (ऐसे निर्देश जो
	सफलतापूर्वक निष्पादित नहीं होते लेकिन डिसअसेंबलर उन्हें स्वीकार करता है)

--tick
	समय-समय पर वर्तमान निर्देश को डिस्क पर लिखें

--save
	बाहर निकलने पर खोज की प्रगति सहेजें

--resume
	अंतिम सहेजी गई अवस्था से खोज फिर से शुरू करें

--sync
	खोज परिणाम मिलते ही उन्हें डिस्क पर लिखें

--low-mem
	परिणामों को मेमोरी में संग्रहीत न करें

Injector फ़्लैग:

root@kitploit:~
-b
	मोड: ब्रूट फोर्स

-r
	मोड: रैंडमाइज़्ड फ़ज़िंग

-t
	मोड: टनल्ड फ़ज़िंग

-d
	मोड: बाह्य रूप से निर्देशित फ़ज़िंग

-R
	रॉ आउटपुट मोड

-T
	टेक्स्ट आउटपुट मोड

-x
	समय-समय पर प्रगति को stderr पर लिखें

-0
	null dereference की अनुमति दें (sudo आवश्यक है)

-D
	डुप्लिकेट उपसर्गों की अनुमति दें

-N
	कोई nx bit समर्थन नहीं

-s seed
	रैंडम खोज में, सीड मान

-B brute_depth
	ब्रूट खोज में, अधिकतम खोज गहराई

-P max_prefix
	खोजने के लिए अधिकतम उपसर्गों की संख्या

-i instruction
	वह निर्देश जिससे खोज शुरू करनी है (समावेशी)

-e instruction
	वह निर्देश जिस पर खोज समाप्त करनी है (अनन्य)

-c core
	वह कोर जिस पर खोज करनी है

-X blacklist
	निर्दिष्ट निर्देश को ब्लैकलिस्ट करें

-j jobs
	चलाने के लिए एक साथ कार्यों की संख्या

-l range_bytes
	प्रत्येक उप-श्रेणी में बेस निर्देश बाइट्स की संख्या

कुंजियाँ

m: मोड - sifter के लिए खोज मोड बदलें (ब्रूट फोर्स, रैंडम, या टनल)

q: बाहर निकलें - sifter से बाहर निकलें

p: विराम - खोज को विराम दें या फिर से शुरू करें

एल्गोरिदम

स्कैनिंग चार अलग-अलग खोज एल्गोरिदम का समर्थन करती है, जिन्हें कमांड लाइन पर सेट किया जा सकता है, या हॉटकीज़ के माध्यम से चक्रित किया जा सकता है।

  • रैंडम खोज परीक्षण के लिए यादृच्छिक निर्देश उत्पन्न करती है; यह आम तौर पर तेज़ी से परिणाम देती है, लेकिन जटिल छिपे निर्देशों और बगों को खोजने में असमर्थ है।
  • ब्रूट फोर्स खोज निर्देशों को उत्तरोत्तर आज़माती है, उपयोगकर्ता-निर्दिष्ट लंबाई तक; लगभग सभी स्थितियों में, यह रैंडम खोज से खराब प्रदर्शन करती है।
  • ड्रिवेन या म्यूटेशन-ड्रिवेन खोज आनुवंशिक एल्गोरिदम के माध्यम से नए, तेजी से जटिल निर्देश बनाने के लिए डिज़ाइन की गई है; आशाजनक होते हुए भी, यह दृष्टिकोण कभी पूरी तरह से साकार नहीं हुआ, और इसे भविष्य के शोध के लिए एक स्टब के रूप में छोड़ दिया गया है।
  • टनलिंग वह दृष्टिकोण है जो प्रस्तुति और श्वेत पत्र में वर्णित है, और लगभग सभी मामलों में गहनता और गति के बीच सर्वोत्तम समझौता प्रदान करता है।

सुझाव

  • sudo

    सर्वोत्तम परिणामों के लिए, उपकरण को रूट उपयोगकर्ता के रूप में चलाया जाना चाहिए। यह आवश्यक है ताकि प्रक्रिया पते 0 पर एक पृष्ठ को मेमोरी में मैप कर सके, जिसके लिए रूट अनुमतियों की आवश्यकता होती है। यह पृष्ठ कई निर्देशों को मेमोरी एक्सेस पर seg-fault होने से रोकता है, जिससे अधिक सटीक फॉल्ट विश्लेषण संभव होता है।

  • उपसर्ग

    निर्देश खोज की गहराई के लिए प्राथमिक सीमा खोजे जाने वाले उपसर्ग बाइट्स की संख्या है, प्रत्येक अतिरिक्त उपसर्ग बाइट के साथ खोज स्थान लगभग 10 के कारक से बढ़ जाता है। -P फ़्लैग के साथ उपसर्ग बाइट्स सीमित करें।

  • रंग

    सिफ्टर का इंटरफ़ेस 256 रंग के टर्मिनल के लिए डिज़ाइन किया गया है। जबकि विवरण आपके टर्मिनल के आधार पर बहुत भिन्न होते हैं, इसे मोटे तौर पर इस प्रकार पूरा किया जा सकता है:

    root@kitploit:~
    export TERM='xterm-256color'
    
  • GUI

    इंटरफ़ेस मानता है कि टर्मिनल कम से कम एक निश्चित आकार का है; यदि इंटरफ़ेस ठीक से प्रस्तुत नहीं हो रहा है, तो टर्मिनल का आकार बढ़ाने का प्रयास करें; यह अक्सर टर्मिनल फ़ॉन्ट आकार घटाकर किया जा सकता है।

    कुछ मामलों में, ग्राफिकल फ्रंट एंड के बिना उपकरण चलाना वांछनीय या आवश्यक हो सकता है। यह injector को सीधे चलाकर किया जा सकता है:

    root@kitploit:~
    sudo ./injector -P1 -t -0
    

    किसी सीधे injector आह्वान के परिणामों को फ़िल्टर करने के लिए, grep का उपयोग किया जा सकता है। उदाहरण के लिए,

    root@kitploit:~
    sudo ./injector -P1 -r -0 | grep '\.r' | grep -v sigill
    

    उन निर्देशों की खोज करता है जिनके लिए प्रोसेसर और डिसअसेंबलर निर्देश लंबाई पर असहमत थे (grep '.r'), लेकिन निर्देश सफलतापूर्वक निष्पादित हुआ (grep -v sigill)।

  • लक्षित फ़ज़िंग

    कई मामलों में, फ़ज़र को किसी विशिष्ट लक्ष्य की ओर निर्देशित करना मूल्यवान होता है। उदाहरण के लिए, यदि आपको संदेह है कि किसी इम्यूलेटर में बार-बार आने वाले 'lock' उपसर्गों (0xf0) के आसपास कमज़ोरियाँ हैं, तो आप -i और -e फ़्लैग के साथ फ़ज़र को निर्देश स्थान के इस क्षेत्र की खोज के लिए निर्देशित कर सकते हैं:

    root@kitploit:~
    sudo ./sifter.py --unk --dis --len --sync --tick -- -t -i f0f0 -e f0f1 -D -P15
    
  • विरासत प्रणालियाँ

    बहुत पुराने सिस्टम (i586 श्रेणी के प्रोसेसर, कम मेमोरी वाले सिस्टम) की स्कैनिंग के लिए, sifter को --low-mem फ़्लैग और injector को -N फ़्लैग दें:

संदर्भ

  • तकनीकों और परिणामों की चर्चा Black Hat प्रस्तुति में पाई जा सकती है।
  • तकनीकी विवरण whitepaper में वर्णित हैं।
  • Black Hat प्रस्तुति की स्लाइड्स यहाँ हैं।

लेखक

sandsifter Christopher Domas (@xoreaxeaxeax) का एक शोध प्रयास है।

टूल डाउनलोड करें
root@kitploit:~
sudo ./sifter.py --unk --dis --len --sync --tick --low-mem -- -P1 -t -N

यदि आप देखते हैं कि आपके स्कैन बहुत जल्दी पूरे हो रहे हैं (उदाहरण के लिए, एक स्कैन सेकंडों में पूरा होता है), तो यह आम तौर पर इसलिए होता है क्योंकि ये फ़्लैग आपके द्वारा स्कैन किए जा रहे प्रोसेसर के लिए आवश्यक हैं।

  • 32 बनाम 64 बिट

    डिफ़ॉल्ट रूप से, sandsifter होस्ट ऑपरेटिंग सिस्टम की बिटनेस को लक्षित करने के लिए बनाया गया है। हालाँकि, कुछ निर्देश 32 बिट प्रक्रिया में चलने पर 64 बिट प्रक्रिया में चलने की तुलना में अलग व्यवहार करते हैं। इन परिदृश्यों का पता लगाने के लिए, कभी-कभी 64 बिट सिस्टम पर 32 बिट sandsifter चलाना मूल्यवान होता है।

    64 बिट सिस्टम पर 32 बिट sandsifter बनाने के लिए, Capstone को 32 बिट के रूप में स्थापित किया जाना चाहिए; इसके निर्देश http://www.capstone-engine.org/ पर पाए जा सकते हैं।

    फिर sandsifter को 32 बिट आर्किटेक्चर के लिए बनाया जाना चाहिए:

    root@kitploit:~
    make CFLAGS=-m32
    

    इसके साथ, 64 बिट सिस्टम पर 32 बिट निर्देश स्थान की खोज की जा सकती है।