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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Linpmem — भौतिक मेमोरी अधिग्रहण के लिए लिनक्स कर्नेल ड्राइवर, आरक्षित मेमोरी और मेमोरी होल्स सहित किसी भी भौतिक पते तक पढ़ने की पहुंच सक्षम करता है, जिसमें CR3 जानकारी और वर्चुअल-टू-भौतिक अनुवाद सेवाएं शामिल हैं। | Kitploit
उपकरण/GitHubGitHub/velocidex/linpmem
मेमोरी फोरेंसिकफोरेंसिकडिजिटल फोरेंसिकघटना प्रतिक्रिया
GitHubvelocidex/linpmem

Linpmem

भौतिक मेमोरी अधिग्रहण के लिए लिनक्स कर्नेल ड्राइवर, आरक्षित मेमोरी और मेमोरी होल्स सहित किसी भी भौतिक पते तक पढ़ने की पहुंच सक्षम करता है, जिसमें CR3 जानकारी और वर्चुअल-टू-भौतिक अनुवाद सेवाएं शामिल हैं।

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

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

सभी देखें →

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

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

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

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

Linpmem -- लिनक्स के लिए भौतिक मेमोरी अधिग्रहण उपकरण

alt text

Linpmem, भौतिक मेमोरी पढ़ने के लिए एक Linux x64-मात्र उपकरण है।

इसके Windows समकक्ष, Winpmem की तरह, यह परंपरागत मेमोरी डंपर नहीं है। Linpmem किसी भी भौतिक पते से पढ़ने के लिए एक API प्रदान करता है, जिसमें आरक्षित मेमोरी और मेमोरी होल शामिल हैं, लेकिन इसका उपयोग सामान्य मेमोरी डंपिंग के लिए भी किया जा सकता है। इसके अलावा, ड्राइवर भौतिक मेमोरी पढ़ने के लिए विभिन्न एक्सेस मोड प्रदान करता है, जैसे कि बाइट, वर्ड, ड्वर्ड, क्वर्ड और बफर एक्सेस मोड, जहाँ बफर एक्सेस मोड अधिकांश मानक मामलों में उपयुक्त है। यदि पढ़ने के लिए संरेखित बाइट/वर्ड/ड्वर्ड/क्वर्ड पढ़ने की आवश्यकता है, तो Linpmem ठीक वैसा ही करेगा।

वर्तमान में, Linpmem की विशेषताएं:

  1. भौतिक पते से पढ़ना (एक्सेस मोड: बाइट, वर्ड, ड्वर्ड, क्वर्ड, या बफर)
  2. CR3 जानकारी सेवा (पीआईडी द्वारा लक्ष्य प्रक्रिया निर्दिष्ट करें)
  3. वर्चुअल से भौतिक पता अनुवाद सेवा

विशेष पढ़ने के एक्सेस मोड के समर्थन के लिए कैश नियंत्रण भविष्य में जोड़ा जाएगा।

सारांश तालिका

  • कर्नेल ड्राइवर बनाना
  • ड्राइवर लोड करना
  • उपयोग
    • डेमो कोड
    • CLI उपकरण
    • लाइब्रेरीज़
    • मेमडंपिंग उपकरण
  • लाइब्रेरीज़
  • परीक्षण किए गए Linux वितरण
  • सिक्योर बूट को संभालना
  • ज्ञात समस्याएं
  • चल रहे कार्य
  • भविष्य के कार्य
  • आभार

कर्नेल ड्राइवर बनाना

कम से कम अभी के लिए, आपको Linpmem ड्राइवर स्वयं संकलित करना होगा। अन्य Linux सिस्टम पर पूर्व-संकलित Linpmem ड्राइवर लोड करने की एक विधि वर्तमान में कार्याधीन है, लेकिन अभी समाप्त नहीं हुई है। हालाँकि, Linpmem ड्राइवर को संकलित करना कठिन नहीं है, मूलतः यह 'make' निष्पादित करना है।

चरण 1 - सही हेडर प्राप्त करना

आपको make और एक C कंपाइलर की आवश्यकता है। (हम gcc की सलाह देते हैं, लेकिन clang भी काम करना चाहिए।)

