HIDEVCD OU ANTI-BLAXX LIKE

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 10 déc. 2005 à 16:55
silkscalp Messages postés 27 Date d'inscription lundi 30 octobre 2000 Statut Membre Dernière intervention 20 janvier 2011 - 15 déc. 2005 à 18:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35005-hidevcd-ou-anti-blaxx-like

silkscalp Messages postés 27 Date d'inscription lundi 30 octobre 2000 Statut Membre Dernière intervention 20 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és 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
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

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

@++
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
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és 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
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é...
Rejoignez-nous