10
Rapport du projet : Proposé par : Mr. ABOU EL KALAM Anas Réalisé par : EL ANBAL Mounia MOUACHI Raja NKILA Bouchra Skipfish -Scanner de vulnérabilités- Ecole Nationale des Sciences Appliquées Marrakech GRT5- 2013/2014-

mise en pratique de l'outil Skipfish

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: mise en pratique de l'outil Skipfish

Rapport du projet :

Proposé par :

Mr. ABOU EL KALAM Anas

Réalisé par :

EL ANBAL Mounia

MOUACHI Raja

NKILA Bouchra

Skipfish -Scanner de vulnérabilités-

Ecole Nationale des Sciences Appliquées – Marrakech GRT5- 2013/2014-

Page 2: mise en pratique de l'outil Skipfish

2

SOMMAIRE

1-Introduction

3

2- Tests d’intrusion

3

2-1 Qu’est ce qu’un test d’intrusion ?

3

2-2 Les limites des tests d’intrusions

4

3-Etude théorique

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 10

Page 3: mise en pratique de l'outil Skipfish

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

Page 4: mise en pratique de l'outil Skipfish

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.

Page 5: mise en pratique de l'outil Skipfish

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

Page 6: mise en pratique de l'outil Skipfish

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 :

Page 7: mise en pratique de l'outil Skipfish

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 :

Page 8: mise en pratique de l'outil Skipfish

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 indique le dossier dans lequel le fichier de rapport sera enregistré -m nombre maximal de connexions établies -B ne va pas dans les sous domaines -L interdire un auto_aprentissage de nouveaux mots clés -V ne pas mettre à jour la liste de mot extraite du scan -Y 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:

Page 9: mise en pratique de l'outil Skipfish

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

cli
Texte surligné
cli
Texte surligné
cli
Texte surligné
cli
Texte surligné
Page 10: mise en pratique de l'outil Skipfish

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.