OVH Cloud OVH Cloud

Traitement de fichiers .exe et .bat

5 réponses
Avatar
Frederic Bonroy
Le fil sur l'emploi chez un éditeur AV étant à son tour devenu un vrai
carnage, j'entame encore un nouveau fil et je serais reconnaissant à
tout le monde - y compris moi - d'éviter de troller. :-)

Olivier Aichelbaum wrote:

> Pourquoi traiter differement EXE et BAT ?

Parce qu'ils sont différents. On peut partir du principe qu'un fichier
.bat est plus transparent pour l'utilisateur qu'un fichier .exe car
les instructions s'y trouvent en clair. Il est également facile
d'écrire un fichier .bat sans connaissances particulières en
programmation, c'est donc à la portée de beaucoup de gens.
Il est donc beaucoup plus probable d'avoir un .bat destructeur légitime
sur son ordinateur qu'un .exe destructeur légitime. C'est une chose à
prendre en compte.

J'estime que cela justifie le traitement particulier que semblent
recevoir les fichiers .bat, et j'estime également que cela justifie
qu'un antivirus ne crie pas tout de suite au loup quand il rencontre
des instructions potentiellement néfastes dans un fichier .bat -
sachant que même si l'on dispose d'un vrai compilateur il est bien
plus commode d'user du langage batch dans beaucoup de cas, et que
la gestion des données sur un ordinateur consiste aussi parfois en
la destruction légitime de données! Or *le* problème classique des
logiciels est de déterminer si quelque chose est légitime ou pas, car
cela dépend du contexte (c'est pour cela qu'il n'y a pas de définition
universelle du terme "cheval de Troie", notamment).

Bon, ça c'étaient quelques remarques générales. Pour en revenir à ton
programme .batch qui écrase io.sys. Déjà il ne fonctionne pas, car il
part du principe qu'il existe un fichier nommé abc or ce ne sera
jamais le cas (sauf coïncidence vraiment énorme). Même si ce fichier
existe il ne fonctionnera pas (DOS me balance un message d'erreur
au nez). Il faut qu'il y ait un "echo" à la place du "copy".

Mais admettons qu'il fonctionne.

A quoi ressemblerait une signature pour ce fichier .bat (pour plus de
simplicité partons du principe que la recherche des virus .bat se fasse
uniquement avec une simple recherche de chaînes)?
On pourrait créer cette signature (constituée de symboles et non pas
de caractères, car il faut au moins une petite analyse lexicale pour
éviter de se faire avoir par des espaces insérés aléatoirement etc.):

attrib -r -s -h io.sys echo "abc" > io.sys

Avec ça on détecterait donc ce fichier .bat. Maintenant il faut prendre
en compte que les paramètres d'attrib peuvent figurer dans n'importe
quel ordre, et ce serait du gaspillage de créer une signature
individuelle pour chaque combinaison (6 dans ce cas précis). Il faut
donc faire l'analyse des paramètres et vérifier qu'ils y figurent tous:

attrib bla io.sys echo "abc" > io.sys

bla est ici un symbole généré quand l'antivirus rencontre les paramètres
-r -s et -h dans n'importe quel ordre (en mémorisant par exemple quels
paramètres appartenant au "attrib" le plus récent il a déjà rencontrés).

Ensuite il y a plusieurs moyens d'écraser io.sys. On peut écrire abc
dans ce fichier, mais aussi autre chose, par exemple "Bonjour tout le
monde". Il faut donc modifier la signature à nouveau:

attrib bla io.sys echo x* > io.sys

x* représente une chaîne de caractères aléatoires (à quelques
exceptions près) de longueur aléatoire (pas tout à fait étant
donné les contraintes du DOS), y compris des espaces.

Maintenant io.sys n'est pas le seul fichier important, on peut aussi
bien abîmer msdos.sys, win.com, system.dat et ainsi de suite. Alors
on modifie à nouveau car on ne va quand-même pas faire une signature
pour chaque fichier sensible sur le disque dur!

attrib bla fichier echo x* > fichier

fichier est un nom de fichier figurant dans une liste de nom de
fichiers sensibles, et ce doit être le même dans les deux cas
(tu te rends compte du boulot que c'est que de faire une liste de
tous les fichiers fragiles?)

C'est bien joli, mais qu'est-ce qui m'empêche d'insérer une
instruction légitime entre attrib et echo:

attrib -r -s -h io.sys
echo Je suis fatigué
echo abc >io.sys

Il faut que je continue...? :-)

Alors que faire étant donné les faiblesses manifestes de la recherche
de signatures? Une recherche heuristique basée sur la recherche de
chaînes de symboles individuelles? Je cherche donc "attrib bla fichier1"
et "echo x* > fichier2" et si je trouve les deux je crie? Je fais bien
attention à ce que fichier2 = fichier1, et que echo figure après attrib
et pas avant?
Ou bien je fais une véritable émulation du fichier .bat? On n'est pas
sortis de l'auberge... et tout ça pour deux lignes...

5 réponses

