Forum Linux.noyau Lecture /dev/mem sous Fedora

Posté par  .
Étiquettes :
0
22
mar.
2006
Salut à tous,

La table des syscall, sys_call_table, n'étant plus exportée sous ma Fedora 2 (2.6.5-1.358), j'essaie de lire la partition /dev/mem (/dev/kmem est en access denied) en m'inspirant du rootkit Phalanx:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>

struct idtr {
unsigned short limit;
unsigned int base;
} __attribute__ ((packed));

struct idt {
unsigned short off1;
unsigned short sel;
unsigned char none,flags;
unsigned short off2;
} __attribute__ ((packed));

unsigned sys_call_off;
long idt_table;

int main(int argc, char **argv){

struct idtr idtr;
struct idt *idt;

int fd;
char *adr;
unsigned long system_call;

fd = open ("/dev/mem", O_RDWR);
asm ("sidt %0" : "=m" (idtr));
printf("*[+] idtr.base: 0x%.08x\n",idtr.base);
adr = mmap (0,500*1024*1024, PROT_READ, MAP_SHARED, fd, 0);
if (adr==MAP_FAILED) { perror("mmap") ; exit(0) ;}
printf("*[+] adr: 0x%.08x\n",adr);

/*system_call =
(*(short *) (adr + (idtr.base & 0x00ffffff) + (8 * 0x80) + 6) << 16) | *(short *) (adr + (idtr.base & 0x00ffffff) + (8 * 0x80) + 0);
printf("system_call; 0x%.08x\n",system_call);*/
printf ("\n");
close (fd);
return 0;
}

Le résultat est malheureusement :mmap: Bad address et dans /var/log/messages: localhost kernel: Access to 0x101000 by idt denied

Est-ce qq'un saurait déjà pourquoi on se place à l'offset 500*1024*1024 (500 Mo) (pas trouver grd chose avec google) et ensuite pourquoi j'ai cette erreur? Est-encore une protection Fedora

Merci pour l'aide

Bibo
  • # proctection

    Posté par  (site web personnel) . Évalué à 1.

    je parie pour une protcetion Fedora, tu as un kernel "vanilla" pour essayer ?
    • [^] # Re: proctection

      Posté par  . Évalué à 2.

      Salut vrm,

      Effectivement, c'est peut-être encore une protection Fedora (exec-shield+PAX(restriction de mmap() et mprotect() ;-().

      Bon, tant pis, je vais essayer avec une Vanilla.

      PS: de mémoire, le kernel "Vanilla", c'est un 2.4.32 ?

      @++

      Bibo
  • # Souso Debian AMD64

    Posté par  (site web personnel) . Évalué à 1.

    ca passe ici non ?
    vrm@pcjvermillard:~$ sudo ./plop
    *[+] idtr.base: 0x803002c0
    *[+] adr: 0xaae02000
    • [^] # Re: Souso Debian AMD64

      Posté par  . Évalué à 1.

      "vrm@pcjvermillard:~$ sudo ./plop
      *[+] idtr.base: 0x803002c0
      *[+] adr: 0xaae02000"

      Ca confirme bien que c'est fedora qui protège /dev/mem ;-(((

      Bibo

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.