[C++]Créer la signature d'un fichier infecté

Moderator: Mod

[C++]Créer la signature d'un fichier infecté

Postby CXXWAVES » Thu Mar 25, 2010 6:56 pm

Salut, je suis développeur C++, et j'aimerais savoir si quelqu'un dans le forum savait créer la signature d'un virus en C++.

Je sais que c'est compliqué, mais bon. J'ai lu un document sur le FTP d'hackbbs qui parlait des signatures de virus, mais sans expliquer comment les calculer (me demandez pas le lien, je m'en souviens plus).

Pour l'instant je cherche à scanner un fichier pour déterminer si sa signature est infectée.
Merci d'avance.
CXXWAVES
Projets
 
Posts: 7
Joined: Sun Mar 07, 2010 5:33 pm

Postby TorTukiTu » Thu Mar 25, 2010 9:40 pm

Bonjour,

Tout d'abord sache que même si je développe depuis des lustres en cpp, suis à des années lumière d'être un spécialiste en viro informatique. Donc, l'idée qui suit n'est qu'une suggestion.

Cependant, on isole la signature d'un virus. On ne la crée pas. Voici comment je m'y prendrais:

Le but est de retrouver des suites d'octets constantes entre x copies virales.

Un moyen très simple et de comparer les binaires et de garder les morceaux qui sont constants entre chaque copie. Ce sera tes signatures potentielles.
(Utilise des algos d'alignement, il y en a des tonnes, regarde un peu comment fonctionne Blast)

Ensuite, tu regardes ce que tu as dans ces bouts de code.

Puis tu conserves la suites d'instructions la plus spécifique dans ce que tu as pu isoler => et voilà ta signature.

C'est juste une idée toute simple, car, à mon humble avis, dès que le virus a un code assez polymorphique, la chose doit vite se corser.

La tortue.
User avatar
TorTukiTu
Site Admin
 
Posts: 1960
Joined: Thu Feb 07, 2008 10:24 pm
Location: Devant son pc durant la redaction de ce message

Postby CXXWAVES » Sat Mar 27, 2010 6:33 pm

Merci beaucoup d'avoir répondu.
Mais je pensais peut-être qu'ils créaient le hash (avec whirpool ou blowfish) de ce code et le comparaient avec la signature du fichier ??

Bon bref, c'est pas trop grave, au pire j'irais voir du côté des sources de ClamAV.
CXXWAVES
Projets
 
Posts: 7
Joined: Sun Mar 07, 2010 5:33 pm

Postby TorTukiTu » Sun Mar 28, 2010 12:58 am

[quote:c32643b254]
Mais je pensais peut-être qu'ils créaient le hash (avec whirpool ou blowfish) de ce code et le comparaient avec la signature du fichier ?? [/quote:c32643b254]

Apparemment, tu voudrais comparer une somme de contrôle d'un fichier à ... quoi?
C'est quoi pour toi la "signature d'un fichier" ?? Son empreinte ?

Est-ce que tu sais ce qu'est une fonction de hachage?

Quel intérêt de hasher deux fichiers différents et de comparer le hash (et d'utiliser un dérivé de blowfish bien lourdingue au passage) ?

Tu auras (presque) toujours deux choses différentes si les fichiers sont différents. Ça revient a comparer les fichiers eux-mêmes, ça n'a donc aucune utilité.

Pour ce qui est des sources de ClamAV, ça m'a l'air bien mastok. Tu devrais plutôt essayer de dénicher des pdf sympas à droite à gauche traitant du sujet.
De plus, tu ne trouveras pas comment définir une signature dans ces sources. (C'est un antivirus! Ce n'est pas l'outil (et les petites mains qui vont avec) qui va te fournir ta DB de signatures).

La tortue.
User avatar
TorTukiTu
Site Admin
 
Posts: 1960
Joined: Thu Feb 07, 2008 10:24 pm
Location: Devant son pc durant la redaction de ce message

Postby THE-DEATH » Sun Mar 28, 2010 9:35 am

C'est clair que comparer 2 hashs de fichier différents n'a absolument aucun interet. Il faut comprendre que c'est via des actions précises, des bouts de code ... que la signature est crée et non a partir de quelque hash que ce soit. A partir de la je te conseil d'approfondir tes connaissances au niveau des formats binaires, en asm et ce sera déjà une bonne base pour commencer a réfléchir au sujet.
Si tu veux une précision, la signature est une série de bits consecutifs, et representatif du prog/virus. Mets toi dans la peau d'un createur d'av pour savoir comment tu créerai une signature a partir d'un code bin.

Autre précision si c'est toujours d'actualité => "Ils intègrent ainsi dans l'application infectée une suite d'octets leur permettant de vérifier si le programme a préalablement été infecté : il s'agit de la signature virale." ...
User avatar
THE-DEATH
 
Posts: 971
Joined: Wed Jul 23, 2008 10:49 am
Location: 127.0.0.1

Postby CXXWAVES » Sun Mar 28, 2010 4:49 pm

Ok merci, je vais m'y mettre sérieusement.
C'est vrai que les sources de ClamAV m'ont l'air plutôt fouilli.
CXXWAVES
Projets
 
Posts: 7
Joined: Sun Mar 07, 2010 5:33 pm

Postby CXXWAVES » Sat Apr 10, 2010 9:10 pm

[quote:9e3a10fc41="antivirus.about.com"]In the antivirus world, a signature is an algorithm or hash (a number derived from a string of text) that uniquely identifies a specific virus.[/quote:9e3a10fc41]
En fait on compare le fichier à un algo de virus (destruction de fichiers systèmes...), puis si on trouve une similarité on met en quarantaine ?
CXXWAVES
Projets
 
Posts: 7
Joined: Sun Mar 07, 2010 5:33 pm

Postby TorTukiTu » Tue Apr 13, 2010 11:22 am

On ne compare pas "un fichier à un algo".

C'est comme si tu comparais une vraie vache à un schéma de vache sur une feuille. L'algo c'est la définition de la suite d'opérations permettant d'arriver à un résultat. Un fichier, c'est une suite d'octets.. Peu de choses à voir donc.

Par contre, je crois que tu as compris en gros le principe, au vu de la tournure de ta phrase.
Tu cherches effectivement à localiser des suites d'instructions précises que tu as de fortes chances de retrouver dans ton programme malicieux.

La tortue.
User avatar
TorTukiTu
Site Admin
 
Posts: 1960
Joined: Thu Feb 07, 2008 10:24 pm
Location: Devant son pc durant la redaction de ce message

Postby CXXWAVES » Tue Apr 13, 2010 9:21 pm

Oui.
En fait, je vais déjà essayer de faire un reader de binaires PE (on va se limiter aux exécutables pour l'instant), et après il analysera les lignes de code, pour trouver une suite d'instruction qui correspond à celle d'un virus.
J'ai à peu près bon :?:

EDIT :: finalement j'ai réussi à concevoir un programme qui recherche grâce à une expression régulière une suite d'octets dans un fichier en le comparant à des suites d'octets contenues dans une petite BDD SQlite (qui fait office de container de signatures).

Sinon auriez-vous des infos sur le hooking global windows grâce à un driver ? Car les recherches gogole donnent peu de résultats. Merci d'avance.
CXXWAVES
Projets
 
Posts: 7
Joined: Sun Mar 07, 2010 5:33 pm

Analyse réussie, mais bon...

Postby CXXWAVES » Mon Aug 15, 2011 6:32 pm

Suite aux excellents conseils que vous m'avez donné, j'arrive à supprimer tous les programmes qui contiennent l'instruction de destruction de fichiers par fonction Windows. Mais mon gros problème est que si je scanne un autre programme fondamental de windows, qui utilise cette instruction, je me retrouve face à un faux positif (heureusement que mon programme ne supprime pas le fichier, sinon adieu la corbeille Windows).

Mais ce qui me pose un problème, c'est que je n'ai pas de virus sous la main pour trouver et mettre en place mon mini antivirus, et je n'arrive pas à trouver la suite d'octets qui sont considérés comme "dangereux". Vous sauriez ou trouver deux fois le meme virus mais avec deux versions differentes (par exemple la mise a jour?).

PS : pour ceux qui veulent savoir comment scanner un virus, [url=http://code.google.com/p/yara-project/]Ce lien vers le projet yara [/url] peut être utile.
CXXWAVES
Projets
 
Posts: 7
Joined: Sun Mar 07, 2010 5:33 pm


Return to C/C++

Who is online

Users browsing this forum: No registered users and 3 guests

cron