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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
kfd — kfd, short for kernel file descriptor, is a project to read and write kernel memory on Apple devices. | Kitploit
उपकरण/GitHubGitHub/felix-pb/kfd
iOS SecurityExploitationMobile SecurityBinary Exploitation
GitHubfelix-pb/kfd

kfd

kfd, short for kernel file descriptor, is a project to read and write kernel memory on Apple devices.

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

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

सभी देखें →

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

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

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

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

संक्षिप्त अस्वीकरण: मेरा अन्य उपकरणों और iOS संस्करणों के लिए ऑफ़सेट जोड़ने का कोई इरादा नहीं है।

kfd

kfd, जो kernel file descriptor का संक्षिप्त रूप है, Apple उपकरणों पर kernel मेमोरी पढ़ने और लिखने की एक परियोजना है। यह विभिन्न कमजोरियों का लाभ उठाता है जिनका दोहन करके dangling PTE प्राप्त किए जा सकते हैं, जिन्हें PUAF primitive कहा जाएगा, जो "physical use-after-free" का संक्षिप्त रूप है। फिर, यह उन physical pages के अंदर कुछ kernel objects को पुनः आवंटित करता है और KRKW primitive प्राप्त करने के लिए dangling PTEs के माध्यम से उन्हें सीधे user space से manipulate करता है, जो "kernel read/write" का संक्षिप्त रूप है। exploit कोड पूरी तरह से एक लाइब्रेरी, libkfd में समाहित है, लेकिन परियोजना में iOS और macOS के लिए सरल executable wrappers भी शामिल हैं। libkfd का public API काफी छोटा और सहज है:

root@kitploit:~
enum puaf_method {
    puaf_physpuppet,
    puaf_smith,
    puaf_landa,
};

enum kread_method {
    kread_kqueue_workloop_ctl,
    kread_sem_open,
};

enum kwrite_method {
    kwrite_dup,
    kwrite_sem_open,
};

u64 kopen(u64 puaf_pages, u64 puaf_method, u64 kread_method, u64 kwrite_method);
void kread(u64 kfd, u64 kaddr, void* uaddr, u64 size);
void kwrite(u64 kfd, void* uaddr, u64 kaddr, u64 size);
void kclose(u64 kfd);

kopen() सैद्धांतिक रूप से एक "kernel file descriptor" खोलता है। यह निम्नलिखित 4 तर्क लेता है:

  • puaf_pages: dangling PTE वाले physical pages की लक्षित संख्या।
  • puaf_method: PUAF primitive प्राप्त करने के लिए उपयोग की जाने वाली विधि, निम्नलिखित विकल्पों के साथ:
    • puaf_physpuppet:
      • यह विधि CVE-2023-23536 का दोहन करती है।
      • iOS 16.4 और macOS 13.3 में ठीक किया गया।
      • App Sandbox से पहुंच योग्य लेकिन WebContent sandbox से नहीं।
      • $52,500 Apple Security Bounty पुरस्कार।
    • puaf_smith:
      • यह विधि CVE-2023-32434 का दोहन करती है।
      • iOS 16.5.1 और macOS 13.4.1 में ठीक किया गया।
      • WebContent sandbox से पहुंच योग्य है और सक्रिय रूप से exploit किया गया हो सकता है।
    • puaf_landa:
      • यह विधि CVE-2023-41974 का दोहन करती है।
      • iOS 17.0 और macOS 14.0 में ठीक किया गया।
      • App Sandbox से पहुंच योग्य लेकिन WebContent sandbox से नहीं।
      • $70,000 Apple Security Bounty पुरस्कार।
  • kread_method: प्रारंभिक kread() primitive प्राप्त करने के लिए उपयोग की जाने वाली विधि।
  • kwrite_method: प्रारंभिक kwrite() primitive प्राप्त करने के लिए उपयोग की जाने वाली विधि।

यदि exploit सफल होता है, तो kopen() एक 64-bit opaque file descriptor लौटाता है। व्यवहार में, यह libkfd के लिए आवश्यक एक structure की ओर इशारा करने वाला user space pointer मात्र है। हालाँकि, चूँकि उस structure को लाइब्रेरी के बाहर एक्सेस नहीं किया जाना चाहिए, इसे एक opaque integer के रूप में लौटाया जाता है। यदि exploit असफल होता है, तो लाइब्रेरी एक error message print करेगी, 30 सेकंड के लिए sleep करेगी, फिर status code 1 के साथ exit हो जाएगी। यह 30 सेकंड के लिए sleep करती है क्योंकि कुछ PUAF विधियों के लिए kernel exit पर panic हो सकता है जिन्हें KRKW के बाद कुछ cleanup की आवश्यकता होती है (जैसे puaf_smith)।

kread() और kwrite() क्रमशः copyout() और copyin() के user space समकक्ष हैं। कृपया ध्यान दें कि kread_method और kwrite_method के विकल्प एक अलग write-up में वर्णित हैं। इसके अलावा, उन विधियों द्वारा प्रदान किए गए प्रारंभिक primitives का उपयोग बेहतर KRKW primitive को bootstrap करने के लिए किया जा सकता है। अंत में, kclose() केवल kernel file descriptor को बंद करता है। ये सभी अपने पहले तर्क के रूप में kopen() द्वारा लौटाया गया opaque integer लेते हैं।


iPhone पर kfd कैसे build और run करें?

Xcode में, परियोजना के root folder को खोलें और अपना iOS device कनेक्ट करें।

  • परियोजना को build करने के लिए, Product > Build (⌘B) चुनें।
  • परियोजना को run करने के लिए, Product > Run (⌘R) चुनें, फिर app में "kopen" बटन पर क्लिक करें।

Mac पर kfd कैसे build और run करें?

एक terminal में, परियोजना के root folder पर जाएँ।

वैकल्पिक रूप से, वैश्विक और प्रति-प्रक्रिया file descriptor सीमाएँ बढ़ाने के लिए, जो विशेष रूप से लगातार कई runs पर सफलता दर में सुधार करेंगी, make s कमांड दर्ज करें और sudo पासवर्ड टाइप करें।

  • परियोजना को build करने के लिए, make b कमांड दर्ज करें।
  • परियोजना को run करने के लिए, make r कमांड दर्ज करें।
  • परियोजना को एक साथ build और run करने के लिए, make br कमांड दर्ज करें।

exploits के लिए विस्तृत write-ups कहाँ मिलेंगे?

इस README ने kfd परियोजना का उच्च-स्तरीय अवलोकन प्रस्तुत किया। एक बार PUAF primitive प्राप्त हो जाने पर, बाकी exploit सामान्य (generic) होता है। इसलिए, मैंने exploits के सामान्य भाग को एक समर्पित write-up में रखा है:

  • PUAFs का दोहन करना

इसके अलावा, मैंने PUAF primitive प्राप्त करने के लिए उपयोग किए जाने वाले exploits के vulnerability-विशिष्ट भाग को अलग-अलग write-ups में विभाजित किया है, जो खोज के कालानुक्रमिक क्रम में नीचे सूचीबद्ध हैं:

  • PhysPuppet
  • Smith
  • Landa

हालाँकि, कृपया ध्यान दें कि ये write-ups ऐसे पाठकों के लिए लिखे गए हैं जो पहले से ही XNU virtual memory system से परिचित हैं।

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