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 vrm (site web personnel) . Évalué à 1.
[^] # Re: proctection
Posté par bibo . Évalué à 2.
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
[^] # Re: proctection
Posté par Frédéric Mangeant (site web personnel) . Évalué à 3.
[^] # Re: proctection
Posté par vrm (site web personnel) . Évalué à 1.
2.4.X ou 2.6.X
# Souso Debian AMD64
Posté par vrm (site web personnel) . Évalué à 1.
vrm@pcjvermillard:~$ sudo ./plop
*[+] idtr.base: 0x803002c0
*[+] adr: 0xaae02000
[^] # Re: Souso Debian AMD64
Posté par bibo . Évalué à 1.
*[+] 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.