सुनिश्चित करें कि आपने linux-headers स्थापित किया है (अपने लक्ष्य linux वितरण के जो भी पैकेज मैनेजर का उपयोग करें)। सटीक पैकेज नाम आपके वितरण पर भिन्न हो सकता है। यह जाँचने का एक त्वरित (वितरण-स्वतंत्र) तरीका कि क्या आपके पास पैकेज स्थापित है:

root@kitploit:~
ls -l /usr/lib/modules/`uname -r`/

बस इतना ही, आप चरण 2 पर आगे बढ़ सकते हैं।

विदेशी सिस्टम: वर्तमान में, यदि आप किसी दूसरे सिस्टम के लिए ड्राइवर संकलित करना चाहते हैं, उदाहरण के लिए, क्योंकि आप मेमोरी डंप बनाना चाहते हैं लेकिन लक्ष्य पर संकलित नहीं कर सकते, तो आपको उस सिस्टम के Linux वितरण के पैकेज रिपॉजिटरी से सीधे हेडर पैकेज डाउनलोड करना होगा। दोबारा जाँच करें कि पैकेज संस्करण विदेशी सिस्टम पर चल रहे रिलीज़ और कर्नेल संस्करण से बिल्कुल मेल खाता हो। यदि दूसरा सिस्टम स्व-संकलित कर्नेल का उपयोग कर रहा है, तो आपको उस कर्नेल की बिल्ड निर्देशिका की एक प्रति प्राप्त करनी होगी। फिर, दोनों में से किसी निर्देशिका का स्थान KDIR पर्यावरण चर में रखें।

root@kitploit:~
export KDIR=path/to/extracted/header/package/or/kernel/root

चरण 2 - make

ड्राइवर को संकलित करना सरल है, बस टाइप करें:

root@kitploit:~
make

इससे वर्तमान कार्यशील निर्देशिका में linpmem.ko उत्पन्न होना चाहिए।

आप पहले precompiler.h की जाँच करना चाह सकते हैं और चुन सकते हैं कि रिलीज़ के लिए संकलित करना है या डीबग के लिए (जैसे, डीबग प्रिंटिंग के साथ)। अभी बहुत अधिक अन्य प्रीकंपाइलर सेटिंग्स नहीं हैं।

ड्राइवर लोड करना

linpmem.ko मॉड्यूल को insmod path-to-linpmem.ko का उपयोग करके लोड किया जा सकता है, और rmmod path-to-linpmem.ko के साथ अनलोड किया जा सकता है। (यह ड्राइवर को केवल इस अपटाइम के लिए लोड करेगा।) यदि आपने डीबग के लिए संकलित किया है, तो dmesg पर भी एक नज़र डालें।

लोड करने के बाद, ड्राइवर से बात करने के लिए, आपको डिवाइस बनाना होगा:

root@kitploit:~
mknod /dev/linpmem c 42 0

यदि आप ड्राइवर से बात नहीं कर सकते हैं, तो यह सत्यापित करने के लिए dmesg लॉग में जाँचें कि '42' वास्तव में पंजीकृत मेजर था:

root@kitploit:~
[12827.900168] linpmem: registered chrdev with major 42

हालाँकि आमतौर पर कर्नेल वास्तव में यह संख्या निर्दिष्ट करने का प्रयास करेगा।

आप डिवाइस पर chown का उपयोग करके इसे अपने उपयोगकर्ता को दे सकते हैं, यदि आप हर समय रूट कंसोल नहीं रखना चाहते हैं। (या बस रूट कंसोल में इसका उपयोग करते रहें।)

  • dmesg आउटपुट देखें। यदि कोई त्रुटि दिखे तो कृपया रिपोर्ट करें!
  • चेतावनी: यदि Linpmem से dmesg त्रुटि प्रिंट है जो रीबूट करने के लिए कहती है, तो बेहतर होगा कि तुरंत करें।
  • चेतावनी: यह एक प्रारंभिक संस्करण है।

उपयोग

डेमो कोड

