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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
dyen — स्टॉक macOS Python के लिए इन-मेमोरी Mach-O dylib लोडर; dlopen के बिना या डिस्क पर लिखे बिना पेलोड को डिक्रिप्ट, मैप और रन करता है, वैकल्पिक एन्क्रिप्टेड कवर-फ़ाइल एम्बेडिंग के साथ। | Kitploit
उपकरण/GitHubGitHub/cenobyte-vincit/dyen
पेलोड जनरेशनआईडीएस/आईपीएस से बचनापोस्ट-शोषणक्रिप्टोग्राफीबाइनरी विश्लेषणरेड टीमिंगपेलोड डेवलपमेंट
GitHubcenobyte-vincit/dyen

dyen

स्टॉक macOS Python के लिए इन-मेमोरी Mach-O dylib लोडर; dlopen के बिना या डिस्क पर लिखे बिना पेलोड को डिक्रिप्ट, मैप और रन करता है, वैकल्पिक एन्क्रिप्टेड कवर-फ़ाइल एम्बेडिंग के साथ।

रिपॉजिटरी देखें
133 दिन पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

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

dyen

dyen स्टॉक macOS Python का उपयोग करके Mach-O dylib को मेमोरी में लोड करता है और उस dylib पर dlopen का उपयोग किए बिना एक निर्यातित एंट्री पॉइंट को कॉल करता है। लक्ष्य यह है कि इमेज टारगेट पर कभी भी एक स्टैंडअलोन फ़ाइल के रूप में मौजूद न हो और dyld के साथ कभी पंजीकृत न हो।

by cenobyte [email protected] 2026

https://github.com/cenobyte-vincit/dyen

सारांश

dyen macOS पर स्टॉक /usr/bin/python3 के लिए एक stdlib-only इन-मेमोरी Mach-O लोडर (loader.py) है। यह एक सादा dylib, एक स्टैंडअलोन DYEN v1 ब्लॉब (एन्क्रिप्टेड लिफाफा), या एक कवर फ़ाइल जिसके अंत में EOF पर वह ब्लॉब जुड़ा हो, पढ़ता है, अनाम mmap के साथ होस्ट स्लाइस को मैप करता है, क्लासिक rebase/bind फिक्सअप लागू करता है, और ctypes फंक्शन पॉइंटर के माध्यम से dyld_main को कॉल करता है।

encrypt_dyld.py स्टेजिंग टूल है: यह एक dylib को stdout पर DYEN ब्लॉब के रूप में लपेटता है, या एक कवर फ़ाइल को dyld_<basename> पर कॉपी करता है जिसमें ब्लॉब जुड़ा होता है। बंडल किया गया dyld/dyld.c पेलोड केवल hello world प्रिंट करता है। loader.py केवल macOS के लिए है; एन्क्रिप्टर Linux या macOS पर चलता है।

इन-ट्री लोडर एक स्थानीय पथ या stdin पढ़ता है। एक ड्रॉपर या स्टेज 1 नेटवर्क पर कवर फ़ाइल (या रॉ बाइट्स) लाकर उन्हें read_dyld_bytes() को देगा, ताकि एन्क्रिप्टेड dylib टारगेट पर अपनी खुद की फ़ाइल के रूप में कभी न उतरे।

  • फ़ाइल पथ या stdin: सादा dylib, .dyen, या कवर फ़ाइल।
  • सफलता पेलोड का stdout लिखती है (PoC: hello world)। डायग्नोस्टिक्स stderr पर जाते हैं।
  • प्रक्रिया एक executable anonymous mapping रखती है। डिक्रिप्ट किया गया Mach-O डिस्क पर नहीं लिखा जाता।

आवश्यकताएँ

रनटाइम होस्ट

  • macOS (Darwin)
  • स्टॉक /usr/bin/python3 (केवल stdlib)

बिल्ड होस्ट

loader.py केवल macOS के लिए है। PoC dylib को संकलित करने के लिए Mac पर Apple clang की आवश्यकता होती है। encrypt_dyld.py पहले से बनी dylib के विरुद्ध Linux या macOS पर चलता है।

  • clang और make के साथ macOS (dyld/dyld.c को संकलित करने के लिए)
  • encrypt_dyld.py के लिए Python 3 (केवल stdlib)
  • ruff, pylint, cppcheck (brew install ruff pylint cppcheck)

