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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/hardenedlinux/userland-exec
शोषणआईडीएस/आईपीएस से बचनापोस्ट-शोषणबाइनरी विश्लेषणरेड टीमिंग
GitHubhardenedlinux/userland-exec

userland-exec

यूज़रलैंड exec PoC जिसे अटैक वेक्टर तकनीक के रूप में उपयोग किया जा सकता है

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

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

सभी देखें →

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

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

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

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

Userland Exec

Userland exec, वर्तमान एड्रेस स्पेस के भीतर मौजूदा प्रोसेस इमेज को एक नई प्रोसेस इमेज से बदल देता है। यह execve सिस्टम कॉल के व्यवहार की नकल करता है, लेकिन प्रोसेस इमेज का वर्णन करने वाली प्रोसेस संरचनाएं अपरिवर्तित रहती हैं। दूसरे शब्दों में, सिस्टम उपयोगिताओं द्वारा रिपोर्ट किया गया प्रोसेस नाम पुराने प्रोसेस नाम को ही बनाए रखेगा।

इस तकनीक का उपयोग मनमाना कोड निष्पादन (arbitrary code execution) प्राप्त करने के बाद स्टील्थ (stealth) प्राप्त करने के लिए किया जा सकता है। इसका उपयोग noexec पार्टीशन में संग्रहीत बायनेरीज़ को निष्पादित करने के लिए भी किया जा सकता है।

पहला userland exec grugq द्वारा बनाया गया था। यह रिपॉज़िटरी Rapid7 Mettle library से अत्यधिक प्रेरित है, जिसमें इस तकनीक का एक व्यापक ब्लॉग विवरण शामिल है।

प्रारंभ में, इस रिपॉज़िटरी के अधिकांश कोड ने Mettle लाइब्रेरी की नकल की थी, लेकिन तब से इसे SELinux सत्यापन को बायपास करने के लिए अतिरिक्त जटिलता शामिल करने हेतु विस्तारित किया गया है।

SELinux सत्यापन बायपास

SELinux में execmem सत्यापन शामिल है, जो निम्नलिखित सुनिश्चित करता है:

  • एक पेज जो कभी लिखने योग्य (writable) था, वह निष्पादन योग्य (executable) नहीं बन सकता (अर्थात, mprotect का उपयोग करके को में बदलना अस्वीकृत है)।
PROT_WRITE
PROT_EXEC
  • कोई भी पेज एक साथ लिखने योग्य और निष्पादन योग्य नहीं हो सकता (W ^ X नीति)।
  • mprotect को बायपास करना

    mprotect को बायपास करने के लिए, एक अस्थायी फ़ाइल बनाना आवश्यक है। इसे munmap और mmap के साथ संयुक्त memfd_create का उपयोग करके प्राप्त किया जा सकता है, जिससे mprotect सिस्टम कॉल को पूरी तरह से टाला जा सकता है।

    W ^ X को बायपास करना

    elf_debugger.c उदाहरण प्रदर्शित करता है कि किसी भी ELF में एक PT_LOAD क्षेत्र होता है जो निष्पादन योग्य और लिखने योग्य दोनों होता है। निष्पादन के दौरान प्रोग्राम जानकारी लोड करने के लिए यह क्षेत्र आवश्यक है। इस समस्या के समाधान के लिए, bypass_wx.c कार्यान्वयन बनाया गया था। यह डिज़ाइन:

    • एक पेज को निष्पादन योग्य के रूप में चिह्नित करता है।
    • इस पेज पर लिखने के प्रयासों पर, एक SIGSEGV सिग्नल ट्रिगर करता है।
    • सिग्नल को इंटरसेप्ट करता है और पेज सुरक्षा को PROT_EXEC से PROT_WRITE में गतिशील रूप से बदल देता है।

    परीक्षण

    OSआर्किटेक्चरपरिणाम
    Ubuntu 24.04x86_64सफलता
    Archlinux 6.12.4x86_64सफलता
    CentOSx86_64सफलता
    Raspberry Pi OSarm64सफलता
    S23 Android 14arm64सफलता

    निर्माण और उपयोग

    यह अनुभाग वर्णन करता है कि Android और x86 मशीनों के लिए कैसे निर्माण किया जाए। आगे बढ़ने से पहले सुनिश्चित करें कि libelf स्थापित है।

    x86

    निर्माण

    root@kitploit:~
    mkdir build && cd build
    cmake ..
    make
    

    उपयोग

    root@kitploit:~
    desktop % strace ./uexec hello others args here 2>&1 | grep exec
    execve("./uexec", ["./uexec", "hello", "others", "args", "here"], 0x7ffc34ec02f0 /* 54 vars */) = 0
    desktop % strace bash -c ./hello 2>&1 | grep exec
    execve("/usr/bin/bash", ["bash", "-c", "./hello"], 0x7ffebecc3130 /* 54 vars */) = 0
    newfstatat(AT_FDCWD, "/desktop/userland-exec/build", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
    newfstatat(AT_FDCWD, "/desktop/userland-exec", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
    execve("./hello", ["./hello"], 0x5fb22658e2a0 /* 54 vars */) = 0
    

    डीबग निर्माण

    root@kitploit:~
    mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=Debug ..
    make
    

    Android

    निर्माण

    root@kitploit:~
    mkdir build && cd build
    cmake -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
          -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-30 ..
    make
    

    उपयोग

    root@kitploit:~
    desktop % adb push uexec hello /data/local/tmp
    uexec: 1 file pushed, 0 skipped. 113.9 MB/s (22912 bytes in 0.000s)
    hello: 1 file pushed, 0 skipped. 184.9 MB/s (6936 bytes in 0.000s)
    2 files pushed, 0 skipped. 0.3 MB/s (29848 bytes in 0.090s)
    
    desktop % adb shell
    dm3q:/ $ cd /data/local/tmp
    dm3q:/data/local/tmp $ chmod +x uexec
    dm3q:/data/local/tmp $ ./hello
    Hello World
    dm3q:/data/local/tmp $ ./uexec hello
    Hello World
    dm3q:/data/local/tmp $
    

    समस्या निवारण

    CentOS पर, libc लाइब्रेरी असामान्य व्यवहार प्रदर्शित कर सकती है। इस समस्या के समाधान के लिए, असेंबली में लिखा गया एक सरल "Hello, World" प्रोग्राम, hello_nolibc.s, प्रदान किया गया है। यह उदाहरण cmake के साथ मिलकर प्रदर्शित करता है कि libc से लिंक किए बिना प्रोग्राम कैसे बनाया और निष्पादित किया जाए।

    यदि आपका CMAKE 4.0 से ऊपर है तो आप बिल्ड में -DCMAKE_POLICY_VERSION_MINIMUM=3.5 जोड़ सकते हैं।

    लाइसेंस

    यह रिपॉज़िटरी GPL-3.0 लाइसेंस का उपयोग करती है।

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