# Introduction au test logiciel/Tests d'intrusion

* Introduction
* Tests unitaires
** JUnit
** PHPUnit
** SimpleTest
** Behat
* Doublures de test
* Tests et conception
* Qualité des tests
* Intégration dans le processus de développement
* Problématiques de tests
* Tests d'intrusion
* Conclusion
Un test d'intrusion ou pentest, permet de vérifier la sécurité d'un système. Il s'agit de se prémunir de tout espionnage ou sabotage, en particulier venant d'Internet.

## Balayage de port

Le balayage des ports d'une machine permet d'identifier les points d'entrée potentiels depuis le réseau. Par exemple, le freeware Nmap permet de le faire automatiquement.
Une fois les ports ouverts listés, un autre programme peut tenter de s'y connecter par attaque par force brute . Pour s'en prémunir, certains pare-feu limitent le nombre de connexions par minutes, comme iptables.
En cas de présence d'un formulaire Web (port 80 ou 443), on vérifiera également l'absence de possibilité d'injection SQL (ex : via sqlmap). Elle peut-être assurée par les fonctions de gestion des caractères d'échappement (ex : mysql_escape_string de PHP).

## Scan de vulnérabilité

Des logiciels scanneur de vulnérabilité comme Nessus (ou son fork libre OpenVAS) permettent une planification régulière avec envoi de rapport par e-mail, des différentes vulnérabilités visibles depuis le réseau. Par exemple la présence de versions de logiciels avec une faille connue, des mots de passe trop simples, des relais de messagerie ouverts (pouvant être vecteurs de spams) ou des dénis de service. Pour ces derniers, il est recommandé de ne pas lancer le test pendant la production, afin de ne pas impacter les utilisateurs.

## Détection d'intrusion

Les outils comme Snort permettent de voir venir les attaques côté serveur :

## Intrusion physique

Si des personnes inconnues peuvent pénétrer les locaux, il faut sécuriser son BIOS. En effet, pour empêcher un individu de court-circuiter l'authentification du système d'exploitation, il faut lui interdire de booter sur une clé USB ou un CD, en définissant le système en premier dans l'ordre de boot, puis en protégeant l'accès au BIOS par un mot de passe.
Par ailleurs, pour l'empêcher de démonter le disque dur pour le lire depuis une autre machine, ou de réinitialiser le BIOS en enlevant la pile, la plupart des tours d'ordinateur possèdent un trou pour placer un cadenas.

## Tests en boite noire, grise et blanche

On distingue trois types de tests :
* Le test en boite noire consiste à lancer le test à partir de l'adresse de la cible uniquement.
* Le test en boite grise part d'un compte existant avec son mot de passe, pour voir s'il peut effectuer des élévations de permission par exemple.
* Le test boite blanche est réalisé avec une totale connaissance du système ciblé : code source, comptes...

## Normes

* PCI DSS impose de fermer telnet, et d'utiliser des clés de session strictement supérieures à 1024 bits.
Nessus propose d'ailleurs un type de scan pour cette norme.

## Références

* ↑ https://github.com/sqlmapproject/sqlmap/wiki/Techniques
* ↑ http://php.net/manual/fr/function.mysql-escape-string.php

## Voir aussi

* Metasploit
* Catégorie:Sécurité informatique sur Wikipédia
* FOSS Network Infrastructure and Security/Security Functions with FOSS sur Wikilivres (en anglais)
* Snort sur Wikilivres (en italien)
* w3af sur Wikipédia (en anglais)