बिल्ड

root@kitploit:~
make

यह build/libdyld.dylib (universal x86_64 + arm64) संकलित करता है, build/libdyld.dyen लिखता है, और उसी एन्क्रिप्टेड dylib को pdf/dyld_c4611_sample_explain.pdf में एम्बेड करता है। जनरेट किया गया PDF कमिट नहीं किया जाता; make इसे लिखता है और make clean इसे हटा देता है। स्रोत कवर pdf/c4611_sample_explain.pdf है।

सादा dylib एक मध्यवर्ती आर्टिफैक्ट है। रनटाइम पर लोडर मैपिंग से पहले एक DYEN ब्लॉब को डिक्रिप्ट करता है, या तो स्टैंडअलोन .dyen फ़ाइल से या एक कवर फ़ाइल से जिसके अंत में एन्क्रिप्टेड dyld जुड़ा होता है।

root@kitploit:~
# स्टैंडअलोन DYEN ब्लॉब stdout पर (Makefile build/libdyld.dyen पर रीडायरेक्ट करता है)
python3 encrypt_dyld.py build/libdyld.dylib CHANGEMEASAP > build/libdyld.dyen

# एन्क्रिप्टेड dyld को कवर फ़ाइल के अंदर छिपाएँ -> pdf/dyld_c4611_sample_explain.pdf
python3 encrypt_dyld.py build/libdyld.dylib CHANGEMEASAP pdf/c4611_sample_explain.pdf

# पासवर्ड के बजाय इस Mac के सीरियल नंबर को एन्क्रिप्शन कुंजी के रूप में उपयोग करें (स्थानीय परीक्षण)
python3 encrypt_dyld.py build/libdyld.dylib "$(python3 loader.py --serial)" > build/libdyld.dyen

# टारगेट Mac के सीरियल नंबर को एन्क्रिप्शन कुंजी के रूप में उपयोग करें (काल्पनिक सीरियल)
python3 encrypt_dyld.py build/libdyld.dylib C07XH4V2MD6T > build/libdyld.dyen

encrypt_dyld.py Linux या macOS पर चलता है। loader.py केवल macOS पर चलता है।

उपयोग

लोडर CLI एक फ़ाइल पथ लेता है, या stdin पढ़ता है। इसके पास कोई पासवर्ड फ्लैग नहीं है। डिक्रिप्ट पहले इस Mac के हार्डवेयर सीरियल की कोशिश करता है, फिर DEFAULT_DYLD_KEY (CHANGEMEASAP) की। यदि सीरियल नहीं पढ़ा जा सकता, तो केवल हार्डकोडेड कुंजी आज़माई जाती है। CLI हमेशा इनपुट लोड करता है और dyld_main को कॉल करता है। loader.py को टारगेट पर कॉपी करें।

root@kitploit:~
/usr/bin/python3 loader.py build/libdyld.dylib
/usr/bin/python3 loader.py pdf/dyld_c4611_sample_explain.pdf
/usr/bin/python3 loader.py build/libdyld.dyen

cat build/libdyld.dylib | /usr/bin/python3 loader.py
cat pdf/dyld_c4611_sample_explain.pdf | /usr/bin/python3 loader.py
cat build/libdyld.dyen | /usr/bin/python3 loader.py

बिना जुड़े ब्लॉब वाली कवर फ़ाइल विफल हो जाती है:

root@kitploit:~
/usr/bin/python3 loader.py pdf/c4611_sample_explain.pdf

loader.py --serial इस Mac का हार्डवेयर सीरियल प्रिंट करता है (केवल macOS):

root@kitploit:~
python3 loader.py --serial

वर्बोज़ stderr ट्रेस के लिए LOADER_DEBUG को किसी भी मान पर सेट करें:

root@kitploit:~
LOADER_DEBUG=1 /usr/bin/python3 loader.py build/libdyld.dyen

एग्ज़िट कोड

loader.py और encrypt_dyld.py:

कोडअर्थ
0सफलता
1उपयोग त्रुटि, डिक्रिप्ट विफलता, लापता सीरियल, या I/O त्रुटि

