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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
DeadDialect — एक सत्र-अद्वितीय RISC-V ISA — हर बूट एक अलग बोली बोलता है। पुरानी बाइनरी अमान्य हो जाती हैं। मैलवेयर स्थायी नहीं रह सकता। | Kitploit
उपकरण/GitHubGitHub/engrbilal992/deaddialect
रक्षात्मक उपकरणएम्बेडेड सिस्टम सुरक्षाशोषणरिवर्स इंजीनियरिंगमालवेयर विश्लेषणक्रिप्टोग्राफीपेनिट्रेशन टेस्टिंगहार्डवेयर सुरक्षाबाइनरी विश्लेषणरेड टीमिंग
GitHubengrbilal992/deaddialect

DeadDialect

64 महीने पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

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

एक सत्र-अद्वितीय RISC-V ISA — हर बूट एक अलग बोली बोलता है। पुरानी बाइनरी अमान्य हो जाती हैं। मैलवेयर स्थायी नहीं रह सकता।

रिपॉजिटरी देखें

DeadDialect

प्रत्येक बूट एक अलग भाषा बोलता है। कल का बाइनरी आज का मृत कोड है।

एक सत्र-अनूठा RISC-V ISA पुनर्मैपिंग सिस्टम। हर बार जब सिस्टम बूट होता है, यह निर्देश सेट का एक नया क्रिप्टोग्राफिक क्रमपरिवर्तन उत्पन्न करता है। एक सत्र के लिए संकलित बाइनरी अगले सत्र में क्रिप्टोग्राफिक रूप से अस्वीकृत हो जाते हैं। रिबूट से बचने वाला मैलवेयर निष्पादित नहीं हो सकता — यह एक मृत बोली बोलता है।


विचार

मानक ISA निश्चित अनुबंध होते हैं। हर प्रोग्राम, हर लाइब्रेरी, मैलवेयर का हर टुकड़ा इस बात पर सहमत होता है कि 0x13 का अर्थ क्या है, सिस्कॉल 64 क्या करता है, स्टैक पॉइंटर कौन सा रजिस्टर है। DeadDialect हर सत्र में उस अनुबंध को तोड़ता है।

root@kitploit:~
बूट A:  addi = 0x13,  write = syscall 64,   t0 = x5
बूट B:  addi = 0x33,  write = syscall 178,  t0 = x19
बूट C:  addi = 0x67,  write = syscall 291,  t0 = x23

बूट A के लिए संकलित बाइनरी बूट B पर बकवास है। यह या तो गलत निर्देश निष्पादित करता है, गलत कर्नेल फ़ंक्शन कॉल करता है, या क्रिप्टोग्राफिक फ़िंगरप्रिंट जांच में विफल रहता है — जो भी पहले हो।


आर्किटेक्चर

root@kitploit:~
256-बिट सत्र बीज  (os.urandom)
         │
         ├─── ऑपकोड क्रमपरिवर्तन   →  /etc/isa/map              12!  ≈ 2²⁹
         ├─── रजिस्टर क्रमपरिवर्तन →  /etc/isa/register_keyring 21!  ≈ 2⁶⁵
         └─── सिस्कॉल क्रमपरिवर्तन  →  /etc/isa/syscall_keyring  436! ≈ 2³⁰⁰⁰⁺
                                                                 ─────────────
                                               संयुक्त एंट्रॉपी: 2³⁰⁹⁴⁺

तीन स्वतंत्र परतें। एक हमलावर जो एक को तोड़ता है, वह अभी भी अन्य दो का सामना करता है।

root@kitploit:~
┌──────────────────────────────────────────────────────────────┐
│                     बाइनरी (.text)                           │
│        संकलन समय पर isa_integrate.py द्वारा पुनर्लिखित         │
│        .text+0 पर एम्बेडेड फ़िंगरप्रिंट NOP                  │
└─────────────────────────┬────────────────────────────────────┘
                          │
                          ▼
┌──────────────────────────────────────────────────────────────┐
│                  पैच किया हुआ QEMU 8.2.0                      │
│                                                              │
│  translate.c  ←  register_mapping.h                         │
│  ├── 24-बिट SHA-256 फ़िंगरप्रिंट सत्यापित करें               │
│  │   बेमेल → पहले निर्देश से पहले SIGILL                     │
│  └── 21 पुनर्व्यवस्थित करने योग्य रजिस्टरों को पुनः मैप करें  │
│                                                              │
│  syscall.c    ←  syscall_mapping.h                          │
│  └── व्युत्पन्न सिस्कॉल नंबर को मानक में अनुवाद करें          │
│                                                              │
│  [Phase 1/2]  ←  isa_mapping.h                              │
│  └── 12 प्राथमिक ऑपकोडों को पुनः मैप करें                   │
└──────────────────────────┬───────────────────────────────────┘
                           │
                           ▼
              Alpine Linux RISC-V (सामान्य रूप से बूट होता है)
              OS पुनर्मैपिंग से अनजान है

