Présentation effectuée au Rencontres Mondiales du Logiciel Libre (RMLL) 2017 par Christophe Villeneuve sur "Les tests de sécurité".
Vous allez voir comment mettre en place des tests de sécurité de façon automatique à partir de logiciels libres
1. Les tests de sécurité
Christophe Villeneuve
@hellosct1
2. Qui ???
Christophe
Villeneuve
mozilla reps - firefox os - B2GOS - ausy - afup – lemug.fr – mysql – mariadb – drupal – demoscene – firefoxos – drupagora – phptour – forumphp – solutionlinux – Libre@toi – eyrolles – editions eni – programmez – linux pratique – webriver – phptv – elephpant - owasp -security
3. RMLL 2017 – 4 Juillet 2017
Ce qu'il vous attend...
●
Aborder les tests de sécurité
●
Mesurer votre qualité de sécurité Web
●
La sécurité avec vos outils Open Source
5. RMLL 2017 – 4 Juillet 2017
L'importance des tests
●
Pourquoi c'est utile ?
– Le code peut casse
– Changer le nom d'un fichier
– Pas le temps d'en faire
– C'est long manuellement
●
Et l'intérêt…
– Coûte du temps au début
– En fait gagner ensuite
– Nécessite de la rigueur
et de la constante
6. RMLL 2017 – 4 Juillet 2017
Les différents types de tests
●
Tests unitaires
●
Tests fonctionnels
●
Tests intégrations
●
Tests Automatisés
●
Tests de charges
●
Tests d'ergonomie
●
Tests de sécurité
7. RMLL 2017 – 4 Juillet 2017
Humour : la sécurité
Ca ne sert rien
C'est de la vente forcée
Ce n'est pas pour moi
8. RMLL 2017 – 4 Juillet 2017
Les points douloureux dans le Cloud Computing (2014)
source : Cloud Computing - Wave 7 www.451research.com - 2014
10. RMLL 2017 – 4 Juillet 2017
Les risques
●
Ne connaissent pas
– L'étendue des risques liés à la sécurité de leur site
●
Significations du terme « piratage »
– voir définition Wikipedia
●
Et surtout :
– Vol d'informations
– Usurpation d'identité
– Indisponibilité de service
– Défiguration de site
– Désinformation
11. RMLL 2017 – 4 Juillet 2017
●
Des sites référencent
– Sur les failles
– Les alertes (veilles / R&D)
●
Leurs métiers
●
Des scanners
●
...
La vie du hacker
12. RMLL 2017 – 4 Juillet 2017
Les différents types d'attaques (1/2)
●
Matériels ●
Périphériques ●
Smartphones
13. RMLL 2017 – 4 Juillet 2017
Les différents types d'attaques (2/2)
●
Internet des
Objets
●
Le web●
Logiciels
20. RMLL 2017 – 4 Juillet 2017
●
Systèmes trop verbeux
– DNS / Réseaux
●
Système
d'authentification faible
– SSH
●
La gestion des droits
– Maillons faibles
●
Les mots de passes
systèmes
– Admin du poste / compte
utilisateur
●
Bases de données
– Stockage des
informations sensibles
●
Partage de fichiers
– Périphériques hardware
●
Serveurs à l'abandon
●
Vulnérabilités web
– Voir les rapports
OWASP
Identifier les risques
21. RMLL 2017 – 4 Juillet 2017
Le mode parano
●
Pour le service informatique
– Les tests de pénétration
●
Tous les sites
– Les Firewall / Parefeu web
●
Toutes les 3 à 4 semaines
– Analyser le code
●
Toutes les 2 semaines
22. RMLL 2017 – 4 Juillet 2017
Analyse des freins...
●
Temps d'installation
●
Durée
●
Temps d'analyse
24. RMLL 2017 – 4 Juillet 2017
Quoi faire ?
●
Un processus dans un déploiement continue
– En différentes petites étapes
●
Exemple : Regardons les sites actuels
– Dans leur cycle de déploiement
~6 secondes ~11 secondes
Plusieurs fois par jours
25. RMLL 2017 – 4 Juillet 2017
Contrôle de sécurité (1/2)
●
Intégrer les Risques IT
– Stratégie métier et modèle opérationnel à la
cartographie
●
Développer les synergies
– Des filières Risque, Contrôle, Sécurité et Continuité
●
Adopter un modèle de protection
– Les secrets et données personnelles proportionné
●
Industrialiser
– Un accompagnement de sécurité des projets métiers
26. RMLL 2017 – 4 Juillet 2017
Contrôle de sécurité (2/2)
●
Stimuler
– La gestion des identités et des accès
●
Outiller
– La détection et la réaction aux incidents
●
Innover et soutenir les équipes projets
– Notamment dans la relation avec leurs multiples sous-
traitants
https://www.beijaflore.com/fr-fr/expertises/syst%C3%A8mesdinformation/risquessi,s%C3%A9curit%C3%A9contr%C3%B4les.aspx
27. RMLL 2017 – 4 Juillet 2017
Déploiement continue
Développement
Serveur
validation
Serveur
intégration
Outils SCA
Tâches répétitives
- Analyse de code
- Contrôle du code
- Déclencheur Build
Serveur
Préprod
Serveur
production
Tests de sécurité
automatisé
Report
&
Notification
29. RMLL 2017 – 4 Juillet 2017
Plan de sécurité
●
Identifier les API et les
frameworks
●
Imprimez les portions du
code de sécurité
(mécanisme)
– Authentification
– Mot de passe
●
Planifiez-le●
Anticipez les problèmes
réglementaires
30. RMLL 2017 – 4 Juillet 2017
Sensibiliser les développeurs
●
Les rapports OWASP
– TOP 10 Web
– TOP 10 mobile
– TOP 10 IoT
●
Analyser le code dans l'Intégration continue
31. RMLL 2017 – 4 Juillet 2017
Equiper les développeurs
●
Utilisation des frameworks sécurisés et reconnus
– Spring Security, JAAS, Apache Shiro, Symfony2,
Drupal...
●
Le framework OWASP
– ESAPI
●
Outils de Feedback sur la sécurité avant l'étape de
validation
– Ex : librairie SCA dans un IDE
ATTENTION : Librairies externes / anciennes
32. RMLL 2017 – 4 Juillet 2017
Automatisation
●
Associé dans les outils de déploiement (Build)
– Jenkins, Bamboo, TeamCity, etc.
●
Test de sécurité statiques de vos API
– (SAST = Static Application Security Testing)
– Top 10 Strategic Technology Trends
●
Test dynamique de sécurité des applications
– (DAST = Dynamic Application Security Testing)
Résultat faible
Bloquer le processus
33. RMLL 2017 – 4 Juillet 2017
Outils de tests de sécurité automatisé
●
Plateforme de tests d'intrusion
– Metasploit, Aircrack-ng
●
Tests résistence d'un password
– John the ripper
●
Audit de monitoring, réseaux
sans fil
– Aircrack-ng
●
Sniffer, analyseur protocoles
réseau & applicatif
– Wireshark
●
Scanner de ports,
vulnérabilités
– Nmap
●
Récupération mot de passe
– Cain & Abel
●
Emulation Navigateur web
– Paros Proxy, charles proxy
●
Capture de requêtes, proxy
applicatif
– Zed Attack Proxy, Paros Proxy
●
Audit des applications web
– Burp Suite, Wfuzz, spiderfoot,
cerveau
34. RMLL 2017 – 4 Juillet 2017
Tâches répétitives
●
BDD = Behaviour-Driven Development
– Développement axé par le comportement
Given / When / Then
– Décrire les exigences de sécurité et performance
●
Test de sécurité (non) automatisé fonctionnel !
●
Combinez avec d'autres outils
– Owasp ZAP, Nessus, Port Scanning...
●
Test écrits : Behat /Jbehave
Cas 1
35. RMLL 2017 – 4 Juillet 2017
Tâches répétitives : exemple
Scenario: Mot de passe doivent être sensibles aux champs
Given un nouveau navigateur ou une instance client
When l'utilisateur par défaut se connecte
Then alors l'utilisateur est connecté
When le mot de passe a été changé
And les jetons d'authentification sur le client sont supprimés
And la page de connection s'affiche
And si l'utilisateur est connecté
Then l'utilisateur n'est plus connecté
Cas 1
Exemple 2 : Modification du mot de passe de son compte utilisateur
Exemple 1 : vérification si le champ mot de passe est renseigné
36. RMLL 2017 – 4 Juillet 2017
Tâches répétitives
●
Owasp Code Pulse
– Analyseur de couverture de code en temps réél
– Multi plateforme
– Surveille l'exécution de l'application cible à l'aide d'une
approche basée sur un agent
→ bas niveau
– Facilite la compréhension d'un test de pénétration DAST
dans une application
– Montre les parties couvertes sous une forme virtuelle
Cas 2Cas 2
37. RMLL 2017 – 4 Juillet 2017
Tâches répétitives : exemple Cas 2Cas 2
38. RMLL 2017 – 4 Juillet 2017
Tests automatisés
●
OWASP ZAP = Zed_Attack_Proxy
– Outils relevant la sécurité DevOps d'intégration
– Scan passive et active
– Analyse des Nœuds opérationnel sans provenance
– REST-API
●
Avec plusieurs liaisons de langue en tant que clients pré-
construits
– Scriptable
– Interface CLI
Cas 3
39. RMLL 2017 – 4 Juillet 2017
Tests automatisés : exemple Owasp ZAP + Jenkins
●
OWASP ZAP + Jenkins Plugin 'ZAProxy'
●
Permet d'analyser et de scanner à chaque étape
– A partir d'un 'job' via le plugin Jenkins
●
Configurer le plugin pour tester une URL
●
Plugin enregistre un rapport HTML dans le dossier du projet à
partir d'un 'job'
●
Possible d'utiliser de plusieurs ZAP proxy en parallèle avec
différents ports
→ pour faciliter l'analyse en parallèle
●
Conseils :
– Utilisation la nuit (durée)
– A exécuter comme travail séparé
Cas 3
40. RMLL 2017 – 4 Juillet 2017
Tests automatisés : Config Jenkins plugin 'ZAProxy' Cas 3
41. RMLL 2017 – 4 Juillet 2017
Tests automatisés : Config Jenkins plugin 'ZAProxy' Cas 3
42. RMLL 2017 – 4 Juillet 2017
Les tests de sécurité de tous les jours
Développement
Serveur
validation
Serveur
intégration
Outils SCA
Tâches répétitives
- Analyse de code
- Contrôle du code
- Déclencheur Build
Serveur
Préprod
Serveur
production
Tests de sécurité
automatisé
Report
&
Notification
43. RMLL 2017 – 4 Juillet 2017
Au final
●
La sécurité, c'est maintenant
– Il est toujours temps de s'en préoccuper
●
La sécurité ne doit pas être comprise
●
Il ne faut pas accablé
●
Commencer petit
44. RMLL 2017 – 4 Juillet 2017
Merci
@hellosct1
Questions