कॉन्फ़िगरेशन

LOADER_DEBUG (कोई भी मान) stderr पर वर्बोज़ ट्रेस प्रिंट करता है: इनपुट स्रोत, हेडर/मैजिक जाँच, DYEN ब्लॉब पहचान, डिक्रिप्ट, map/bind, प्रतीक समाधान। make डिफ़ॉल्ट रूप से encrypt_dyld.py को LOADER_DEBUG=1 देता है; make LOADER_DEBUG= एन्क्रिप्ट-चरण ट्रेस को शांत करता है।

loader.py में DEFAULT_DYLD_KEY CHANGEMEASAP है। एन्क्रिप्ट के लिए encrypt_dyld.py को एक स्पष्ट पासवर्ड या Mac सीरियल तर्क की आवश्यकता होती है।

loader.py में पुनरावृत्ति गणना (PBKDF2_ITERATIONS) PBKDF2-HMAC-SHA256 के लिए वर्तमान OWASP Password Storage Cheat Sheet अनुशंसा (600,000 पुनरावृत्तियाँ) का पालन करती है। PKCS #5 / RFC 8018 PBKDF2 को परिभाषित करता है लेकिन पुनरावृत्ति गणना डिप्लॉयर पर छोड़ देता है; NIST SP 800-63B PBKDF2 की अनुमति देता है बिना कोई विशिष्ट संख्या अनिवार्य किए। OWASP व्यावहारिक लक्ष्य प्रकाशित करता है जो हार्डवेयर तेज़ होने के साथ समय के साथ बढ़ते हैं, इसलिए इस मान की समय-समय पर समीक्षा की जानी चाहिए। यह पासवर्ड-स्ट्रेचिंग मार्गदर्शन है जो यहाँ परीक्षण कुंजी पर लागू किया गया है, न कि कोई स्थायी प्रोटोकॉल स्थिरांक।

सत्यापन

बिल्ड होस्ट:

root@kitploit:~
make test
make lint        # cppcheck (C) + ruff + pylint (Python)
make check       # केवल cppcheck
make lint-python # ruff + pylint

make test लिंटर्स चलाता है, PoC dylib बनाता है, उसे एन्क्रिप्ट करता है (स्टैंडअलोन .dyen और PDF एम्बेड), और /usr/bin/python3 के तहत इंटीग्रेशन परीक्षण चलाता है। प्रत्येक लोड परीक्षण पुष्टि करता है कि stdout में hello world है। ये परीक्षण सह-स्थित Mac पर चलते हैं। वे स्वच्छ-रनटाइम प्रमाण नहीं हैं।

सीमाएँ

CrowdStrike Falcon macOS इस तकनीक का पता लगाता है। अन्य EDR अप्रयुक्त हैं।

लोडर केवल क्लासिक LC_DYLD_INFO rebase/bind लागू करता है। यह chained fixups, Objective-C, या Swift को संभालता नहीं है। dlopen केवल Apple-हस्ताक्षरित सिस्टम निर्भरताओं के लिए उपयोग किया जाता है (उदाहरण के लिए /usr/lib/libSystem.B.dylib)। पेलोड dyld के साथ कभी पंजीकृत नहीं होता।

EOF पर append-at-EOF छिपाव हेक्स डंप में दिखाई देता है।

हथियारीकरण: ऑपरेशनल उपयोग से पहले DYENCRYPT बदलें। DYLD_BLOB_MAGIC (loader.py) में PoC मैजिक एक स्थिर हस्ताक्षर है। YARA नियम, फ़ाइल स्कैनर, और सरल rfind ह्यूरिस्टिक्स इससे मेल खा सकते हैं। इसे अपनी पसंद के एक अद्वितीय मान से बदलें (एन्क्रिप्ट और लोडर को सिंक में रखें; लंबाई निश्चित नहीं है, लेकिन एम्बेडेड कवर फ़ाइलों के लिए लंबा बेहतर है)।

इन-ट्री dylib केवल hello world प्रिंट करता है।

यह भी देखें

  • ARCHITECTURE.md
  • https://github.com/cenobyte-vincit/dyen
टूल डाउनलोड करें