फ़िंगरप्रिंट प्रोटोकॉल

हर संकलित बाइनरी .text की शुरुआत में दो हानिरहित addi x0,x0,N NOP के रूप में एम्बेडेड 24-बिट क्रिप्टोग्राफिक फ़िंगरप्रिंट रखता है। ये वास्तविक RISC-V NOP हैं — वे शून्य रजिस्टर में लिखते हैं और उनका कोई आर्किटेक्चरल प्रभाव नहीं है — लेकिन वे सत्र प्रमाण एन्कोड करते हैं।

root@kitploit:~
QEMU फ़िंगरप्रिंट NOP + मैचिंग कीरिंग देखता है  →  RUN
QEMU फ़िंगरप्रिंट NOP + गलत कीरिंग देखता है     →  SIGILL
QEMU कोई फ़िंगरप्रिंट नहीं + सक्रिय कीरिंग देखता है     →  SIGILL  ← मानक बाइनरी अवरुद्ध
QEMU फ़िंगरप्रिंट NOP + खाली कीरिंग देखता है     →  SIGILL  ← पुनर्मैप किया गया बाइनरी अवरुद्ध

फ़िंगरप्रिंट SHA-256(बीज) से प्राप्त होता है। परीक्षण किए गए पहले 100,000 बीजों में कोई टकराव नहीं पाया गया।


रिपॉजिटरी संरचना

root@kitploit:~
DeadDialect/
├── opcode-remapping/       चरण 1 — 12 ऑपकोड फेरबदल
├── trigger-remapping/      चरण 2 — लाइव ट्रिगर, रिबूट की आवश्यकता नहीं
│   └── alpine/             Alpine Linux डेमो
├── syscall-remapping/      चरण 3 M1 — 436 syscall फेरबदल
├── register-remapping/     चरण 3 M2 — 21 रजिस्टर फेरबदल + फ़िंगरप्रिंट
└── integration/            चरण 3 M3 — सभी परतें एक साथ
    ├── isa_integrate.py    एकीकृत रीराइटर
    ├── register_mapping.h
    ├── syscall_mapping.h
    ├── isa_remap_ldso.h    musl ld.so पैच (डायनामिक बाइनरी)
    ├── trigger/
    │   └── trigger_demo.sh एक ट्रिगर दोनों परतों को परमाणु रूप से घुमाता है
    ├── alpine/
    │   ├── boot_alpine.sh  पैच किए गए QEMU के तहत Alpine बूट करें
    │   ├── alpine_demo.sh  Alpine के अंदर पूर्ण ISA डेमो
    │   ├── full_alpine_test.sh
    │   └── setup_alpine.sh नई मशीन सेटअप
    ├── build.sh            QEMU 8.2.0 डाउनलोड + पैच करता है
    ├── demo.sh
    └── audit.sh            51/51 जांचें

त्वरित प्रारंभ

आवश्यकताएँ: Ubuntu 22.04, clang, lld, python3, wget, ninja-build, libglib2.0-dev, libpixman-1-dev, libslirp-dev

root@kitploit:~
git clone https://github.com/engrbilal992/DeadDialect.git
cd DeadDialect/integration

# पैच किया हुआ QEMU 8.2.0 बनाएं (~10 मिनट पहला रन)
bash build.sh

# सुरक्षा डेमो
bash demo.sh

# एक ट्रिगर दोनों परतों को एक साथ घुमाता है
bash trigger/trigger_demo.sh

# पैच किए गए QEMU के तहत Alpine Linux बूट करें
cd alpine
bash setup_alpine.sh   # केवल पहली बार — कर्नेल + rootfs डाउनलोड करता है
bash boot_alpine.sh    # ~30 सेकंड में ~ # प्रॉम्प्ट पर बूट होता है

# Alpine ISA डेमो
bash alpine_demo.sh
bash full_alpine_test.sh

डेमो परिणाम

6-परिदृश्य सुरक्षा प्रमाण

root@kitploit:~
T1: मानक बाइनरी,   खाली keyrings    →  चलता है   ✓
T2: एकीकृत बाइनरी, सही keyrings  →  चलता है   ✓
T3: मानक बाइनरी,   सक्रिय keyrings   →  SIGILL ✗
T4: एकीकृत बाइनरी, खाली keyrings    →  SIGILL ✗
T5: गलत-बीज बाइनरी                    →  SIGILL ✗
T6: सही बीज बाइनरी                  →  चलता है   ✓

ट्रिगर डेमो

