1. Skipfish
Rapport du projet :
-Scanner de vulnérabilités-
Proposé par :
Mr. ABOU EL KALAM Anas
Réalisé par :
EL ANBAL Mounia
MOUACHI Raja
NKILA Bouchra
Ecole Nationale des Sciences Appliquées – Marrakech
GRT5- 2013/2014-
2. SOMMAIRE
1-Introduction
3
2- Tests d’intrusion
3
2-1 Qu’est ce qu’un test d’intrusion ?
2-2 Les limites des tests d’intrusions
3-Etude théorique
3
4
4
3-1 Présentation de Skipfish
4
3-2 Pourquoi utiliser Skipfish?
4
4-Mise en pratique : Skipfish
5
4-1
Prérequis nécessaires
5
4-2
Installation
6
4-3
Utilisation
7
4-4
Vulnérabilités détectées
9
4-Conclusion
2
10
3. 1-Introduction :
La sécurité des serveurs Web est un problème désormais récurrent. Le nombre de vulnérabilités
recensées dans ce type de logiciels s’accroît constamment. Nous pouvons l’expliquer par plusieurs
raisons : la complexité sans cesse croissante des technologies du Web, les délais sans cesse plus
courts de mise sur le marché de logiciels, les compétences parfois limitées et le manque de culture
en sécurité des développeurs. En conséquence, bon nombre de ces applications contiennent de
multiples vulnérabilités qui peuvent être exploitées par des pirates informatiques. Ces attaques
peuvent leur permettre, par exemple, d’obtenir des données confidentielles (numéros de cartes de
crédit, mots de passe, etc.) qui sont manipulées par l’application, voire même de modifier ou
détruire certaines de ces données. La complexité des technologies utilisées aujourd’hui pour réaliser
les applications Web (Java, JavaScript, PHP, Ruby, J2E, etc.) fait qu’il est particulièrement difficile :
d’empêcher l’introduction de vulnérabilité dans ces applications et puis d’estimer ou de prévoir leur
présence. De plus, la sécurisation des réseaux ainsi que l’installation de pare-feux ne fournit pas de
protection satisfaisante contre les attaques Web car ces applications sont par définition publiques et
accessibles à tous. Il est donc nécessaire d’auditer régulièrement les applications Web pour vérifier la
présence de vulnérabilités exploitables et ceci peut être réalisé notamment par des scanners de
vulnérabilités Web. Enfin, il est également fondamental de pouvoir détecter les tentatives d’attaques
à l’aide de systèmes de détection d’intrusions.
2- Tests d’intrusion
2-1 Qu’est ce qu’un test d’intrusion ?
Les tests d’intrusion constituent une tentative autorisée de simuler les activités d’un pirate qui veut
s’approprier des ressources qui ne sont pas les siennes, ou nuire au bon fonctionnement d’un
système d’informations, par exemple en le rendant indisponible.
Ces tests permettent d’avoir une image claire de la sécurité globale d’une entreprise ou d’un accès
Internet chez un particulier. Ils correspondent à des attaques simulées d’un réseau.
Ils permettent de tester la robustesse de la sécurité, d’apprécier l’efficacité des mécanismes mis en
œuvre. Il est ainsi possible de savoir si les mécanismes mis en place permettent de stopper ou non
un attaquant malintentionné.
Les tests d’intrusion ne peuvent pas se réduire à la simple utilisation d’un logiciel de détection
automatique de vulnérabilités par balayage. Ils sont bien plus, en particulier ils nécessitent
l’intervention d’une équipe de professionnels compétents qui eux vont identifier et qualifier les failles
de manière plus réfléchie et auront à l’esprit les conséquences des tests qu’ils effectueront.
Néanmoins, les scanners de vulnérabilité présentent un certain intérêt dans leur caractère
automatique mais ils ne suffisent pas à eux seuls à obtenir une bonne détermination des failles de
vulnérabilité que présente un réseau.
Figure 1 : la demarche utilisée dans les tests d’intrusion
3
4. 2-2 Les limites des tests d’intrusions :
Les tests d’intrusion peuvent échouer, ce qui ne signifie pas que le système ne présente pas de faille
de vulnérabilité.
Il est difficile voire impossible de tester toutes les failles de vulnérabilité présentes dans un réseau.
Les scanners de vulnérabilité par exemple ne simulent pas toutes les nouvelles failles. Certaines des
vulnérabilités ne sont pas prises en compte par ces derniers, soit parce que la vulnérabilité est
totalement inconnue, soit parce que la mise à jour du logiciel prenant en compte cette vulnérabilité
n’est pas encore disponible.
De plus, il est nécessaire de répéter de façon régulière ces tests. Tout ajout de matériel, l’apparition
de nouveaux outils de piratage ou de nouvelles technologies remettent en cause les résultats des
tests d’intrusion.
3-Etude théorique :
1-1 Présentation de Skipfish :
Skipfish est un scanner Open Source destiné à auditer la sécurité des sites et des applications Web. Il a
été mis en œuvre par Google et est destiné à aider les développeurs et les professionnels de la sécurité
dans leurs tâches d'audit des sites et des applications Web. Développé entièrement en C et
spécifiquement optimisé pour le protocole HTTP, Skipfish devrait avant tout se caractériser par ses
hautes performances. En effet, il arrive à envoyer près de 2000 requêtes http sur un serveur distant, si
bien sûr le serveur le supporte, et arrive à 7000 requêtes sur un serveur local.
Skipfish utilise des méthodes heuristiques automatisées, ce qui pourrait ainsi réduire le taux de faux
positifs. En effet, les résultats se basent sur une longue liste de vulnérabilités connues qui aurait été
établie sur la seule identification d'une bannière applicative, éventuellement usurpée. Parmi les tests
critiques (compromission du système), on notera les injections SQL, de commandes Shell et XPATH ,
ainsi que l'exploitation des vulnérabilités liées aux chaînes de format et aux dépassements d'entiers.
Les attaques XSS, Directory Traversal et CSS sont quant à elles classées dans les impacts modérés
(compromission de données). Skipfish est compatible avec les systèmes d'exploitation GNU/Linux,
FreeBSD et Mac OS X. Il peut également être utilisé avec les systèmes de type Microsoft Windows.
3-2 Pourquoi utiliser Skipfish?
Un certain nombre d'outils de commerciaux et open source avec des fonctions analogues sont
facilement accessibles (par exemple, Nikto ,Websecurify , Netsparker , w3af , Arachni ); s'en tenir à
celle qui vous convient le mieux. Cela dit, skipfish tente de répondre à certains des problèmes
courants associés aux scanners de sécurité Web. Avantages spécifiques comprennent:
Haute performance :Plus de 500 requêtes par seconde contre des cibles sensibles sur Internet, plus
de 2000 requêtes par seconde sur les réseaux LAN / MAN, et + de 7000 demandes à des instances
locales ont été observées, avec un très modeste processeur, réseau, et l'empreinte mémoire. Cela peut
être attribué à:
Multiplexage single-thread, réseau entièrement asynchrone E / S et le modèle de traitement
de données qui élimine gestion de la mémoire, la planification et l'inefficacité de la CIB
présente dans certains clients multi-thread.
Caractéristiques HTTP/1.1 avancées telles que les demandes de plage, la compression du
contenu et des connexions keep-alive, ainsi que la taille de réponse forcée de limiter, à
garder en tête au niveau du réseau en échec.
4
5.
Smart cache de réponse et le comportement de serveur avancé heuristiques sont utilisés
pour réduire le trafic inutile.
Axé sur la performance, la mise en œuvre de C pur, y compris une pile HTTP personnalisé.
Facilité d'utilisation: skipfish est très adaptable et fiable. Les fonctions de numérisation:
Reconnaissance heuristique des régimes de chemin et manipulation des paramètres basés sur
une requête obscure.
Manipulation gracieux des sites multi-cadres où certains chemins obéissent un tout autre
sémantique, ou sont soumis à des règles de filtrage.
Construction de liste de mots automatique basée sur l'analyse de contenu de site.
Balayage probabiliste dispose pour permettre des évaluations périodiques, assortis de délais
de sites arbitrairement complexes.
Contrôles de sécurité bien conçus: l'outil est censé fournir des résultats précis et significatifs:
Sondes différentielles trois étapes sont préférés à des contrôles de signature pour la
détection de vulnérabilités.
Contrôles de sécurité groupés sont conçus pour gérer des scénarios difficiles: XSS stockée
(chemin, paramètres, en-têtes), SQL aveugle ou injection XML, ou la coquille aveugle
injection.
Rapport de post-traitement réduit considérablement le bruit causé par les faux positifs
restants ou des trucs du serveur par l'identification des motifs répétitifs.
Skipfish se révèlerait moins gourmand en mémoire que les solutions existantes telles que Niktot ou
Nessus mais également plus facile d'utilisation et présentant des résultats de meilleure qualité. Son
créateur ajoute tout de même : « Skipfish n'est pas pour autant le remède miracle et peut ne pas
être adapté à certains cas de figure. ».
4-Mise en pratique de : Skipfish
4-1-Prérequis nécessaires
Il faut disposer :
Machine virtuelle : Backtrack 5
D’accès Internet
4-2-Installation
Skipfish n'étant pas disponible dans les dépots Linux (ubuntu ou autres), on ne pourra pas l'installer
par un simple apt-get install, pour cela il faut suivre les étapes suivantes :
Etape 1 : téléchargement de skipfish
On télécharge le dossier compressé des dépôts de google
5
6. # wget http://skipfish.googlecode.com/files/skipfish-1.26.tgz
Capture d’écran:
Etape 2 : Décompression du dossier
On utilise la commande :
# tar zxvf skipfish-1.26b.tgz
Signification:
z: type d’archive gzip
v : (verbose/parlant) permet d'obtenir une description des fichiers désarchivés (facultatif)
x : (extract/extraire) pour extraire les fichiers
f : (file/fichier) pour désigner l'archive contenant les fichiers (donnée en paramètre)
Capture d’écran:
Étape 3 : Installation de la bibliothèque que Skipfish aurait besoin pour son exécution
Par les commandes :
#apt-get install libidn11-dev
#apt-get install libssl-dev
Capture d’écran :
6
7. Étape 4 : installation
On se met dans le répertoire skipfish puis on exécute la commande make pour lancer la denière
étape d’installation :
# cd skipfish
# make
Capture d’écran:
4-3-Utilisation
Étape 1 : fichier dictionnaire
Il est nécessaire de copier et renommer le fichier dictionnaire à utiliser (minimal, default, complete,
etc.) dans le répertoire skipfish.
La commande:
#cp dictionaries/default.wl skipfish.wl
Étape 2 : Création du dossier où nous allons placer le rapport du Scan
Capture d’écran :
7
8. Étape 3 : Lancement de l’analyse du site web de l’ENS A
Pour lancer le scan, il suffit tout simplement de se rendre dans le dossier Skipfish en mode super
utilisateur (root) et d'exécuter la commande suivante :
# ./skipfish –o /home/Skipfish_User/scan_Report/ http://www.ensa.ac.ma
Les options que nous pouvons utiliser dans skipfish sont :
-o
-m
-B
-L
-V
-Y
indique le dossier dans lequel le fichier de rapport sera enregistré
nombre maximal de connexions établies
ne va pas dans les sous domaines
interdire un auto_aprentissage de nouveaux mots clés
ne pas mettre à jour la liste de mot extraite du scan
inclure les extensions dans le dossier de brute-force
4-4-Vulnérabilités détectées
Les vulnérabilités sont classées selon un degré de dangerosité pour le site web : les couleurs devant
les failles détectées expliquent cela et on a bien sûr dans le rapport une légende pour expliquer à
quel type de vulnérabilité appartiennent les vulnérabilités détectées.
On se met dans le répertoire où nous avons les résultats du scan et on lance firefox pour voir les
résultats :
Résultat du scan de www.ensa.ac.ma:
8
9. On commencera donc par expliquer la vulnérabilité haut risque (High risk flaws (potentially leading
to system compromise):
Integer overflow : L'affectation d'un entier non-signé 32 bits à un entier non-signé 16 bits
permettait de modifier l'index d'une table dans laquelle des valeurs étaient écrites pour cibler
des endroits non-autorisés dans la mémoire.
SQL injection: Un programme permettant de soumettre à une base de données des requêtes
SQL malformées ou trop génériques.
Nous avons ensuite les failles de bas rique (Low risk issues (limited impact or low specificity)), c'est
à dire qui ont un impact limité ou spécifique sur le serveur:
HTML forms with no XSRF protection: Les attaques de type XSRF utilisent l'utilisateur
comme déclencheur, celui-ci devient complice sans en être conscient. L'attaque étant
actionnée par l'utilisateur, un grand nombre de systèmes d'authentification sont contournés.
External content embedded on a page : Un contenu externe est intégré dans la page.
Nous avons également des failles qui concernent des données entrées comme par exemple à la base
de données (Non-specific informational entries):
Server error triggered: nous pouvons là avoir deux types d'erreurs :
- Error establishing a database connection : problème sur la base de données ou
problème de configuration
- 500 Internal Server Error : mauvaise configuration du site
Resource not directly accessible : Les erreurs de la Base de Données
New 'X-*' header value seen : ici aussi nous avons relevé deux types de failles qui sont
- X-Powered-By : informe sur les failles du serveur (affiche la version de php utilisée)
- X-Pingback : notifie l'auteur lorsque quelqu'un accède à l'article
9
10.
New HTTP cookie added
- PHPSESSID : En cas d'ouverture de session, si les cookies ne sont pas disponibles,
alors le paramètre PHPSESSID est ajouté à l'url.
5-Conclusion :
De nos jours, les applications Web sont à la fois beaucoup plus répandues et beaucoup plus
complexes que celles des années 2000. Le développement du Web dynamique et la richesse
fonctionnelle qu’offrent les nouvelles technologies du Web permettent de répondre à un grand
nombre de besoins. Néanmoins, cette richesse fonctionnelle s’accompagne d’une complexité
grandissante, et cette progression va de pair avec une multiplication de nombre de vulnérabilités
informatiques publiées, offrant une surface d’attaque conséquente. De ce fait, aucun serveur Web
n’est sûr à 100% et les applications Web sont devenues de plus en plus vulnérables et exposées à des
attaques malveillantes pouvant porter atteinte à des propriétés essentielles telles que la
confidentialité, l’intégrité ou la disponibilité des informations. Pour faire face à ces menaces, il est
primordial de développer des techniques efficaces permettant d’aider les développeurs et les
administrateurs des applications Web à identifier les vulnérabilités résiduelles dans ces applications
et aussi à évaluer l’efficacité des outils de détection d’intrusions qui sont conçus pour faire face à des
attaques visant à exploiter ces vulnérabilités.
10