Très bonne question. Il faudrait essayer de déterminer heuristiquement*
quand l'émulation peut/doit cesser. En fait, dans le cas de Kenston
c'est après la boucle car après on doit pouvoir faire une recherche de
chaîne. Mais ce serait de la triche car l'émulateur devrait être plus ou
moins universel et savoir quand s'arrêter quel que soit le programme émulé.
Quant à l'émulateur même, scriptable certainement pas. Je serai déjà
content le jour où il arrivera à peu près à émuler cette boucle. :-)Car tu ne veux pas émuler tout le virus je suppose :)
Certainement pas. :-)
* quand je dis heuristiquement, je ne pense pas la recherche heuristique
de virus, mais à la signification "normale" du mot "heuristique" qui n'a
rien à voir avec les virus.
Très bonne question. Il faudrait essayer de déterminer heuristiquement*
quand l'émulation peut/doit cesser. En fait, dans le cas de Kenston
c'est après la boucle car après on doit pouvoir faire une recherche de
chaîne. Mais ce serait de la triche car l'émulateur devrait être plus ou
moins universel et savoir quand s'arrêter quel que soit le programme émulé.
Quant à l'émulateur même, scriptable certainement pas. Je serai déjà
content le jour où il arrivera à peu près à émuler cette boucle. :-)
Car tu ne veux pas émuler tout le virus je suppose :)
Certainement pas. :-)
* quand je dis heuristiquement, je ne pense pas la recherche heuristique
de virus, mais à la signification "normale" du mot "heuristique" qui n'a
rien à voir avec les virus.
Très bonne question. Il faudrait essayer de déterminer heuristiquement*
quand l'émulation peut/doit cesser. En fait, dans le cas de Kenston
c'est après la boucle car après on doit pouvoir faire une recherche de
chaîne. Mais ce serait de la triche car l'émulateur devrait être plus ou
moins universel et savoir quand s'arrêter quel que soit le programme émulé.
Quant à l'émulateur même, scriptable certainement pas. Je serai déjà
content le jour où il arrivera à peu près à émuler cette boucle. :-)Car tu ne veux pas émuler tout le virus je suppose :)
Certainement pas. :-)
* quand je dis heuristiquement, je ne pense pas la recherche heuristique
de virus, mais à la signification "normale" du mot "heuristique" qui n'a
rien à voir avec les virus.
Il faut aussi determiner si le programme doit etre emule', non ?
Si j'ai bien compris, la recherche heuristique (statique) va dans un
premier temps permettre de trouver un "majorant" de l'ensemble des
fichiers infectes devant etre emules. En d'autres termes, tout
fichier infecte' necessitant une emulation devra etre reperable par
cette recherche heuristique, mais cette heuristique produira un
certain nombre de faux positifs qui seront elimines par la suite :
seuls ceux pour lesquels une signature est trouvee apres emulation
ou ceux dont les heuristiques dynamiques confirment le caractere
malveillant sont conservees.
Dans l'article, Igor Muttik evoque l'analyse de la frequence des
opcodes comme caractere discriminant. Les articles sur le
fonctionnement des AVs etant desesperement rares, je trouve tres
interessante la synthese presentee dans celui-ci (je te conseille
d'y jeter un oeil). Il evoque aussi l'utilisation de sommes de
controle associee a de courtes chaines de caractere. KAV par exemple
utilise les informations suivantes (plusieurs signatures possible
pour un meme fichier), cf. decryptage des bases de KAV par z0mbie :
- Offset de la "signature" (je ne sais pas si ca peut etre sous la
forme d'un intervalle);
- Quelques octets senses se situer a cet offset (2 ou 4, je ne sais
plus);
- Un checksum des octets suivants ;
Puisque tu t'es interesse' aux problemes de relocation et que tu
t'attaques maintenant a l'emulation des boucles de decryptage,
tu seras peut-etre interesse' par l'article 0x04 de IOC 6
( http://www.rootshell.be/~ioc/releases/ioc6-final.tar.gz ),
intitule' "Total encryption for PE infectors", par Kaze, ou il
evoque la possibilite' d'utiliser le loader de PE pour decrypter
la boucle de decryptage d'un virus en utilisant les relocations
(technique initialement decrite dans 29A#5).
Il faut aussi determiner si le programme doit etre emule', non ?
Si j'ai bien compris, la recherche heuristique (statique) va dans un
premier temps permettre de trouver un "majorant" de l'ensemble des
fichiers infectes devant etre emules. En d'autres termes, tout
fichier infecte' necessitant une emulation devra etre reperable par
cette recherche heuristique, mais cette heuristique produira un
certain nombre de faux positifs qui seront elimines par la suite :
seuls ceux pour lesquels une signature est trouvee apres emulation
ou ceux dont les heuristiques dynamiques confirment le caractere
malveillant sont conservees.
Dans l'article, Igor Muttik evoque l'analyse de la frequence des
opcodes comme caractere discriminant. Les articles sur le
fonctionnement des AVs etant desesperement rares, je trouve tres
interessante la synthese presentee dans celui-ci (je te conseille
d'y jeter un oeil). Il evoque aussi l'utilisation de sommes de
controle associee a de courtes chaines de caractere. KAV par exemple
utilise les informations suivantes (plusieurs signatures possible
pour un meme fichier), cf. decryptage des bases de KAV par z0mbie :
- Offset de la "signature" (je ne sais pas si ca peut etre sous la
forme d'un intervalle);
- Quelques octets senses se situer a cet offset (2 ou 4, je ne sais
plus);
- Un checksum des octets suivants ;
Puisque tu t'es interesse' aux problemes de relocation et que tu
t'attaques maintenant a l'emulation des boucles de decryptage,
tu seras peut-etre interesse' par l'article 0x04 de IOC 6
( http://www.rootshell.be/~ioc/releases/ioc6-final.tar.gz ),
intitule' "Total encryption for PE infectors", par Kaze, ou il
evoque la possibilite' d'utiliser le loader de PE pour decrypter
la boucle de decryptage d'un virus en utilisant les relocations
(technique initialement decrite dans 29A#5).
Il faut aussi determiner si le programme doit etre emule', non ?
Si j'ai bien compris, la recherche heuristique (statique) va dans un
premier temps permettre de trouver un "majorant" de l'ensemble des
fichiers infectes devant etre emules. En d'autres termes, tout
fichier infecte' necessitant une emulation devra etre reperable par
cette recherche heuristique, mais cette heuristique produira un
certain nombre de faux positifs qui seront elimines par la suite :
seuls ceux pour lesquels une signature est trouvee apres emulation
ou ceux dont les heuristiques dynamiques confirment le caractere
malveillant sont conservees.
Dans l'article, Igor Muttik evoque l'analyse de la frequence des
opcodes comme caractere discriminant. Les articles sur le
fonctionnement des AVs etant desesperement rares, je trouve tres
interessante la synthese presentee dans celui-ci (je te conseille
d'y jeter un oeil). Il evoque aussi l'utilisation de sommes de
controle associee a de courtes chaines de caractere. KAV par exemple
utilise les informations suivantes (plusieurs signatures possible
pour un meme fichier), cf. decryptage des bases de KAV par z0mbie :
- Offset de la "signature" (je ne sais pas si ca peut etre sous la
forme d'un intervalle);
- Quelques octets senses se situer a cet offset (2 ou 4, je ne sais
plus);
- Un checksum des octets suivants ;
Puisque tu t'es interesse' aux problemes de relocation et que tu
t'attaques maintenant a l'emulation des boucles de decryptage,
tu seras peut-etre interesse' par l'article 0x04 de IOC 6
( http://www.rootshell.be/~ioc/releases/ioc6-final.tar.gz ),
intitule' "Total encryption for PE infectors", par Kaze, ou il
evoque la possibilite' d'utiliser le loader de PE pour decrypter
la boucle de decryptage d'un virus en utilisant les relocations
(technique initialement decrite dans 29A#5).
Si j'ai bien compris, la recherche heuristique (statique) va dans un
premier temps permettre de trouver un "majorant" de l'ensemble des
fichiers infectes devant etre emules. En d'autres termes, tout
fichier infecte' necessitant une emulation devra etre reperable par
cette recherche heuristique, mais cette heuristique produira un
certain nombre de faux positifs qui seront elimines par la suite :
seuls ceux pour lesquels une signature est trouvee apres emulation
ou ceux dont les heuristiques dynamiques confirment le caractere
malveillant sont conservees.
Dans l'article, Igor Muttik evoque l'analyse de la frequence des
opcodes comme caractere discriminant.
Les articles sur le
fonctionnement des AVs etant desesperement rares, je trouve tres
interessante la synthese presentee dans celui-ci (je te conseille
d'y jeter un oeil). Il evoque aussi l'utilisation de sommes de
controle associee a de courtes chaines de caractere. KAV par exemple
utilise les informations suivantes (plusieurs signatures possible
pour un meme fichier), cf. decryptage des bases de KAV par z0mbie :
- Offset de la "signature" (je ne sais pas si ca peut etre sous la
forme d'un intervalle);
- Quelques octets senses se situer a cet offset (2 ou 4, je ne sais
plus);
- Un checksum des octets suivants ;
Si j'ai bien compris, la recherche heuristique (statique) va dans un
premier temps permettre de trouver un "majorant" de l'ensemble des
fichiers infectes devant etre emules. En d'autres termes, tout
fichier infecte' necessitant une emulation devra etre reperable par
cette recherche heuristique, mais cette heuristique produira un
certain nombre de faux positifs qui seront elimines par la suite :
seuls ceux pour lesquels une signature est trouvee apres emulation
ou ceux dont les heuristiques dynamiques confirment le caractere
malveillant sont conservees.
Dans l'article, Igor Muttik evoque l'analyse de la frequence des
opcodes comme caractere discriminant.
Les articles sur le
fonctionnement des AVs etant desesperement rares, je trouve tres
interessante la synthese presentee dans celui-ci (je te conseille
d'y jeter un oeil). Il evoque aussi l'utilisation de sommes de
controle associee a de courtes chaines de caractere. KAV par exemple
utilise les informations suivantes (plusieurs signatures possible
pour un meme fichier), cf. decryptage des bases de KAV par z0mbie :
- Offset de la "signature" (je ne sais pas si ca peut etre sous la
forme d'un intervalle);
- Quelques octets senses se situer a cet offset (2 ou 4, je ne sais
plus);
- Un checksum des octets suivants ;
Si j'ai bien compris, la recherche heuristique (statique) va dans un
premier temps permettre de trouver un "majorant" de l'ensemble des
fichiers infectes devant etre emules. En d'autres termes, tout
fichier infecte' necessitant une emulation devra etre reperable par
cette recherche heuristique, mais cette heuristique produira un
certain nombre de faux positifs qui seront elimines par la suite :
seuls ceux pour lesquels une signature est trouvee apres emulation
ou ceux dont les heuristiques dynamiques confirment le caractere
malveillant sont conservees.
Dans l'article, Igor Muttik evoque l'analyse de la frequence des
opcodes comme caractere discriminant.
Les articles sur le
fonctionnement des AVs etant desesperement rares, je trouve tres
interessante la synthese presentee dans celui-ci (je te conseille
d'y jeter un oeil). Il evoque aussi l'utilisation de sommes de
controle associee a de courtes chaines de caractere. KAV par exemple
utilise les informations suivantes (plusieurs signatures possible
pour un meme fichier), cf. decryptage des bases de KAV par z0mbie :
- Offset de la "signature" (je ne sais pas si ca peut etre sous la
forme d'un intervalle);
- Quelques octets senses se situer a cet offset (2 ou 4, je ne sais
plus);
- Un checksum des octets suivants ;
Très bonne question. Il faudrait essayer de déterminer heuristiquement*
quand l'émulation peut/doit cesser. En fait, dans le cas de Kenston
c'est après la boucle car après on doit pouvoir faire une recherche de
chaîne. Mais ce serait de la triche car l'émulateur devrait être plus ou
moins universel et savoir quand s'arrêter quel que soit le programme émulé.
Quant à l'émulateur même, scriptable certainement pas. Je serai déjà
content le jour où il arrivera à peu près à émuler cette boucle. :-)
Bah ca devrait pas poser de problèmes :)
* quand je dis heuristiquement, je ne pense pas la recherche heuristique
de virus, mais à la signification "normale" du mot "heuristique" qui n'a
rien à voir avec les virus.
Très bonne question. Il faudrait essayer de déterminer heuristiquement*
quand l'émulation peut/doit cesser. En fait, dans le cas de Kenston
c'est après la boucle car après on doit pouvoir faire une recherche de
chaîne. Mais ce serait de la triche car l'émulateur devrait être plus ou
moins universel et savoir quand s'arrêter quel que soit le programme émulé.
Quant à l'émulateur même, scriptable certainement pas. Je serai déjà
content le jour où il arrivera à peu près à émuler cette boucle. :-)
Bah ca devrait pas poser de problèmes :)
* quand je dis heuristiquement, je ne pense pas la recherche heuristique
de virus, mais à la signification "normale" du mot "heuristique" qui n'a
rien à voir avec les virus.
Très bonne question. Il faudrait essayer de déterminer heuristiquement*
quand l'émulation peut/doit cesser. En fait, dans le cas de Kenston
c'est après la boucle car après on doit pouvoir faire une recherche de
chaîne. Mais ce serait de la triche car l'émulateur devrait être plus ou
moins universel et savoir quand s'arrêter quel que soit le programme émulé.
Quant à l'émulateur même, scriptable certainement pas. Je serai déjà
content le jour où il arrivera à peu près à émuler cette boucle. :-)
Bah ca devrait pas poser de problèmes :)
* quand je dis heuristiquement, je ne pense pas la recherche heuristique
de virus, mais à la signification "normale" du mot "heuristique" qui n'a
rien à voir avec les virus.
J'avais présenté mon moteur heuristique ici ya quelques années.
Je l'ai pas trop retouché depuis, mais il a quand même été modifié et
detecte meme certains virus EPO. J'ai des modifications à effectuer pour
la recherche d'autres techniques EPO heuristiquement.
Je vais le modifier pour scanner mon disque dur en entier pour voir le
nombre de faux positif d'ailleurs. Je me demande comment il s'en sort.
Il detecte Kenston et Poson heuristiquement en tout cas :)
J'avais présenté mon moteur heuristique ici ya quelques années.
Je l'ai pas trop retouché depuis, mais il a quand même été modifié et
detecte meme certains virus EPO. J'ai des modifications à effectuer pour
la recherche d'autres techniques EPO heuristiquement.
Je vais le modifier pour scanner mon disque dur en entier pour voir le
nombre de faux positif d'ailleurs. Je me demande comment il s'en sort.
Il detecte Kenston et Poson heuristiquement en tout cas :)
J'avais présenté mon moteur heuristique ici ya quelques années.
Je l'ai pas trop retouché depuis, mais il a quand même été modifié et
detecte meme certains virus EPO. J'ai des modifications à effectuer pour
la recherche d'autres techniques EPO heuristiquement.
Je vais le modifier pour scanner mon disque dur en entier pour voir le
nombre de faux positif d'ailleurs. Je me demande comment il s'en sort.
Il detecte Kenston et Poson heuristiquement en tout cas :)
J'avais présenté mon moteur heuristique ici ya quelques années.
Ah bon? Je ne m'en souviens pas.
On peut télécharger ça quelque part? :-)
J'avais présenté mon moteur heuristique ici ya quelques années.
Ah bon? Je ne m'en souviens pas.
On peut télécharger ça quelque part? :-)
J'avais présenté mon moteur heuristique ici ya quelques années.
Ah bon? Je ne m'en souviens pas.
On peut télécharger ça quelque part? :-)
Nop pour le moment c'est juste un projet perso quand j'ai le temps.
Je vais poster les resultats une fois que je l'aurai modifié pour
scanner un disque entier. Pour le moment c'est du scan à la demande.
Nop pour le moment c'est juste un projet perso quand j'ai le temps.
Je vais poster les resultats une fois que je l'aurai modifié pour
scanner un disque entier. Pour le moment c'est du scan à la demande.
Nop pour le moment c'est juste un projet perso quand j'ai le temps.
Je vais poster les resultats une fois que je l'aurai modifié pour
scanner un disque entier. Pour le moment c'est du scan à la demande.
Ce qui me fiche le plus la trouille, et ce depuis toujours, c'est le
décodage des octets modr/m et SIB. Je les *hais* profondément. :-/
Ce qui me fiche le plus la trouille, et ce depuis toujours, c'est le
décodage des octets modr/m et SIB. Je les *hais* profondément. :-/
Ce qui me fiche le plus la trouille, et ce depuis toujours, c'est le
décodage des octets modr/m et SIB. Je les *hais* profondément. :-/
C'est pas franchement le plus pénible dans le désassemblage. Perso, ce qui
m'a toujours bien gavé c'est le 16/32 bits, la gestion des segments, les
segments override, les instructions sans mnémonnique, les BYTE PTR et cie,
les bugs...
Écrire un désassembleur basique ça prend quelques dizaines de lignes. Mais
prendre en compte les cas particuliers, ça muscle vite le nombre de lignes.
Heureusement, la FPU, les MMX, SSE et consort c'est facile.
C'est pas franchement le plus pénible dans le désassemblage. Perso, ce qui
m'a toujours bien gavé c'est le 16/32 bits, la gestion des segments, les
segments override, les instructions sans mnémonnique, les BYTE PTR et cie,
les bugs...
Écrire un désassembleur basique ça prend quelques dizaines de lignes. Mais
prendre en compte les cas particuliers, ça muscle vite le nombre de lignes.
Heureusement, la FPU, les MMX, SSE et consort c'est facile.
C'est pas franchement le plus pénible dans le désassemblage. Perso, ce qui
m'a toujours bien gavé c'est le 16/32 bits, la gestion des segments, les
segments override, les instructions sans mnémonnique, les BYTE PTR et cie,
les bugs...
Écrire un désassembleur basique ça prend quelques dizaines de lignes. Mais
prendre en compte les cas particuliers, ça muscle vite le nombre de lignes.
Heureusement, la FPU, les MMX, SSE et consort c'est facile.
Je ne me souviens plus. Ça fait déjà très longtemps que je m'en sers.
J'ai dû régler quelque chose au tout début, mais plus après. C'est
pourquoi je suis étonné qu'il ait soudain changé de comportement.
Oui mais comme je te disais, sans reglages particuliers, ils marchent
bien, mais par moment sur certains exécutables, c'est possible qu'il ne
block pas sans une option particulière.
Regardes dans :
Options=>Debugging Options=>Events.
Que vois tu à "Make First pause at" ?
Je ne me souviens plus. Ça fait déjà très longtemps que je m'en sers.
J'ai dû régler quelque chose au tout début, mais plus après. C'est
pourquoi je suis étonné qu'il ait soudain changé de comportement.
Oui mais comme je te disais, sans reglages particuliers, ils marchent
bien, mais par moment sur certains exécutables, c'est possible qu'il ne
block pas sans une option particulière.
Regardes dans :
Options=>Debugging Options=>Events.
Que vois tu à "Make First pause at" ?
Je ne me souviens plus. Ça fait déjà très longtemps que je m'en sers.
J'ai dû régler quelque chose au tout début, mais plus après. C'est
pourquoi je suis étonné qu'il ait soudain changé de comportement.
Oui mais comme je te disais, sans reglages particuliers, ils marchent
bien, mais par moment sur certains exécutables, c'est possible qu'il ne
block pas sans une option particulière.
Regardes dans :
Options=>Debugging Options=>Events.
Que vois tu à "Make First pause at" ?