root@kitploit:~
सत्र A  बाइनरी चलता है                        SUCCESS ✓
सत्र A  मैलवेयर चलता है                       EXECUTED (अपेक्षित — एक ही सत्र)
           ── ट्रिगर चालू होता है ──
सत्र B  पुराना बाइनरी                         BLOCKED ✓
सत्र B  मैलवेयर                            BLOCKED ✓
सत्र B  B के लिए संकलित नया बाइनरी          SUCCESS ✓

तनाव परीक्षण

root@kitploit:~
100,000 बीज — शून्य टकराव
बीज 999999999                →  भिन्न सत्र के तहत BLOCKED ✓
बीज 2²⁵⁶-1 (अधिकतम 256-बिट)    →  भिन्न सत्र के तहत BLOCKED ✓
मिड-रन में कीरिंग दूषित     →  दूषित कीरिंग पर BLOCKED   ✓

ऑडिट परिणाम

माइलस्टोन

सुरक्षा गुण

यह क्या रोकता है

  • मैलवेयर स्थायित्व — पिछले सत्र का कोई भी बाइनरी अगले बूट पर मृत है
  • पूर्व-संकलित शोषण — एक निश्चित ISA के लिए शेलकोड तुरंत विफल हो जाता है
  • रीप्ले हमले — एक सत्र के बाइनरी दूसरे में निष्पादित नहीं हो सकते
  • मानक QEMU निष्पादन — पुनर्मैप किए गए बाइनरी को पैच किए गए एक्सीक्यूटर की आवश्यकता होती है

एंट्रॉपी क्यों मायने रखती है

root@kitploit:~
रजिस्टर क्रमपरिवर्तन का अनुमान लगाना:  1 in 21!  ≈ 1 in 51 क्विंटिलियन
सिस्कॉल क्रमपरिवर्तन का अनुमान लगाना:   1 in 436! ≈ 1 in 10^(1000+)
दोनों का एक साथ अनुमान लगाना:   कोई व्यवहार्य हमला नहीं

POC दायरा

  • -march=rv64g आवश्यक (RVC संपीड़ित निर्देश अभी तक संभाले नहीं गए)
  • परीक्षण प्रोग्राम के लिए केवल स्टैटिक बाइनरी (डायनामिक समर्थन isa_remap_ldso.h के माध्यम से)
  • एक ही सत्र के भीतर पूरा होने वाले हमले संबोधित नहीं हैं

प्रत्येक परत कैसे काम करती है

रजिस्टर (register_mapping.h)

32 RISC-V रजिस्टरों में से 21 फेरबदल किए गए। ABI रजिस्टर जमे हुए। QEMU हुक OPCODE_FIELDS तालिका का उपयोग करता है — केवल वास्तविक रजिस्टर फ़ील्ड पुनर्मैप किए जाते हैं, इमिडिएट कभी स्पर्श नहीं किए जाते (Curtis का फिक्स)।

जमे हुएफेरबदल करने योग्य
x0 x1 x2 x10-x17x3-x9, x18-x31 (21 रजिस्टर)

Syscall (syscall_mapping.h)

436 लिनक्स RISC-V syscalls क्रमबद्ध। do_syscall() में एक पंक्ति। mtime-रीलोड — QEMU पुनरारंभ के बिना कीरिंग अपडेट।

Opcode (isa_mapping.h)

12 प्राथमिक ऑपकोड फेरबदल किए गए। translate.c में डिकोड हुक डिकोडर से पहले मानक ऑपकोड को पुनर्स्थापित करता है।

ld.so (isa_remap_ldso.h)

musl डायनामिक लिंकर पैच — लोड समय पर हर लोड किए गए ELF के .text को पुनर्मैप करता है। LD_PRELOAD के माध्यम से बायपास नहीं किया जा सकता। Alpine musl पुनर्निर्माण की आवश्यकता है।


भविष्य की दिशाएँ

  • ARM समर्थन (एक ही अवधारणा, अलग निश्चित ISA अनुबंध)
  • कर्नेल .text पुनर्मैपिंग प्री-बूट
  • हार्डवेयर FPGA कार्यान्वयन
  • Hacker News / शैक्षणिक प्रकाशन

लेखक और सहयोगी

Curtis Cole

Muhammad Bilal

"मुझे पता था कि मेरा विचार वास्तविक था, लेकिन मुझे पूरा यकीन है कि सभी ने सोचा कि मैं पागल हूँ।" — Curtis Cole

टूल डाउनलोड करें
जांचें
स्थिति
ट्रिगर पुनर्मैपिंग37/37✓
सिस्कॉल पुनर्मैपिंग40/40✓
रजिस्टर पुनर्मैपिंग43/43✓
एकीकरण51/51✓