एक उदाहरण कोड है जो प्रदर्शित करता है और (विस्तार से) समझाता है कि ड्राइवर के साथ कैसे इंटरैक्ट करें। उपयोगकर्ता-स्थान API संदर्भ इसके अलावा ./userspace_interface/linpmem_shared.h में पाया जा सकता है।

  1. cd demo
  2. gcc -o test test.c
  3. (sudo) ./test // <= आपको sudo की आवश्यकता है यदि आपने डिवाइस पर chown का उपयोग नहीं किया है।

यह कोड महत्वपूर्ण है, यदि आप यह समझना चाहते हैं कि लाइब्रेरी का उपयोग करने के बजाय सीधे ड्राइवर के साथ कैसे इंटरैक्ट करें। इसका उपयोग एक छोटे फंक्शन परीक्षण के रूप में भी किया जा सकता है।

कमांड लाइन इंटरफ़ेस उपकरण

Linpmem के लिए एक (वैकल्पिक) बुनियादी कमांड लाइन इंटरफ़ेस उपकरण है, pmem CLI उपकरण। यह यहाँ पाया जा सकता है: https://github.com/vobst/linpmem-cli। स्रोत कोड के अलावा, एक पूर्व-संकलित CLI उपकरण के साथ-साथ पूर्व-संकलित स्थैतिक लाइब्रेरी और हेडर भी हैं जो यहाँ (हस्ताक्षरित) पाए जा सकते हैं। ध्यान दें: यह एक प्रारंभिक संस्करण है, अपडेट की जाँच करना सुनिश्चित करें, क्योंकि जल्द ही कई अतिरिक्त और संवर्द्धन होंगे।

pmem CLI उपकरण का उपयोग Linpmem के विभिन्न कार्यों का (अपेक्षाकृत) सुरक्षित और सुविधाजनक तरीके से परीक्षण करने के लिए किया जा सकता है। Linpmem को इस उपकरण द्वारा भी लोड किया जा सकता है, insmod/rmmod का उपयोग करने के बजाय, भविष्य में कुछ अतिरिक्त विकल्पों के साथ। इसका यह भी लाभ है कि pmem आपके लिए तत्काल उपयोग के लिए सही डिवाइस स्वतः बनाता है। यह अत्यंत पोर्टेबल है और किसी भी Linux सिस्टम पर चलता है (और, वास्तव में, Linux 2.6 पर भी परीक्षण किया गया है)।

root@kitploit:~
$ ./pmem -h
Command-line client for the linpmem driver

Usage: pmem [OPTIONS] [COMMAND]

Commands:
  insmod  Load the linpmem driver
  help    Print this message or the help of the given subcommand(s)

Options:
  -a, --address <ADDRESS>            Address for physical read operations
  -v, --virt-address <VIRT_ADDRESS>  Translate address in target process' address space (default: current process)
  -s, --size <SIZE>                  Size of buffer read operations
  -m, --mode <MODE>                  Access mode for read operations [possible values: byte, word, dword, qword, buffer]
  -p, --pid <PID>                    Target process for cr3 info and virtual-to-physical translations
      --cr3                          Query cr3 value of target process (default: current process)
      --verbose                      Display debug output
  -h, --help                         Print help (see more with '--help')
  -V, --version                      Print version

यदि आप स्वयं cli उपकरण संकलित करना चाहते हैं, तो इसकी निर्देशिका में जाएँ और इसे बनाने के लिए (cli) Readme में दिए गए निर्देशों का पालन करें। अन्यथा, बस पूर्व-निर्मित प्रोग्राम डाउनलोड करें, यह किसी भी Linux पर काम करना चाहिए। कर्नेल ड्राइवर को cli उपकरण से लोड करने के लिए:

root@kitploit:~
# pmem insmod path/to/linpmem.ko

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

लाइब्रेरीज़

