silkscalp
Messages postés27Date d'inscriptionlundi 30 octobre 2000StatutMembreDernière intervention20 janvier 2011 15 déc. 2005 à 18:09
Franchement sympa ton code de rootkit.
Je connaissait pas les .bat auto-compilable qui melange des .bat et l'ASM... Très interressant.
CE code es à explorer par tout ceux qui apprecient l'ASM sous win3 2 et la seurité.
En tout cas je dl pour explorer cela de très près .
Et merci pour partager tes connaissances avec les autres comme l'on fait d'autre comme Izelion
++
Silkscalp
Le savoir est un pouvoir
Le partager est un devoir
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 11 déc. 2005 à 11:09
voilà pour le hook,
ntoskrnl.exe exporte cette structure par le Symbol KeServiceDescriptorTable on la retrouve aussi dans KTHREAD.ServiceTable
ServiceTableBase est un pointeur vers un tableau de pointeurs vers les fonctions system. La taille du tableau etant fournie par NumberOfServices.
ensuite, les exports de ntoskrnl ne nous permettent d'obtenir que l'adresse de la fonction Zw et non son ID dans le tableau.
Le probleme est là, suivant les versions de NT, l'ID peut changer aussi.
en fait, Toute fonction Zw commence par:
IF OS<XP THEN SYSCALL=int 2Eh ELSE SYSCALL=SYSENTER
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 11 déc. 2005 à 10:36
les .bat c'est le code source auto-compilable, c'est reelement le melange d'un batch et du code asm. Le principal etant que cela fonctionne, pour ma part, je trouve ça pratique.
Le launch s'occupe de la partie GUI (l'icone se met en TRAY)
je ne pense pas que la difficultée soit là.
Le driver lui est composé de 3 parties:
rootkit.bat contient les fonctions de bases pour la gestion du driver.
hkssdt.asm contient le code permettant de hooker les services systemes de Windows ( Fonction Zw/Nt ... )
hidevcd.asm contient les fonctions specifiques du driver a savoir l'installation de la fonction hook HookZwOpenKey et la gestion d'un filtre qui nous permet de savoir ce qu'il faut autoriser ou refuser.
Tout appel system passe tout par une fonction syscall qui verifie si interruption ou syscall et simule toute entrée comme arrivant d'une interruption ( structure KTRAP_FRAME )
Si c'est un appel system, le code va chercher un pointeur vers une table ( System service Descriptor Table SSDT ) dans laquelle sont stockés les pointeurs vers les fonctions systemes et le nombre de parametres que ces fonctions prennent en charge.
c'est dans cette table que le programme intervient et introduit un hook.
Regmon de sysinternals fonctionne de cette maniere là et je soupçonne aussi Anti-Blaxx d'utiliser cette methode.
D'une manière générale c'est aussi comme cela que fonctionne les rootkits ( code permettant de prendre controle de ta becane ) et c'est surtout pour cela que j'ai partagé ce code.
@++
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 10 déc. 2005 à 16:55
Ils sont pas un peu bizarres tes .bat?
Sinon, j'ai pas bien compris le but du code, ca m'a l'air relativement compliqué...
15 déc. 2005 à 18:09
Je connaissait pas les .bat auto-compilable qui melange des .bat et l'ASM... Très interressant.
CE code es à explorer par tout ceux qui apprecient l'ASM sous win3 2 et la seurité.
En tout cas je dl pour explorer cela de très près .
Et merci pour partager tes connaissances avec les autres comme l'on fait d'autre comme Izelion
++
Silkscalp
Le savoir est un pouvoir
Le partager est un devoir
11 déc. 2005 à 11:09
ntoskrnl.exe exporte cette structure par le Symbol KeServiceDescriptorTable on la retrouve aussi dans KTHREAD.ServiceTable
ServiceDescriptorEntry STRUCT
ServiceTableBase DWORD ?
ServiceCounterTableBase DWORD ?; DWORD PTR
NumberOfServices DWORD ?
ParamTableBase DWORD ?; DWORD PTR
ServiceDescriptorEntry ENDS
ServiceTableBase est un pointeur vers un tableau de pointeurs vers les fonctions system. La taille du tableau etant fournie par NumberOfServices.
ensuite, les exports de ntoskrnl ne nous permettent d'obtenir que l'adresse de la fonction Zw et non son ID dans le tableau.
Le probleme est là, suivant les versions de NT, l'ID peut changer aussi.
en fait, Toute fonction Zw commence par:
IF OS<XP THEN SYSCALL=int 2Eh ELSE SYSCALL=SYSENTER
ZwOpenKey PROC
mov eax,ID
...
SYSCALL
ZwOpenKey ENP
donc [ZwOpenKey+1] = ID
le reste ne devrait pas poser de problemes
@++
11 déc. 2005 à 10:36
Le launch s'occupe de la partie GUI (l'icone se met en TRAY)
je ne pense pas que la difficultée soit là.
Le driver lui est composé de 3 parties:
rootkit.bat contient les fonctions de bases pour la gestion du driver.
hkssdt.asm contient le code permettant de hooker les services systemes de Windows ( Fonction Zw/Nt ... )
hidevcd.asm contient les fonctions specifiques du driver a savoir l'installation de la fonction hook HookZwOpenKey et la gestion d'un filtre qui nous permet de savoir ce qu'il faut autoriser ou refuser.
Tout appel system passe tout par une fonction syscall qui verifie si interruption ou syscall et simule toute entrée comme arrivant d'une interruption ( structure KTRAP_FRAME )
Si c'est un appel system, le code va chercher un pointeur vers une table ( System service Descriptor Table SSDT ) dans laquelle sont stockés les pointeurs vers les fonctions systemes et le nombre de parametres que ces fonctions prennent en charge.
c'est dans cette table que le programme intervient et introduit un hook.
Regmon de sysinternals fonctionne de cette maniere là et je soupçonne aussi Anti-Blaxx d'utiliser cette methode.
D'une manière générale c'est aussi comme cela que fonctionne les rootkits ( code permettant de prendre controle de ta becane ) et c'est surtout pour cela que j'ai partagé ce code.
@++
10 déc. 2005 à 16:55
Sinon, j'ai pas bien compris le but du code, ca m'a l'air relativement compliqué...