Mise en place d'une solution de détection des pirates et des malwares dans les sites tunisiens
-
Upload
mohamed-ben-bouzid -
Category
Technology
-
view
14.895 -
download
11
description
Transcript of Mise en place d'une solution de détection des pirates et des malwares dans les sites tunisiens
REPUBLIQUE TUNISIENNE MINISTERE DE L'ENSEIGNEMENT SUPERIEUR, DE LA RECHERCHE SCIENTIFIQUE ET DE LA TECHNOLOGIE
***** FACULTÉ DES SCIENCES DE TUNIS
Département des Technologies de l’Informatique
RAPPORT
De Projet de Fin d’Études
Présenté en vue de l’obtention du diplôme
D'ÉTUDE D'INGÉNIEUR EN INFORMATIQUE
Sujet :
Mise en place d'une solution de détection
des pirates et des malwares
dans les sites tunisiens
Élaboré par
Mohamed BEN BOUZID
Encadré par :
Mme Hela KAFFEL BEN AYED (FST)
Mr Sami MABROUK (ANSI)
Société d’accueil : L'Agence Nationale de la Sécurité Informatique (ANSI)
Année Universitaire : 2008/2009
Dédicace
Je dédie ce travail
A ma mère A mon père
A mes frèresA mes proches
A tous mes amis Et à tous ceux qui me connaissent
Remerciements
Nous voudrions remercier notre encadrant à la FST Mme. Hela Kafel BEN AYED, pour
son soutien et ses recommandations judicieuses. À Mr. Sami Mabrouk, notre encadrant au sein
de la société, qui nous a permis de nous exprimer, nous a encadré, soutenus et qui n’a jamais
cessé de nous encourager. Aussi, remercions-nous Mr Ahmed Amine SOUAYAH et tout
personnel de l'Agence Nationale de la Sécurité Informatique (ANSI) ayant contribué de près ou
de loin dans le bon déroulement du projet.
Nous devons chaque bribe de notre connaissance à nos enseignants à la Faculté des
Sciences de Tunis qui ont si bien mené leur noble quête d’enseigner les bases de l’informatique.
Nous les remercions non seulement pour le savoir qu’ils nous ont transmis, mais aussi pour la
fierté et l’ambition que leurs personnes nous aspirent.
Non loin de tout projet ambitieux, il existe des gens qui partagent sans jamais se lasser
ses meilleurs et ses pires moments. Ce sont des personnes qui nous ont soutenus dans chacun de
nos instants de faiblesse, et qui, sans leurs extrême attention et gentillesse, nous ne serions pas ce
que nous sommes devenu aujourd’hui. En tête de liste de ces gens nous placerons nos familles
bien aimées qui n’ont jamais hésité à nous offrir le meilleur qu’elles pouvaient. Viennent alors
tous nos camarades de promotion , les membres du Club des Logiciels Libres à la Faculté des
Sciences de Tunis ainsi que tous nos amis qui nous ont aidés de façon directe ou tout simplement
par leur présence et leur soutien moral.
TABLE DES MATIÈRES
INTRODUCTION .....................................................................................................................
CHAPITRE I : ÉTAT DE L'ART
1. Objet de l'étude …..........................................................................................................
2. Présentation de l'entreprise …........................................................................................
2.1. Historique et présentation ….................................................................................
2.2. Objectif ….............................................................................................................
2.3. Organigramme …..................................................................................................
3. Présentation du projet …................................................................................................
3.1. Intérêt de l'ANSI pour le projet …........................................................................
3.2. Étude de l'existant ….............................................................................................
3.3. Problématique …...................................................................................................
3.4. Approche suivie …................................................................................................
4. Le piratage (Hacking) et les Malwares ….....................................................................
4.1. Le piratage (Hacking) …......................................................................................
4.1.1. Différents types de pirates informatiques …................................................
4.1.1.1. Les Hackers …....................................................................................
4.1.1.2. Les Hacktivistes ….............................................................................
4.1.1.3. Les Crackers …...................................................................................
4.1.1.4. Les Carders ….....................................................................................
4.1.1.5. Les Phreakers ….................................................................................
4.1.2. Le défacement Web .....................................................................................
4.1.2.1. Présentation du défacement …............................................................
4.1.2.2. Exemples de pages web défacées …...................................................
4.1.3. Motivations des Hackers ….........................................................................
4.1.4. Cibles des Hackers …..................................................................................
4.1.5. Le piratage en Tunisie ….............................................................................
4.1.6. Aspects juridiques …...................................................................................
1
3
3
3
4
4
5
5
6
6
7
8
8
8
8
9
9
9
10
10
10
11
13
13
14
15
I
4.2. Les malwares …....................................................................................................
4.2.1. Les Virus ….................................................................................................
4.2.2. Les Vers …...................................................................................................
4.2.3. Les Chevaux de Troie …..............................................................................
4.2.4. Les Spywares …..........................................................................................
5. Conclusion ….................................................................................................................
CHAPITRE II : ÉTUDE SUR LES MOTEURS DE RECHERCHE OPEN SOURCE
1. Introduction …...............................................................................................................
2. Définition …...................................................................................................................
3. Moteurs de recherche et les systèmes de gestion de base de données ….......................
4. Fonctionnement ….........................................................................................................
4.1. Un outil d'exploration ….......................................................................................
4.2. Un outil d'indexation …........................................................................................
4.3. Un outil de recherche ….......................................................................................
5. Moteurs de recherche propriétaires …...........................................................................
6. Moteurs de recherche open source …............................................................................
7. Étude comparative sur les moteurs de recherches Open Source …...............................
7.1. DataParkSearch …................................................................................................
7.2. Nutch …................................................................................................................
7.3. Solr …...................................................................................................................
8. Choix technologique …..................................................................................................
9. Étude sur le moteur de recherche Nutch …...................................................................
9.1. Introduction …......................................................................................................
9.2. Architecture du moteur de recherche Nutch …....................................................
9.3. Performance du moteur de recherche Nutch …....................................................
9.4. Terminologies de Nutch …...................................................................................
9.5. Le crawling avec Nutch …...................................................................................
9.6. Systèmes de fichiers HDFS…..............................................................................
10. Prise en main de Nutch …...........................................................................................
10.1. Installation …......................................................................................................
10.2. Configuration ….................................................................................................
11. Conclusion …..............................................................................................................
16
16
17
18
18
19
20
21
21
21
21
22
22
23
24
24
25
25
26
29
29
29
30
30
31
32
33
33
33
34
35
II
CHAPITRE III : ÉTUDE SUR LES HONEYCLIENTS
1. Introduction …...............................................................................................................
2. Honeypots …...........…..................................................................................................
2.1. Définition ….........................................................................................................
2.2. Fonctionnement …...............................................................................................
3. Honeyclients ….............................................................................................................
3.1. Définition ….........................................................................................................
3.2. Honeyclients à haute interaction …......................................................................
3.3. Honeyclients à interaction faible ….....................................................................
4. Comparaison entre les Honeyclients ….........................................................................
4.1. Honeyclients à haute interaction …......................................................................
4.1.1. Capture-HPC …...........................................................................................
4.1.2. Honeyclient ….............................................................................................
4.1.3. HoneyMonkey ….........................................................................................
4.1.4. UW Spycrawler ….......................................................................................
4.1.5. Web Exploit Finder ….................................................................................
4.2. Honeyclients à faible interaction ….....................................................................
4.2.1. SpyBye …....................................................................................................
4.2.2. HoneyC …...................................................................................................
4.2.3. HoneyD …...................................................................................................
5. Choix technologique ......................................................................................................
6. Étude sur le Honeyclient MonkeySpider …..................................................................
6.1. Introduction …......................................................................................................
6.2. Architecture …......................................................................................................
6.3. Composantes de Monkey-Spider ….....................................................................
6.3.1. Script de Monkey-Spider …........................................................................
6.3.2. Heritrix ........................................................................................................
6.3.2.1. Présentation …....................................................................................
6.3.2.2. Caractéristiques …..............................................................................
6.3.2.3. Fichiers .ARC …................................................................................
6.3.3. ClamAV …...................................................................................................
6.3.3.1. Présentation …....................................................................................
6.3.3.2. Fiche technique et caractéristiques …................................................
36
36
37
37
38
38
39
39
40
40
40
41
41
42
42
43
43
44
45
46
46
46
46
47
47
47
47
48
49
50
50
50
III
6.3.3.3. Performance …...................................................................................
6.4. PostgreSQL …......................................................................................................
7. Prise en main de Monkey-Spider …..............................................................................
8. Conclusion …................................................................................................................
CHAPITRE IV : ANALYSE & SPÉCIFICATION DES BESOINS
1. Introduction …...............................................................................................................
2. Analyse des besoins …..................................................................................................
2.1. Besoins Fonctionnels ….......................................................................................
2.2. Besoins non Fonctionnels …................................................................................
3. Identification des acteurs et des cas d’utilisation …......................................................
3.1. Identification des acteurs ….................................................................................
3.2. Identification des cas d’utilisation …...................................................................
3.2.1. Diagramme des cas d'utilisation pour l'acteur « utilisateur » …..................
3.2.2. Diagramme des cas d'utilisation pour l'acteur « administrateur » …..........
4. Conclusion …................................................................................................................
CHAPITRE V : CONCEPTION
1. Introduction …...............................................................................................................
2. Pourquoi La Méthodologie UML? …............................................................................
3. Détermination des diagrammes de séquence et d'activité .............................................
3.1. Définition ….........................................................................................................
3.2. Diagramme de séquence détaillé pour « la recherche des signatures des pirates
dans les sites infectés …............................................................................................
3.3. Diagramme de séquence pour « la connexion de Eurêka » ….............................
3.4. Diagramme de séquence pour « l'ajout d'une signature d'un pirate » …..............
3.5. Diagramme d'activité pour « la recherche des malwares avec Monkey-Spider »
4. Conclusion …................................................................................................................
CHAPITRE VI : RÉALISATION ET MISE EN PLACE DE LA SOLUTION
1. Introduction …...............................................................................................................
2. Installation et configuration du serveur …....................................................................
2.1. Pourquoi Ubuntu serveur 9.04 ? …......................................................................
2.2. OpenSSH …..........................................................................................................
51
51
52
54
55
55
55
56
56
56
57
57
58
59
60
60
60
60
61
63
64
66
67
68
68
68
70
IV
2.3. Apache Tomcat …................................................................................................
2.4. PostgreSQL …......................................................................................................
3. Installation et configuration de Monkey-Spider et de Nutch …....................................
3.1. Intégration de Nutch dans MonkeySpider ….......................................................
3.2. Amélioration du comportement de Monkey-Spider …........................................
3.3. Personnalisation de la recherche avec Nutch …..................................................
4. Scripts et interface de gestion des malwares et des sites « Eurêka » …........................
4.1. Scripts de gestion des sites …...............................................................................
4.2. Interface de gestion des sites et des malwares « Eurêka » …...............................
5. Testes et résultats ...........................................................................................................
6. Conclusion …................................................................................................................
CONCLUSION GÉNÉRALE …...............................................................................................
70
71
71
72
74
74
76
76
77
78
80
81
V
LISTE DES TABLEAUX
Tableau N°1 : Parts de marché des moteurs de recherche dans le monde …........................
Tableau N°2 : Étude comparative sur les moteurs de recherche open source …..................
Tableau N°3 : Faible interaction vs Haute interaction …......................................................
Tableau N°4 : Comparaison entre les honeyclients à haute interaction …............................
Tableau N°5 : Comparaison entre les honeyclients à faible interaction …............................
23
27
40
43
45
VI
LISTE DES FIGURES
Figure N°1 : Organigramme de l'Agence Nationale de la Sécurité Informatique …...............
Figure N°2 : Google Maroc avant et après le défacement – Le 09/05/2009 ….......................
Figure N°3 : sony.co.nz avant et après le défacement – Le 09/05/2009 …..............................
Figure N°4 : Site de la police Britannique après l'attaque d'un pirate Tunisien …..................
Figure N°5 : Mode de fonctionnement du moteur de recherche Nutch …..............................
Figure N°6 : Processus cyclique du crawling …......................................................................
Figure N°7 : Interface graphique par défaut de Nutch …........................................................
Figure N°8 : Honeyclient vs Honeypot …...............................................................................
Figure N°9 : Architecture simplifié de Monkey-Spider …......................................................
Figure N°10 : Interface de Héritrix pour la gestion des jobs …...............................................
Figure N°11 : Étude sur la performance de ClamAV …..........................................................
Figure N°12 : Diagramme des cas d’utilisations général pour l'acteur « utilisateur » …........
Figure N°13 : Diagramme des cas d’utilisations général pour l'acteur « administrateur » .....
Figure N°14 : Diagramme de séquence pour « la recherche des signatures des pirates dans
les sites infectés » ….........................................................................................
Figure N°15 : Diagramme de séquence pour la connexion avec Eurêka …............................
Figure N°16 : Diagramme de séquence pour l'ajout d'une signature d'un pirates …...............
Figure N°17 : Diagramme d'activité pour la recherche des malwares avec Monkey-Spider...
Figure N°18 : Serveurs installés par défaut avec Ubuntu SE …..............................................
Figure N°19 : Avant couplage de Nutch avec Monkey-Spider …...........................................
Figure N°20 : Après couplage de Nutch avec Monkey-Spider …...........................................
Figure N°21 : Écran de recherche classique avec Nutch ….....................................................
Figure N°22 : Écran de recherche des pirates dans les sites Tunisiens …...............................
Figure N°23 : Écran des statistiques du crawling des sites avec Heritrix …...........................
Figure N°24 : Écran de connexion à « Eurêka » ….................................................................
Figure N°25 : Interface de « Eurêka » pour la gestion des malwares trouvés ….....................
Figure N°26 : Interface de « Eurêka » pour la gestion des sites …..........................................
4
11
12
12
32
32
34
38
47
49
51
57
58
62
63
64
66
69
73
73
74
75
76
77
79
79
VII
Introduction générale
Introduction générale
Aujourd'hui, Internet se développe de plus en plus et les personnes qui s'y connectent se
sont multipliées de façon considérable. Avec cette croissance, l'ampleur des menaces pour ces
personnes est en augmentation et la sécurité informatique est devenue un besoin vital vis-à-vis
des incidents et des vulnérabilités. Des contres mesures sont nécessaires pour la protection des
systèmes informatiques ainsi que le suivi de l'évolution de ces attaques.
Cette extension rapide de l'Internet a fait naître de nouveaux horizons en terme de
communication et d'échange bouleversant profondément nos habitudes. Mais ce brusque
changement a vu naître aussi la peur du « pirate informatique».
Nous définissons les pirates informatiques comme des internautes qui utilisent leurs
connaissances pour défaire ou contourner, à but malveillant, les systèmes et les réseaux
d’informations.
Ce genre de délinquance sur le Net ne cesse de se développer, et nous entendons parler
aujourd'hui de la cybercriminalité, les pirates se font de plus en plus efficaces, diversifient leurs
stratégies et techniques d'attaques et deviennent plus professionnels que jamais. Ils s'installent
sur notre ordinateur, ils enregistrent nos mots de passe au moment où nous nous connectons à
notre banque pour consulter notre compte, ils utilisent notre carte bancaire pour acheter des
objets sur internet. Il y a aussi ces fausse annonces, les sites piégés. Aujourd'hui les
cybercriminels ne sont plus des jeunes en manque d'autorité, ils sont des techniciens appartenant
à des réseaux mafieux qui font exploser les frontières de l'arnaque facile.
Leurs cibles peuvent être n’importe quel réseau d’entreprise, des serveurs névralgiques
d’Internet ou institutions éducatives, des sites de gouvernement, ou même de simple
internautes... Ils sont aussi à l’origine d’un certain nombre de menaces tels que les virus, vers,
espions, etc.
Mais comment arrive-t-on à prendre contrôle de notre ordinateur? Comment copie-t-on
notre code secret? C'est simple, on y introduit un programme espion, un Cheval de Troie sans
que nous le sachions SIMPLEMENT quand nous nous connectons sur internet.
- 1 -
Introduction générale
Avec la diversification des méthodes utilisées par les Hackers, il est presque impossible
de les empêcher d'introduire des malwares dans les sites, jugés même parfois sécurisés. C'est là
notre point de départ qui consiste à étudier la vulnérabilité des sites web Tunisiens ainsi que les
hackers dont ils sont victimes.
Le présent rapport est structuré en six chapitres. Nous allons commencer par présenter
notre projet dans le premier chapitre. Nous essayerons d'introduire le piratage (Hacking) et les
types de Malwares, et nous finirons par mettre en valeur les risques des attaques web ainsi que
les avantages de détection de malwares dans les sites.
Dans le deuxième chapitre, nous présenterons les moteurs de recherche ainsi que leurs
mode de fonctionnement, puis nous présenterons une étude comparative sur les moteurs de
recherche Open Source. Suite à notre choix technologique, nous allons procédé à détailler le
fonctionnement d'un moteur de recherche suivie d'une installation et mise en place de ce moteur
de recherche.
Tout comme le deuxième chapitre, nous essayons de présenter dans le troisième chapitre
les composantes de notre projet. Dans ce chapitre, nous présenterons l'utilité des Honeypots, la
notion de Honeyclients à haute interaction et à faible interaction, et nous finirons par une étude
comparative sur les clients Honeypots.
Dans le chapitre suivant, on brossera les spécifications fonctionnelles de notre projet
englobant les besoins fonctionnels et non fonctionnels, ainsi que notre approche de mise en place
de l'application.
Le cinquième chapitre sera consacré à la conception de notre projet. c'est ainsi quelques
diagrammes de séquence et d'activité seront présentés pour décrire les besoins fonctionnels de
notre projet.
Enfin, le dernier chapitre étalera les différentes étapes de mise en place de l’application,
la plateforme d’utilisation, les fichiers de configurations des différents outils, l’intégration des
uns avec les autres ainsi que les codes sources à implémenter pour mettre en concordances tous
ces outils. Une analyse des résultats sera présentée pour mettre en valeur l'apport de notre projet.
- 2 -
Chapitre 1 Présentation du projet et État de l'art
CHAPITRE 1
Présentation du projet et état de l'art
1. Objet de l'étude
Le présent rapport de stage a été réalisé dans le cadre du projet de fin d'études, en vue de
l'obtention du diplôme d'étude ingénieur en informatique à la Faculté des Sciences de Tunis. Le
sujet du stage a été proposé par l'Agence Nationale de la Sécurité Informatique (ANSI -
Direction Technique). Il a pour but de définir et de mettre en place une solution de détection de
pirates informatique à travers leurs signatures textuelles, et des Malwares hébergés dans les
sites Tunisiens.
Nous allons commencer par une installation et configuration d'un serveur Ubuntu SE 9.04
pour passer ensuite à l'installation et la configuration des différentes composantes de la solution,
puis nous réaliserons une interface graphique de gestions des Malwares trouvés, ainsi que la
listes des sites et les serveurs qui les hébergent. Enfin, nous allons essayer de présenter quelques
statistiques résultants d'une suite de tests d'évaluation de la solution réalisée.
2. Présentation de l'Agence Nationale de la Sécurité Informatique (ANSI)
2.1. Historique et présentation
La sécurité des données a toujours constitué une préoccupation majeure des pouvoirs
publics en Tunisie au même temps qu'elle constitue une garantie pour le respect individuel.
C'est dans ce contexte qu'il y a eu en 1999 le lancement d'une "Unité de gestion par
objectifs pour la réalisation du développement de la sécurité informatique" au sein du Secrétariat
d'État en informatique dont le rôle était de suivre de près les derniers développements en matière
de sécurité informatique et de veiller à l'amélioration de la sécurité des applications pour une
- 3 -
Chapitre 1 Présentation du projet et État de l'art
mise en œuvre efficace.
Pour cet effet, suite à une décision présidentielle, l'Agence Nationale de la Sécurité
Informatique (ANSI) fut créé en 2004 [1].
2.2. Objectif
L'Agence Nationale de la Sécurité Informatique effectue un contrôle général des systèmes
informatiques et des réseaux relevant des divers organismes publics et privés, elle est chargée
des missions suivantes:
• Veiller à l'exécution des orientations nationales et de la stratégie générale en matière de
sécurité des systèmes informatiques et des réseaux.
• Suivre l'exécution des plans et des programmes relatifs à la sécurité informatique dans le
secteur public à l'exception des applications particulières à la défense et à la sécurité
nationale et assurer la coordination entre les intervenants dans ce domaine.
• Établir des normes spécifiques à la sécurité informatique et élaborer des guides
techniques en l'objet et procéder à leur publication.
• Œuvrer à encourager le développement de solutions nationales dans le domaine de la
sécurité informatique et à les promouvoir conformément aux priorités et aux programmes
qui seront fixés par l'agence.
• Participer à la consolidation de la formation et du recyclage dans le domaine de la
sécurité informatique.
• Veiller à l'exécution des réglementations relatives à l'obligation de l'audit périodique de la
sécurité des systèmes informatiques et des réseaux.
2.3. Organigramme:
Figure N°1 : Organigramme de l'Agence Nationale de la Sécurité Informatique
- 4 -
Direction générale
Direction Technique Direction Suivi et stratégie Direction Cert-TccDirection administration
et finance
Chapitre 1 Présentation du projet et État de l'art
La Direction Générale: elle a pour rôle de contrôler les autres départements de
l'organisation, de veiller sur les biens de la société, à choisir les bonnes directives et les
bonnes décisions.
La Direction Technique: elle a pour rôle de tester des produits et le développement du
code source.
La Direction Suivi et Stratégie: cette direction a pour fonctions:
• L'étude des normes et méthodologies d'audit;
• L'étude des cahiers de charge de sécurité;
• Le suivi des rapports d'audit;
• La certification des auditeurs externes.
La direction Cert-Tcc: La direction Computer Emergency Response Team-Tunisian
Coordination Center a pour rôle de:
• Sensibiliser les locuteurs à propos des Virus et des Vulnérabilités propagés dans
notre pays par l'envoi des mails.
• Assurer un service Call-Center dédié à répondre aux incidents.
• Déclarer les incidents et leurs circonstances.
• Étudier les attaques et l'environnement de leurs propagations en Tunisie.
3. Présentation du projet
3.1. Intérêt de l'ANSI pour le projet
À travers le monde, et particulièrement en Tunisie, les entreprises, les sociétés, les
institutions éducatives, d'enseignement et bien d'autres sont totalement conscientes du poids que
représente la médiatisation d'informations à travers internet, le gain de temps apporté par cette
dernière au niveau des échanges d'informations, ainsi que le gain d'argent qu'elles peuvent avoir
du fait que la nature de leurs activités sont destinées à des clients distants.
Le problème est que ces organisations vont ouvrir leurs systèmes de communication à
travers des sites web non seulement aux clients, mais aussi, involontairement, aux concurrents et
aux agresseurs et internautes malveillants. Cet ensemble de réseaux, éparpillés de part et d'autre
dans le monde, représente donc un environnement idéal pour laisser infiltrer les intrus de tout
genre. C'est un immense terrain de chasse, quasi infini, pour ce qu'on appelle les cybercriminels.
Dans le monde entier, la guerre contre les pirates s'accentue et la lutte contre le piratage
- 5 -
Chapitre 1 Présentation du projet et État de l'art
devient une préoccupation primordiale. C'est dans ce cadre que l'Agence Nationale de la Sécurité
Informatique a décidé de s'investir dans un projet de détection de pirates et de Malwares dans les
sites Tunisiens.
3.2. Étude de l'existant
À l'ANSI, nous faisons référence aux sites spécialisés dans l'archivage des sites défacés
tels que zone-h.org, comme l'une des approches de détection des défigurations. Nous avons
recours aussi à la recherche par Google de l'ensemble des sites tunisiens qui peuvent contenir un
mot appartenant à un ensemble de mots se référant au domaine de piratage, tel que : hacked,
owned…
L’agence Nationale de la Sécurité Informatique dispose de plusieurs solutions pour
garantir la surveillance du cyber-espace tunisien à temps réel, notamment le régime de sécurité
«SAHER». Lancé à l’occasion de la tenue du Sommet Mondial sur la Société de l’Information à
Tunis (2005), Saher est la composante technique du CERT-TCC. C'est un ensemble d'outils
techniques établis dans un environnement open source.
Il est constitué de trois parties :
SAHER-IDS: identification des activités non autorisées et potentiellement malicieuses
(attaques, scans, DDOS,…) ciblant les systèmes informatiques tunisiens.
SAHER-WEB: surveillance des sites web tunisiens contre les attaques de type
défacement de contenu web, Phishing, …
SAHER-SRV: contrôle de la disponibilité des services Internet tels que les serveurs DNS,
les serveurs Mail, … contre les attaques de type Mail Bombing [G1], DNS Poisoning
[G2], …
3.3. Problématique
Dans notre problématique, nous avons deux points importants à mettre en relief. Le
premier consiste au fait que nous utilisons le moteur de recherche Google pour la recherche des
sites web défaillés ou contenant des malwares. Le deuxième est la fréquence de visite de ces
sites.
Le projet Saher mis en place à l’ANSI, utilise le moteur de recherche Google. Ce dernier
est configuré de telle manière qu’il revisite les sites, pour ré-indexer leur contenu en intégralité,
suivant leur référencement et le nombre de liens qui pointent vers eux. Tant que ces délais ne
sont pas publiés en publique, nous constatons à l'agence qu'une même URL est revisitée en
- 6 -
Chapitre 1 Présentation du projet et État de l'art
moyenne une fois tous les cinq ou six jours. Ainsi les sites hébergés dans le domaine tunisien
sont parcourus en entier dans ce délai, un délai qui ne garantit pas un contrôle de contenu et
fiable des sites web.
Une fois les pages sont visitées, elles sont enregistrées sur le disque dur d’un serveur avec
la commande Wget (Wget est un programme en ligne de commande non interactif de
téléchargement de fichiers depuis le Web. Il supporte les protocoles HTTP, HTTPS et FTP ainsi
que le téléchargement au travers des proxis HTTP). Cette commande est très performante mais
on verra par la suite les avantages d’avoir son propre outil de téléchargement des pages web.
Utiliser Google comme moteur de recherche, ne nous permet pas de bien contrôler les sites
tunisiens.
Enfin, notons les difficultés rencontrées pour la détection des site défaillés, ou contenant
des malwares En effet, actuellement, la recherche des pirates se fait par consultation des sites un
par un, ou la par la déclaration des internautes qu'un site a était piraté, ce qui n'est pas de tout
fiable, ni rapide.
3.4. Approche suivie
Notre idée de départ était de mettre en place un moteur de recherche pour déterminer les
sites piratés à travers les signatures textuelles des pirates, donc l'idée principale partait d'une
installation d'un moteur de recherche Tunisien. Puis, au fur et à mesure, nous constations que la
plupart des pirates utilisent des techniques très évoluées, non pas pour modifier le contenu d'un
site, mais plutôt pour placer dans ces sites des codes malveillants tel que des Keyloggers [G3],
des Espions, ou des Chevaux de Troie leurs permettant d'espionner non pas les sites, mais plutôt
les clients de ses sites. Donc, suite à cette constatation, nous avons pensé à étudier la
vulnérabilité des sites web en scannant leurs contenu par l'intermédiaire d'un client Honeypot.
Lors des premiers tests de cette solutions, plusieurs problèmes font face dont,
principalement, le problème de la redondance du crawling. En effet, dans notre approche, les
deux outils à savoir le moteur de recherche, et le Honeyclient font tous les deux leur propre
crawling qui est identique à l'autre. Ceci nous a amené à penser à faire un seul crawling, et faire
de la sorte que le deuxième outil fait le crawling à partir du premier crawling,
Un autre problème incontournable était le fait que notre Honeyclient prenait en paramètre
le chemin d'un seul fichier ARC crawlé la Heritrix. De ce fait nous avons pensé à modifier le
code source pour prendre en paramètre tous les .ARC d'un répertoire donné et c'est ainsi que la
génération d'un fichier log détaillé était nécessaire.
- 7 -
Chapitre 1 Présentation du projet et État de l'art
Enfin, nous avons pensé au développement d'une interface graphique en J2EE pour
faciliter la gestion des sites Hyperliens et des malwares trouvés ainsi que la liste des signatures
des hackers.
4. Le piratage (Hacking) et les Malwares
4.1. Piratage (Hacking)
Serveurs piratés, numéros de cartes bancaires volés, sites web défigurés (defacing),
données personnelles publiées ou vendues sur le Net,... nous estimons aujourd'hui à moins de
quatre minutes le temps moyen pour qu'un PC non protégé connecté à Internet subisse une
tentative d'intrusion ou soit contaminé par un programme malicieux [2]. De nos jours, les pirates
informatiques font de plus en plus parler d'eux.
4.1.1. Différents types de pirates informatiques
Dans le domaine du piratage informatique, il existe plusieurs types de pirates :
4.1.1.1. Les Hackers
L'origine du mot « Hacker » remonte à l'arrivée du premier ordinateur au MIT
(Massachusetts Institute of Technology, université Américaine située à Cambridge): l'IBM 704.
Cet ordinateur devient rapidement la proie d'étudiants passionnés qui vont pousser la machine à
bout, la « bidouillant » dans les moindres détails, sans se soucier des protocoles d'utilisation
d'IBM pour une machine de plusieurs millions de dollars. A l'époque, nous qualifions leurs
travaux avec le terme Hacking qui était le fait d'utiliser une machine ou une technologie à des
fins qui n'étaient pas prévus. Aujourd'hui, le mot Hacker désigne un grand spécialiste de
l'informatique, que ce soit dans le domaine de la sécurité que celui de la programmation ou d'un
quelconque autre domaine de l'informatique[3,4].
Nous distinguons différentes catégories de Hackers :
➢ Le Hacker White Hats : les white hats utilisent leurs savoirs et leurs connaissances au
service de la société actuelle. Ils peuvent être consultants en sécurité, administrateurs
réseaux ou travailler au sein de la communauté open source. Certains d'entre eux sont
d'ailleurs à l'origine de l'open source et de la philosophie qui en découle. Devenir un
hacker white hats c'est assimiler des connaissances et de l'expérience en participant aux
projets de la communauté afin d'être accepté par ses membres. Cela nécessite de
- 8 -
Chapitre 1 Présentation du projet et État de l'art
l'investissement dans des projets open source et d'adopter une certaine culture.
➢ Le Hacker Black Hats : les black hats utilisent leurs connaissances pour défaire ou
contourner, à but malveillant, les systèmes et les réseaux d'informations. Ils ont
également leur propre communauté. Nous pouvons les qualifier de « pirates
informatiques » dans le sens où leurs actions sont nuisibles.
➢ Le Hacker Grey Hats : les grey hats sont entre les White Hats et les Black Hats: ils n'ont
pas de buts nuisibles mais n'hésitent pas à pénétrer certains réseaux ou systèmes de façon
illégale. Ils cherchent plutôt l'exploit et la renommée.
4.1.1.2. Les Hacktivistes
« Hacktivisme » vient de la fusion des mots Hacker et activisme. L'Hacktiviste est un
Hacker dont les objectifs sont politiques et emploie ses connaissances en informatique pour
diffuser et promulguer ses opinions. Ses actions les plus spectaculaires sont notamment le
piratage de sites informatiques en altérant les données, en détournant des serveurs, en remplaçant
des pages d'accueil afin de détourner la signification et l'engagement de ces sites. Si le
Hacktivisme est une nouvelle forme de protestation et bien souvent une manière de se faire
entendre, cela reste une action totalement illégale. « Hacktiviste » est donc évidemment un autre
sens que nous donnons au « pirate informatique » [4].
4.1.1.3. Les Crackers
Le cracker est spécialisé dans le cassage des protections des logiciels. Il possède de très
bonnes connaissances en assembleur ainsi que des outils (désassembleur, débogueur…) qui lui
permettent d'analyser le code d'un programme transmis au processeur. Cela lui permet de
neutraliser ou contourner les mesures de protections d'un logiciel en créant un patch (ou crack),
ou bien un « keygen » dans le cas de logiciels protégés par des clefs [4].
4.1.1.4. Les Carders
Ce sont les Hackers pour les systèmes embarqués. Ces pirates s'attaquent principalement
aux systèmes de cartes à puces (en particulier les cartes bancaires) pour en comprendre le
fonctionnement et en exploiter les failles [4].
- 9 -
Chapitre 1 Présentation du projet et État de l'art
4.1.1.5. Les Phreakers
Les Phreakers sont les Hackers des systèmes téléphoniques. Ils peuvent se décrire comme
le détourneurs de services de télécommunication, par divers procédés, dans le but d'éviter les
grosses factures de téléphone ou les oreilles indiscrètes. Un autre type de piratage téléphonique
est l'utilisation détournée des téléphones cellulaires. Avec ce type de téléphones, aucune
connexion physique n'est nécessaire et il est facile d'écouter les conversations au moyen de
scanners GSM et autres. Les téléphones cellulaires sont aussi facilement reprogrammables : les
malfaiteurs peuvent ensuite les utiliser sans payer leurs communications, qui seront facturées aux
véritables propriétaires [4].
4.1.2. Le défacement Web
4.1.2.1. Présentation du défacement
Parmi les attaques les plus répondues, le Web « defacement », défaçage ou défiguration
de page web, est un anglicisme désignant la modification non sollicitée de la présentation d'un
site Web, suite au piratage de ce site. Il s'agit donc d'une forme de détournement de site Web par
un pirate. Elle touche la crédibilité et la réputation de l'organisation en général.
Les défacements sont provoqués par l'utilisation de failles présentes sur une page Web ou
tout simplement une faille du système d'exploitation du serveur Web. En effet, le pirate doit en
premier lieu récupérer les noms et les mots de passe des utilisateurs pour accéder au serveur qui
héberge les sites web. Ceci est faisable par le biais des techniques de collecte de données, qui
exploite les vulnérabilités du système (par exemple : la lecture des pages web global.asa [G8] qui
sont supposées inaccessibles, les informations publiques telles que les enregistrements des noms
de domaines (domain registration records))… Après avoir récupérer un nom d'utilisateur du
système, il peut deviner le mot de passe. Cette tâche est facilitée par les études sociales menées
(date de naissances, numéro de téléphone…)
Une fois introduit, le pirate a pour but de bénéficier des droits d’administration pour avoir
accès à toutes les données et les opérations. Il s’informe sur la version exacte et les niveaux des
patchs associés au système d’exploitation, les versions des paquets installés sur la machine ainsi
que les services et les processus actifs sur la machine. Il peut par la suite s’infiltrer par une faille
qu’il découvre dans les programmes installés. Ainsi il gagne des privilèges d'accès et contrôle du
serveur. Le défacement est effectué ensuite par la modification du contenu des pages du site visé.
- 10 -
Chapitre 1 Présentation du projet et État de l'art
La plupart du temps, les sites défacés le sont uniquement sur la page d'accueil.
Une page défacée peut contenir plusieurs éléments :
• Un fond uni, qui peut être le seul indice de défacement d'un site; la plupart du temps la
page d'accueil est blanche ou noire.
• Généralement, un simple mot, comme « owned », « hacked » ou bien le pseudonyme du
défaceur.
• Une image est assez souvent présente, et affiche les revendications du défaceur. Nous
trouvons souvent des symboles se référant à la mort (crânes…), un drapeau sous lequel le
défaceur est fier d'agir etc.
• Parfois plus qu'un simple mot, plusieurs phrases pouvant être de différentes natures
(insultes envers des États, des défaceurs adverses, une revendication spécifique…).
• Une explication simple de la façon dont le défaceur a acquis l'accès en écriture sur le site
accompagnée à l'occasion d'une moquerie envers le webmestre ou l'administrateur du site
en question.
• plus rarement des fichiers audio, vidéo ou même Flash.
4.1.2.2. Exemples de pages web défacées
• Google Maroc : Google.co.ma, illustré dans la figure N°2, a été défacé par le groupe de
pirates pakistanais "PAKbugs". Une fois encore une faille d'injection SQL a été utilisée
chez le registrar domain.ma, les défaceurs ont ensuite accédé au NIC marocain (nic.ma)
avec les mêmes identifiants d'administrateurs récupérés sur domain.ma afin de modifier
les serveurs DNS associés au nom de domaine.
Avant Après: le 09/05/2009
Figure N°2 : Google Maroc avant et après le défacement – Le 09/05/2009
- 11 -
Chapitre 1 Présentation du projet et État de l'art
• Le 21/04/2009, certains defacers turcs ont pénétré dans le bureau d'enregistrement basé
en Nouvelle-Zélande « Domainz.net » (qui appartient à MelbourneIT) et ont défacé
certains de leurs sites Web de leurs clients de haut niveau comme Microsoft, HSBC,
Coca-Cola, F-secure, Bitdefender, Sony et Xerox.
Avant Après: le 21/04/2009
Figure N°3 : sony.co.nz avant et après le défacement – Le 09/05/2009
• Le site Internet de la police Britanique piraté par un cyber intrus Tunisien : Après le
Home Office Crime Reduction Unit, la police britannique a connu le 09/06/2008 un
nouveau passage d'un pirate informatique dans ses e-murs. Le site web de la police de
Bedfordshire a été piraté par un jeune internaute de 17 ans qui a signé son attaque sous le
pseudonyme de <nom_et_prénom_du_pirate>. Le jeune barbouilleur a affiché, en plus
d'une tête de mort et d'un porte drapeau le message « This site was hacked by
<nom_et_prénom_du_pirate> » [5].
Figure N°4 : Site de la police Britannique après l'attaque d'un pirate Tunisien – Le 09/05/2009
- 12 -
Chapitre 1 Présentation du projet et État de l'art
4.1.3. Motivations des Hackers
Certains affirment s'attaquer aux systèmes informatiques juste pour le plaisir et pour le
challenge. Certains veulent juste se faire connaître, d'autres, cherchent à trouver un emploi parce
que le Hacking est devenu aujourd'hui un métier. Aujourd'hui, les pirates qui attaquent des
serveurs pour gagner de l'argent ou accéder aux données financières ne sont pas très nombreux.
Car ce type de piratage nécessite des compétences de très haut niveau. Dans le monde entier, la
majorité des attaques proviennent des script-kiddies [G4]. Ils n'ont pas besoin de compétences
pointues et se contentent d'installer des chevaux de Troie téléchargés sur le Net.
4.1.4. Cibles des Hackers
Contrairement aux idées reçues, les particuliers font partie des cibles privilégiées des
pirates informatiques car ils ne disposent souvent d'aucun moyen de protection. Certain affirment
que c'est un jeu d'enfant pour un Hacker d'accéder à leurs mots de passe Internet ou à leurs
documents personnels. Mais qu'est-ce qu'un Hacker espère trouver sur un ordinateur personnel ?
Les histoires de piratage ne sont-elles pas réservées aux grandes entreprises?
Les chevaux de Troie ou « Troyens » constituent pour les pirates un des meilleurs
moyens pour s'infiltrer dans un ordinateur. A la différence des virus, les chevaux de Troie ne
cherchent pas à contaminer les fichiers mais agissent comme un espion au service du pirate qui
l'a envoyé. Cachés derrière une apparence innocente, généralement les images ou des document
PDF, mais aussi des logiciels gratuits, un accélérateur d'affichage ou un jeu, ils contiennent
souvent des logiciels de prise de main à distance qui permettent au pirate de voir toutes les
actions sur les ordinateurs de ses victimes pendant leurs connexion Internet, y compris les mots
de passe tapés à l'écran via les Keyloggers qui permettent d'enregistrer tous caractères saisie par
le clavier. Le pirate prend ainsi le contrôle total de la machine cible : il peut lancer des logiciels,
bouger le curseur, lire les courriers, détruire les documents ou encore redémarrer l'ordinateur.
Les chevaux de Troie ouvrent aux pirates les portes virtuelles de l'ordinateur. Au nombre
de 65000 sur un ordinateur, ces ports sont des voies virtuelles d'entrée et de sortie des
informations provenant de l'Internet. Généralement, les port les plus utilisés sont les ports
TCP/IP qui permettent la communication des ordinateurs sur Internet, le port 80 qui est consacré
au chargement des pages web et le port 25 dédié à la messagerie.
Les chevaux de Troie utilisent un de ces ports pour communiquer via le web avec le
- 13 -
Chapitre 1 Présentation du projet et État de l'art
pirate. Un ralentissement notable de l'ordinateur victime ou l'activité inhabituelle du modem
alors que la victime n'est pas entrain de l'utiliser peuvent être des signes d'infection par un cheval
de Troie.
Mais l'objectif principal des Hackers en prenant contrôle les machines des particuliers
reste sans doute la possibilité des attaques par rebond [G5] ou attaques DDOS [G6]. Pour cela, et
pour faciliter la propagation du Cheval de Troie, les Hackers font recourt aux sites les plus
visités ou les sites de confiance comme les sites gouvernementaux ou des établissement publics.
Et pour arriver à leurs bout, les Hackers commencent par déterminer les failles dans ces sites afin
d'injecter un virus ou un cheval de Troie dans la page principale des sites. Lors du chargement de
ces sites par un simple internaute, le malware sera télécharger et installer automatiquement et
d'une manière transparente vis à vis de l'internaute. Au bout de quelques jours, le Hacker
construira toute une armé de bots (pouvant atteindre les des millions de bots) et à ce moment, un
désastre est attendu pour le serveur victime.
Notre projet, entre dans le cadre de lute contre ce genre de propagation de malwares en
essayant de détecter les malwares dans les sites Tunisiens et informer les administrateurs des
serveurs contaminés d'une tel existence de malwares.
4.1.5. Le piratage en Tunisie
En Tunisie, l'histoire du piratage a commencé non pas par l'apparition de l'internet mais
bien plus que cela. En effet, le piratage a commencé avec deux entreprises profondément
touchées : la Société Tunisienne d'Électricité et de Gaz (STEG) par le vol des connections
électriques et Tunisie Télécom avec le piratage des lignes téléphoniques « phreaking » puis le
piratage des communication dans les taxiphones en modifiant les règles de taxations.
L'arrivée d'internet marque l'introduction des pirates Tunisiens expatrié (principalement
en Allemagne) mais aussi des jeunes « newbie » et des lamers Tunisiens. Vers la fin des années
90 et début des années 2000, un groupe de lamers fait son apparition sur la scène. Parmi les
premières activités de ce groupe fut l'achat du nom de domaine tunisietelecom.com et le rediriger
vers leur site (ce n'est pas un acte de piraterie mais son impact dans le domaine fut grandiose) le
groupe se nomme Magattack. Ce groupe de lamers a réussi à l'époque à faire un défacement de
plusieurs sites en utilisant des scripts et des outils développés par les autres pirates. Plusieurs
jeunes y ont adhéré et rapidement Magattack est devenu le plus grand groupe de pirates
Tunisiens. Il regroupe aussi bien des lamers, defacers que de hackers professionnels, des
- 14 -
Chapitre 1 Présentation du projet et État de l'art
phreakers et des crackers. Parmi les Hackers Tunisiens, on peut citer: darkr0ot, blackr0ot,
localhost, azraael, yvan, blackdevil, blackhat, et le petit dernier K3M (k3vin Metnick).
Parmi leurs exploit fut l'ATI, TT, AmenBank et beaucoup d'autres établissements publics.
Enfin, il est à noter qu'un nouveau né dans le domaine du Hacking Tunisien, c'est le
groupe de lamers « Tunisian Power Team ».
4.1.6. Aspects juridiques pour intrusion aux systèmes
informatiques
• Est puni d'un emprisonnement de deux mois à un an et d'une amende de mille dinars ou
de l'une de ces deux peines seulement quiconque, frauduleusement, aura accédé ou se
sera maintenu dans tout ou partie d'un système de traitement automatisé de données. La
peine est élevée à deux ans d'emprisonnement et l'amende à deux mille dinars lorsqu'il en
résulte, même sans intention, une altération ou la destruction du fonctionnement des
données existantes dans le système indiqué.
• Est puni d'un emprisonnement de trois ans et d'une amende de trois mille dinars,
quiconque aura intentionnellement altéré ou détruit le fonctionnement du traitement
automatisé.
• Est puni d'un emprisonnement de cinq ans et d'une amende de cinq mille dinars,
quiconque aura frauduleusement introduit des données dans un système de traitement
automatisé de nature à altérer les données que contient le programme ou son mode de
traitement ou de transmission. La peine est portée au double lorsque l'acte susvisé est
commis par une personne à l'occasion de l'exercice de son activité professionnelle. La
tentative est punissable.
• Est puni d'un emprisonnement de deux ans et d'une amende de deux mille dinars,
quiconque aura introduit une modification de quelque nature qu'elle soit sur le contenu de
documents informatisés ou électroniques originairement véritables, à condition qu'elle
porte un préjudice à autrui.
• Est puni des mêmes peines, quiconque aura sciemment détenu ou fait usage des
documents susvisés. La peine es t portée au double lorsque les fais susvisés sont commis
par un fonctionnaire public ou assimilé. La tentative est punissable [6].
- 15 -
Chapitre 1 Présentation du projet et État de l'art
4.2. Les malwares
Dans le domaine des codes malveillants, il existe plusieurs types de malwares, nous nous
limitons à présenter les plus vulnérables et les plus répondus [4].
4.2.1. Les Virus
Un virus est un programme informatique malicieux conçu et écrit pour qu'il se
reproduise. Cette capacité à se répliquer, peut toucher généralement les ordinateurs ayant les
systèmes d'exploitation Windows, d'une manière transparente et sans prendre la permission du
propriétaire. En termes plus techniques, le virus classique s'attachera à des programmes
exécutables et se copiera systématiquement sur tout autre exécutable. Il n'y a pas de génération
spontanée de virus informatiques. Ils doivent avoir été écrits dans un but spécifique.
A part se répliquer, le virus peut avoir ou non une action plus ou moins néfaste, allant de
l'affichage d'un simple message à la destruction de toutes les données. Tandis que certains virus
vont tout simplement se manifester par l'apparition d'un message sur l'écran de ordinateur,
d'autres vont être plus dangereux. Par exemple, ils pourront supprimer des données, formater un
disque dur et même endommager quelques composant physique de la machine cible. La majorité
des virus se propagent par courrier électronique en pièce-jointe ou par une simple consultation de
pages web. Néanmoins, nous pouvons classer les virus en plusieurs catégories:
• Virus furtifs : ces virus, comme leur nom l'indique, vont se camoufler de façon à ne pas
être détecté par les antivirus. Un virus furtif, va se cacher lorsque l'antivirus ou
l'utilisateur accède au fichier infecté, à ce moment, le virus le saura et va se cacher offrant
à l'antivirus et à l'utilisateur une version non infectée du fichier.
• Virus polymorphes : ces virus, assez rare, ont la faculté de changer de signature de
façon à berner les antivirus. Les virus polymorphes incluent un code spécial permettant
de rendre chaque infection différente de la précédente. Ce changement constant rend la
détection de ce type de virus compliqué. Souvent le code change, mais l'action pour
lequel il a été créé est toujours la même. Par exemple, le virus peut intervertir l’ordre des
instructions de son action en son sein, ou rajouter de fausses instructions afin de tromper
la vigilance de l'antivirus, qui lui, recherche une signature précise.
Beaucoup de virus polymorphes sont aussi encryptés. Le virus encryptera son code et ne
le décryptera que lorsqu’il doit infecter un nouveau fichier, le rendant encore plus
difficile à détecter.
- 16 -
Chapitre 1 Présentation du projet et État de l'art
• Macros : ce sont des virus écrits en VBA (Visual Basic Application) de la suite
Microsoft Office. Les virus Macros sont la plus grande menace à ce jour, ils se propagent
lorsqu’un document Microsoft Word, Excel ou PowerPoint contaminé est exécuté. c'est
une série de commandes permettant d’effectuer un certain nombre de tâches
automatiquement au sein des applications ci dessus. Les Virus Macros non supprimés se
répandent très rapidement. L’ouverture d’un document infecté va contaminer le
document par défaut de l’application, et ensuite tous les documents qui seront ouverts au
sein de l’application. Les documents Word, Excel et PowerPoint étant les documents les
plus souvent partagés, envoyés par Internet, ceci explique la diffusion rapide de ces virus.
De plus le langage de programmation des Macros est beaucoup plus facile à apprendre et
moins compliqué qu’un langage de programmation classique.
• Virus composites : ces virus sont tout simplement une combinaison des catégories
mentionnées ci-dessus.
4.2.2. Les Vers
Un Ver est un logiciel malveillant indépendant qui se copie d’ordinateur en ordinateur.
La différence entre un ver et un virus est que le premier ne peut pas se greffer à un autre
programme et donc l’infecter, il va simplement se copier via un réseau ou Internet, d’ordinateur
en ordinateur. Ce type de réplication peut donc non seulement affecter un ordinateur, mais aussi
dégrader les performances du réseau dans une entreprise. Comme un virus, ce ver peut contenir
une action nuisible du type destruction de données ou envoi d'informations confidentielles.
L'objectif d'un ver n'est pas seulement de se reproduire. Le ver est un logiciel malveillant
qui permet d'espionner et de détruire des données sur l'ordinateur où il se trouve, d'ouvrir une
porte dérobée à des pirates informatiques ou même de participer à une attaque DDOS en
envoyant de multiples requêtes vers un serveur Internet dans le but de le saturer.
L'activité d'un ver a souvent des effets secondaires comme le ralentissement de la
machine infectée ou du réseau utilisé par cette machine infectée. En plus, les vers peuvent
planter quelques services ou complètement le système d'exploitation de la machine infectée.
Des vers écrits sous forme de script peuvent être intégrés dans une page HTML [G8] et
ils sont activés par simple consultation de la page Web.
- 17 -
Chapitre 1 Présentation du projet et État de l'art
4.2.3. Les Chevaux de Troie
Un Cheval de Troie est un programme en apparence légitime mais conçu pour exécuter
d'une façon cachée vis à vis de l'utilisateur des actions au profil du pirate. Leur nom vient du
fameux Cheval de Troie de la Grèce antique, offert en cadeau, mais qui en fait avait pour but de
causer la ruine et la destruction de la ville ayant reçu ce cheval en bois.
Un Cheval de Troie sur un ordinateur est un programme exécutable indépendant présenté
comme ayant une action précise. Néanmoins lorsque ce programme est lancé, il va détourner,
diffuser ou détruire des informations, formater le disque dur, voler les mots de passe, envoyer
des informations confidentielles au créateur via Internet ou encore pour ouvrir une porte dérobée
« backdoor » qui permettra à un attaquant de prendre à distance le contrôle d'un ordinateur.
Un Cheval de Troie peut aussi être à l'origine d'une bombe logique qui, une fois exécutée,
produira ses effets à un moment précis. Par exemple, la bombe logique Tchernobyl s'est activée
le 26 avril 1999 (jour du 13ème anniversaire de la catastrophe nucléaire en Bulgarie), mais la
bombe peut également attendre une combinaison de touches bien précise de la part de
l'utilisateur pour se déclencher ou attendre qu'un fichier s'exécute. Le choix des programmeurs
quant à son déclenchement est sans limite.
4.2.4. Les Spywares
Un spyware, ou logiciel espion, est un logiciel malveillant qui s'installe dans un
ordinateur dans le but de collecter et transférer des informations sur l'environnement dans lequel
il s'est installé, très souvent sans que l'utilisateur n'en ait connaissance. Après la collecte
d'informations, le Spyware transmet les données au pirate.
Un logiciel espion est composé de trois mécanismes distincts :
◦ Le mécanisme d'infection qui installe le logiciel. Ce mécanisme est identique à celui
utilisé par les virus, les vers ou les chevaux de Troie.
◦ Le mécanisme assurant la collecte d'information.
◦ Le mécanisme assurant la transmission des informations aux pirates. Ce mécanisme
est généralement assuré via le réseau Internet. La destination peut être le concepteur
du programme ou une entreprise.
Le logiciel espion peut afficher des offres publicitaires, télécharger un virus, installer un
cheval de Troie (ce que fait WhenU.SaveNow, par exemple), capturer des mots de passe en
- 18 -
Chapitre 1 Présentation du projet et État de l'art
enregistrant les touches pressées au clavier (keyloggers), espionner ou exécuter les programmes
à une heure précise ou encore espionner les sites internet visités.
5. Conclusion
Ce chapitre a donné une vue globale sur le cadre spatial temporel du projet de fin des
études. Nous avons essayé d’introduire la problématique du sujet et notre approche suivie pour
résoudre les problèmes relevés, Nous avons aussi présenté une étude sur le piratage en Tunisie,
les malwares et les menaces d'internet que nous risquons et qui sont indispensables à la
compréhension de l'objectif de notre projet.
Le chapitre suivant présentera une étude sur les moteurs de recherche open source.
- 19 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
CHAPITRE 2
Étude sur les Moteurs de Recherche
Open Source
1. Introduction
Parfois comparé à la Bibliothèque d’Alexandrie, le Web est composé d’un nombre
inestimable de sites, eux-mêmes composés d’un nombre incalculable de pages... Heureusement,
les moteurs de recherche sont une des principales ressources mises à la disposition de
l’internaute pour l'aider à trouver son aiguille dans des milliers de pages Web.
Le moteur de recherche (ou Search Engine) est un programme, comparable à une base de
données archivant des sites web, des pages web et les mots les composant. Cette base est mise à
jour régulièrement, à mesure que de nouveaux sites web sont créés ou que le contenu des pages
est modifié.
Pour trouver le thème recherché, le moteur « scrute » dans sa base de données l’existence
de la chaîne de caractères demandée et la restitue, le cas échéant, sous la forme d’une liste de
sites ou de pages web, selon sa nature.
De nos jours, le nombre de moteurs de recherche diminue drastiquement et la situation
d'oligopole dans laquelle nous nous trouvons risque de se transformer en monopole avec une
seule compagnie « Google », contrôlant presque toute la recherche Web, avec des visées
commerciales.
Tous les principaux moteurs de recherche ont des formules de classement propriétaires et
n'expliqueront jamais pourquoi telle ou telle page a été classée d'une certaine façon. De plus,
certains moteurs de recherche choisissent les sites à indexer en échange d'une rémunération plus
- 20 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
que sur la valeur intrinsèque du site. Donc la solution est de faire appel à un moteur Open Source
gratuit. Cette solution nous permet de configurer le délai de ré-indexation des sites et les
composantes à y récupérer (texte brut : recherche textuelle).
Dans ce chapitre, nous procédons à une étude théorique sur les moteurs de recherche
Open Source, suivi d'une implémentation et configuration du moteur de recherche Nutch.
2. Définition
Un moteur de recherche est un outil de recherche sur internet permettant de retrouver des
informations demandées associées à des mots quelconques. Ces moteurs sont constituées
essentiellement de Crawlers (robots) qui parcourent les sites web de façon régulière et
automatique afin de chercher de nouvelles adresses web, et de collecter les ressources jugées
intéressantes. Ensuite, ces liens et ces ressources collectés seront indexés et accessibles par la
suite par la recherche.
3. Moteurs de recherche et les systèmes de gestion de base de données
Les moteurs de recherche ont une structure similaire à un système de base de données, les
documents sont stockés dans un dépôt et un index est maintenu. les requêtes utilisateurs sont
évaluées par traitement de l'index et les entrées correspondantes sont retournées à l'utilisateur.
Cependant, il existe quelques différences, les requêtes utilisateurs sont simples : un
ensemble de mots (ou termes) ou une phrase alors que les requêtes aux bases de données sont
complexes (avec par exemple des expressions logiques ou régulières).
Une autre différence est que les bases de données retournent tous les enregistrements
correspondant à la requête alors qu'un moteur de recherche ne retourne qu'un nombre fixé de
documents classés par pertinence, selon des mesures statistiques.
4. Fonctionnement
Un moteur de recherche est composé essentiellement de trois outils :
4.1. Un outil d'exploration
L'exploration ou le crawling consiste à injecter un ensemble de robots sur internet
permettant de chercher de nouvelles adresses web, et de collecter les ressources jugées
intéressantes. Depuis l'apparition d'internet, sa taille ne cesse d'augmenter, cette croissance
- 21 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
touche à la fois le nombre de pages, mais aussi la taille moyenne de chaque page, en effet,
images, vidéos et les animations flash deviennent de plus en plus utilisés dans nos sites.
Par contre, la bande passante disponible pour crawler le web est toujours limitée. Il est
donc indispensable, et même stratégique, d'optimiser les crawlers pour qu'ils puissent indexer la
Toile de manière efficace.
Cette efficacité se mesure en fonction de trois facteurs :
1. L'exploration doit être rapide : c'est la condition la plus exigée pour qu'un robot
puisse passer souvent et assurer que les pages figurants dans l'index aient une "fraîcheur
suffisante".
2. L'exploration doit être complète : nous savons qu’elle ne peut pas être
exhaustive, car certaines portions du web ne sont pas reliées entre elles par des liens. Mais le
robot doit être capable d’indexer une portion significative de la Toile.
3. Dans le même temps, l'exploration doit respecter les sites visités : notamment,
le robot doit tenir compte de la configuration du moteur de recherche de telle façon qu'il n'aspire
pas des centaines de pages à la seconde...
4.2. Un outil d'indexation
L'indexation permet aux moteurs de recherche d'extraire les mots considérés comme
significatifs à partir des pages web récupérés, ils seront ensuite enregistrés dans une base de
données organisée compréhensible par le moteur de recherche. Le poids, attribué à chaque mot
récupéré, correspond à une probabilité d'apparition du mot dans la page web.
A cette étape, nous pouvons intervenir un Anti-dictionnaire qui permet d'ignorer les mots
« vides » (mots non désirables tels que "de", "le", "la") qui sont définies au préalable par
l'administrateur du moteur de recherche.
4.3. Un outil de recherche
La recherche nous permet de retrouver les sites contenants l'objet recherché, cette phase
consiste à analyser les informations disponibles dans la base de données des sites web crawlés et
indexés, et de retourner une liste de sites par ordre de pertinence. Subissant l'évolution de
l'internet, les algorithmes de recherche sont devenus de plus en plus complexes. Ainsi, nous
retrouvant des moteurs de recherche très simples qui se limitent à une recherche booléenne de
- 22 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
l'objet (comparer les mots d'une requête avec ceux des documents). Les moteurs plus évoluées se
basent dans leurs recherche sur le poids de l'objet recherché, ce poids est calculé pour chaque
recherche par la formule TF-IDF [G9].
Pour améliorer encore plus les performances d'un moteur de recherche, il existe de
nombreuses méthodes telles que la méthode d'analyse sémantique latente qui permet de faire la
recherche aussi des co-occurrences du mot recherché, ainsi, par exemple, le terme "voiture" est
automatiquement associé à ses mots proches tels que "garage" ou BMW, etc.
Autres techniques consistent à utiliser différents plugins tels que les traducteurs, la
correction d'orthographe ou les dictionnaires de synonymes et d'acronymes.
5. Moteurs de recherche propriétaires
Bien que plusieurs moteurs de recherche Open Source commencent à prendre leurs parts
dans le marché des moteurs de recherche, ce domaine reste toujours dominé par les trois acteurs
majeurs: Google, Yahoo, et MSN [7] :
• Google: environ 65.4% des 64.3 milliards de recherches sur internet
(90.61% de part de marchés en France sur le mois de Juin 2008 [8]).
• Yahoo: 8,5 milliards de recherches, soit 14% du total
• Live Search: 2,1 milliards de recherches, 3,4%
Moteur Janvier 2008 Février 2008
63.1% 62.8%
12.2% 11.9%
4.6% 4.5%
3.1% 3.1%
Tableau N°1 : Parts du marché des moteurs de recherche dans le monde.
- 23 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
6. Moteurs de recherche Open Source
Étant donné que la quantité d'informations disponibles sur les sites Internet ne cesse
d'augmenter, il devient nécessaire de donner à l'utilisateur la possibilité d'effectuer des
recherches sur des domaines bien définis. En décidant d'installer un moteur de recherche pour un
besoin bien spécifique, les administrateurs sont face à un choix entre les solutions commerciales,
et dans ce cas, des frais supplémentaires non négligeables sont exigés, ou opter pour une solution
Open Source qui peut donner pour quelques moteurs de recherche les mêmes fonctionnalités que
les solutions commerciales, avec les avantages de la philosophie Open Source : transparence du
fonctionnement de ces moteurs de recherche, la gratuité de ces solutions, les logiciels mis à jour
activement, possibilité de personnaliser les codes afin de répondre à des besoins bien spécifiques,
etc
Aujourd'hui, il existe de nombreuses solutions Open Source qui peuvent être utilisées, et
chacune d'entre elles présente des caractéristiques différentes qui doivent être prises en
considération afin de déterminer laquelle choisir. Ces moteurs de recherche peuvent être classés
selon plusieurs critères à savoir le langage de programmation utilisé, la façon dont il stocke les
indexes, ses capacités de recherche, le type de fichiers capables d'indexation (HTML, PDF, texte,
etc).
D'autres facteurs importants à considérer sont la dernière date de mise à jour du logiciel,
la version actuelle et l'activité du projet. Ces facteurs sont très importants, car un moteur de
recherche qui n'a pas été mis à jour récemment, peut présenter des problèmes au moment de sa
personnalisation. Ces caractéristiques sont utiles pour faire une classification globale des
moteurs de recherche et être capable de limiter le nombre de solutions disponibles. Ensuite, il est
important de tenir compte de la performance de ces moteurs de recherche (temps de l'exploration
(crawling), le temps d'indexation, et de recherche sur des bases très volumineuses).
7. Étude comparative sur les moteurs de recherche Open Source
Se limitant sur les moteurs de recherche Open Source les plus utilisés, nous essayons
dans cette partie de présenter une étude comparative entre les trois moteurs les plus utilisés à
savoir DataParkSearch, Solr et Nutch.
- 24 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
7.1. DataParkSearsh
DataParkSearch est un moteur de recherche Open Source écrit entièrement en C, il est
destiné à organiser la recherche dans les sites Web, un groupe de Sites Web, ou sur intranet. Ce
moteur de recherche dispose d'une large variété de fonctionnalités, il se compose essentiellement
de deux mécanismes qui fonctionnent simultanément, le premier, c'est un mécanisme
d'indexation pour la recherche de nouvelles ressources sur internet, et le deuxième partie qui est
un mécanisme de recherche.
Doté de plusieurs outils de reconnaissance linguistique, DataParkSearch permet la
reconnaissance automatiquement des langues, et de faire des recherches en utilisant une
technologie de négociation du contenu1 pour récupérer les versions de la même page dans
différentes langues, il peut effectuer aussi une recherche avec les caractères spéciaux ou faire de
la segmentation de phrases en Chinois, Japonais, Coréen et Thai. Il est possible d'utiliser des
synonymes, des acronymes et et des abréviations pour étendre les résultats de la recherche.
Afin d'optimiser la recherche et de répondre aux attentes des utilisateurs, DataParkSearch
utilise la technique de « Neo Popularity Rank » qui permet de classer les pages web selon les
pays du réseau neurologique, il permet aussi de construire automatiquement le sommaire de
chaque page index « Summary Extraction Aalgorithm, SEA », ce sommaire sera par la suite
utilisé pour améliorer le rang des sites web.
Enfin, DataParkSearch permet la personnalisation des résultats de la recherche en
fournissant aux utilisateurs la possibilité de classer les pages web par pertinence, popularité,
importance ou par date de la dernière modification.
7.2. Nutch
Initié en 2003 par Doug Cutting, Nutch est un moteur de recherche Open Source complet
: il dispose de son propre outil de crawling, alors que l'indexation et la recherche se basent sur les
bibliothèques de Lucene. Développé entièrement en Java et basé sur une architecture hautement
modulaire, Nutch permet aux développeurs de créer des plugins pour différentes phases du
processus : exploration, indexation et recherche.
1. Négociation de contenu : c'est un mécanisme qui permet de négocier le contenu de la page afin de fournir la forme la mieux adaptée aux utilisateurs, ainsi un utilisateur qui ne comprend pas la forme PNG, peut avoir la forme GIF (bien évidement, chaque ressource doit être disponible sous plusieurs formes).Autre forme de négociation du contenu, c'est la négociation de la langue à afficher.
- 25 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
En juin 2003, Nutch fût un grand succès après sa présentation d'une version
opérationnelle sur une base regroupant 100 millions de documents, ce succès lui a permis de
prendre sa place dans le domaine des moteurs de recherche.
Publiée le 1er juin 2004, l'étude2 [9] menée par Lyle Benedict présente une comparaison
des résultats du célèbre Google et de son homologue libre Nutch dans le cadre restreint du site
internet de l'Université de l'État de l'Oregon sur une base de 100 requêtes. Par exemple, sur des
notes allant de 0 à 10 où 10 est la meilleure note, elle a trouvé 28 requêtes pour lesquelles Nutch
et Google ont obtenu la note maximale.
Ce succès a énormément encouragé plusieurs organismes internationaux d'adopter cette
solution Open Source. En effet, en décembre 2006, le gouvernement du Québec a opté pour
Nutch comme moteur de recherche pour le repérage de l'ensemble de ses sites selon une
présélection. Autre migration vers Nutch fût celle de l'Oregon State University en septembre
2004, qui a remplacé son pôle de recherche Google par Nutch. Cela lui a permit de réaliser des
réductions de coûts significatives (estimée à 100 000$ par an selon l'Open Source Lab) et de
promouvoir la transparence de ce moteur de recherche [10].
En janvier 2005, l'équipe de Nutch décide de migrer vers la licence Apache. Et après cinq
mois d'incubation, Nutch devient un sous-projet de Lucene.
7.3. Solr
Tout comme Nutch, Solr est un moteur de recherche Open Source basé sur la
bibliothèque Lucene. D'abord, il a était développé chez CNET Networks pour améliorer les
capacités de recherche de l'entreprise, puis en début 2006, CNET Networks décide de rendre le
code source ouvert et de le remettre à Apache Software Foundation. Solr est maintenant un sous-
projet de Lucene qui lui ajoute une surchouche XML lui permettant de recevoir les requêtes en
HTTP et de rendre le résultat en XML [G10].
2. Comparision of Nutch and Google search engine implementations on the Oregon State University website - Lyle Benedict - 1 Juin 2004: cette étude montre bien l'efficacité de Nutch par rapport à Google. Parmi les 54 résultats utilisables, une comparaison entre ces deux moteurs de recherche montre que:
- Pour 28 requêtes: Nutch et Google ont tous deux répondu parfaitement à la demande et 3 un peu moins parfait.
- Pour 5 requêtes Nutch a été légèrement en avance par rapport à Google (les deux étaient presque parfaits)- Pour 8 requêtes Google a été légèrement en avance par rapport à Nutch (les deux étaient presque parfaits)- Pour 3 requêtes Nutch a été beaucoup mieux que Google - Pour 4 requêtes de Google a été beaucoup mieux que Nutch de 10 à 6 - Pour 2 requêtes Nutch a très mal répondu, Google a fait un peu mieux- Pour 1 requête, Nutch n'a pas pu satisfaire la demande, Google, un peu mieux, mais il a répondu très mal.
- 26 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
Bien qu'il dispose d'une interface graphique d'administration, Solr ne fournie pas encore
aucune interface graphique de recherche, ce qui pousse les utilisateurs de Solr à développer leurs
propres interfaces recherche avec leurs langages de programmation préférés (Java, PHP, Ruby,
Python ...). Cet outil peut aussi prendre la forme d'un Web service et permet donc d'être intégré à
n'importe quel programme, indépendamment du langage de programmation (Java, PHP, C# et
autres).
Le point fort de Solr c'est sans doute son outil de recherche qui lui permet de
personnaliser les recherches. Par exemple, Solr supporte le “faceting” qui permet de
personnaliser la recherche en ajoutant des critères supplémentaires ou d’implémenter des filtres
sur des champs variés. (par exemple, faire un filtre par gamme de prix, couleur et taille pour la
recherche d'un article donné).
En se basant sur Lucene (qui lui fournit des outils d'indexation, et de recherche),
l'inconvénient majeur de Solr reste toujours qu'il ne dispose pas encore d'un outil de crawling. En
effet, pour utiliser Solr, les administrateurs doivent toujours faire recours à des outils de crawling
propriétaires tel que WebCrawler, Methabot, FAST Crawler, Google crawler, etc. Ou même des
Crawlers Open Source tels que Heritrix, GNU WGet, HTTrack, Aspseek, Nutch, etc.
Ce tableau résumera les caractéristiques de chacun des trois moteurs de recherche :
DATAPARKSEARCH SOLR NUTCH
Date première version
27 Novembre 2003 17 Janvier 2006 Juin 2003
Date dernière version
25 Avril 2009 15 Septembre 2008 23 Mars 2009
Version actuelle 4.52 1.3.0 1.0
Système d'exploitation
FreeBSD, Linux, Solaris Windows, Linux, Mac, BSD, Unix
Windows, Linux, Mac, BSD, Unix
Langage de programmation
C Java Java
Communauté Réduite: Forums, Mailing List, Blogs, Pages Wiki
Active : Forums, Mailing List, patch
Très active:Forums, Mailing List, patch, Tutoriels, Astuces,
consultants indépendants offrant une assistance
spécialisée.
Licence GNU GPL - Version 2 Apache License 2.0 Apache License 2.0
Exploration Oui Non Oui
Indexation Oui Oui, utilisant les bibliothèques Oui, utilisant les bibliothèques
- 27 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
de Lucene de Lucene
Recherche Oui Oui, utilisant les bibliothèques de Lucene
Oui, utilisant les bibliothèques de Lucene
Interface Graphique
Non Seulement d'administration Oui
Fichiers supportés Texte, HTML, XML, Audio, Vidéo, Images/GIF, PDF, Flash, Word, Excel, RTF,
PowerPoint
Pas de crawler Texte, HTML, XML, JavaScript, OpenOfice.org
ODF & Star Office, Microsoft Power Point & Word, Adobe PDF, RSS, RTF, MP3, ZIP,
Flash, etc
Personnalisable Avec divers templates Avec divers templates Code compréhensible
Extensible Non Non Nutch-Wax, Hadoopi, solr, etc
Distribué Non Oui Hadoopi
plugin Non Non LanguageIdentifierPlugin XMLParser Plugin,
DocumentationTemplate GeoPosition , German
JapaneseAnalyzer plugin index-extra, protocol-smb
Autres caractéristiques
● Indexation multilangues des sites ● Recherche de tous les mots proches ● Support des synonymes, acronymes, abréviation ● Liste d'interdictions de mots.● Indexation et recherche en même temps sur la même base de données (Multithread). ● Résultat par importance, pertinence, popularité ou par date. ● Correction d'orthographe.● Recherche par abréviation .● Support des caractères spéciaux. ● Support du Chinois, japonais, etc. ● Nécéssite un SGBD. (MySQL, PostGreeSQL ou Oracle)
● Hit Highlighting (coloration du mot recherché) ● Communication via HTTP, JSON, XML, PHP, Ruby et Python.● Simple à mettre en place: pas de Tomcat. ● Interface d'administration (en HTML). ● Possibilité de réplication de serveurs. ● Extensible avec de nouveaux plugins. ● Caching (mémorisation en cache de toutes recherches). ● Recherche filtrée et par catégorie (faceted search) ● Optimisé pour une recherche web très volumineuse.● Configuration personnalisable et flexible. ● Statistiques complètes sur l'utilisation du cache, mises à jour, requêtes, etc.
● Communauté très active.● Code source compréhensible. ● Robuste et complet● Extensible avec plusieurs plugins ● Possibilité d'intégrer Solr avec Nutch.● Support de Base de données très volumineuse.● Nécessite le générateur de servlette Tomcat.● Possibilité de réplication de serveurs.
Site offciel http://www.dataparksearch.org/ http://lucene.apache.org/solr/ http://lucene.apache.org/nutch/
Tableau N°2 : Étude comparative sur les moteurs de recherche Open Source.
- 28 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
8. Choix technologique
La solution du départ consistait à l'utilisation d'un moteur de recherche Open Source,
cette solution nous permet d'économiser, en premier lieu, de l'argent vis à vis des solutions
propriétaires3 [11]. En plus, l'adoption des solutions Open Source nous permet de profiter de tout
les atouts de ces derniers à savoir la possibilité de modifier le code source ainsi l'adapter à nos
besoins, elle nous permet aussi d'avoir une idée détaillée sur les algorithmes de classement des
sites.
Parmi les solutions proposées, Nutch se distingue comme étant la solution la plus
appropriée pour répondre à nos besoins à savoir principalement la recherche textuelle dans une
base de quelques milliers de sites tunisiens. En effet, Nutch est un moteur de recherche basé sur
la Bibliothèque Lucene qui est une bibliothèque écrite en java destinée pour la création de
puissants moteurs de recherche orientés texte.
L'avantage indéniable aussi de Nutch c'est qu'il permet de crawler plusieurs milliards de
pages par mois et donc d'avoir un crawler très performant et d'avoir un corpus de très grande
taille.
9. Étude sur le moteur de recherche Nutch
9.1. Introduction
La recherche textuelle a pris une importance considérable depuis quelques années, suite
notamment au succès de l'Internet et de ses moteurs de recherche. Elle n'est pas seulement
utilisée sur le Web mais l'est également par les systèmes d'exploitation par exemple, pour la
recherche de fichiers sur les ordinateurs personnels ainsi qu'au sein des entreprises pour faciliter
la recherche des données en intranet.
Les outils de recherche d'informations indexent aujourd'hui un nombre gigantesque de
pages. Pour avoir un ordre d'idée, Google référençait en 2005 plus de 8 milliards de pages avant
de cesser de communiquer ce chiffre. Ainsi, le défi de la recherche documentaire est de toujours
améliorer les algorithmes de classement des documents (méthodes statistiques ou autres) et les
structures de données mises en place.
3. Google Mini est un moteur de recherche destiné pour les entreprises. Existant en plusieurs versions, la moins chère permet de lancer des recherches sur 50 000 documents pour 2 600 €. La version de 300 000 documents peut aller jusqu'à 8 600 €.
- 29 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
Les moteurs de recherche sont des outils pour trouver des documents dans un ensemble
de documents, qui ont une bonne concordance avec la requête de l'utilisateur. Les types de
documents que l'on peut rencontrer sont des pages Web, des articles de journaux, des
publications, des rapports, des pages de manuels, des encyclopédies, des bibliographies, … Nous
nous intéresserons dans notre projet qu'à la recherche textuelle et non multimédia (image, audio,
vidéo, …)4.
9.2. Architecture du moteur de recherche Nutch
Le moteur de recherche nutch est articulé autour de trois composantes principale à savoir
le Crawler (explorateur), l'Indexer (indexeur) et le Searcher (serveur de requête).
Dans un premier temps, nous initialisons le crawler avec une liste d'URLs. Le crawler
parcourt cette liste et stocke chaque document dans un entrepôt (un indexe), puis un outil
indexeur « parse » les documents de l'entrepôt et stocke les URLs présentes dans les liens
hypertextes. Le crawler parcourt cette nouvelle liste d'URLs. Nous avons donc un système
cyclique.
L'indexeur quant à lui, va parser les documents, construire le dictionnaire des mots
recensés dans tous les documents et créer l'index qui constitue une interface entre le crawler et le
serveur de requête.
Lorsqu'un utilisateur veut faire une recherche, sous la forme d'une requête d'un ou
plusieurs termes via son navigateur Web, le serveur de requête (ou "Searcher") va interroger
l'index qui va par la suite lui retourner l'ensemble des documents correspondant à la requête.
9.3. Performance du moteur de recherche Nutch
L'un des critères les plus importants pour un moteur de recherche est le temps de réponse.
Lorsqu'un utilisateur lance une requête au serveur de requêtes, il attend une réponse quasi
immédiate. Il faut donc avoir :
◦ Une structure de données adaptée ;
◦ Un algorithme de traitement de la requête optimisé.
4. Cette approche est la méthode classique pour le crawling des sites web, nous verrons par la suite (dans le chapitre réalisation) les modifications apportées à Nutch pour optimiser son crawler en le couplant avec notre honeyclient.
- 30 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
La structure de données évoquée est l'index. Il faut que la recherche dans celle-ci soit très
rapide.
Un deuxième critère important est la pertinence des résultats (documents) retournés par
rapport à une requête donnée. Contrairement à une base données, on ne demande pas d'avoir en
retour l'intégralité des documents correspondant à la requête mais ceux considérés comme
pertinents vis à vis de la requête.
9.4. Terminologies de Nutch
L'outil de crawling de Nutch permet de construire et de maintenir à jour plusieurs
structures de données importantes, comme la base de données du Web crawlé (crawldb), la base
de données des liens (linkdb), un ensemble de segments et l'index.
• La base de données du Web crawlé, ou crawldb, est une structure de données
représentant le graphe du Web des pages crawlées. Elle est utilisée pendant la phase de
crawl et d'indexation mais ne joue aucun rôle lors de la phase de recherche par un
utilisateur.
Elle contient toutes les informations concernant chaque page connu par le crawler,
comme le nombre de liens dans la page « outlinks », la date où le crawler devra de
nouveau récupérer la page et le score de la page. Ce dernier est une mesure pour
déterminer l'importance de la page, il est notamment basé sur le nombre de pages faisant
un lien vers celle-ci (idée de Pagerank de Google).
• La base de données des liens, ou linkdb, contient la liste des liens connus par le crawler.
Un lien est représenté par une page source, un texte et une page cible. Un segment est un
ensemble de pages récupérées (par le crawler) et indexées lors d'un seul lancement du
crawl.
• La fetchlist pour un segment est la liste des URLs que le crawler a récupéré et qui est
générée de la base de données du Web crawlé, vu précédemment. Les segments ont un
temps de vie limité, qui est par défaut à 30 jours. Lorsque les segments deviennent
obsolètes, ils doivent être re-crawler. Pour faciliter la maintenance, les segments sont
nommés par rapport à leur date de création. Par exemple, un segment créait le 16/04/2009
à 18h48 et 52 secondes aura comme nom : "20090416184852".
• Un segment est un répertoire avec plusieurs sous-répertoires :
✔ crawl generate : nom de l'ensemble d'urls récupérées ;
- 31 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
✔ crawl fetch : contient l'état de récupération (si page inexistante ou redirigée par
exemple) pour chaque url ;
✔ content : contient le contenu de chaque url ;
✔ parse text : contient le texte parsé pour chaque url ;
✔ parse data : contient les liens et les métadonnées pour chaque url ;
✔ crawl parse : contient les liens de toutes les pages, il est utilisé pour la mise à jour.
Figure N°5 : Mode de fonctionnement du moteur de recherche Nutch
9.5. Le crawling avec Nutch
Comme nous l'avons vu précédemment, le crawler parcourt le graphe du Web en vue
d'indexer les pages rencontrées. Le graphe du Web est un graphe représentant la structure du
Web. Les nœuds seraient les pages Web est les arcs orientés seraient les liens hypertextes entre
les pages.
Étapes du crawling
L'action de crawler est un processus cyclique : le crawler génère un ensemble de
fetchlists à partir de la crawldb ; récupère le contenu téléchargé des pages de la fetchlist ; met à
jour la crawldb avec les nouveaux liens qu'il a trouvés ; et enfin génère un nouvel ensemble de
fetchlists (pour les liens qui n'ont pas été récupérés depuis une période donnée, y compris les
nouveaux liens trouvés dans le cycle précédent) et le cycle est répété.
- 32 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
Figure N°6 : Processus cyclique du crawling
Les URLs avec le même nom de domaine sont toujours mis dans la même fetchlist et ceci
pour des raisons de politesse vis à vis des sites explorés. L'action de crawler étant multi-thread,
cela évite d'avoir plusieurs threads récupérant en même temps plusieurs pages sur le même site
et ainsi surcharger le serveur du site.
9.6. Systèmes de fichiers HDFS
HDFS (Hadoop Distributed Filesystem) est un système de fichiers distribué qui supporte
des applications distribuées à données intensives. Il était conçu pour supporter la distribution
pour Nutch. C’est une collection de bibliothèques de logiciels libres écrites en Java, utiles pour
créer des systèmes de fichiers distribués étendus. Il est capable d’enregistrer de gros fichiers
stores large files(taille multiple de 64MB) à travers plusieurs machines. Il a recours à la
réplication des données sur plusieurs nœuds. On précise trois nœuds, deux nœuds sur le même
support et le troisième dans un support séparé.
Hadoop est né du besoin de Yahoo! d'une solution de "grid computing" performante et
opensource. Il est maintenant utilisé par AOL, Facebook, Google, IBM, ImageShack, Last.fm...
Depuis janvier 2008, Hadoop est un projet top-level de la fondation Apache, puis il deviens un
sous-projet de Lucene. L'annexe 3 présentera en détail le système de fichier HDFS, ainsi que ces
principales caractéristiques.
10.Prise en main de Nutch
10.1. Installation
Nutch est un moteur de recherche écrit entièrement en JAVA, donc nous avons procédé
premièrement par une installation et configuration de l'environnement JAVA dans un système
d'exploitation GNU/Linux Ubuntu SE 9.04.
- 33 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
Bien que Nutch tourne parfaitement en ligne de commande Shell, il dispose aussi d'une
interface graphique simple pour lancer la recherche à partir d'un navigateur web. Pour installer
cette interface graphique nous avons chois d'installer le générateur de servlet J2EE Apache
Tomcat.
Figure N°7 : Interface graphique par défaut de Nutch
10.2. Configuration
Pour optimiser le rendement du moteur de recherche Nutch, nous avons pensé à le
configurer de telle façon qu'il ne puisse crawler seulement les domaines des sites Hyperliens.
Cette configuration consiste essentiellement à éditer les fichiers :
• conf/nutch-site.xml et nutch-default.xml : pour configurer :
◦ L'agent du crawling : on va choisir l'agent par défaut : profondeur de l'arborescence
égale à 5, nombre de threads égale à 20 et nombre des sites à crawler à partir de
chaque Hyperliens est égale à 50,
◦ La taille de fichiers téléchargés est illimitée,
◦ Le nombre de mot indexés est illimité,
◦ Les plugins à prendre en considération : autrement dit, les types de fichiers à indexer.
- 34 -
Chapitre 2 Étude sur les moteurs de recherche Open Source
◦ Le répertoire de l'indexe (ce répertoire est indispensable seulement pour une
recherche à partir de l'interface graphique).
• conf/crawl-urlfilter.txt : ce fichier permet la limitation du crawling seulement dans les
domaines des sites Hyperliens. Dans ce fichier, nous avons indiqué pour chaque site, son
domaine. Par exemple, pour le site http://www.apache.org/ le domaine du crawling est :
+^http://([a-z0-9]*\.)*apache.org/
Le premier annexe présente tous les détails d'installation et de configuration du moteur de
recherche Nutch ainsi que la possibilité de son intégration avec le moteur de recherche Solr pour
bénéficier de la recherche avancée.
11. Conclusion
Dans ce chapitre nous avons essayé de présenter les moteurs de recherche Open Source,
et suite à notre choix technologique, nous avons détaillé le mode de fonctionnement du moteur
de recherche Nutch et nous avons procédé à une installation et configuration de base pour ce
moteur de recherche.
Le chapitre suivant sera consacré à une étude sur les honeyclients à haute et à faible
interaction.
- 35 -
Accepter tous les sites commençant par : http://Par exemple, les sites commençant par https:// ne seront pas acceptés.
Accepter tous les sites commençant par des caractères alphanumériques, puis un point, et se terminent par apache.orgPar exemple : http://wiki.apache.org/
Accepter toutes arborescences du sitePar exemple : http://www.apache.org/lucene/
Chapitre 3 Étude sur les clients Honeypots
CHAPITRE 3
Étude sur les clients Honeypots
1. Introduction
La sécurité informatique demeure une des grandes préoccupations des responsables des
systèmes d’information. Pour faire face aux nombreuses attaques sur ces systèmes, plusieurs
mécanismes ont été mis en œuvre à savoir les détecteurs d’intrusion, les firewalls, les antivirus,
pour ne citer que ceux ci.
Mais aujourd’hui ces mécanismes sont contournés par les nombreux pirates présents sur
internet. C’est pourquoi de nouvelles voies ont été inspectées afin de mieux assurer la sécurité
des systèmes. Les honeypots ou plus précisément les Honeyclients font partie de cette vague. Il
s’agit d’une ressource de l’architecture de sécurité dont l’objectif est la détermination des
malwares injectés par les pirates dans les sites web afin de déterminer les sites vulnérables et
pouvoir par la suite faire des statistiques sur les cibles des bidouilleurs et prendre les mesures
nécessaires pour renforcer leurs sécurité.
Le présent chapitre a pour but de définir les Honeypots et les honeyclients et de présenter
l'architecture du honeyclient Monkey-Spider qui permet de scanner les sites internet et par la
suite, la recherche des sites malveillants.
2. Honeypots
« All warfare is based on deception »« Toute guerre est fondée sur la tromperie »
Sun Tzu [12]
La tromperie est une technique utilisée pour piéger les criminels non seulement dans les
enquêtes criminelles mais aussi dans la sécurité informatique.
Comme dans le monde réel, l'une des méthodes les plus fiable pour mettre la main sur les
attaquants sans s'exposer à aucun risque, c'est d'essayer de créer un environnement similaire à
- 36 -
Chapitre 3 Étude sur les clients Honeypots
l'environnement réel et de tromper les attaquants avec cet environnement virtuel.
2.1. Définition
Un Honeypot (en français pot de miel) est un dispositif (programme, machine virtuelle,
serveur) de tromperie qui permet la détection des attaques web. Il sert à attirer les pirates en les
faisant croire qu'il peuvent exploiter une vulnérabilité système, ainsi prendre le contrôle d'une
machine cible. Les Honeypots permettent la prise de conscience sur la réalité des menaces
provenant d'Internet, ainsi que la prise de toutes les précautions nécessaires pour protéger notre
réseau et l'amélioration de la protection des ressources.
Un Honeypot permet en premier lieu la surveillance de tout le trafic réseau circulant à
travers la machine contenant le Honeypot, ainsi que la journalisation de tous les évènements dans
ce réseau. En plus de la surveillance, les Honeypots permettent la collecte d'information grâce à
des outils appelés « renifleurs » qui étudient les paquets présents sur le réseau et stockent les
évènements dans des bases de données. Enfin, les Honeypots permettent l'analyse des
informations recueillies; et c'est grâce à ces analyses que nous pourrons découvrir les
défaillances du réseau à protéger et les motivations des pirates.
2.2. Fonctionnement
La stratégique d'un honeypot se compose essentiellement de deux parties :
1- Comme dans le monde réel « une porte ouverte peut séduire un saint », sur ce concept
se base la première partie de la stratégie de ces Honeypots. En effet, cette phase consiste à la
mise en place d'une machine Honeypot (généralement des machines virtuelles). Ces machines, et
en fonction du besoin de la société, doivent contenir des failles (volontairement laissées sans
correction) qui servent comme appâts pour les pirates. Cette première phase du fonctionnement
d'un Honeypot permet d'attirer les pirates et de simuler un environnement virtuel similaire aux
environnements réels.
2- La deuxième partie de la stratégie est la collecte de renseignements. Une fois qu'un
intrus exploite une faille, celle ci sera examinée pour relever les méthodes d'intrusion utilisées
par cet intrus. Ces renseignements peuvent être utilisés pour construire des contre-mesures
spécifiques aux techniques des intrusions.
- 37 -
Chapitre 3 Étude sur les clients Honeypots
3. Honeyclients
3.1. Définition
Les Honeypots ou Pots de miel sont des dispositifs de sécurité (généralement des
serveurs ou de dispositifs qui exposent les services du serveur) qui attendent passivement les
attaques, alors que les Client honeypots sont des dispositifs de sécurité qui permettent la
recherche de serveurs malveillants qui attaquent les clients. Ces honeyclients se comportent
comme étant des clients qui interagissent avec les serveurs pour déterminer si une attaque pourra
avoir lieu en consultant ces serveurs.
Il y a plusieurs termes qui sont utilisés pour décrire les Client Honeypots. Outre le Client
Honeypot qui est la classification générique, Client Honeypots est l'autre terme qui est
généralement utilisé et accepté. Cependant, il y a une subtilité ici, en tant que Honeyclient qui
pourrait faire référence à la première application Client Honeypots open source. Dans tout ce que
nous allons exposé dans notre travail, Client Honeypots fera référence bien évidemment à la
technologie et non pas à une application.
Un client pot de miel comporte trois composantes : La première c'est un « crawler »
(explorateur) qui possède une liste de sites et qui parcoure ces sites pour télécharger les pages
qu'ils contiennent. La deuxième composante est un outil qui permet la détections des malwares
et/ou des attaques web, il est responsable de déterminer si une attaque a eu lieu sur le
Honeyclient. Enfin, un client pot de miel comporte un outil d'analyse des malwares et d'attaques
trouvées.
HoneyPot HoneyclientFigure N°8 : Honeyclient vs Honeypot
En plus de ces éléments, les clients pots de miel sont généralement équipés d'une sorte de
stratégie interdisant les pirates pour ne pas aller au-delà de la machine du Honeyclient. Cela est
- 38 -
Chapitre 3 Étude sur les clients Honeypots
généralement réalisé par l'utilisation de pare-feu et de bacs à sable de la machine virtuelle.
Comme les Honeypots, les Honeyclients sont principalement classés selon leur niveau
d'interaction: élevée ou faible (high-interaction ou low-interaction).
3.2. Honeyclients à haute interaction
Les Honeyclients à haute interaction sont des systèmes comparables à de véritables
systèmes réels avec de vrais clients. Les attaques contre les Honeyclients à haute interaction sont
détectés par l'inspection de l'état du système après interaction avec un serveur cible de ce test. La
détection de changements (présence d'un nouveau fichier ou d'un fichier modifié) sur la machine
Honeyclient peut indiquer tous types d'attaques, même les attaques « zero days ».
Les Honeyclients à haute interaction sont très efficaces pour détecter les attaques
inconnues sur les clients. Toutefois, le compromis de cette précision est un coup aux
performances du système qui doit être suivi afin de faire une évaluation de l'attaque. Aussi un
inconvénient majeur des Honeyclients à haute interaction c'est la lenteur de l'analyse du réseau
ce qui leur empêche d'analyser un grand nombre de sites.
3.3. Honeyclients à interaction faible
Les Honeyclients à faible interaction diffèrent des Honeyclients à haute interaction dans
la mesure où ils n'utilisent pas l'ensemble d'un système réel mais plutôt ils utilisent des clients
légers ou simulées pour l'analyse des sites. Les réponses des serveurs sont directement examinés
afin de déterminer si une attaque a eu lieu. Cela pourrait être fait, par exemple, en examinant la
réponse (présence de chaînes de caractères malicieux ou un tel malware (virus, espion, ver, etc)).
Les Honeyclients à faible interaction sont plus faciles à déployer et à exploiter que les
Honeyclients à haute interaction et sont aussi de meilleures performances. Toutefois, ils sont
susceptibles d'avoir un taux de détection plus bas par rapport à leurs équivalent à haute
interaction (les nouvelles attaques « zero day » sont susceptibles de passer inaperçues). Ils
souffrent également du problème de la fraude par les exploits qui peut être aggravée en raison de
leur simplicité et ce qui rend plus facile pour un exploit de détecter la présence du Honeyclient.
- 39 -
Chapitre 3 Étude sur les clients Honeypots
Faible interaction Haute interaction
Honeypot Simulation des systèmes et des services. De vrais systèmes et services.
Honeyclient Simulation des clients et des systèmes Web. De vrais clients et systèmes Web.
Avantages • Très rapide.• Ne consomme pas beaucoup de ressources.• Multithread et multi-système.• Extensible.
•Détection des exploits « zero day ».•Analyses détaillées des attaques.•Un environnement réel de détection
d'intrusions.
Inconvénients •Ne détecte pas les exploits « zero day » • Très lent dans l'analyse des attaques.• Lourde dans le chargement.• architecture complexe et peu extensible.
Tableau N°3 : Faible interaction vs Haute interaction
4. Comparaison entre les Honeyclients
4.1. Honeyclients à haute interaction
4.1.1. Capture-HPC
Capture-HPC est un Honeyclient à haute interaction développé dans un cadre
universitaire par des chercheurs de l'Université Victoria de Wellington, Nouvelle-Zélande.
Capture-HPC est une technologie de sécurité permettant la détection des malwares sur un réseau,
il est caractérisé principalement par sa rapidité (par rapport aux autres Honeyclients à haute
interaction) et la détection des malwares utilise des Snapshots pour l'analyse des changements
d'état de la machine suite à une attaque par un malware en temps réel. Si l'état du système est
modifié, alors qu'aucune autre activité n'est en cours sur la machine qui contient le honeyclient,
alors le serveur avec lequel Capture-HPC communique est classé comme hostile.
En plus, capture-HPC peut être utilisé comme un serveur central capable de surveiller de
nombreux clients à travers un réseau. Cette surveillance permet d'observer le système de fichiers,
la base de registre et les processus système au niveau noyau.
Enfin, Capture-HPC est un honeyclient qui permet d'utiliser différents clients. La version
initiale prenait en charge seulement Internet Explorer, mais la version actuelle prend en charge
pratiquement tous les navigateurs (Internet Explorer, Firefox, Opera, Safari) ainsi que d'autres
applications client HTTP courantes telles que les applications de bureau et de médias.
- 40 -
Chapitre 3 Étude sur les clients Honeypots
4.1.2. Honeyclient
HoneyClient est le premier client honeypot à haute interaction open-source. Il est conçu
pour les navigateurs web (Internet Explorer / Firefox) par Kathy Wang en 2004 et par la suite il a
été adapté et développé par MITRE.
Un mélange de Perl, C++ et Ruby, HoneyClient est fondé sur l'état et détecte les attaques
sur les clients Windows en contrôlant les fichiers, les processus des événements et les entrées de
registre. Il a intégré capture-HPC pour vérifier, en temps réel, l'état de la machine serveur
contenant le Honeyclient.
HoneyClient contient aussi un robot d'exploration, de sorte qu'il puisse initier sa
recherche à partir d'une liste d'URL et continuer par la suite sans parcourir des sites Web à la
recherche d'un code malveillant.
4.1.3. HoneyMonkeyStrider HoneyMonkey est un projet de recherche de Microsoft pour détecter et analyser
les malwares existants sur internet. Basé sur le projet Honeynet, il est constitué d'un réseau de
machines virtuelles sous Windows XP à différents stades de mises à jour de sécurité qui surfent
de façon aléatoires sur Internet, surtout sur les sites Web d'hébergement de code malveillant dans
le but de contaminer ces machines par des failles qui ne seraient pas encore divulguées chez
Microsoft et qui profiteraient pour le moment à des développeurs peu scrupuleux qui
préféreraient garder les failles pour leur profit personnel.
Contrairement au honeypot traditionnel et sa relative passivité, à savoir un ensemble de
machines vulnérables qui attendent d'être attaquées dans le but d'attirer et piéger les pirates,
l'attitude adoptée par HoneyMonkey est dite proactive : elle permet d'analyser automatiquement
les serveurs Web et de tirer parti de la moindre vulnérabilité connue ou pas, affectant notamment
un système Windows, ainsi elle permet de détecter les malwares 0-day.
Preuve d'efficacité de cet outil, au cours de tests menés par Microsoft, HoneyMonkey
aurait identifié 752 URLs uniques appartenant à 287 sites représentant une menace pour les
utilisateurs d'Internet Explorer dans un environnement Windows XP en été 2005. Toujours dans
le cadre de cette première expérimentation, une vulnérabilité encore non rendue publique (0-day)
aurait été détectée et divulguée.
- 41 -
Chapitre 3 Étude sur les clients Honeypots
Le réseau de machines virtuelles, fonctionnant sous Windows XP à différents niveaux de
patchs, constituants HoneyMonkey est un programme automatisé qui tente d'imiter l'action des
utilisateurs qui surfent sur le net. Une fois une machine quitte un site, elle sera analysée pour
déterminer si un programme malveillant a été chargé, ainsi un changement dans une machine
non connu sera déclaré comme une attaque 0-day. L'exploration se base sur une liste initiale de
sites connus comme hébergeurs de logiciels malveillants et après visite de chaque site la machine
enregistre tous changement de son état système, puis elle redémarre dans un état initial en cas de
détection de malwares.
4.1.4. UW Spycrawler
Le UW Spycrawler développé à l'Université de Washington est un honeyclient à haute
interaction élaboré par Alexendre Moshchuk en 2005. Ce honeyclient est destiné pour les
navigateurs Mozilla Firefox et Internet Explorer.
UW Spycrawler est basé sur les événements et l'analyse de l'état du système et permet de
détecter les attaques sur la machine par le contrôle des fichiers, des processus, des registres et
des fichiers temporels du navigateur Firefox.
L'inconvénient majeur de cette honeyclient c'est le manque de documentation et aussi la
non disponibilité pour le téléchargement.
4.1.5. Web Exploit Finder
Web Exploit Finder est un système automatisé de détection de malware dans un
environnement virtualisé, développé par Thomas Müller, Benjamin Mack et Mehmet Arziman,
en 2006. Géré avec une interface Web, il permet aux utilisateurs de contrôler et surveiller le
système en partant d'une liste d'URL que le système doit contrôler. (un crawler peut être utilisé
pour explorer les sites Web). Ensuite, il visite l'URL dans un bac à sable, via un bac à sable mis
en œuvre en tant que image guest dans une machine virtuelle VMware Server. Cette procédure
peut être répétée n fois, selon le nombre de machines virtuelles de Windows XP utilisés pour
vérifier les URL simultanément. Cela dépend aussi de la performance du système hôte VMware.
Les images virtuelles sont enregistrées et amorcées par l'intermédiaire du Vmware Server.
Une fois le processus de démarrage est terminé, un Snapshot (capture instantanée) sera enregistré
pour chaque machine virtuelle et, après visite des sites, les machines seront comparées avec les
Snapshots enregistrés. En utilisant cette technique, le système peut faire une restauration rapide
- 42 -
Chapitre 3 Étude sur les clients Honeypots
vers un état sein une fois que le système est infecté.
Web Exploit Finder est un honeyclient à haute interaction open source développé dans un
cadre universitaire, et racheté par la suite par Xros.
Capture - HPC HoneyClient HoneyMonkey Spycrawler Web Exploit Finder
Licence Logiciel LibreGPLv2
Logiciel LibreGPLv2
Propriétaire Propriétaire Logiciel LibreGPLv2
destination Tous les naviagteurs
Internet explorerFireFox
Internet explorer Internet explorerFireFox
Tous les naviagteurs
Outil d'analyse des malwares
Son propre outil Son propre outil Strider Tools FDR, GB, GK
Lavasoft AdAware
Son propre outil
Date de première version
2006 2004 2005 2005 2006
Version actuelle 2.5.12 Septembre 2008
1.0.2 Pas commercialisé
Pas commercialisé
2.029 Octobre 2007
Système d'exploitation
Multi OS Windows Windows Windows Virtualisation de Windows XP
Développeur Université de Welington
Mitre Microsoft Research
Université de Washington
Université de Hochschule der
Medien - Stuttgartet XNOS
Leader du projet Christian Seifert Kathy Wang -- Alexander Moshchuk
Thomas Müller Benjamin Mack
Mehmet Arziman
Site web https://www.client-honeynet.org/captu
re.html
http://www.honeyclient.org/trac
http://research.microsoft.com/en-
us/um/redmond/projects/strider/hone
ymonkey/
http://www.lavasoft.com/products/ad_aware_free.php
http://www.xnos.org/security/web-exploit-finder/
Tableau N°4 : Comparaison entre les honeyclients à haute interaction
4.2. Honeyclients à faible interaction
4.2.1. SpyBye
SpyBye est un outil pour aider les administrateurs de sites Web à déterminer si leur pages
Web peuvent infecter leurs visiteurs. C'est un outil qui ne permet pas de protéger les utilisateurs,
par contre c'est juste un moyen préventif sur risques qui peuvent avoir lieu en consultant
quelques sites et de prendre des précautions raisonnables pour éviter l'infection pendant la visite
des sites.
- 43 -
Chapitre 3 Étude sur les clients Honeypots
Comment SpyBye travaille? SpyBye fonctionne comme un proxy HTTP et permet de
surveiller tout le trafic web récupéré par le navigateur d'internet. Il applique des règles très
simples à chaque URL récupérée à la suite du chargement d'une page Web. Ces règles nous
permettent de classer un site Web en trois catégories: sans danger, inconnu ou dangereux. Ainsi
les administrateurs peuvent travailler sur les URLs classées comme dangereuses ou inconnues et
de déterminer si elles doivent être là ou non. Si une URL récupéré n'est pas celle attendue par
l'administrateur alors c'est une bonne indication que cette page a été introduite par un pirate.
Depuis la version 0.2, SpyBye a changé de licence libre pour migrer vers la GLP après
avoir été sous une autre licence libre (la BSD).
4.2.2. HoneyC
HoneyC est un honeyclient à faible interaction qui permet d'identifier des machines
hostiles sur Internet. Plutôt que d'utiliser un système d'exploitation et un client pour effectuer
cette tâche (qui est déjà faite par les clients à forte interaction comme HoneyMonkey ou
Honeyclient), HoneyC utilise des clients émulés1 qui sont capables de demander autant de
réponses que nécessaires à un serveur pour analyser les contenus hostiles.
HoneyC se compose de trois éléments: file d'attente, visiteur, et moteur d'analyse:
• La file d'attente est le composant chargé d'explorer les sites internet et de chercher les
nouvelles URLs pour préparer une liste de sites à visiter par le visiteur.
• Le Visiteur est l'élément responsable d'interagir avec le serveur. Il fait une demande au
serveur et reçoit la réponse pour l'analyser avec le moteur d'analyse.
• Le moteur d'analyse est le composant chargé d'évaluer si les politiques de sécurité ont été
violés après l'interaction du visiteur avec le serveur. Ainsi plusieurs méthodes de
recherches ou algorithmes d'analyse sont appelées pour analyser les réponses des
serveurs. Essentiellement les serveurs malveillants sont détectés par l'examen de la
réponse du serveur par le biais d'un système de détection d'intrusion Snort.
1 Alors que les honeyclient à haute interaction explorent le web avec de vrais navigateurs (Internet Explorer, firefox, etc) et effectuent l'analyse
de l'exploitation avec des outils agissants directement sur les vrais systèmes (comme la surveillance des changements au système de fichiers, la
configuration et la liste des processus), HoneyC fait appel à des émules de clients (par exemple: wget pour émuler Internet Explorer) et le moteur
d'analyse qui pourraient faire usage d'un algorithme d'autres OS que d'inspection par l'État (par exemple correspondant à la signature).
- 44 -
Chapitre 3 Étude sur les clients Honeypots
4.2.3. HoneyD
HoneyD est un Honeyclient open source à faible interaction. Il permet d’intégrer des
machines virtuelles sur un réseau dans le but de détecter toutes activités illégales sur le réseau.
La règle principale étant que toutes connexions sur une machine virtuelle sont considérées
comme une intrusion potentielle.
Complet et simple d'utilisation grâce à ses fichiers de configuration, HoneyD a été
développé sur un grand nombre de plateformes (Unix/Linux, Solaris, Windows, BSD) et permet
de simuler tous types de machines sur un réseau: serveurs, PC, routeurs, etc. Nous pouvons
configurer un serveur pour qu'il fonctionne sous différents systèmes d'exploitation et faire
tourner des services (FTP, HTTP, etc.) qui sont en réalités émulés grâce à des scripts écrits en
Perl, python ou même des scripts Shell. Enfin HoneyD peut simuler des milliers2 [13] d'hôtes
virtuels en même temps. Ce qui permet de dissuader les adversaires en cachant de véritables
systèmes au milieu de systèmes virtuels.
SpyBye HoneyC HoneyD Monkey-Spider
Licence Logiciel Libre GPLv2
Logiciel LibreGPLv2
Logiciel LibreGPLv2
Logiciel Libre GPLv3
destination Tous les navigateurs crawler HTTP, FTP, etc crawler/émail
Outil d'analyse des malwares
ClamAV Snort Libevent, libpcap, libnet, arpd
(packages sous linux)
ClamAV
Date de première version
2007 2006 2003 2006
Version actuelle 0.309 Juin 2007
1.2.013 Septembre 2008
1.5c27 Mai 2007
0.223 Mars 2009
Système d'exploitation
Multi OS Multi OS Unix/linux BSD et windows avec cyguin
Multi OS
Développeur Niels Provos Université de Welington - Nouvelle-Zélande
Niel Provos Université de Mannheim
Leader du projet Niels Provos Christian Seifert Niel Provos Ali Ikinci
Site web http://www.spybye.org/ https://projects.honeynet.org/honeyc
http://www.honeyd.org/ http://monkeyspider.sourceforge.net/
Tableau 5 : Comparaison entre les honeyclients à faible interaction
2 Honeyd est un honeyclient qui crée des hôtes virtuels sur un réseau, il a été testé avec succès avec 65536 hôtes virtuels sur un réseau LAN.
- 45 -
Chapitre 3 Étude sur les clients Honeypots
5. Choix technologique
Assurant à la fois la simplicité, la fiabilité et la rapidité, notre objectif était de mettre en
place une solution nous permettant de scanner les sites internet Tunisiens. Le choix de départ se
limitait sur les Honeyclients open source et suite à notre étude comparative sur les Honeyclients,
Monkey-Spider représente une solution idéale pouvant répondre à notre besoin. En effet,
Monkey-Spider est un Honeyclient open source à faible interaction simple à utiliser et fiable
avec code source (écrit en Python) compréhensible et modifiable. Cette solution nous permet de
déterminer les sites contaminés qui seront enregistrés par la suite dans une base de données ainsi
que toutes informations relatives aux malwares trouvés.
6. Étude sur le Honeyclient Monkey-Spider
6.1. IntroductionLes honeypots sont utilisés pour collecter des informations en vue d’apprendre les
techniques, les méthodes récentes et les motivations des hackers (pirates). C'est dans ce sens que
Monkey-Spider nous permet de collecter des informations sur les malwares présents dans nos
sites tunisiens et ainsi avoir une idée sur les cibles des pirates.
Monkey-Spider est un client honeypot (Honeyclient) à faible interaction open source
disponible sous licence GPLv3 depuis le 23 mars 2009. C'est une solution :
• Performante
• Modulaire et extensible
• Multi-processus (Multithreads)
• Simple et facile à utiliser
6.2. Architecture
Ensemble de scripts écrits en Python et basé sur l'interaction de plusieurs outils open
source, le principe de Monkey-Spider est assez simple, il permet en premier lieu d'analyser des
sites en les aspirant par un crawler et les scannant ensuite par un antivirus. Par la suite, si un
malware est détecté dans un site web, il sera automatiquement ajouté à la base de données.
- 46 -
Chapitre 3 Étude sur les clients Honeypots
Figure N°9 : Architecture simplifié de Monkey-Spider
6.3. Composantes de Monkey-Spider
6.3.1. Scripts de Monkey-Spider
Le code source de Monkey-Spider est constitué de plusieurs scripts dont principalement
trois que nous allons utiliser dans notre projet :
• ms-processfolder.py : C'est le main-script (script principal) qui permet de tester
l'existance de fichiers .ARC dans le dossier passé en paramètre pour ce script. Il fait appel
à ms-extract-arc.py puis à ms-scanner-clamav.py.
• ms-extract-arc.py : Ce script permet d'extraire et de convertir les fichiers .arc.gz
contenant du code MHTML [14] en fichiers web et multimédia (HTML, images, flash,
PDF, etc).
• ms-scanner-clamav.py : C'est avec ce script que nous allons scanner les fichiers
résultants de l'extraction des fichiers ARC. Un enregistrement de tout site hébergeant un
code vulnérable sera effectué automatiquement suite à la détection d'un malware.
6.3.2. Heritrix
6.3.2.1. PrésentationHeritrix est un robot d'exploration (crawler) conçu et utilisé par Internet Archive pour
l'archivage du web. C'est un logiciel libre sous licence « GNU Lesser GPL » programmé en
langage Java. Son interface principale est accessible depuis un navigateur web, mais un outil en
ligne de commandes peut aussi être optionnellement utilisé pour lancer l'indexation.
Heritrix a été développé conjointement par Internet Archive et les Bibliothèques
- 47 -
Chapitre 3 Étude sur les clients Honeypots
Nationales Nordiques en 2003. Sa première sortie officielle a eu lieu en janvier 2004 et il a
depuis été continuellement amélioré par les membres d'Internet Archive et par des tiers
intéressés.
Hautement configurable, Heritrix permet le crawling des sites internet à partir d'une liste
de sites initiale, ces sites seront par la suite compressés et enregistrés dans des fichiers ARCs.
Depuis des années, plusieurs organisations et bibliothèques nationales [15] utilisent
Heritrix, parmi lesquels :
• La Bibliothèque Universitaire Nationale d'Islande.
• La Bibliothèque Nationale de Nouvelle-Zélande.
• Bibliothèque et Archives Canada.
• La Bibliothèque Nationale d' Australie : ~190 millions URLs, ~6.7 TB non compressés et
4.5TB compressés.
• La Bibliothèque nationale de France : 13 machines, ~100 millions URLs, ~3TB
compressés.
• US National Archives (NARA) : 5 machines, ~75 millions URLs, ~6.5 TB compressés.
6.3.2.2. Caractéristiques
• Très grande capacité d'exploration.
• Automatisation des tâches.
• Hautement configurable.
• Extensible.
• Exploration en continu.
• détection automatique du changement des pages web.
• Solution distribuée sur plusieurs machines.
• Écrit entièrement en JAVA
• Multithread.
• Gérable à partir d'une interface graphique
- 48 -
Chapitre 3 Étude sur les clients Honeypots
Figure N°10 : Interface de Héritrix pour la gestion des jobs
6.3.2.3. Fichiers .ARC
Par défaut, Heritrix enregistre les ressources qu'il collecte dans un fichier Arc compressé,
format qu'Internet Archive [16] utilise depuis 1996 pour stocker ses archives. Heritrix peut
également être configuré pour stocker les fichiers dans un format de répertoire similaire au robot
d'indexation Wget, qui nomme le répertoire et le fichier de chaque ressource d'après son URL.
Dans le format Arc, de multiples ressources archivées sont stockées dans un seul fichier,
afin d'éviter d'avoir à gérer un grand nombre de petits fichiers. Un fichier consiste en une
séquence d'enregistrements d'URL, chacun étant accompagné d'une en-tête contenant des
métadonnées à propos de la manière dont la ressource a été demandée, de l'en-tête HTTP, et du
code de la réponse. La taille d'un fichier Arc peut atteindre 600 Mo.
Pour des raisons de limitation de la taille de la mémoire RAM du serveur, nous avons
choisi de limiter la taille des fichiers ARC à 100Mo.
Lors de la création des fichiers ARC, heritrix utilise le format de nomination suivant :
<IAH>-<DATE_TEMPS_DE_LA_TACHE>-<NUMERO_DU_FICHIER>-<NOM_DE_LA_HOTE>.arc.gz
- 49 -
Chapitre 3 Étude sur les clients Honeypots
6.3.3. ClamAV
6.3.3.1. PrésentationL'explosion du nombre de connexions Internet ces dernières années a entraîné une
explosion des attaques virales en tous genres infectant un très grand nombre d'ordinateurs de par
le monde. Le phénomène des virus n'est bien évidemment pas nouveau et les plus anciens se
souviendront de l'époque où les ordinateurs s'infectaient à partir de disquettes, période où le web
ne faisait pas partie du quotidien de nos ordinateurs. Aujourd'hui, sans prendre un minimum de
mesures de précautions, chaque ordinateur connecté à internet se trouve vite infecté de virus et
autres malwares... L'antivirus fait partie des outils indispensables pour se connecter sans danger
sur internet.
ClamAV est principalement utilisé pour détecter les virus attaquant les systèmes
Windows qui sont de loin les plus menacés. Néanmoins, Clam antivirus est un antivirus très
puissant qui s'installe bien sur windows que sur les systèmes GNU Linux, Unix et même MacOS.
Basé sur le projet OpenAntivirus, cet antivirus détecte à l’heure actuelle plus de 575 649 virus
[17] et ses mises à jours sont quotidiennes.
Disponible sous Linux en interface (ClamTK) et en ligne de commande avec la
commande clamscan, il nous permet de bénéficier d'une légèreté incomparable avec le reste des
antivirus. Les mises à jours, quand à elles, s’effectuent très simplement par la commande
freshclam.
6.3.3.2. Fiche Technique et caractéristiques
◦ Licence : GNU GPLv2
◦ Plateformes : Windows (ClamWin et ClamMail), Linux/Unix (ClamTK pour GTK et
KlamAV pour KDE), MacOS (ClamXAV)
◦ Mises à jours quotidiennes,
◦ Site Web : http://www.clamav.net/
◦ Dernière version : 0.95.2
◦ Développeur : Tomasz Kojm puis racheté en 2007 par Sourcefire
◦ Très léger et très performant
- 50 -
Chapitre 3 Étude sur les clients Honeypots
6.3.3.3. PerformanceDisposant dans sa base de signature plus de 575 000 signatures de virus [17], ClamAV
fait partie des antivirus les plus performants. En effet, dans une étude comparative sur 10
antivirus faite le 09 aout 2007 par LinuxWord, montre bien les performances de ClamAV qui se
pointe en deuxième place après Kaspersky et devant Norton AntiVirus.
Figure N° 11 : Étude sur la performance de ClamAV
6.4. PostgreSQL
A l'origine POSTGRES était un projet de recherche en base de données dirigé par le
Professeur Michael Stonebraker de l'Université de Berkeley. Sa fonction principale était de
fournir une plate-forme de test pour l'implémentation de nouvelles idées dans la recherche en
matière de base de données. En 1994, Andrew Yu et Jolly Chen ont ajouté le langage SQL à
POSTGRES et à partir de 1996, un nouveau nom, PostgreSQL, fut choisi pour refléter la relation
entre le POSTGRES originel et les versions plus récentes supportant SQL.
Aujourd'hui, PostgreSQL s'appuie sur le modèle relationnel mais apporte plusieurs
extensions telles que les classes, l'héritage, les types de données utilisateurs (tableaux, structures,
listes...), les fonctions, portable sur plus de 20 environnements depuis la version 6.4, etc. Cela
permet de qualifier PostgreSQL de système de gestion de base de données de «relationnel-objet»
(SGBDRO).
- 51 -
Chapitre 3 Étude sur les clients Honeypots
Caractéristiques
• Déploiement illimité : déploiement sur plusieurs serveurs avec autant de CPU.
• Excellent support : Le support assuré par la communauté PostgreSQL est excellent et
gratuit. De plus, de nombreuses SSLL peuvent offrir un contrat de support formel sur
mesure.
• Économies significatives sur les coûts de personnel : PostgreSQL nécessite beaucoup
moins de maintenance et de paramétrage que les grandes bases de données commerciales,
tout en proposant la plupart de leurs fonctionnalités et surtout la fiabilité et les
performances que l'on attend d'un tel produit. Contrairement à beaucoup de bases de
données commerciales, PostgreSQL ne nécessite pas de suivre plusieurs semaines de
formation, ni d’avoir un administrateur de bases de données à plein temps.
• Fiabilité et stabilité légendaires : Il est très courant que des sociétés rapportent que
PostgreSQL n'a jamais crashé, même pendant des années. Pas une seule fois. Tous les
SGBDR ne peuvent pas en dire autant. En particulier, PostgreSQL ne craint pas les
coupures électriques.
• Conçu pour une grande capacité : De par sa conception, PostgreSQL ne craint pas les
bases de données de grande taille ou ayant un grand nombre d’utilisateurs simultanés.
Plusieurs organisations l’utilisent pour des bases de données de plus d’un Teraoctet. Le
système mondial d’enregistrement des noms de domaine en « .org » est géré avec une
base de données PostgreSQL par Afilias [19].
• Outils graphiques de modélisation et d'administration : Plusieurs outils graphiques
existent pour administrer les bases de données. Citons pgadminIII, pgaccess,
phppgadmin, …
• Très bonne compatibilité SQL : Comme beaucoup d'outils Open Source, PostgreSQL met
un point d'honneur à suivre les normes et en particulier les normes SQL 92 et 99.
7. Prise en main de Monkey-Spider
Développé en Python, Monkey-Spider est un ensemble de scripts facilement installable
(soit par le script install.sh fourni avec monkey-spider, soit en déplaçant les scripts dans
/usr/bin/), mais pour le faire tourner, il est indispensable d'installer plusieurs outils
communiquant avec notre lui.
- 52 -
Chapitre 3 Étude sur les clients Honeypots
Nous commençons tout d'abord par installer notre crawler Heritrix. Pour ce faire,
l'installation de l'environnement JAVA est indispensable puisque cet outil est lui aussi développé
en JAVA
Ensiute, pour faire lancer Héritrix il suffi d'aller dans son dossier et de taper dans un
terminal la commande :
./bin/heritrix -a admin -p 8070 -b 0.0.0.0
• -a admin :
◦ L'option « -a » nous permet d'attribuer un mot de passe pour tous les utilisateurs.
◦ Cette option est indispensable pour le fonctionnement de Heritrix.
• -p 8070 :
◦ L'option « -p » nous permet d'attribuer un nouveau port de connexion à l'interface
graphique de Heritrix (http://localhost:8070/).
◦ Par défaut le port utilisé par Heritrix est le 8080.
◦ Nous avons pensé à modifier le port de Heritrix pour éviter un conflit avec le port de
Apache Tomcat qui utilise par défaut l port 8080.
• -b 0.0.0.0 :
◦ L'option « -b » nous permet de spécifier les hôtes pouvant se connecter à l'interface
graphique de Heritrix.
◦ Par défaut, seule la machine locale « localhost » accède à Heritrix,
◦ L'adresse « 0.0.0.0 » permet la connexion de toutes les hôtes avec notre crawler.
◦ Cette option est indispensable lors d'une mise en place de Heritrix dans un serveur,
sinon, seule la machine serveur peut accéder à cet outil.
Pour facilité son utilisation, nous avons pensé à créer un job modèle. L'administrateur
dois juste le copier dans un nouveau job, attribuer la liste des sites « seeds » et le lancer.
Maintenant que notre crawler est bien configuré, nous passons à la suite des outils
indispensables pour le fonctionnement de Monkey-Spider. En effet, bien que l'environnement
Python est installé par défaut dans Ubuntu SE, MonkeySpider à besoin de trois autres
bibliothèques à savoir pygresql, soappy, pysearch.
Enfin, la détection des malwares nécessite l'antivirus ClamAV pour l'analyse des fichiers
- 53 -
Chapitre 3 Étude sur les clients Honeypots
ARC, ainsi, les malwares seront enregistrés dans une base de données PostgreSQL, donc ces
deux outils sont aussi indispensables pour le bon fonctionnement de Monkey-Spider.
Pour la gestion des malwares et des sites infectés, nous avons pensé à développer une
interface accessible via le navigateur web, cette interface fera l'objet d'une analyse profonde dans
les chapitres suivants.
Le deuxième annexe présentera tous les détails d'installation et de mise en place de
Monkey-Spider.
8. Conclusion
Tout au long de ce chapitre, nous avons défini les honeypots. Nous avons présenté une
étude comparative sur honeyclients à faible et à haute interaction. Suite à notre choix
technologique, nous avons détaillé le fonctionnement de Monkey-Spider et nous avons procédé à
une installation et configuration de base pour cet Honeyclient.
Le chapitre suivant présentera l’analyse et l’étude des besoins, une étape primordiale dans
l’élaboration et la création de toute application.
- 54 -
Chapitre 4 Analyse & spécification des besoins
CHAPITRE 4
Analyse & spécification des besoins
1. Introduction
La première étape dans le développement de toute application consiste à analyser les
besoins de base afin de bien dresser la liste des fonctionnalités qui devront être présentes dans le
système. Cette phase est impérative pour déterminer les possibilités de l’application. Le présent
chapitre s'intéresse à l'analyse des besoins et est composé de deux parties. La première est
consacrée à l’analyse des besoins fonctionnels et non fonctionnels de l’application. La deuxième
représente une identification des acteurs et des cas d’utilisation selon la méthodologie de
modélisation UML.
2. Analyse des besoins
2.1. Besoins fonctionnels
• Mise en place d'un moteur de recherche pour la recherche textuelle dans une base de sites
tunisiens : cette étape consiste à installer et configurer le moteur de recherche Nutch;
• Mise en place d'une solution de détection des malwares dans les sites tunisiens : cette
étape consiste à l'installation et la configuration d'un Honeyclient,
• Intégration des outils utilisés pour une optimisation temporelle et spatiale de notre
solution,
• Développement d'une interface de gestion des malwares trouvés, des sites Hyperlients et
des signatures des pirates,
• Personnalisation du moteur de recherche pour une recherche optimisée sur les malwares
et les sites piratés : cette étape consiste à modifier le code source de Nutch pour l'adapter
à nos besoins fonctionnels,
- 55 -
Chapitre 4 Analyse & spécification des besoins
• Rédaction d'un manuel d'installation et d'utilisation pour tous les outils utilisés dans notre
projet,
• Test et évaluation de la solution : cette phase consiste à mettre en place la solution, la
tester, évaluer les résultats trouvés et apporter les améliorations nécessaires en cas de
besoin.
2.2. Besoins non fonctionnels
• Contrainte temporelle du temps d’exécution : vu le temps non négligeable de l’exécution
de l’outil, une bonne configuration du moteur de recherche pourrait être prise en
considération lors de l'installation.
• Les outils de développement doivent être tous open source et sous l’environnement
Linux.
• Utilisation de la base de données PostgreSQL (base utilisée dans la plus part des projets à
l'ANSI),
• Interface ergonomique.
3. Identification des acteurs et des cas d’utilisation
3.1. Identification des acteurs
Nous avons recensé deux types d’acteurs qui auront à interagir avec notre solution :
• L’utilisateur : cet acteur interagie avec l'interface graphique principale de notre système,
il a pour mission :
◦ la recherche (classique ou personnalisée) dans le moteur de recherche Nutch,
◦ La gestion des malwares trouvés, des sites Hyperliens et des signatures des pirates,
◦ L'administration de crawler Heritrix,
• L'administrateur : cet acteur interagira avec la console Terminal du système, il aura pour
mission :
◦ L'administration du moteur de recherche Nutch,
◦ L'administration du Honeyclient MonkeySpider,
◦ La mise à jour de l'antivirus ClamAV.
- 56 -
Chapitre 4 Analyse & spécification des besoins
3.2. Identification des cas d’utilisation
3.2.1. Diagramme des cas d’utilisations pour l'acteur « utilisateur »
Figure N°12 : Diagramme des cas d’utilisations général pour l'acteur « utilisateur »
Description du cas d'utilisation :
La figure précédente illustre le diagramme d’utilisation générale de l'acteur
« utilisateur », cet acteur interagira avec :
• L'interface principale de notre moteur de recherche Nutch (page accueil) ainsi il pourra
faire une recherche classique sur les sites tunisiens, il pourra aussi interagir avec les
pages de recherche personnalisées de notre moteur de recherche :
◦ Recherche par site : cet écran permet la recherche textuelle (mot tapé à la main) dans
un site bien spécifique faisant partie de la listes des sites Tunisiens. Dans le cas où
l'utilisateur ne choisi aucun site, la recherche s'effectue dans tous les sites.
◦ Recherche dans les sites infectés : cet écran permet la recherche dans un site bien
spécifique faisant partie des sites infectés. De cette façon, l'utilisateur pourra
optimiser sa recherche en se limitant sur les sites infectés. Dans le cas où l'utilisateur
ne choisi aucun site, la recherche s'effectue dans tous les sites.
◦ Recherche par signatures des pirates : cet écran permet la recherche des sites
- 57 -
Chapitre 4 Analyse & spécification des besoins
défaillés en choisissant comme mot à chercher une signature d'un pirate (choix de la
signature s'effectue à partir d'une liste « select »).
◦ Recherche par signatures des pirates dans les sites infectés : cet écran permet la
recherche des pirates dans un site infecté. Autrement dit, il permet la recherche du
pirate qui a attaqué le site infecté.
• L'utilisateur peut aussi accéder à l'interface de gestion des sites infectés, des signatures
des pirates ou la listes de tous les sites.
• Enfin, l'utilisateur pourra accéder à l'interface d'administration de Heritrix afin de
consulter les statistiques du crawling des sites tunisiens.
3.2.2. Diagramme des cas d’utilisation générale pour l'acteur
« administrateur »
Figure N°13 : Diagramme des cas d’utilisation général pour l'acteur « administrateur »
Description du cas d'utilisation :
La figure précédente illustre le diagramme des cas d’utilisation générale de l'acteur
« administrateur ». Cet acteur interagira avec les composantes principales de notre projet à savoir
le moteur de recherche Nutch, le Honeyclient Monkey-Spider, et le crawler Heritrix, il aura pour
mission aussi de mettre à jour l'antivirus ClamAV :
• Nutch : la mise à jour de la base de Nutch par deux méthodes :
◦ À partir des fichiers ARC crawlés par heritrix : nous avons développé un script pour
automatiser la conversion des fichiers ARC en segments compréhensibles par Nutch,
puis en index accessible par la recherche.
- 58 -
Chapitre 4 Analyse & spécification des besoins
◦ À partir d'une liste des Hyperliens : c'est la méthode classique d'administration du
moteur de recherche Nutch. Dans ce cas, le crawling et l'indexation se font d'une
manière transparente vis à vis d'administrateur.
• Détecter les malwares avec Monkey-Spider : cet honeyclient est constitué principalement
par trois scripts python qui permettent de scanner les fichiers ARC crawlés par Heritrix,
puis en cas de découverte d'un malware dans un site infecté il sera ajouté à notre base de
données. L'administrateur doit simplement spécifier le répertoire des fichiers ARC à
scanner.
• Crawler les sites avec Heritrix : Une fois Heritrix est lancé, l'administrateur sera chargé
de :
◦ Gérer les Jobs en cour d'exécution (arrêter, pauser, ou supprimer les jobs).
◦ Supprimer les sites des Jobs.
◦ Ajouter de nouveaux Jobs.
• Mettre à jour ClamAV : un inconvénient majeur de l'antivirus est qu'il ne met pas à jour
sa base de signatures antivirus, c'est pourquoi l'administrateur est appelé à mettre
régulièrement ClamAV à jour.
4. Conclusion
Dans ce chapitre, nous avons présenté les exigences et les besoins du système et des
différents acteurs de ce système. Nous avons tout d’abord dégagé les besoins fonctionnels et non
fonctionnels auxquels devront répondre les différents outils à intégrer dans notre système. Nous
avons ensuite représenté ces besoins en spécifiant plus en détail les fonctionnalités attendues à
travers le diagramme des cas d’utilisation. Nous pouvons ainsi passer à la phase de conception
qui fera l’objet du prochain chapitre.
- 59 -
Chapitre 5 Conception
CHAPITRE 5
Conception
1. Introduction
Après avoir défini la spécification du projet, la phase de conception vient pour mieux
l’éclaircir. En effet, la conception définit une démarche à suivre pour mettre en place un produit
robuste, fiable et évolutif. Nous commencerons dans une première section par la description des
choix conceptuels et nous détaillerons l’architecture générale de l’application. Ensuite, nous
entamerons la conception détaillée du système avec des schémas à l'appui. Ces derniers
expliciteront la manière avec laquelle a été conçu chaque module. .
2. Pourquoi la méthodologie UML
Face à la diversité des formalismes utilisés par les méthodes d’analyse et de conception
objet, UML constitue un réel facteur de progrès par l’effort de normalisation réalisé. En effet,
UML constitue une étape importante dans la convergence des notations utilisées dans le domaine
de l’analyse et de conception objet. Par ailleurs, l’adhésion à UML des grands éditeurs du
marché informatique montre bien l’intérêt qui est porté à cette norme dans le monde objet. Ses
capacités à organiser et à formaliser paraissent indispensables à toute démarche d’ingénierie et
de développement à base de composants. De plus, c’est un outil de notation, une source de
normalisation et un facteur de communication entre les acteurs d’un projet; UML permet de
penser en termes de réutilisation des éléments et de stabilité des modèles.
3. Détermination des diagrammes de séquence et d'activité
3.1. Définition
Un diagramme de séquence ou d'activité est une forme de diagramme comportemental qui
vous permet de spécifier les intéractions qui existent entre un groupe d’objets. Même si d’autres
- 60 -
Chapitre 5 Conception
diagrammes comportementaux peuvent convenir, les diagrammes de séquence ou d'activité sont
les plus utilisés, principalement parce qu’ils permettent de voir comment les objets s’utilisent
mutuellement. Grâce à ces informations, nous pouvons déterminer plus précisément pourquoi
deux objets sont liés. Comme ils sont toujours lus du haut vers le bas, ils illustrent l’ordre dans
lequel les messages sont envoyés entre les objets.
Vu le nombre élevé des diagramme de séquences dans notre système, on va se limiter à
représenter les plus importants :
3.2. Diagramme de séquence détaillé pour « la recherche des signatures
des pirates dans les sites infectés »
Description
La description textuelle du diagramme de séquence détaillé pour la recherche des
signatures des pirates dans les sites infectés illustré par la Figure 14 est la suivante :
✔ Sommaire d’identification
Titre : Recherche des signatures des pirates dans les sites infectés.
But : La recherche des pirates qui ont attaqué un site infecté à travers leurs signatures
textuelles.
Résumé : pour la recherche d'un ou des pirates qui ont attaqué un site infecté, l'utilisateur
doit choisir en premier lieu le site infecté. Ensuite, il doit choisir soit toutes les signatures (dans
ce cas, le résultat de la recherche sera la détermination des pirates qui ont attaqué le site infecté),
soit une signature d'un pirate (dans ce cas, le résultat sera la vérification si le pirate a attaqué le
site ou non).
Acteurs : Utilisateur.
✔ Description des enchaînements
Pré-conditions : écran de recherche des signatures des pirates dans les sites infectés.
Enchaînement nominal :
1. L’utilisateur doit choisir en premier lieu le site infecté,
2. Choisir soit :
2.1. Toutes les signatures,
2.2. Une seule signature,
3. Valider par le bouton « chercher »
- 61 -
Chapitre 5 Conception
Enchaînements alternatifs :
1. Erreur de connexion à la base de données : impossible d'importer la liste des sites.
2. Erreur de connexion à la base de données : impossible d'importer la liste des
signatures.
Besoins d’IHM : Écran de « recherche des signatures des pirates dans les sites infectés ».
Figure N°14 : Diagramme de séquence pour « la recherche des signatures des pirates dans les sites infectés »
- 62 -
Chapitre 5 Conception
3.3. Diagramme de séquence pour « la connexion de Eurêka »
La description textuelle du diagramme de séquence détaillé pour connexion à l'interface
de gestion des sites infecté et de signatures de pirates « Eurêka » illustré par la Figure 15 est la
suivante :
Figure N°15 : Diagramme de séquence pour la connexion avec Eurêka
Description
✔ Sommaire d’identification
Titre : Connexion à Eurêka.
But : Accéder à l'interface de gestion des sites infecté et des signatures des pirates.
Résumé : Cet écran permet la connexion à Eurêka. Cette connexion s'effectue par
identification des utilisateurs ayant comme rôle « admin » dans la base de données.
Acteurs : Utilisateur.
✔ Description des enchaînements
Pré conditions : rien.
Enchaînement nominal :
1. Saisie de l'identifiant et du mot de passe,
2. Validation avec « Login ».
Enchaînements alternatifs :
2. Erreur d'authentification : Login ou mot de passe incorrect.
Besoins d’IHM : Écran de « connexion à Eurêka ».
- 63 -
Chapitre 5 Conception
3.4. Diagramme de séquence pour « l'ajout d'une signature d'un pirate »
La description textuelle du diagramme de séquence détaillé pour l'ajout d'une signature
d'un pirate illustré par la Figure 16 est la suivante :
Figure N° 16 : Diagramme de séquence pour l'ajout d'une signature d'un pirates
- 64 -
Chapitre 5 Conception
Description
✔ Sommaire d’identification
Titre : Ajout d'une signature d'un pirates.
But : Ajouter une signature d'un pirates.
Résumé : Cette écran permet l'ajout d'une signature d'un pirates, l'utilisateur doit en
premier lieu activer les champs de saisie des paramètres via le bouton « New ». Après saisie des
paramètres, il doit valider avec le bouton « Save ». Si l'ajout s'effectue sans erreur, cette
signature sera ajoutée à la liste des signatures, sinon un message d'erreur nous indique le type
d'erreur.
Acteurs : Utilisateur.
✔ Description des enchaînements
Pré conditions : connexion établie à Eurêka.
Enchaînement nominal :
1. Activation des champs de saisie avec « New ».
2. Saisie des paramètres de la signature.
3. validation avec « Save »
Enchaînements alternatifs :
3. Types ou format de paramètres incorrects.
3. Erreur d'intégrité de données : identifiant de la signature existe dans la base de
données.
Besoins d’IHM : Écran de « gestion des signatures ».
Les diagrammes de recherche, d'ajout, de modification et de suppression des malwares ou
des sites (infectés ou non infectés) sont similaires au diagramme d'ajout d'une signature d'un
pirate.
- 65 -
Chapitre 5 Conception
3.5. Diagramme d'activité pour « la recherche des malwares avec
Monkey-Spider »
Figure N° 17 : Diagramme d'activité pour la recherche des malwares avec Monkey-Spider
- 66 -
Chapitre 5 Conception
Description
La description textuelle du diagramme d'activité pour la recherche des malwares dans les
sites tunisiens avec Monkey-Spider illustré par la Figure 4 est la suivante :
✔ Sommaire d’identification
Titre : Recherche des malwares avec Monkey-Spider.
But : Chercher les malwares existant dans les fichiers ARC.
Résumé : Ce diagramme illustre la phase de recherche des malwares avec Monkey-
Spider, il permet d'extraire les fichiers ARC et de scanner leur contenu avec l'antivirus ClamAV.
Lors d'une découverte d'un malware, il sera ajouté à la liste des malwares ainsi que le site qui
l'héberge qui sera lui aussi ajouté à la liste des sites infectés.
Acteurs : Administrateur.
✔ Description des enchaînements
Pré conditions : Sites Web crawlés avec Heritrix sous format ARC.
Enchaînement nominal :
1. Via console : /usr/bin/ms-processfolder.py <répertoire_des_fichiers_ARC>.
1.1. Vérification d'existence de fichiers ARC
1.2. Extraction du contenu des fichiers ARC avec ms-extract-arc.py
1.3. Scan du contenu des fichiers ARC avec ClamAV
1.4. Si découverte d'un virus : enregistrement dans la base de données
1.5. Si plus de fichier ARC alors fin, sinon revenir à l'étape 1.2.
Enchaînements alternatifs :
1.1. Erreur : pas de fichier(s) ARC.
1.3. ClamAV n'est pas à jour, impossible de trouver les virus les plus récents.
1.4. Erreur : connexion impossible avec PostgreSQL.
Besoins d’IHM : pas d'interface IHM (via Terminal Shell).
4. Conclusion
Tout au long de ce chapitre, nous avons prévu une conception de notre application à
travers ses différents modules afin d’avoir une implémentation souple et facile à l’étape suivante.
Le chapitre suivant met en évidence les différents résultats de développement de cette
application.
- 67 -
Chapitre 6 Réalisation et mise en place de la solution
CHAPITRE 6
Réalisation et mise en place de la
solution
1. Introduction
Après avoir décrit la spécification et la conception de notre projet, ce chapitre vient
présenter l’environnement système pour la mise en place de la solution, les modification
apportés aux codes source afin d'améliorer le comportement des outils utilisés et enfin le
développement de l'interface de gestion des malwares et des sites infectés.
2. Installation et configuration du serveur
2.1. Pourquoi Ubuntu serveur 9.04 ?
Assurant à la fois la stabilité, la fiabilité et la facilité d'administration, Ubuntu fût l'un des
distributions GNU/Linux les plus utilisées dans le domaine de gestion des serveurs. Le choix de
la distribution est sans doute un débat sans fin mais voici quelques arguments qui mettent
Ubuntu SE en valeur pour une utilisation de type serveur :
– Facilité : Ubuntu dispose d’un système de gestion de paquets qui lui permet
d'installer les applications par simple lignes de commande. Il permet notamment la
mise à jour de l’intégralité de la distribution en quelques commandes.
En plus, lors de son installation, Ubuntu SE nous facilite énormément l'installation de
quelques serveurs tel que le serveur DNS, LAMP, OpenSSH, Samba, Tomcat, Mail,
etc.
- 68 -
Chapitre 6 Réalisation et mise en place de la solution
Figure N° 18 : Serveurs installés par défaut avec Ubuntu SE
– Stabilité : Ubuntu GNU/Linux est construit autour du noyau Linux de la même
manière que Debian, RedHat et les autres distributions. C’est sans aucun doute un
premier gage de stabilité mais ce n’est pas ce qui différencie Ubuntu. Ce qui fait
réellement la différence c’est la politique de release (sortie de version) adoptée. Bien
que cette politique soit souvent critiquée, (deux versions par an en avril et en
octobre), elle permet d’avoir une release stable appelé version LTS disponible tout les
deux ans (en avril des années paire, la version actuelle LTS est la 8.04, la prochaine
version sera la 10.04) qui est véritablement stable grâce à une longue période de tests
et de correction de bugs pour chacun des paquets intégrés. Cette politique ne permet
pas l’intégration rapide des applications récentes mais ce n’est sûrement pas d’une
grande nécessité pour une machine orientée serveur. Notons que les paquets, même
s’ils ne sont pas toujours très récents, bénéficient de mises à jour de sécurité très
régulières.
– Sécurité : après des années de développements, GNU/Linux devient assez sûr et
Ubuntu en bénéficie. De plus, Ubuntu est très réactif pour garantir que les correctifs
de sécurité soient intégrés rapidement dans la distribution (habituellement ils le sont
en quelques jours). L’histoire a montré que la sécurité par l’obscurité ne fonctionne
pas. La disponibilité du code source permet que la sécurité de Ubuntu soit évaluée de
- 69 -
Chapitre 6 Réalisation et mise en place de la solution
façon transparente ce qui évite que de mauvais modèles de sécurité soient
implémentés.
– Pérennité : créée en 2004, Canonical Ltd est une société fondée (et financée) par
l'entrepreneur sud-africain Mark Shuttleworth et dont l'objet est la promotion de
projets open source et la sponsorisation du système d'exploitation Ubuntu. Depuis sa
création, Canonical Ltd a promis que Ubuntu sera libre et gratuit à vie et que les
versions Ubuntu LTS SE seront maintenues pour cinq ans.
– Communauté : avoir un support technique de qualité, efficace, rapide et proche est
devenu un critère primordial pour le choix de notre distribution. La communauté
Ubuntu est la communauté la plus active des distributions GNU/Linux. En effet,
depuis presque un an, la communauté Ubuntu-tn (la LoCo team tunisienne) est
devenue officiellement approuvée par la Communité Council Team et elle offre un
support de qualité gratuit pour les utilisateurs de Ubuntu en Tunisie.
Activation du compte Root
Une notion de base pour la sécurité des serveurs, est d'abord l'activation du compte root
(déactivé par défaut). Pour cela, nous devons nous connecter au compte root à partir du compte
utilisateur (créé lors de l'installation) avec la commande sudo su (le mot de passe utilisateur est
demandé) et pour activer le compte root, il suffit de lui attribuer un mot de passe avec la
commande passwd puis nous redémarrons notre machine, et nous nous connectons avec le
compte root.
2.2. OpenSSH
OpenSSH est une version libre de la suite de protocole de SSH, des outils de connectivité
de réseau sur lesquels un nombre croissant de personnes sur l'Internet viennent s'appuyer.
Beaucoup d'utilisateurs de Telnet, FTP, ou d'autres programmes identiques, ne se rendent pas
compte que leur mot de passe est transmis à travers les réseaux en clair. OpenSSH chiffre tout le
trafic (y compris le mot de passe). OpenSSH est fournie dans les dépôt de Ubuntu, donc pour
l'installer il suffit de taper dans un terminal la commande apt-get install openssh-server.
2.3. Apache Tomcat
Apache Tomcat est un serveur d'applications Java open source. Cela signifie deux
choses : d'abord, il est intégralement écrit en Java; ensuite, les applications web qu'il est capable
- 70 -
Chapitre 6 Réalisation et mise en place de la solution
d'exécuter doivent être développées en Java (moteur de recherche Nutch, le crawler Heritrix, et
le gestionnaire des sites et des malwares). Donc Il doit savoir exécuter des applications web pour
répondre aux requêtes entrantes. Il doit également être capable de convertir une requête en objet
Java, pour qu'elle soit exploitable par l'application. Et, en retour, savoir convertir l'objet Java
contenant la réponse générée, en réponse compréhensible par le serveur web. Le cœur d'un
serveur d'applications Java est le conteneur de servlets, puisque les servlets sont les éléments
essentiels d'une application web écrite en Java (elles reçoivent les requêtes et renvoient les
réponses). Le conteneur de servlets gère des servlets (sait où se trouvent physiquement les
classes Java, pour quelles URL les appeler...), et les exécute lorsqu'elles sont demandées.
Bien que Apache Tomcat est disponible dans les dépôts de Ubuntu (version 6.0.18),
autrement dit installable par lignes de commande, nous avons préféré d'installer la dernière
version de Tomcat disponible dans le site officiel de Tomcat1 (version 6.0.20) qui a été stable
pendant tout le projet
L'annexe 1 présente en détail toutes les étapes d'installation d'Apache Tomcat.
2.4. PostgreeSQL
PostgreSQL est un système de gestion de bases de données relationnel et objet
(SGBDOR) très performant sous licence BSD. Ces fonctionnalités sont comparables à celles de
ses concurrents propriétaires comme Oracle. Tout comme Tomcat, ou OpenSSH, PostgreSQL est
disponible dans les dépôts de Ubuntu et peut être aussi installé directement lors de l'installation
du serveur Ubuntu.
Pour accéder à notre base de données, nous avons installé et configuré le client graphique
phppgadmin pour qu'il permette l'accès à notre base de données avec d'autre hôtes. Pour cela,
nous avons édité le fichier /etc/phppgadmin/apache.conf et avons autorisé l'accès à tous les
utilisateurs : allow from 0.0.0.0/0.0.0.0 ::1/128 .
3. Installation et configuration de Monkey-Spider et de Nutch
Après avoir installé notre serveur et l'avoir configuré pour qu'il puisse être accédé depuis
d'autre machines, nous avons installé nos deux composantes principales par un simple « copier
coller » de ces deux outils dans /usr/local/. Cette étape était bien détaillée dans les deux annexes
1 et 2.
1 Site officiel de Tomcat : http://tomcat.apache.org/
- 71 -
Chapitre 6 Réalisation et mise en place de la solution
Après avoir étudié le fonctionnement des deux composantes principales de notre projet à
savoir le moteur de recherche Nutch et le Honeyclient Monkey-Spider, nous nous sommes
trouvés face à des inconvénients dont principalement :
• Le crawling effectué par chaque outil (et identiquement par Nutch ou Monkey-Spider)
dure plusieurs heures pour quelques milliers de sites. Donc faire un seul crawling serait
plus intéressant en terme de temps et d'espace disque dur. Le deuxième outil fera son
crawling à partir des fichiers crawlés par le premier outil.
• Les fichiers .ARC sont des fichiers compressés d'une centaine de méga octets. Cette
limitation de taille nous permet d'avoir plusieurs dizaines de ces fichiers. Le problème
était que notre Honeyclient effectue l'analyse de ces fichiers .arc un par un. C'est ainsi
que le fait d'effectuer cette tâche manuellement nous paraissait pénible et ennuyeuse.
• Pas d'interface de gestion des malwares trouvés.
• Lors de découverte d'un malware, il était très intéressant pour nous de savoir l'adresse du
serveur qui héberge le site infecté. C'est ainsi que nous pourrions connaître tous les sites
hébergés dans le même serveur et qui peuvent être aussi infectés.
3.1. Intégration de Nutch dans MonkeySpider
Les deux crawlings identiques effectués par Nutch et Monkey-Spider étaient un handicap
majeur pour l'avancement du projet vu la bande passante limitée et le temps que prenait cette
étape de crawling. Nous avons décidé donc de coupler ces deux outils et faire de sorte qu'un seul
accède à internet pour aspirer les sites et que l'autre utilise les sites crawlés par le premier outil.
Après une étude de faisabilité du couplage de Nutch et Monkey-Spider, nous avons
constaté que notre moteur de recherche peut interpréter les fichiers .arc. Par conséquence, il
devient inutile de faire le crawling de Nutch à partir d'internet.
Il est à noter qu'une petite modification a été effectuée sur le code source de Nutch pour
faciliter l'utilisation de la nouvelle fonctionnalité de Nutch (conversion des fichiers ARC en
segments compréhensibles par nutch). Enfin, nous avons développé un script permettant
d'automatiser les différentes commandes saisies pour convertir les fichiers arc et leurs indexation
par l'outil d'indexation de Nutch.
- 72 -
Chapitre 6 Réalisation et mise en place de la solution
Figure N°19 : Avant couplage de Nutch avec Monkey-Spider
Figure N°20 : Après couplage de Nutch avec Monkey-Spider
Toutefois, la possibilité de lancer Nutch indépendamment de Heritrix reste toujours
possible et ce, en utilisant l'ancienne méthode du fonctionnement de Nutch (utiliser son propre
crawler pour aspirer les sites d'internet).
L'annexe 3 présente les deux méthodes permettant la mise à jour Nutch soit à partir des
fichiers .ARC soit en utilisant son propre Crawler.
- 73 -
Chapitre 6 Réalisation et mise en place de la solution
3.2. Amélioration du comportement de Monkey-Spider
Par défaut, la taille des fichier ARC est de 100Mo. Ceci nous amène à gérer, lors du
crawling de quelques milliers de sites web, des dizaines de fichiers ARC. L'inconvénient majeur
de Monkey-Spider c'est qu'il ne permette pas de scanner plusieurs fichiers .ARC passés en
paramètre pour la commande.
Cet inconvénient nous a obligé à modifier le code source de Monkey-Spider pour qu'il
puisse prendre en paramètre tous les fichiers .ARC d'un Job de Heritrix. Notons qu'un job de
Heritrix contient des dizaines de fichiers .ARC, voire des centaines de fichiers .ARC selon le
nombre des sites à crawler par Heritrix et la nature de ces sites.
L'annexe 4 présente le code source modifié de Monkey-Spider ainsi que le script
permettant la recherche des malwares à partir de tous les Jobs de Héritrix.
3.3. Personnalisation de la recherche avec Nutch
Par défaut, Nutch nous offre une seule interface de recherche nous permettant d'effectuer
une recherche classique d'un mot saisi par l'utilisateur et dans toute la base des sites. Afin de
faciliter la recherche des sites infectés et la recherche des pirates, nous avons modifié le code
source de Nutch en ajoutant quelques écrans de recherche personnalisés.
Figure N° 21 : Écran de recherche classique avec Nutch
- 74 -
Chapitre 6 Réalisation et mise en place de la solution
Bien que les pages créées sont des pages JSP, la page d'accueil reste toujours une page
HTML pour une performance optimisée au niveau de temps de chargement de Nutch. Ces pages
créées sont accessible à partir de la page d'accueil :
• Recherche par site : cet écran permet la recherche textuelle (mot tapé à la main) dans un
site bien spécifique faisant partie de la listes des sites Tunisiens. Dans le cas où
l'utilisateur ne choisi aucun site, la recherche s'effectue dans tous les sites.
• Recherche dans les sites infectés : cet écran permet la recherche dans un site bien
spécifique faisant partie des sites infectés, comme ça, l'utilisateur pourra optimiser sa
recherche en se limitant sur les sites infectés. Dans le cas où l'utilisateur ne choisi aucun
site, la recherche s'effectue dans tous les sites.
• Recherche par signatures des pirates : cet écran permet la recherche des sites défaillés en
choisissant comme mot à chercher une signature d'un pirate (choix de la signature
s'effectue à partir d'une liste « select »).
• Recherche par signatures des pirates dans les sites infectés : cet écran permet la
recherche des pirates dans un site infecté, autrement dit, il permet la recherche du pirate
qui a attaqué le site infecté.
Figure N°22 : Écran de recherche des pirates dans les sites Tunisiens
- 75 -
Chapitre 6 Réalisation et mise en place de la solution
L'utilisateur peut aussi accéder à deux autres interfaces :
◦ L'interface de gestion des sites infectés, des signatures des pirates ou la listes de tous
les sites.
◦ L'interface d'administration de Heritrix pour la consultation des statistiques du
crawling des sites tunisiens.
Figure N° 23 : Écran des statistiques du crawling des sites avec Heritrix
4. Scripts et interface de gestion des malwares et des sites « Eurêka »
Un autre inconvénient de Monkey-Spider est l'absence d'une interface graphique qui
permet la gestion des malwares trouvés et des sites à crawler par Heritrix. Donc nous étions
amenés à développer une interface graphique pour la gestion des sites et des malwares trouvés.
4.1. Scripts de gestion des sites
L'utilité de ces scripts est qu'ils permettent en premier lieu de récupérer l'adresse IP des
serveurs hébergeant ces sites, en plus ils permettent d'enregistrer ces sites dans une base de
données PostgreSQL. Plusieurs tests sur ces scripts nous ont permis de prendre en considération
quelques cas particuliers (telles que l'inaccessibilité d'un site ou la réplication du site sur
plusieurs serveurs).
- 76 -
Chapitre 6 Réalisation et mise en place de la solution
La fonction principale de ses scripts se base essentiellement sur la commande nslookup.
Nslookup (Name System Look Up) est un outil permettant d'interroger un serveur de noms DNS
(Domain Name System) afin d'obtenir les informations concernant un domaine ou un hôte.
L'annexe 5 présente les scripts d'insertion des sites dans la base de données ainsi que les
adresses IP des serveurs qui les hébergent. Quand à l'annexe 6 il présente l'architecture complète
de notre projet.
4.2. Interface de gestion des sites et des malwares « Eurêka »
De même, l'absence d'une interface graphique pour la gestion des malwares trouvés
présentait un handicap pour la visualisation de la recherche effectuée sur les malwares. Nous
avons donc pensé au développement d'une interface graphique permettant de remédier à cet
inconvénient (recherche, ajout, suppression et modification des malwares).
Prenons compte de la disposition d'un serveur d'application Apache Tomcat, nous avons
décidé de développer notre interface en J2EE. WaveMaker se présente comme une API idéal
pour le développement de cette interface.
Basé essentiellement sur les frameWorks Spring, Hebernate et DOJO, cette API nous
permet de créer notre interface par simple Drog and drop (glisser/déposer) des composantes de
notre interface.
Nous avons pensé aussi à nommer notre application. C'est ainsi que nous avons choisi le
nom de « Eurêka » référence au célèbre mot prononcé par Archimède2 qui veut dire J'ai trouvé
une solution !.
Figure N°24 : Écran de connexion à « Eurêka »
2. Cette célèbre expression fut prononcée par Archimède lorsqu'il se rendit compte, en prenant son bain, de l'effet
de son poids sur le niveau de l'eau. Il venait de découvrir la fameuse "poussée" qui portera plus tard son nom. Si
content de lui, il sortit en criant "eurêka" ("j'ai trouvé"). Depuis, cette expression est restée et il n'est pas rare de
l'entendre prononcée lorsqu'une personne trouve la solution à un problème. Eurêka pour nous c'est que nous avons
trouvé des malwares dans nos sites!
- 77 -
Chapitre 6 Réalisation et mise en place de la solution
5. Tests et résultats
Les premiers tests de la solution était pour nous très encourageants. En effet, ces tests
nous on permit de prendre une idée sur la vulnérabilité des sites Tunisiens et plus précisément
prendre une idée sur des sites défectueux qui ne sont pas encore déclarés.
Nous avons lancé le premier test sur une base d'une dizaines de sites choisi au hasard
parmi une liste de milliers de sites, le résultat de ce test était vraiment pour nous un coup de
pouce pour aller plus loin et mettre notre solution réellement dans un serveur pour la faire
tourner sur des milliers de sites.
Pour facilité l'administration de notre projet, nous avons pensé à planifier la tâche tous les
dimanches à minuit. Pour ce faire nous avons utilisé un outil de planification de tâches « FCron »
qui est un daemon utilisé pour programmer des tâches devant être exécutées périodiquement et à
un moment précis. Ce Cron aura pour mission l'exécution de deux scripts qui permettent la
recherche des malwares avec Monkey-Spider et la mise à jour de notre moteur de recherche
Nutch.
5.1. Résultat et statistiques
• Un premier test sur une base d'un dizaine de sites nous à permit de découvrir trois
malwares hébergés dans deux sites.
• Il est prévu de lancer ce projet sur une base de six milles sites tunisiens répartie sur trois
catégories et sur six jobs Heritrix, chaque job sera de mille sites (la taille maximale pour
un job est de 1 056 sites).
• Le deuxième test sur 2 000 sites a duré environ 8 heures pour le téléchargement de tous
les sites (vitesse moyenne de téléchargement est de 380Ko/s). Nous avons configurer les
jobs de Heritrix pour crawler les sites infiniment, autrement dit, après une première phase
de crawling, il recommence à télécharger seulement les modifications apportées aux sites.
Donc les 8 heures représentent seulement la première phase du crawling, la deuxième
phase de mise à jour des sites modifiés est négligeable (en terme de taille de fichiers
téléchargés) devant la première phase.
• La taille des fichiers téléchargés pour 2 000 sites est de 10Go.
• La mise à jour de Nutch à partir des fichiers .ARC crawlés par Heritrix dure une heure
(pour 6 000 sites), donc un gain de 23 heures.
- 78 -
Chapitre 6 Réalisation et mise en place de la solution
Figure N° 25 : Interface de « Eurêka » pour la gestion des malwares trouvés
Figure N°26 : Interface de « Eurêka » pour la gestion des sites
- 79 -
Chapitre 6 Réalisation et mise en place de la solution
5.2. Exemple de Fichier Log pour la recherche de malwares
Ce fichier Log représente le résultat de recherche des malwares dans un job
contenant deux fichiers .ARC. Le résultat est intéressant dans la mesure où il convergeait
avec notre objectif de recherche : le premier fichier est contaminé avec trois virus
hébergés dans deux sites.Processing ARC files in Folder: /home/mbb/heritrix-1.14.3/jobs/infected_sites-20090422213830850/arcs ms-extract-arc: Extracting IAH-20090422214632-00000-mbb-laptop.arc.gz Done extracting IAH-20090422214632-00000-mbb-laptop.arc.gz Fin de l extraction ms-scanner-clamav: LibClamAV Warning: *********************************************************** LibClamAV Warning: *** This version of the ClamAV engine is outdated. *** LibClamAV Warning: *** DON'T PANIC! Read http://www.clamav.net/support/faq *** LibClamAV Warning: *********************************************************** Scanning folder /home/mbb/heritrix-1.14.3/jobs/infected_sites-20090422213830850/arcs/IAH-20090422214632-00000-mbb-laptop for viruses with ClamAV
################################################################################################## ALLERTE MALWARE # # Sites Infectes, Veuillez consultez votre base de donnees pour voir la liste des virus trouves # #################################################################################################
Connection avec la base de donnees etablie avec succe: MALWARES ===> 12,'GUROVUR25DA5MQQQQF2AOYQKYE5YROIP.html','http://www.atc.org.tn/index.html','GUROVUR25DA5MQQQQF2AOYQKYE5YROIP',0,'2009-04-22 21:53:25','HTML.Iframe-32'
################################################################################################## ALLERTE MALWARE # # Sites Infectes, Veuillez consultez votre base de donnees pour voir la liste des virus trouves # #################################################################################################
Connection avec la base de donnees etablie avec succe: MALWARES ===> 13,'GU4CI65PWIWXEJZE4RQ2I6BURMWN6HG4.html','http://www.atc.org.tn/','GU4CI65PWIWXEJZE4RQ2I6BURMWN6HG4',0,'2009-04-22 21:46:36','HTML.Iframe-32'
################################################################################################## ALLERTE MALWARE # # Sites Infectes, Veuillez consultez votre base de donnees pour voir la liste des virus trouves # #################################################################################################
Connection avec la base de donnees etablie avec succe: MALWARES ===> 14,'62KAAJDQZ7377TPEYUKFNXK2ZVG4MUSU.html','http://nipkelo.net/?click=1380f44','62KAAJDQZ7377TPEYUKFNXK2ZVG4MUSU',0,'2009-04-2222:17:00','JS.Agent-43' Fin du scan
ms-extract-arc: Extracting IAH-20090422214632-00001-mbb-laptop.arc.gz Done extracting IAH-20090422214632-00001-mbb-laptop.arc.gz Fin de l extraction ms-scanner-clamav: LibClamAV Warning: *********************************************************** LibClamAV Warning: *** This version of the ClamAV engine is outdated. *** LibClamAV Warning: *** DON'T PANIC! Read http://www.clamav.net/support/faq *** LibClamAV Warning: *********************************************************** Scanning folder /home/mbb/heritrix-1.14.3/jobs/infected_sites-20090422213830850/arcs/IAH-20090422214632-00001-mbb-laptop for viruses with ClamAV Fin du scan ........... Done!
- 80 -
Chapitre 6 Réalisation et mise en place de la solution
6. Conclusion
Dans ce chapitre, nous avons décrit tout ce qui concerne la partie réalisation. Nous
avons commencé par une installation du serveur, puis installation et configuration de Nutch et
Monkey-Spider. Ensuite nous avons présenté l'interface de gestion des sites et des malwares
trouvées Eurêka. Enfin, nous avons exposé quelques résultats des tests effectué sur une base de
quelque sites tunisiens.
- 81 -
Conclusion & perspectives
Conclusion & perspectives
Notre projet avait pour objectif la mise en place d'une solution de détection des malwares
dans les sites tunisiens et la détection des pirates informatiques à travers leurs signatures
textuelles.
Ce projet comporte deux volets. Dans le premier, nous avons procédé à une étude
théorique sur les moteurs de recherche open source et sur les Honeyclients. Cette étude nous a
permis d'adopter Nutch pour la recherche des pirates dans les sites défaillés et Monkey-Spider
pour la recherche des malwares hébergés dans les sites web. Une installation et une configuration
de ces deux outils nous ont permis de déterminer leurs inconvénients. Dans un deuxième volet,
nous avons procédé à une personnalisation et une intégration de Nutch dans Monkey-Spider et
nous avons développé une interface J2EE pour la gestion des sites et des malwares trouvés.
Nous tenons à préciser que ce projet nous a permis de prendre conscience des menaces et
des risques d'internet et d'étudier le Hacking dans le monde et plus précisément en Tunisie. De
plus, ce projet nous a offert l’occasion d’approfondir nos connaissances sur les notions de
sécurité informatique et les technologies récentes comme les Honeyclients et le développement
J2EE.
Du point de vue général, ce projet nous a aussi permis d’acquérir un savoir non
négligeable et d'améliorer notre aptitude à communiquer, collaborer et s’adapter avec
l’environnement professionnel.
En terme de perspectives, des améliorations sont possibles pour augmenter la
performance de cette solution selon l’apparition de nouvelles technologies. Sinon, le
développement d'une interface graphique permettant l'administration du moteur de recherche et
de Monkey-Spider serai d'un grand avantage.
- 82 -
Bibliographie et Netographie
[1] JORT : Loi N°2004-5 du 3février 2004 relative à la sécurité informatique.
[2] La durée de vie d'un ordinateur non protégé est de ... 4 minutes :
http://bugbrother.blog.lemonde.fr/2009/02/20/la-duree-de-vie-dun-ordinateur-non-protege-
est-de-4-minutes/
http://isc.sans.org/ survivaltime.html
[3] http://catb.org/esr/faqs/hacker-howto.html
[4] http://projet.piratage.free.fr/acteurs.html
[5] http://www.zataz.com/news/17277/Internet--police--piratage.html
[6] Code Pénal : « Art 199 bis » ajouté par la Loi n° 99-89 du 2 août 1999
[7] AFP, "Google leader écrasant de la recherche sur internet mondial", 10 octobre 2007
http://afp.google.com/article/ALeqM5hmg2WxR4pLsvDGhzplle3bZWfcxg
[8] Webrankfino.com - Parts de marché des moteurs de recherche en Juin 2008 :
http://www.xitimonitor.com/fr-fr/barometre-des-moteurs/barometre-des-moteurs-juin-
2008/index-1-1-6-134.html
[9] http://wiki.apache.org/nutch/Evaluations : Comparision of Nutch and Google search engine
implementations on the Oregon State University website - Lyle Benedict -
[10] http://osuosl.org/
[11] http://www.google.fr/enterprise/mini/index.html
[12] Sun Tzu – The Art of War par Sunzi, 6th cent. B.C.
http://www.gutenberg.org/etext/132 et http://en.wikipedia.org/wiki/The_Art_of_War
[13] http://www.honeyd.org/general.php
[14] http://fr.wikipedia.org/wiki/MIME_Encapsulation_of_Aggregate_Documents,_such_as_H
TML
[15] Source : http://iwaw.europarchive.org/05/stack1.pdf
[16] Source : http://www.archive.org/index.php
[17] Le 18/06/2009 à partir du site officiel de ClamAV : http://www.clamav.net/lang-pref/fr/
[18] Source : http://virus.untangle.com/ et http://blog.untangle.com/?p=96
[19] Source : http://archives.postgresql.org/pgsql-fr-generale/2004-11/msg00073.php
GLOSSAIRE
[G1] Le Mail Bombing consiste à envoyer un nombre faramineux d'emails (plusieurs
milliers par exemple) à un ou des destinataires. L'objectif étant de saturer soit le serveur
de mails, soit la bande passante du serveur et du ou des destinataires, ou bien rendre
impossible aux destinataires de continuer à utiliser l'adresse électronique.
[G2] Le DNS Poisoning est une technique permettant de leurrer les serveurs DNS afin de
leur faire croire qu'ils reçoivent une requête valide tandis qu'elle est frauduleuse. Une fois
que le serveur DNS a été empoisonné, l'information est mise dans une cache, rendant
ainsi vulnérable tous les utilisateurs de ce serveur. Ce type d'attaque permet, par exemple,
d'envoyer un utilisateur vers un faux site.
[G3] Un keylogger (littéralement enregistreur de touches) est un dispositif chargé
d'enregistrer les frappes de touches du clavier et de les enregistrer, à l'insu de l'utilisateur.
Il s'agit donc d'un dispositif d'espionnage.
[G4] Un Script kiddie est un terme péjoratif désignant les pirates informatiques néophytes
qui, dépourvus des principales compétences en matière de gestion de la sécurité
informatique, passent l'essentiel de leur temps à essayer d'infiltrer des systèmes, en
utilisant des scripts ou programmes mis au point par d'autres hackers.
[G5] Les attaques par rebond consistent à utiliser un ou des systèmes intermédiaires,
participant à leur insu, et permettant au hacker de rester caché, mais aussi d'utiliser les
ressources de l'ordinateur intermédiaire qui est plus puissant (CPU, bande passante...)
pour attaquer.
[G6] Le DDoS (Distributed Denial of Service, déni de service distribué) est une version
avancée de l'attaque par DoS (Denial of Service, déni de dervice). Tout comme l'attaque
DoS, le DDoS tente de bloquer des services importants s'exécutant sur un serveur en
inondant de paquets le serveur de destination. La spécialité du DDoS est que les attaques
ne proviennent pas d'un seul réseau ou hôte, mais d'un certain nombre d'hôtes ou de
réseaux différents qui ont été précédemment compromis.
[G7] global.asa : Afin de permettre de configurer une application (un site web) avec des
paramètres par défaut sans devoir modifier la configuration du serveur, le modèle ASP
propose l'utilisation d'un fichier de configuration, nommé global.asa, qui, placé à la
racine du site web, permet à son concepteur d'exécuter des instructions, d'initialiser des
variables, avant ou après l'exécution d'un script.
[G8] Le HTML (« HyperText Mark-Up Language ») est un langage dit de « balisage »
dont le rôle est de formaliser l'écriture d'un document web avec des balises de formatage.
Les balises permettent d'indiquer la façon dont doit être présenté le document et les liens
qu'il établit avec d'autres documents.
[G9] La formule TF-IDF est une méthode qui permet d'évaluer l'importance d'un mot par
rapport à un document indexés. Le poids augmente proportionnellement en fonction du
nombre d'occurrences du mot dans le document. Il varie également en fonction de la
fréquence du mot dans le corpus.Nous retrouvons ainsi la formule TF-IDF simplifiée
comme étant le quotient du nombre d'occurrences du mot recherché par le nombre des
mots total, le tout multiplié par log(2/3).
[G10] XML ( eXtensible Markup Language) est en quelque sorte un langage HTML
amélioré permettant de définir de nouvelles balises. Il s'agit effectivement d'un langage
permettant de mettre en forme des documents grâce à des balises (markup).
[G11] Un pare-feu « firewall » est un élément du réseau informatique, logiciel et/ou
matériel, qui a pour fonction de faire respecter la politique de sécurité du réseau. Il a pour
principale tâche le contrôle du trafic entre différentes zones de confiance, en filtrant les
flux de données qui y transitent. Généralement, les zones de confiance incluent Internet
(une zone dont la confiance est nulle), et au moins un réseau interne (une zone dont la
confiance est plus importante).
[G12] Dans le domaine de la sécurité des systèmes informatique, un bac à sable
« sandbox » est un mécanisme qui permet l'exécution de logiciel(s) avec moins de risques
au système d'exploitation. Ces derniers sont souvent utilisés pour exécuter du code non
testé ou de provenance douteuse. Le terme sandbox est aussi utilisé dans un sens plus
large pour faire référence à un environnement de test pour logiciels ou sites web.
[G13] Une attaque « zero day » est tout simplement une attaque qui est inconnu par des
spécialistes en sécurité et du fabricant du logiciel qui est ciblé. Ces attaques exploitant
une faille dans un programme ou un logiciel encore non résolu par les éditeurs de
solutions de sécurité IT. Le nombre de ces attaques ne cesse d'augmenter, en deux ans,
leurs nombre a presque triplet et en 2006 il y a eu 6500 attaques zero days.
[G14] MHTML : MHTML est un format de fichier proposé à la normalisation par l'IETF
en 1999 dans le cadre d'une RFC intitulée « MIME Encapsulation of Aggregate
Documents, such as HTML ». Il s'agit d'un format de fichier ouvert et non propriétaire
permettant d'enregistrer et d'envoyer un fichier HTML qui inclut dans le corps de celui-ci,
au format MIME, les images et autres éléments externes de la page HTML
correspondante.
[G15] GNU Lesser GPL : La Licence publique générale limitée GNU, ou GNU LGPL
(pour GNU Lesser General Public License) est une licence utilisée par certains logiciels
libres. Elle présente de grandes ressemblances avec la Licence publique générale GNU
(ou GNU GPL), rédigée par le même organisme, la Free software foundation, visant à
promouvoir le développement de logiciels libres. La différences avec la licence GPL est
que la LGPL autorise de lier le programme sous cette licence à du code non LGPL.
[G16] Internet Archive est une organisation à but non lucratif consacrée à l'archivage du
Web, située dans le Presidio de San Francisco, en Californie. Le projet sert aussi de
bibliothèque numérique. Cette archive est constituée de clichés (copie de pages prises à
différents moments) du réseau internet, de logiciels, de films, de livres et
d'enregistrements audio. Internet archive est le fondateur du projet Heritrix.
Annexes
Annexe 1
Installation et configuration du moteur
de recherche Nutch-1.0
Cet annexe décrit toutes les étapes d'installation et de configuration du moteur de
recherche Nutch-1.0 sur une plateforme GNU/Linux.
1. Introduction
Nutch est un moteur de recherche Open Source complet :
◦ Outil d'Exploration
◦ Outil d'Indexation
◦ Outil de recherche
◦ Interface Graphique
◦ Distribué et répliqué (Hadoop)
Depuis le 23 Mars 2009, une nouvelle version de Nutch est disponible. Cette version
inclue plusieurs nouveautés :
◦ Nouveau FrameWork pour l'Indexation
◦ Nouveau FrameWork pour le scoring (référencement)
◦ Intégration de Apache Solr
◦ Support des dernières versions de
▪ Lucene 2.4
▪ Hadoop 0.19.1
▪ Tomcat 6
▪ JDK6
▪ etc.
- 1 -
Annexes
2. Environnement
• Ubuntu SE : 9.04
• JDK : 1.6.0_13-b03
• Apache Tomcat : 6.0.18
• Nutch : 1.0
• Slor : 1.3.0
3. Pré-requis
Pour cette installation de Nutch, nous supposant que Ubuntu est bien installé et que
l'administrateur a tous les droits du compte super-utilisateur.
Nous supposons aussi qu'un minimum de connaissances des commandes Shell et de
l'environnement Lunix (Ubuntu) soit acquis.
4. Installation et configuration de JAVA
L'un des avantages de Nutch, c'est sa portabilité. En effet, Nutch s'installe sur toute plate-
forme supportant la machine virtuelle Java. Pour cela, nous allons commencer notre installation
de Nutch par l'installation et la configuration de l'environnement Java JKD 1.6 update 13:
• Télécharger la dernière version de java JDK 1.6 update 13 à partir du site de Sun :
http://java.sun.com/javase/downloads/index.jsp
• Sélectionner Java SE Development Kit (JDK), cela nous mène à une page nous
permettant de définir votre OS (Linux), puis Télécharger le : jdk-6u13-linux-i586.bin et
• Placer le dans /usr/local/
• Dans un terminal tapons:
sudo chmod u+x jdk6u13linuxi586.bin ./jdk6u13linuxi586.bin
• Définition de JAVA_HOME pour le système : pour cela, éditons le fichier bashrc : $sudo gedit /etc/bash.bashrc
• À la fin du fichier, tapons : export JAVA_HOME=/usr/local/jdk1.6.0_13 export PATH=$JAVA_HOME/bin:$PATH
• Vérifions avec : $java version java version "1.6.0_13" Java (TM) SE Runtime Environment (build 1.6.0_13b04) Java HotSpot (TM) Server VM (build 11.2b01, mixed mode)
- 2 -
Annexes
5. Installation et configuration d'Apache Tomcat
Bien que Nutch tourne parfaitement en lignes de commande (dans un terminal Shell), il
est indispensable de penser à une utilisation via son interface graphique qui tourne sur Tomcat 6,
pour cela :
• Téléchargeons la dernière version d'Apache Tomcat 6.0.18 à partir du site de d'Apache :
http://tomcat.apache.org/download-60.cgi • À selectionner le .tar.gz du Binary Distributions, cela nous permet de télécharger le
fichier : apache- tomcat-6.0.18.tar.gz
• Décompressons le et placons le dans /usr/local/ puis rénommons le en tomcat-6.0.18 pour
faciliter son utilisation.
• Nous allons ensuite ajouter un administrateur de Tomcat, pour cela éditons le fichier : tomcat-users.xml edit /usr/local/tomcat6.0.18/conf/tomcat-users.xml et ajoutons deux rôles, et un utilisateur :<?xml version='1.0' encoding='utf-8'?>
<tomca-users> <role rolename="manager"/> <role rolename="admin"/> <user username="tomcat" password="tomcat" roles="admin,manager"/>
</tomcat-users> • Pour éviter tout conflit de notre serveur, nous avons changé le port de Tomcat (par défaut
c'est le 8080 qui est utilisé), nous allons le changer pour utiliser le 8086, pour cela éditons
le fichier /conf/server.xml et modifions la ligne : <Connector port="8086"
protocol="HTTP/1.1" ...
• Lançons ensuite tomcat: ./usr/local/tomcat-6.0.18/bin/startup.sh
• Nous devons avoir quelque chose comme ça: Using CATALINA_BASE: /usr/local/tomcat6.0.18 Using CATALINA_HOME: /usr/local/tomcat6.0.18 Using CATALINA_TMPDIR: /usr/local/tomcat6.0.18/temp Using JRE_HOME: /home/mbb/jdk1.6.0_13
• Dans un navigateur : http://localhost:8086/
• Et pour la page manager : http://localhost:8086/manager/html/
6. Installation et configuration de Nutch
Nous allons passer maintenant à l'installation de Nutch-1.0. Dans cette partie nous allons
- 3 -
Annexes
nous limiter à une installation minimale de Nutch :
• Téléchargeons la dernière version de Nutch-1.0 sur le site de Apache : (nutch-1.0.tar.gz) http://lucene.apache.org/nutch/index.html
• Décompressons la dans notre répertoire /home/user/ ( ~/ ) et créons un dossier urls dans le dossier d'installation de Nutch, puis un fichier urls.txt dans ce dossier : mkdir /usr/lib/nutch/urls touch /usr/lib/nutch/urls.txt
• Editons ce fichier et ajoutez les hyperliens. Dans notre cas, on va se limiter à un seul site: http://lucene.apache.org/nutch/
• Éditons le fichier conf/crawl-urlfilter.txt et remplaçons MY.DOMAIN.NAME par le nom de domaine que nous voulons crawler. Par exemple, nous voulons limiter le crawling aux domaines d'apache.org seulement, donc la ligne sera comme suit: +^http://([a-z0-9]*\.)*apache.org/
• Éditons le fichier conf/nutch-site.xml et ajoutons ces propriétés: <?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. -->
<configuration><property>
<name>http.agent.name</name><value></value><description>HTTP 'User-Agent' request header. MUST NOT be empty - please
set this to a single word uniquely related to your organization.NOTE: You should also check other related properties:
http.robots.agentshttp.agent.descriptionhttp.agent.urlhttp.agent.emailhttp.agent.version
and set their values appropriately. </description></property>
<property> <name>http.agent.description</name> <value></value>
<description>Further description of our bot- this text is used in the User-Agent header. It appears in parenthesis after the agent name.
</description></property>
<property><name>http.agent.url</name>
<value></value> <description>A URL to advertise in the User-Agent header. This will appear
- 4 -
Annexes
in parenthesis after the agent name. Custom dictates that this should be a URL of a page explaining the purpose and behavior of this crawler.
</description></property>
<property> <name>http.agent.email</name> <value></value>
<description>An email address to advertise in the HTTP 'From' reques theader and User-Agent header. A good practice is to mangle this address (e.g. 'info at example dot com') to avoid spamming.
</description></property>
</configuration>
• Ensuite, éditons le fichier /conf/nutch-default.xml et cherchons ces paramètres en les attribuant ces valeurs suivantes:
Paramètres Valeurs attribuées
http.agent.name <name>http.agent.name</name> <value>NUTCHCRAWLER</value>
http.content.limit <name>http.content.limit</name> <value>-1</value>
indexer.max.tokens <name>indexer.max.tokens</name> <value>2147483647</value>
plugin.includes <name>plugin.includes</name> <value>protocol-http|urlfilter-regex|parse-(text|html|js|pdf|msword|mspowerpoint|msexcel)|index-basic|query-(basic|site|url)|summary-basic| scoring-opic|analysis-(fr)</value>
searcher.dir <name>searcher.dir</name> <value>/home/mbb/nutch-1.0/crawldir/</value>
• Lancement de Nutch :./bin/nutch crawl urls -dir crawldir -threads 10 -depth 3 -topN 50
Avec : ◦ urls : nom du répertoire contenant les fichiers des hyperliens.◦ -dir crawldir : nom du répertoire de l'indexe et des segments téléchargés. ◦ -threads 10 : le nombre de processus qui vont faire le crawling simultanément. ◦ -depth 3 : détermine la profondeur du crawling. ◦ -topN 50 : détermine le nombre de pages maximum à crawler.
- 5 -
Annexes
• Recherche dans un terminal : mbb@mbb-laptop:~/nutch1.0$ bin/nutch org.apache.nutch.searcher.NutchBean
nutch Total hits: 25 0 20090406235738/http://lucene.apache.org/nutch/ ... is available here . June 2005: Nutch graduates from IncubatorNutch has now graduated from the ... of Lucene. January 2005: ... 1 20090406235751/http://wiki.apache.org/nutch/ ... wrote Lucene and Nutch. Stefan's Nutch Documentation Frutch WikiFrench Nutch ... to come). Larger / better quality Nutch ... 2 20090406235843/http://www.apache.org/dyn/closer.cgi/
lucene/nutch/ ... osuosl.org/pub/apache/lucene/nutch/ ftp://www.ibiblio.org/pub
... net/pub/apache.org/lucene/ nutch/ ftp://apache.cs.utah.edu
• Interface Graphique de Nutch : 1- Déploiement de l'interface de Nutch dans Tomcat:
▪ Dans http://localhost:8086/manager/html/ allons à la section « WAR file to deploy » et chargeons le fichier ~/nutch-1.0/nutch-1.0.war
▪ L'application sera ajoutée dans la section « Applications » 2- Allons ensuite à /usr/local/tomcat-6.0.18/webapps/nutch-1.0/WEB-INF/classes et
remplaçons ces trois fichiers par ceux du répertoire ~/nutch-1.0/conf ◦ crawl-urlfilter.txt ◦ nutch-site.xml ◦ nutch-default.xml
3- Rechargeons ensuite l'application dans l'interface manager de Tomcat. 4- Et voilà, il ne reste plus qu'aller à la page : http://localhost:8086/nutch-1.0/fr/ et lancer
nos recherches à partir de l'interface graphique.
7. Intégration de Solr avec Nutch
Depuis la dernière version de Nutch-1.0, l'une des nouvelles fonctionnalités de Nutch la
plus remarquable, c'est l'intégration de Solr avec Nutch. Dans ce cas, Solr sera utilisé comme un
outil de recherche seulement, alors que Nutch sera utilisé où il excelle : l'exploration et
l'extraction du contenu.
L'utilisation de Solr nous permet de bénéficier de ces atouts dans la phase de recherche,
par exemple, la vérification orthographique, les statistiques faites sur les requêtes, l'utilisation du
cache, les mises à jour, ainsi que son interface graphique d'administration, alors que Nutch, lui il
nous permet de bénéficier d'un ensemble complet de fonctionnalités telles que l'intelligence des
robots de crawling, la robustesse et l'évolutivité (Nutch fonctionne sur Hadoop, de sorte que vous
pouvez exécuter Nutch sur une seule machine ou sur un cluster de 100 machines).
Nous essayons dans cette partie de décrire les étapes d'installation et d'intégration de Solr
- 6 -
Annexes
avec Nutch:
• Commençons par télécharger la dernière version de Solr sur cette page (version Linux
23bits) : http://www.lucidimagination.com/Downloads et extractons le dans notre dossier
Home.
• De même, téléchargeons la dernière version de Nutch à partir de ce site
http://lucene.apache.org/nutch/index.html et extractons la dans notre dossier Home aussi.
• Copions le fichier schema.xml de apache-nutch-1.0/conf dans apache-solr-
1.3.0/example/solr/conf (remplaçons le fichier existant). Ensuite cherchons l'attribut
« content » et mettons le à true
<field name=”content” type=”text” stored=”true” indexed=”true”/>
• Éditons le fichier de configuration de Solr apache-solr-
1.3.0/example/solr/conf/solrconfig.xml en y ajoutons cette configuration:
<requestHandler name="/nutch" class="solr.SearchHandler" ><lst name="defaults">
<str name="defType">dismax</str><str name="echoParams">explicit</str><float name="tie">0.01</float><str name="qf">content^0.5 anchor^1.0 title^1.2</str><str name="pf">content^0.5 anchor^1.5 title^1.2 site^1.5</str><str name="fl">url</str><str name="mm">2<-1 5<-2 6<90%</str><int name="ps">100</int><bool hl="true"/><str name="q.alt">*:*</str><str name="hl.fl">title url content</str><str name="f.title.hl.fragsize">0</str><str name="f.title.hl.alternateField">title</str><str name="f.url.hl.fragsize">0</str><str name="f.url.hl.alternateField">url</str><str name="f.content.hl.fragmenter">regex</str>
</lst></requestHandler>
• Lançons ensuite Solr avec:
cd apache-solr-1.3.0/examplejava -jar start.jar
• Ensuite nous passons à la configuration de Nutch, pour cela commencons par éditer le fichier conf/nutch-site.xml et ajoutons ces propriétés: <?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. -->
- 7 -
Annexes
<configuration><property>
<name>http.agent.name</name><value>nutch-solr-integration</value>
</property><property>
<name>generate.max.per.host</name><value>100</value>
</property><property>
<name>plugin.includes</name><value>protocol-http|urlfilter-regex|parse-html|index-(basic|anchor)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
</property></configuration>
• Ensuite, éditons le fichier ~/conf/regex-urlfilter.txt et modifions la configuration existante par: -^(https|telnet|file|ftp|mailto):# skip some suffixes-\.(swf|SWF|doc|DOC|mp3|MP3|WMV|wmv|txt|TXT|rtf|RTF|avi|AVI|m3u|M3U|flv|FLV|WAV|wav|mp4|MP4|avi|AVI|rss|RSS|xml|XML|pdf|PDF|js|JS|gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|sit|eps|wmf|zip|ppt|mpg|xls|gz|rpm|tgz|mov|MOV|exe|jpeg|JPEG|bmp|BMP)$# skip URLs containing certain characters as probable queries, etc.-[?*!@=]# allow urls in foofactory.fi domain+^http://([a-z0-9]*\.)*apache.org/ # deny anything else-.
• Créons ensuite un dossier urls dans le dossier d'installation de Nutch, puis un fichier urls.txt dans ce dossier pour y mettre les Hyperliens: mkdir /usr/lib/nutch/urls echo "http://lucene.apache.org/nutch/" > urls/urls.txt
• Puis exécutons ses commandes une après l'autre dans le dossier racine de Nutch:◦ bin/nutch inject crawl/crawldb urls◦ bin/nutch generate crawl/crawldb crawl/segments◦ export SEGMENT=crawl/segments/`ls -tr crawl/segments|tail -1`◦ bin/nutch fetch $SEGMENT -noParsing◦ bin/nutch parse $SEGMENT◦ bin/nutch updatedb crawl/crawldb $SEGMENT -filter -normalize◦ bin/nutch invertlinks crawl/linkdb -dir crawl/segments◦ bin/nutch solrindex http://127.0.0.1:8983/solr/ crawl/crawldb
crawl/linkdb crawl/segments/*
Enfin, pour lancer nos recherches, allons à la page http://127.0.0.1:8983/solr/admin dans notre navigateur web ou directement sur cette adresse http://127.0.0.1:8983/solr/nutch/?q=solr&version=2.2&start=0&rows=10&indent=on&wt=json
- 8 -
Annexes
Annexe 2
Installation et configuration du
Honeyclient Monkey-Spider 2.0
Cette annexe décrit toutes les étapes d'installation et de configuration du client Honeypot
Monkey-Spider sur une plateforme GNU/Linux.
1. Introduction
Monkey-Spider est un client Honeypot à faible interaction, il permet d'explorer les sites
internet afin de détecter les menaces existantes dans ces sites. Initialement développé dans un
cadre universitaire par M. Ali Ikinci et est poursuivi et publié comme Logiciel Libre, il viens de
publier dernièrement sa nouvelle version (version 2.0) le 24 Mars 2009 sous la licence GPLv3.
Monkey-Spider est un client de détection de Malwares rapide et facilement extensible
avec d'autres outils de détection, il est basé sur deux grands mécanismes : l'exploration et le
téléchargement des sites internet, ensuite ces sites seront scannés par un anti-virus pour détecter
les codes malveillants qui seront par la suite stockés dans une base de données.
2. Environnement
• Ubuntu SE : 9.04
• JDK : 1.6.0_13-b03
• Python : 2.6
• Heritrix : 2.0.2
• ClamAV : 4.08
• PostGreSQL : 8.3.7-1
• Monkey-Spider : 2.0
- 9 -
Annexes
3. Pré-requis
Pour l'installation de Monkey-Spider, nous supposant que Ubuntu est bien installé, et que
l'administrateur à tous les droits du compte super-utilisateur (root), et qu'un minimum de
connaissances des commandes Shell et de l'environnement Lunix (Ubuntu) soit acquis.
Nous supposons aussi que les outils suivants sont installés : sed 4.1.5-8, mawk 1.3.3,
wget 1.11.4, grep 2.5.3, unzip 2.25, Python 2.6 et Java 1.6 (JVM).
Notons aussi qu'il faut installer Heritrix, PostgreSQL et ClamAV ainsi que toutes leurs
composantes nécessaires (PyGreSQL, SOAPpy, pYsearch) pour faire tourner Monkey-Spider.
Pour cela, nous allons commencer par l'installation de ces outils, puis on va détailler l'installation
et l'utilisation de Monkey-Spider.
4. Installation et configuration de Heritrix
Heritrix est un robot d'exploration Open Source développé en Java par Internet Archive et
les Bibliothèques Nationales Nordiques en 2003. Il permet d'aspirer les sites internet et de les
archiver sous format ARC.
Afin d'éviter d'avoir la gestion d'un grand nombre de petits fichiers, le format ARC,
permet de stoker de multiples ressources (texte, images, vidéo, etc) dans un seul fichier. Un
fichier consiste en une séquence d'enregistrements d'URL, chacun étant accompagné d'un en-tête
contenant des métadonnées à propos de la manière dont la ressource a été demandée, de l'en-tête
HTTP, et du code de la réponse. La taille d'un fichier Arc est comprise entre 1 et 600 mégaoctets.
Dans cette partie nous essayons de détailler l'installation de Heritrix 2.0.2 disponible
depuis le 11 Novembre 2008, pour cela :
• Commençons par télécharger le fichier heritrix-2.0.2-dist.tar.gz à partir de ce site :
http://sourceforge.net/project/showfiles.php?group_id=73833&package_id=254931&release_id=638948
• décompressons le dans notre dossier Home:
tar -xfz heritrix-2.0.2-dist.tar.gz
• Définitons HERITRIX_HOME pour le système : pour cela éditons le fichier bashrc : $sudo gedit /etc/bash.bashrc
• À la fin du fichier, tapons : export HERITRIX_HOME=~/heritrix-2.0.2/export PATH=$HERITRIX_HOME/bin:$PATH
- 10 -
Annexes
• Vérifions avec : mbb@mbb-laptop:~$ echo $HERITRIX_HOME /home/mbb/heritrix-2.0.2/
• Donnons ensuite le droit d'exécution des fichier Heritrix à votre utilisateur:% cd $HERITRIX_HOME% chmod u+x $HERITRIX_HOME/bin/heritrix
• Testons ensuite Heritrix avec:% $HERITRIX_HOME/bin/heritrix helpUsage: heritrix --helpUsage: heritrix --nowui ORDER.XMLUsage: heritrix [--port=#] [--run] [--bind=IP,IP...] --admin=LOGIN:PASSWORD \
[ORDER.XML]Usage: heritrix [--port=#] --selftest[=TESTNAME]Version: @VERSION@Options:-b,--bind Comma-separated list of IP addresses or hostnames for web server to listen on. Set to / to listen on all available network interfaces. Default is 127.0.0.1.-a,--admin Login and password for web user interface administration. Required (unless passed via the 'heritrix.cmdline.admin' system property). Pass value of the form 'LOGIN:PASSWORD'.-h,--help Prints this message and exits.-n,--nowui Put heritrix into run mode and begin crawl using ORDER.XML.Do not put up web user interface.-p,--port Port to run web user interface on. Default: 8080.-r,--run Put heritrix into run mode. If ORDER.XML begin crawl.-s,--selftest Run the integrated selftests. Pass test name to test it only (Case sensitive: E.g. pass 'Charset' to run charset selftest)Arguments:ORDER.XML Crawl order to run.
• Lancons ensuite Heritrix avec un utilisateur et son mot de passe:
% $HERITRIX_HOME/bin/heritrix -a PASSWORD -p 8070 -b 0.0.0.0 WARNING: No $HERITRIX_HOME/conf/jmxremote.password found.WARNING: Disabling remote JMX.Tue Jul 17 14:00:25 PDT 2007 Starting heritrixNo JNDI context.Engine registered at
org.archive.crawler:instance=14306161,jmxport=8849,name=Engine,type=org.archive.crawler.framework.Engine,host=0.0.0.0
Web UI listening on localhost:8070.
• Nous passons maintenant à la configuration et le création d'un Job avec Heritrix, pour
cela rendons nous à l'adresse http://localhost:8070/ :
a) Après authentification, allons à Engine ID, et choisissons le premier profile
basic_seed_sites puis Sheets puis Edit , allons ensuite vers :
▪ operator-contact-url et saisissons l'adresse web de votre société,
▪ operator-from et saisissons le mail de l'administrateur.
▪ operator-name et saisissons le nom de l'administrateur.
- 11 -
Annexes
Enfin, enregistrer avec Submit changes.
b) Allez ensuite à la configuration d'un profil pour ce job: (Jobs > Settings): par défaut,
il existe un profil prédéfini, donc nous allons le modifier pour qu'il puisse être
opérationnel, pour cela cherchons le paramètre http-headers et modifions ces propriétés:
user-agent: Mozilla/5.0 (compatible; heritrix/2.0.2 + <site_société>)from: <mail_administrateur>@domain.com
c) Dans Jobs > Modules allons vers le paramètre Select Crawl Scope et modifions le
pour qu'il puisse faire seulement le crawling dans les domaines des hyperliens fournis
dans le job (choisir la valeur org.archive.crawler.scope.DomainScope), n'oublions pas
d'enregistrer.
d) Avant, de lancer le crawling des Jobs créés, assurons nous que la configuration à
était bien saisie (ce n'est pas toujours le cas), allons vers le dossier ~/heritrix-2.0.2/jobs/ et
choisissons le job que nous avons créé, dans ce répertoire ouvrons le fichier de
configuration du Job order.xml vérifions maintenant que la configuration est bien celle
que nous avons saisi, en particulier la ligne de configuration du domaine de recherche du
crawling : <newObject name="scope" class="org.archive.crawler.scope.DomainScope">
puis le fichier seeds.txt qui contient la liste des sites à crawler.
e) Voilà, maintenant que le job est bien configuré, il ne nous reste plus qu'aller à
Console et démarrer notre Job (pensons à rafraichir la fenêtre pour vérifier que notre job
est en cour de fonctionnement).
5. Installation de KlamAV
ClamAV est un antivirus Open Source (Licence GPL) Gratuit et très puissant, il est
disponible sur les systèmes GNU/Linux mais également sur Windows (ClamWin) et Mac OS X
(ClamXav). Il peut tout aussi bien être utilisé sur des serveurs que sur des postes de travail.
ClamAV est principalement utilisé pour détecter les virus attaquant les systèmes
Windows qui sont de loin les plus menacés, les systèmes GNU/Linux l’étant peu. En décembre
2008, ClamAV possède dans sa base de données plus de 575 000 logiciels malveillants
reconnus1.
1 Source : http://www.clamav.net/ http://doc.ubuntu-fr.org/clamav
- 12 -
Annexes
Il est très utilisé dans le domaine professionnel par plusieurs sociétés comme « NGX
VPN-1 Edge Embedded », « Barracuda Network », « Netasq » et « Sysun Secure ».
Dans notre projet, ClamAV nous sert à scanner tout les fichiers téléchargés pat Heritrix
pour détecter tous les malwares cachés dans les sites internet. Son installation est très facile via
apt. En effet, ClamAV fait partie des dépôts de Ubuntu. Pour cela, il suffit de taper dans un
terminal:
$ sudo apt-get install clamav
si ClamAV ne se trouve pas par défaut dans la liste des miroirs de Ubuntu, dans le menu
général de Ubuntu, allez à Système>Administration>Sources de mise à jour et crochez la case
des dépôts multiverse, puis recharger la liste, et réessayez la commande apt.
6. Installation et configuration de PostgreSQL
Initié par Michael Stonebraker en 1985, PostgreSQL est un gestionnaire de base de
données relationnel et d'objet très puissant sous licence BSD dont les performances sont
comparables à Oracle ou SQL server de Microsoft. Très riche en fonctionnalités et facile à
utiliser, il reste le SGBD le plus rapide et le plus utilisé en entreprise de nos jours2
PostgreSQL est disponible dans les dépôts de ubuntu, donc pour l'installer, il suffit de
taper dans un terminal :
$ sudo apt-get install postgresql
Nous passons ensuite à sa configuration, et nous commençons par activer l'utilisateur par
défaut postgres :
$ sudo -s -u postgres Password:
vérifier ensuite que PostgreSQL fonctionne parfaitement avec la commande psql
Maintenant, nous allons ajouter un utilisateur-administrateur (avec une méthode très
sécurisée pour que l'utilisateur ait un mot de passe crypté), donc éditons le fichier suivant :
sudo gedit /etc/postgresql/8.3/main/pg_hba.conf
# TYPE DATABASE USER CIDR-ADDRESS METHOD# Database administrative login by UNIX socketslocal all postgres md5# "local" is for Unix domain socket connections onlylocal all all md5# IPv4 local connections:host all all 127.0.0.1/32 md5
2 Source : http://www.postgresql.org/http://doc.ubuntu-fr.org/postgresql
- 13 -
Annexes
# IPv6 local connections:host all all ::1/128 md5
Nous pouvons ensuite créer notre utilisateur :
$ sudo -s -u postgres$ createuser admin
Le nouvel rôle est-il superutilisateur ? (o/n) n Le nouvel rôle est-il autorisé à créer des bases de données ?(o/n) o Le nouvel rôle est-il autorisé à créer de nouveaux rôles ? (o/n) n
$ psql -d template1 -c "alter user admin with password 'admin'"$ sudo /etc/init.d/postgresql-8.3 restart
Enfin selon notre choix, nous somme invités à installer l'un de ces outils de gestion
graphique de PostgreSQL:
$ sudo apt-get install pgadmin3
ou$ sudo apt-get install phppgadmin
Nous passons maintenant à la création une base de données qui sera utilisée par la suite
avec Monkey-Spider pour stocker toutes les informations relatives aux malwares trouvés. Pour
cela, rendons nous à la page http://localhost/phppgadmin/ (nous supposons que phppgadmin est
le client graphique choisi et installé) et connectons nous avec le compte utilisateur créé
précédemment. Créons ensuite une nouvelle base de données malwaredb et exécutons le code
SQL déjà récupéré du fichier monkey-spider-0.2/examples/mw-db-scheme.sql
Autre méthode avec les lignes de commande (dans le dossier ~/monkey-spider-
0.2/examples/) :
psql -f mw-db-scheme.sql malwaredb
voilà, maintenant que notre base de données est configurée, nous passons à l'installation
et la configuration de Monkey-Spider
7. Installation et configuration de Monkey-Spider
Nous commençons par télécharger l'archive de Monkey-Spider à partir du site :
http://sourceforge.net/project/showfiles.php?group_id=211520 puis décompressons le dans notre
dossier Home.
Ensuite, nous devons installer les plugins manquants de Python et nécessaires pour que
Monkey-Spider puisse fonctionner :
$ sudo apt-get install python-pYsearch $ sudo apt-get install python-soappy
- 14 -
Annexes
Enfin, rendons nous au dossier de Monkey-Spider et lançons le script install.sh:
sudo ~/monkey-spider-0.2/install.sh
Nous passons maintenant à la configuration de Monkey-Spider pour qu'il puisse
communiquer avec PostgreSQL, pour cela éditons le fichier de configuration :
sudo gedit /etc/monkey-spider.conf
#$Id: monkey-spider.conf 40 2009-02-26 13:23:29Z riker2000 $# Configuration file for the Monkey-Spider system[ms-database]# Database configuration hostname=localhostdatabasename=malwaredbusername=adminpassword=admin[ms-scanner]# where the found malware should be storedmwattic=../found-malwareusername=adminpassword=admin[ms-scanner]# where the found malware should be storedmwattic=../found-malware
Maintenant que Monkey-Spider est configuré pour qu'il puisse communiquer avec
PostgreSQL, et que Heritrix a déjà commencé à faire des Jobs, nous passons à l'analyse des
fichiers .arc.gz par l'anti-virus pour cela, il suffit de lancer le script ms-processfolder de Monkey-
Spider :
sudo /usr/bin/ms-processfolder.py ~/heritrix-2.0.2/jobs/<FolderARC>/arcs
Et voilà, les virus trouvés seront mis dans un dossier ../found-malware et des
informations relatives à ces virus seront ajoutés automatiquement à la base de données
malwaredb.
- 15 -
Annexes
Annexe 3
Script de mise à jour de nutch à partir
des fichiers ARC
• Mise à jour de Nutch à partir des fichiers ARC
◦ nutch-ARC.sh : mise à jour de Nutch à partir d'un seul Job (un seul répertoire)
#!/bin/bash# script de mise à jour de nutch à partir des fichiers ARC
#verification de la ligne de commandeif [ $# -eq 1 ]then
REP=$1a=$(date +'%Y%m%d%H%M%S')echo " a: "$a
elseecho "ERREUR 1: parametre introuvable : donnez le dossier contenant les fichiers ARC"exit
fi
if [ -d $REP ]; thenecho "######### Nouvelle tache le : " `date` " ############"echo "######### Nouvelle tache le : " `date` " ############"> ~/nutch-
1.0.3/logs/nutch-ARC.logecho "debut d'injection des urls"./bin/nutch inject ArcCrawlDir/crawldb urls >> ~/nutch-1.0.3/logs/nutch-ARC.logecho "injection effectuee avec succes"for i in $REP*.arc.gzdo
echo " ************* Fichier ARC : "$i" ****************"echo "debut de conversion du ARC en segements"`./bin/nutch org.apache.nutch.tools.arc.ArcSegmentCreator $i ~/nutch-
1.0.3/ArcCrawlDir/segments >> ~/nutch-1.0.3/logs/nutch-ARC.log`echo "conversion effectuee avec succes"s1=`ls -d ArcCrawlDir/segments/2* | tail -1`#echo "s1 : "$s1if test -d $s1then
echo "debut de l'update"./bin/nutch updatedb ArcCrawlDir/crawldb $s1 >> ~/nutch-
1.0.3/logs/nutch-ARC.logecho "fin de l'update"
elseecho "ERREUR 3: Le dossier ne contient pas des fichiers ARC"exit
fidone
if test -d $s1
- 16 -
Annexes
thenecho "debut de invertlinks"./bin/nutch invertlinks ArcCrawlDir/linkdb -dir ArcCrawlDir/segments >>
~/nutch-1.0.3/logs/nutch-ARC.logecho "fin de invertlinks"
if test -d ArcCrawlDir/indexesthen
rm -rf ArcCrawlDir/indexesfiecho "debut de l'index"./bin/nutch index ArcCrawlDir/indexes ArcCrawlDir/crawldb ArcCrawlDir/linkdb
ArcCrawlDir/segments/* >> ~/nutch-1.0.3/logs/nutch-ARC.logecho "fin del'indexe et fin de la tache"
fi
else echo "ERREUR 2: Le répertoire : " $REP " n'existe pas"fi
◦ RunNutchWithARC.sh : Mise à jour de Nutch à partir de tous les Jobs Heritrix
#!/bin/bash# script permettant la mise à jour du moteur de recherche Nutch à partir des fichiers .ARC
for N in `ls /usr/local/heritrix-2.0.2/jobs`do
/usr/local/nutch-1.0.3/nutch-ARC.sh /usr/local/heritrix-2.0.2/jobs/$N/arcs/done
• Mise à jour de Nutch à partir de son propre crawler
◦ RunNutchWithoutARC.sh : méthode classique pour la mise à jour de Nutch.#!/bin/bash# script qui permet la mise à jour du moteur de recherche Nutch indépendament des fichiers ARC# les sites seront crawlés par Nutch (son propre crawler# ce script sert à mettre à jour Nutch indépemdament de Monkey-Spider
# récupération des sites à partir de tous les jobs Heritrixrm -f /usr/local/nutch-1.0.3/urls/*for N in `ls /usr/local/heritrix-2.0.2/jobs`do
cat /usr/local/heritrix-2.0.2/jobs/$N/arcs/seeds.txt >> /usr/local/nutch-1.0.3/urls/urls.txtdone# lancement de nutch indépendament de Heritrix/usr/local/nutch-1.0.3/bin/nutch crawl urls -dir ArcCrawlDir -threads 10 -depth 3 -topN 50
- 17 -
Annexes
Annexe 4
Code source de Monkey Spider
L'annexe suivant présente le code source de Monkey-spider pour la recherche des
malwares à partir de tous les fichiers .ARC et à partir de tous les Jobs de Heritrix.
• Code source de Monkey-Spider : ms-scanner-clamav.py modifié pour la recherche des
malwares à partir de tous les fichiers d'un seul Job Heritrix.
#!/usr/bin/env python#$Id: ms-scanner-clamav.py 43 2009-03-24 07:34:44Z riker2000 $
# ms-scanner-clamav - Scans a given directory with clamav. Moves found malware # to a seperate attic directory and updates the malware database.
# Copyright (C) 2006-2008 Ali Ikinci (ali at ikinci dot info)## This file is part of the Monkey-Spider project.# http://monkeyspider.sourceforge.net## The Monkey-Spider project is free software: you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation, either version 3 of the License, or# (at your option) any later version.## the Monkey-Spider project is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with the Monkey-Spider project. If not, see http://www.gnu.org/licenses/
# depends on clamav from http://www.clamav.net and pygresql from # http://www.pygresql.org/
from os.path import basenameimport sysimport ConfigParserimport osimport string
try: import pgexcept: print 'Error importing the pg module. Check your pygresql installation' sys.exit(2) def usage():
- 18 -
Annexes
print "Usage: ms-scanner-clamav.py [directory]"
def parseReportFile(): config = ConfigParser.ConfigParser() config.read("/etc/monkey-spider.conf") try: dbName = config.get('ms-database', 'databasename') dbHost = config.get('ms-database', 'hostname') dbUser = config.get('ms-database', 'username') dbPass = config.get('ms-database', 'password') mwattic = config.get('ms-scanner', 'mwattic') except: print 'Unable to read configuration. Check the configuration file.' exit(2)
#create attic for collected malware-binarys os.system("mkdir -p %s" % mwattic)
#cdx file name workdir = sys.argv[1] os.chdir(workdir) cdxfile = workdir+'.cdx' f = open(cdxfile, "r") cdx = f.readlines() f.close() # checksum index of the files for the reassosiaction of found malware cix = {} for x in range(len(cdx)): cix[x] = string.split(cdx[x])[5]
f = open(workdir+"-clamav.report", "r") clamav = f.readlines() f.close()
clamav_engine_version = string.split(string.split(clamav[0])[1], "/")[0] clamav_signature_version = string.split(string.split(clamav[0])[1], "/")[1] clamav_last_update = string.split(clamav[0], "/")[2][:-1]
for i in range(1, len(clamav)): mw_name = string.split(clamav[i])[1]
mw_filename = string.split(string.split(clamav[i])[0], ":")[0]mw_checksum = string.split((string.split(string.split(string.split(clamav[i])
[0], ":")[0], "/")[-1]), ".")[0] try: db = pg.connect(dbname=dbName, host=dbHost, user=dbUser, passwd=dbPass) print'\n\n###############################################################' print'##### ALLERTE MALWARE #####' print'##### Sites Infectes, Veuillez consultez votre #####' print'##### base de donnees pour voir la liste des virus trouves #####' print'#################################################################\n' print'Connection avec la base de donnees etablie avec succe:'
except: print 'Unable to connect to database. Check your configuration.' exit(2) os.system("cp -u " + mw_filename + " %s" % mwattic) #Generate the next ids for databases malware and mw_scanner q = db.query("SELECT max(id) from malware") max_mw_id = q.getresult()[0][0] if max_mw_id == None: max_mw_id = 1 else: max_mw_id = max_mw_id + 1 q = db.query("SELECT max(id) from mw_scanner") max_mw_sc_id = q.getresult()[0][0]
- 19 -
Annexes
if max_mw_sc_id == None: max_mw_sc_id = 1 else: max_mw_sc_id = max_mw_sc_id + 1
id = max_mw_idfilename = basename(mw_filename)checksum = string.split(basename(mw_filename), ".")[0]for x in range(len(cix)):
if cix[x] == checksum: break url = string.split(cdx[x])[2].lower() size = 0 date = string.split(cdx[x])[0] dateS = date[:4] + "-" + date[4:6] + "-" + date[6:8] + " " + date[8:10] + ":" + date[10:12] + ":" + date[12:14]
q = "INSERT INTO malware VALUES (%s,'%s','%s','%s',%s,'%s','%s')" % (id, filename, url, checksum, size, dateS, mw_name)
qq = "MALWARES ===> %s,'%s','%s','%s',%s,'%s','%s'" % (id, filename, url, checksum, size, dateS, mw_name) print ''+ qq db.query(q) db.close()
def main(): if (len(sys.argv) != 2): usage() sys.exit(2) if not os.path.exists(sys.argv[1]): print "Error: Path does not exist or you don't have the needed permissions" sys.exit(2) if not os.path.isdir(sys.argv[1]): usage() sys.exit(2) #chdir to where the arc file resides workdir = sys.argv[1] os.chdir(workdir) print 'Scanning folder %s for viruses with ClamAV' % workdir, #Scan directory with clamav and generate report file scanMBB1='clamscan -V > '+ workdir + '-clamav.report' os.system(scanMBB1) scanMBB2='clamscan ' + workdir + '/ |grep FOUND >> ' + workdir + '-clamav.report' os.system(scanMBB2)
parseReportFile() if __name__ == "__main__": main()
• Script pour la recherche des malwares à partir de tous les Jobs de Heritrix :
#!/bin/bash# script qui permet de lancer la recherche des malwares avec monkey-Spider
for MS in `ls /usr/local/heritrix-2.0.2/jobs`do
/usr/bin/ms-processfolder.py /usr/local/heritrix-2.0.2/jobs/$MS/arcs/done
- 20 -
Annexes
Annexe 5
Script d'insersion des sites dans la base
de données
Bien que Eurêka dispose d'une interface d'insertion des sites dans la base de données,
cette tâche reste très pénible pour l'insertion d'un très grand nombre de sites manuellement. En
plus, la recherche des adresses IP des serveurs hébergeant ces sites rend cette tâche quasi
impossible manuellement.
Ces scripts permettent la recherche des adresses IP des serveurs hébergeant ces sites puis
leurs insertion dans la base de données automatiquement
• SearchSites.sh :
#!/bin/bash# script de recherche de site par adresse IP du serveur# il permet l'acces à une base de données et d'afficher la liste des sites hébergés dans un serveur (son IP est passée en paramètre pour la fonction)
if [ $# -eq 1 ]then
URL=$1else
echo "parametre introuvable, veillez donner l'adresse IP du serveur"exit
ficat < ~/siteToIpServer/user.conf | while truedo for (( i=1; i<=9; i++ ))
doread ligne
done if [ "$ligne" = "" ]; then break; fi host=$ligne read ligne dbname=$ligne read ligne user=$ligne read ligne pass=$ligneselect_ipserver="$(psql -h ${host} -d ${dbname} -U ${user} -c "SELECT DISTINCT site FROM ipserver where url='$URL'" )"echo $select_ipserver > ~/siteToIpServer/searchSites1.txtdone
- 21 -
Annexes
# Traitement sur le résultat de la recherche des sites à partir d'une adresse IP d'un serveurrm -f ~/siteToIpServer/searchSites2.txttouch ~/siteToIpServer/searchSites2.txtfor line in $(cat ~/siteToIpServer/searchSites1.txt)do
echo "$line" >> ~/siteToIpServer/searchSites2.txtdone#rm -f ~/siteToIpServer/searchSites2.txt
## nétoyage du fichier searchSites2 et ajout de site: pour les sitesrm -f ~/siteToIpServer/searchSites3.txttouch ~/siteToIpServer/searchSites3.txtnb1=`more ~/siteToIpServer/searchSites2.txt|wc -l`nb2=$((nb1 - 1 ))echo $nb1 $nb2~/siteToIpServer/suppligne.sh searchSites2.txt 1 2 $nb1 $nb2 >> ~/siteToIpServer/searchSites3.txtwhile read LINEdo
echo "site:"$LINE >> ~/siteToIpServer/searchSites4.txtdone < ~/siteToIpServer/searchSites3.txt#rm -f ~/siteToIpServer/searchSites3.txt
• AddSites.sh :
#!/bin/bash
#verification de la ligne de commandeif [ $# -eq 1 ]then
FILE=$1else
echo "parametre introuvable : donnez le fichier des adresses web"exit
fi
# première manipulation : recherche des adresse IPrm -f ~/siteToIpServer/AddSites1.txttouch ~/siteToIpServer/AddSites1.txtif [ -f $FILE ]then
cat $FILE | while read lignedo
echo ---- >> ~/siteToIpServer/AddSites1.txt nslookup $ligne >> ~/siteToIpServer/AddSites1.txt
doneelse
echo "$FILE est introuvable"exit
fi
# Deuxième manipulation : elimination des lignes non souhaitéesrm -f ~/siteToIpServer/AddSites2.txttouch ~/siteToIpServer/AddSites2.txtwhile read LINEdo
if [ "$LINE" = "----" ] then
for (( i=1; i<=5; i++ ))do
read LINE done
fi
- 22 -
Annexes
echo $LINE >> ~/siteToIpServer/AddSites2.txtdone < ~/siteToIpServer/AddSites1.txt#rm -f ~/siteToIpServer/AddSites1.txt
# Troisième manipulation : filtrage des adresses webrm -f ~/siteToIpServer/AddSites3.txttouch ~/siteToIpServer/AddSites3.txtrm -f ~/siteToIpServer/AddSites4.txttouch ~/siteToIpServer/AddSites4.txtfor line in $(cat ~/siteToIpServer/AddSites2.txt)do
echo "$line" >> ~/siteToIpServer/AddSites3.txtdone#rm -f ~/siteToIpServer/AddSites2.txt
while read LINEdo
if [ "$LINE" = "Name:" ] then
read LINEvar1=${LINE}read LINEif [ "$LINE"="Address:" ]then
read LINEvar2=${LINE}echo $var1 "---------->" $var2 >> ~/siteToIpServer/AddSites4.txt~/siteToIpServer/insertSites.sh $var1 $var2echo "le site "$var1 " est ajoute a la base de donnees avec l'ip
du serveur : " $var2fi
fidone < ~/siteToIpServer/AddSites3.txt#rm -f ~/siteToIpServer/AddSites3.txt
• insertSites.sh :
#!/bin/bash# script de connexion avec la base de données PostGreSQL# il permet l'insertion d'une nouvelle entrée (passée en paramètre) dans la table ipserver# nouvelle entrée de la base de données : (site | url)
if [ $# -eq 2 ]then
SITE=$1URL=$2
elseecho "parametres introuvables, donnez deux paramètres : site & url"exit
ficat < ~/siteToIpServer/user.conf | while truedo for (( i=1; i<=9; i++ ))
doread ligne
done if [ "$ligne" = "" ]; then break; fi host=$ligne read ligne dbname=$ligne read ligne user=$ligne read ligne
- 23 -
Annexes
pass=$ligneinsertion_ipserver="$(psql -h ${host} -d ${dbname} -U ${user} -c "INSERT INTO ipserver (site, url) VALUES ('${SITE}', '${URL}')" )"done
• suppligne.sh :
#! /bin/bash# enlever-des-lignes.sh
# Déclaration fonction d'usagefonction_usage (){echo -e "\tUsage : $0 [n|n-n]\n"echo -e "\tn est un entier positif."echo -e "\tn-n est un intervalle (eg. 6-15)"echo -e "\tLes entiers seront séparés par un espace.\n\
Les intervalles n-n séparés par un tiret \"-\".\n"}
# Test existence fichierif [ ! -e "$1" ]; thenecho -e "Le fichier $1 n'existe pas ! \n"fonction_usageexit 2fi
# Test nombre de paramètresif [ "$#" -lt 2 ]; thenecho -e "Nombre de paramètres incorrects ! \n\n"fonction_usageexit 3fi
# Test entier positif et/ou mauvais intervallefor n in "$@"; docase "$n" in-* ) echo -e "Les entiers doivent être de type positif !\n"
fonction_usageexit 4
;;*-* ) var1=$(echo $n | cut -d- -f1)
var2=$(echo $n | cut -d- -f2)if [ "$var1" -gt "$var2" ]; thenecho -e "Erreur dans l'intervalle \"$n\"\n"fonction_usageexit 5fi
;;[0-9]*[!-][0-9]* ) echo -e "Le caractère séparateur d'intervalle n'est pas un tiret !\n"
fonction_usageexit 6
;;esacdone
# Initialisation variable fichier (pour libérer le paramètres $1)fichier=$1
# Décalage des paramètresshift
# Initialisation des paramètres en passant par :
- 24 -
Annexes
#+ substitution espace par saut de ligne#++ tri numérique#+++ substitution saut de ligne par espace et#++++ substitution tiret par virguleset $(echo "$@" | sed 's/ /\n/g'| sort -n | sed -e :a -e '$!N;s/\n/ /;ta' -e 's/-/,/g')
# Initialisatieon compteurn=1# Initialisation variable "cmd" (sed)cmd="sed "
# Boucle tant que compteur inférieur au nombre de paramètreswhile [ "$n" -le "$#" ]do# On rajoute à la variable "cmd" le reste de la commande sed cmd="$cmd-e ''\$$n'd' "# On incrémente le compteurn=$(expr $n + 1)done
# On exécute la commande (cmd) qui doit ressembler pour 4 paramètres initiaux à :#+ sed -e ''$1'd ' -e ''$2'd ' -e ''$3'd ' $fichiereval $cmd $fichier
• user.conf :
################################################################################################# ce ci est un fichier de configuration pour la connexion avec la base de données PostGreSQL ### ### This is the file configuration to the connexion with PostGreSQL DataBase ### ### 1- Nom de la machine/Hostname ### ### 2- Nom de la base de données/DBName ### ### 3- Nom de l'utilisateur/UserName or Login ### ### 4- Mot de passe de l'utilisateur/PassWord ### ################################################################################################ localhost malwaredb <User_postgreSQL><Password_user>
- 25 -
Annexes
Annexe 4
Architecture complète de notre projet
- 26 -
تلخيص :
الهدف من هذا العمل هو إنشاء برمجية للكشف عن البرامج الضارة والفيروسات والقراصنة في
المواقع التونسية. يتكون هذا المشروع من عنصرين, في المرحلة الولى أجرينا دراسة نظرية
حول محركات البحث و"الهوني كليينت" الحرة. هذه الدراسة مكنتنا من اعتماد على محرك البحث
"نوتش" للبحث على القراصنة و"مونكي سبيدر" للبحث على الفيروسات في المواقع التونسية.
في مرحلة ثانية أجرينا التخصيص والتكامل بين "نوتش" و"مونكي سبيدر"، ثم قمن بوضع بينية
لدارة المواقع والبرامج الضارة
Résumé :
L'objectif de ce travail est la mise en place d'une solution de détection des malwares dans
les sites tunisiens et la détection des pirates informatiques à travers leurs signatures textuelles.
Ce projet comporte deux volets. Dans le premier, nous avons procédé à une étude théorique
sur les moteurs de recherche open source et sur les Honeyclients. Cette étude nous a permis
d'adopter Nutch pour la recherche des pirates dans les sites défaillés et Monkey-Spider pour la
recherche des malwares hébergés dans les sites web. Une installation et une configuration de ces
deux outils nous ont permis de déterminer leurs inconvénients. Dans un deuxième volet, nous
avons procédé à une personnalisation et une intégration de Nutch dans Monkey-Spider et nous
avons développé une interface J2EE pour la gestion des sites et des malwares trouvés.
Mots clés : Moteur de recherche, Honeypots, Honeyclients, crawler, Apache Tomcat, JAVA,
Script Shell, Phyton, JSP, WaveMaker, Open Source, serveur, Ubuntu, PostgreSQL, Nutch,
Heritrix, Monkey-Spider, UML, ClamAV, Antivirus.
Abstract :
The objective of this work is the establishment a solution to malware detection in Tunisian
sites and detect hackers through their textual signatures. This project has two components. In the
first, we conducted a theoretical study on search engines and Honeyclients open source. This
study has enabled us to adopt Nutch to search pirate sites in failing and Monkey-Spider for the
detection of malware hosted in the websites. Installation and configuration of these two tools
have allowed us to determine their drawbacks. In a second phase, we conducted a customization
and integration Nutch in MonkeySpider and we developed an interface J2EE for managing sites
and malware found.
Keywords : Search engine, Honeypots, Honeyclients, Tomcat, JAVA, Script Shell, Phyton, JSP,
WaveMaker, Open Source, Ubuntu, PostgreSQL, Nutch, Heritrix, Monkey-Spider, UML ...