pmem कमांड लाइन इंटरफ़ेस केवल एक छोटी Rust लाइब्रेरी के चारों ओर एक पतली आवरण है जो ड्राइवर के साथ इंटरफ़ेस करने के लिए एक API को उजागर करती है। अधिक उन्नत उपयोगकर्ता इस लाइब्रेरी का भी उपयोग कर सकते हैं। लाइब्रेरी स्वचालित रूप से (स्थैतिक पोर्टेबल लाइब्रेरी के रूप में) pmem cli उपकरण के साथ संकलित होती है जब https://github.com/vobst/linpmem-cli से संकलित किया जाता है, लेकिन यहाँ (हस्ताक्षरित) भी शामिल (पूर्व-संकलित) है। ध्यान दें: यह एक प्रारंभिक संस्करण है, जल्द ही और अधिक आएगा।

यदि आप उपयोगकर्ता मोड लाइब्रेरी का उपयोग नहीं करना चाहते हैं और अपने आप सीधे ड्राइवर के साथ इंटरफ़ेस करना पसंद करते हैं, तो आप इसका उपयोगकर्ता-स्थान API/इंटरफ़ेस और दस्तावेज़ीकरण ./userspace_interface/linpmem_shared.h में पा सकते हैं। हम demo/test.c में उदाहरण कोड भी प्रदान करते हैं जो समझाता है कि सीधे ड्राइवर का उपयोग कैसे करें।

Python रैपर

LinPyMem: linpmem ड्राइवर के लिए एक Python रैपर। PyPI पर उपलब्ध।

मेमडंपिंग उपकरण

अभी तक लागू नहीं किया गया है।

परीक्षण किए गए Linux वितरण

  • Debian, स्व-संकलित 6.4.X, Qemu/KVM, गैर-पैरावर्चुअलाइज़्ड।
    • PTI: बंद/चालू
  • Debian 12, Qemu/KVM, पूरी तरह से पैरावर्चुअलाइज़्ड।
    • PTI: चालू
  • Ubuntu सर्वर, Qemu/KVM, गैर-पैरावर्चुअलाइज़्ड।
    • PTI: चालू
  • Fedora 38, Qemu/KVM, पूरी तरह से पैरावर्चुअलाइज़्ड।
    • PTI: चालू
  • बेयरमेटल Linux परीक्षण, AMI BIOS: Linux 6.4.4
    • PTI: चालू
  • बेयरमेटल Linux परीक्षण, HP: Linux 6.4.4
    • PTI: चालू
  • बेयरमेटल, Arch[-hardened], Dell BIOS, Linux 6.4.X
  • बेयरमेटल, Debian, 6.1.X
  • बेयरमेटल, Ubuntu 20.04 सिक्योर बूट चालू के साथ। काम करता है, लेकिन पहले हस्ताक्षर करें।
  • बेयरमेटल, Ubuntu 22.04, Linux 6.2.X

सिक्योर बूट को संभालना

यदि सिस्टम मॉड्यूल लोड करते समय निम्नलिखित त्रुटि संदेश की रिपोर्ट करता है, तो यह सिक्योर बूट के कारण हो सकता है:

root@kitploit:~
$ sudo insmod linpmem.ko
insmod: ERROR: could not insert module linpmem.ko: Operation not permitted

मॉड्यूल को लोड करने के विभिन्न तरीके हैं। स्पष्ट तरीका है कि अपनी UEFI सेटिंग्स में सिक्योर बूट को अक्षम करें।