Avatar
Olivier Aichelbaum
Frederic Bonroy wrote:

Pourquoi traiter differement EXE et BAT ?


Parce qu'ils sont différents. On peut partir du principe qu'un fichier
.bat est plus transparent pour l'utilisateur qu'un fichier .exe car
les instructions s'y trouvent en clair. Il est également facile
d'écrire un fichier .bat sans connaissances particulières en
programmation, c'est donc à la portée de beaucoup de gens.
Il est donc beaucoup plus probable d'avoir un .bat destructeur légitime
sur son ordinateur qu'un .exe destructeur légitime. C'est une chose à
prendre en compte.


Il est aussi plus facile d'analyser un BAT a la main qu'un EXE...

De plus, une parenthese : il existe (en tout cas existait) des
compilateurs de BAT en EXE. La creation d'EXE est donc tout
comme la creation de BAT a la portee de tous...


Or *le* problème classique des
logiciels est de déterminer si quelque chose est légitime ou pas, car
cela dépend du contexte


Selon moi ce choix est le probleme de l'editeur.


Bon, ça c'étaient quelques remarques générales. Pour en revenir à ton
programme .batch qui écrase io.sys. Déjà il ne fonctionne pas, car il
part du principe qu'il existe un fichier nommé abc or ce ne sera
jamais le cas (sauf coïncidence vraiment énorme). Même si ce fichier
existe il ne fonctionnera pas (DOS me balance un message d'erreur
au nez). Il faut qu'il y ait un "echo" à la place du "copy".


Oui, il est bogue, mais fonctionne car c'est le message d'erreur
qui va ecraser le fichier io.sys


A quoi ressemblerait une signature pour ce fichier .bat (pour plus de
simplicité partons du principe que la recherche des virus .bat se fasse
uniquement avec une simple recherche de chaînes)?


Ca c'est le probleme des editeurs de scanner ;)


Pourquoi tu ne mets pas en GPL le petit utilitaire que tu
as developpe ?

--
[ACBM] Olivier Aichelbaum Pirates Mag'
14/30, rue de Mantes Le Virus Informatique
F-92 700 Colombes
Tel (Fax) : -1 47 81 04 45 (03 72) http://www.acbm.com


Avatar
djehuti
salut
"Frederic Bonroy" a écrit dans le message news:
bfosm3$ha4ak$

Ceci dit, je t'avais envoyé une vieille version il y a au moins deux
siècles, il y a quelques mois j'ai écrit une nouvelle version plus
performante avec les résultats que je viens d'évoquer.


quoi ? mais c'est inadmissible !!!

je suis abonné à la mailing-list "scanbat" et j'ai rien reçu :-(

franchement tu me deçois... c'est un scandale©

@tchao

Avatar
Olivier Aichelbaum
Frederic Bonroy wrote:
Oui, il est bogue, mais fonctionne car c'est le message d'erreur
qui va ecraser le fichier io.sys


Pas ici. :-)


Fais le test... (sur un autre fichier ;)


Parce qu'il n'a suscité aucun intérêt, n'en suscite pas et n'en
suscitera jamais. Je ne m'en plains pas, je constate seulement.
Je comprends que tu sois enchanté par l'existence d'un utilitaire qui
comble ce qui est selon toi un défaut des antivirus standard, mais la
plupart des gens ne partagent pas ton avis là-dessus.


Si les personnes ne savent pas qu'il existe forcement...


En plus de ça il y a les problèmes de décision que j'évoquais. Des tests
non scientifiques ont révélé que le taux de détection doit se situer
dans les environs de 75% pour les virus batch. Par contre le taux de
fausses alertes est d'environ 10%, ce qui est très élevé. Pour un truc
purement heuristique/générique ce n'est pas trop mal, mais en pratique
ça ne sert pas à grand chose.


en GPL, tout le monde pourra participer et ameliorer ca.

--
[ACBM] Olivier Aichelbaum Pirates Mag'
14/30, rue de Mantes Le Virus Informatique
F-92 700 Colombes
Tel (Fax) : -1 47 81 04 45 (03 72) http://www.acbm.com


Avatar
Olivier Aichelbaum
Roland Garcia wrote:
Fais le test... (sur un autre fichier ;)


A propos de fichier avez vous enfin réussi à récupérer la fameuse
backdoor qui dépasse en performance les existantes ?


Vous n'arretez pas de poser la question mais est-elle sortie ?
Et puis-je avoir votre protocole de tests pour l'essayer dessus ?

--
[ACBM] Olivier Aichelbaum Pirates Mag'
14/30, rue de Mantes Le Virus Informatique
F-92 700 Colombes
Tel (Fax) : -1 47 81 04 45 (03 72) http://www.acbm.com


Avatar
Roland Garcia


A propos de fichier avez vous enfin réussi à récupérer la fameuse
backdoor qui dépasse en performance les existantes ?



Vous n'arretez pas de poser la question mais est-elle sortie ?
Et puis-je avoir votre protocole de tests pour l'essayer dessus ?


Ca veut dire en quoi en bon français ?

Roland Garcia