Tags:

ackermann   Amateurfunk   angola   assembler   basic   bewiso   c programmierung   coding   digitale Signatur   gdbinit   informatik   krypto   linux   Lockpicking   lustig   mathematik   mobile   modern   netzwerk   perl   phreaking   pointer   politik   programmierung   radio   ratten   security   sha-1   sicherheit   smartcard   tunnel  

Last update
(Nov 10 2007)

Kernelmodule

LKMs Loadable Kernel Modules

---------------
Ein Kernelmodul braucht mindestens folgende Funktionen:

int init_module(void)
void cleanup_module(void)  

---------------
#define MODULE
#define __KERNEL__

#include <syscall.h>
#include <linux/module.h>

/* Beispiel um Systemcalls "umzubiegen": */
/* laeuft bei mir unter 2.4 Kernel */


/* Syscall Tabelle importieren */
extern void* sys_call_table[];    

/* um original Referenzen zu speichern */
int (*orig_socketcall)(int call, unsigned long *args);

/* Returnwerte fuer die echten Funktionen */
int realone;

/* Replace fuer SYS_socketcall */
int my_socketcall(int call, unsigned long *args)
{
/* da ich echt nicht weiss, was ich jetz hier machen soll, */
/* gebe ich einfach mal den echten syscall zurueck...  */
/* Beliebt in "backdoor rootkits" ist auf ein bestimmtes Packet */
/* zu warten und dann eine Verbindung zu dem Angreifer aufzubauen. */
/* Tip: "Unreliable Guide To Hacking The Linux Kernel" von Paul Rusty Russell */
/* echten Syscall machen und zurueckgeben      */
 realone=(*orig_socketcall)(call,args);
 return realone;
}


int init_module(void)
{
/* "umbiegen" */
 orig_socketcall=sys_call_table[SYS_socketcall];
 sys_call_table[SYS_socketcall]=my_socketcall;
 return 0;
}

void cleanup_module(void)
{
/* "zurueckbiegen" */
 sys_call_table[SYS_socketcall]=orig_socketcall;
}



----------
machen:

[kaese@toast kernelhacking]$ echo $LKM >lkm.c
[kaese@toast kernelhacking]$ gcc -c -O2 lmk.c
[kaese@toast kernelhacking]$ su
Password:
[root@toast kernelhacking]# insmod lmk.o

gucken (darauf kann man sich nicht verlassen bei $EVIL-LKM):

[root@toast kernelhacking]# lsmod
Module                  Size  Used by
lmk                      864   0  (unused)
......

raus aus dem Kernel:
[root@toast kernelhacking]# rmmod lkm

(besonders evil ist, wenn lsmod $LMK angezeigt hat...und es nach einem rmmod verschwunden ist..
aber im Hintergrund weiter laeuft.)


linux