यदि आपका वितरण इसका समर्थन करता है, तो एक अधिक सुरुचिपूर्ण समाधान उपयोग करने से पहले मॉड्यूल पर हस्ताक्षर करना होगा। यह निम्नलिखित चरणों का उपयोग करके किया जा सकता है (Ubuntu 20.04 पर परीक्षित)।

  1. mokutil स्थापित करें:
    root@kitploit:~
    $ sudo apt install mokutil
    
  2. हस्ताक्षर कुंजी सामग्री बनाएं:
    root@kitploit:~
    $ openssl req -new -newkey rsa:4096 -keyout mok-signing.key -out mok-signing.crt -outform DER -days 365 -nodes -subj "/CN=Some descriptive name/"
    
    अपनी आवश्यकताओं के अनुसार विकल्पों को समायोजित करना सुनिश्चित करें। विशेष रूप से, कुंजी लंबाई (-newkey), वैधता (-days), कुंजी पास वाक्यांश सेट करने का विकल्प (-nodes; यदि आप पास वाक्यांश सेट करना चाहते हैं तो इसे छोड़ दें), और प्रमाणपत्र में शामिल करने के लिए सामान्य नाम (-subj) पर विचार करें।
  3. नए MOK को पंजीकृत करें:
    root@kitploit:~
    $ sudo mokutil --import mok-signing.crt
    
    आपसे एक पासवर्ड मांगा जाएगा, जो निम्नलिखित चरण में आवश्यक है। एक ऐसे पासवर्ड का उपयोग करने पर विचार करें जिसे आप US कीबोर्ड लेआउट पर टाइप कर सकते हैं।
  4. सिस्टम को रीबूट करें। यह एक MOK नामांकन मेनू में प्रवेश करेगा। अपनी नई कुंजी को नामांकित करने के लिए निर्देशों का पालन करें।
  5. मॉड्यूल पर हस्ताक्षर करें एक बार MOK नामांकित हो जाने पर, आप अपने मॉड्यूल पर हस्ताक्षर कर सकते हैं।
    root@kitploit:~
    $ /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 path/to/mok-singing/MOK.key path/to//MOK.cert path/to/linpmem.ko
    

उसके बाद, आपको मॉड्यूल लोड करने में सक्षम होना चाहिए।

ध्यान दें कि फोरेंसिक-तैयारी के दृष्टिकोण से, आपको आवश्यकता से पहले एक हस्ताक्षरित मॉड्यूल तैयार करना चाहिए, क्योंकि ऊपर वर्णित प्रक्रिया के दौरान सिस्टम दो बार रीबूट होगा, आपके अधिकांश अस्थायी डेटा को मेमोरी में नष्ट कर देगा।

ज्ञात समस्याएं

  • विशाल पृष्ठ पढ़ना लागू नहीं है। Linpmem एक विशाल पृष्ठ को पहचानता है और फिलहाल पढ़ने को अस्वीकार करता है।
  • मैप किए गए I/O और DMA स्थान से पढ़ना CPU कैशिंग सक्षम के साथ किया जाएगा।
  • पेज टेबल वॉक के दौरान कोई लॉक नहीं लिया जाता है। इससे मजेदार परिणाम हो सकते हैं जब समवर्ती संशोधन चल रहे हों। यह पूरे OS को पूर्ण विराम पर रोके बिना, लाइव RAM पढ़ने की एक सामान्य और (अधिकतर अनसुलझी) समस्या है।
  • सिक्योर बूट (Ubuntu): कृपया उपयोग करने से पहले अपने ड्राइवर पर हस्ताक्षर करें।
  • कोई भी CPU-संचालित मेमोरी एन्क्रिप्शन, जैसे, AMD SME, Intel SGX/TDX, ...
  • Pluton चिप्स?

(यदि आप कुछ भी सामना करते हैं तो कृपया संभावित मुद्दों की रिपोर्ट करें।)

चल रहे कार्य

  • किसी भी Linux पर पूर्व-संकलित ड्राइवर लोड करना।
  • प्रोसेसर कैश नियंत्रण। उदाहरण: मैप किए गए I/O और DMA स्थान के अनकैश्ड पढ़ने के लिए।

भविष्य के कार्य

  • Arm/Mips समर्थन। (दूर भविष्य का कार्य)
  • लीगेसी कर्नेल (जैसे 2.6), यूनिक्स-आधारित कर्नेल

आभार

Linpmem और Winpmem हमारे पूर्ववर्तियों के (अब सेवानिवृत्त) REKALL प्रोजेक्ट के काम के बिना अस्तित्व में नहीं होंगे: https://github.com/google/rekall।

  • हम Mike Cohen और Johannes Stüttgen को PTE रीमैपिंग पर उनके अग्रणी कार्य और ओपन सोर्स योगदान के लिए धन्यवाद देना चाहते हैं, जो एक ऐसी तकनीक है जो 10 साल बाद भी उपयोग में है।

हमारे ओपन सोर्स योगदानकर्ता:

  • Viviane Zwanger
  • Valentin Obst
टूल डाउनलोड करें