Des vulnérabilités à l’Exploit

Le 5 septembre 2016| Rédigé par Erwan Brouder| Posté dans Blog

Des vulnérabilités à l’Exploit

L’exploitation d’une vulnérabilité est une étape importante dans un test d’intrusion, il va permettre d’illustrer la présence de la vulnérabilité et placer l’auditeur dans la peau d’un attaquant. Pour un attaquant, cette exploitation va lui permettre de remplir son objectif : détourner le fonctionnement d’un système, voler des donnes, réaliser des opérations bancaires, etc.., ou plus généralement porter atteinte aux intérêts d’une entreprise ou d’une organisation.

Mieux comprendre la phase d’exploitation est nécessaire pour évaluer la menace et mettre en place les protections nécessaires. L’exploitation d’une vulnérabilité est effectuée par un programme informatique que nous appelons un « exploit ».

Ces exploits peuvent être réalisés :

  • En local : Le code d’exploitation est exécuté directement sur la machine cible.
  • En remote : Le code d’exploitation est exécuté sur une machine tierce et accède à sa cible à travers le réseau.

De nombreux exploits sont disponibles sur internet et permettent d’exploiter des vulnérabilités connues. Les auditeurs / pentesteurs développent également leurs propres programmes pour exploiter des vulnérabilités publiées.

D’autres vulnérabilités n’ont pas été publiées (Odays), elles ne sont pas encore connues, mais sont en vente sur les black market avec les codes d’exploitation associés. Nous en avons déjà discuté dans cette newsletter, ces nouveaux marchés permettent à des attaquants avec un niveau de connaissance faible de lancer des attaques complexes.

Lors d’un audit, les auditeurs vont étudier les différents systèmes cibles afin d’identifier des vulnérabilités spécifiques et de développer les codes d’exploitation associés. Cette expertise va permettre de simuler un attaquant avec des compétences avancées en intrusion. La recherche d’une vulnérabilité est effectuée généralement en effectuant :

  • Du Reverse Engineering, ce qui va permettre de comprendre le fonctionnement interne de l’application et d’identifier les vulnérabilités potentielles.
  • Du Fuzzing, ce qui consiste à injecter de manière aléatoire des données dans les entrées d’un programme pour identifier des réactions non prévues.

L’étape suivante consiste à reproduire ces « crashs » et de remplacer des éléments légitimes du programme par du code malicieux (Shell code) afin de contrôler le programme exécuté et lui faire exécuter des commandes réaliser des actions (Payload) comme l’ajout d’un utilisateur, l’ouverture d’un Shell, etc…

Les attaquants disposent de squelettes d’exploit ou d’outils qui leur permettent de programmer rapidement ce type de programme.

Notons que l’exploitation de ces vulnérabilités, non-connues et non publiées, permet aujourd’hui à des attaquants de réaliser de nombreuses actions de manière quasi furtive sur des systèmes d’information à distance. Les états et les groupes HACKtivites ont des moyens importants à la fois dans la recherche de vulnérabilités et dans le développement des exploits associés.

Jean-Philippe PAGADOY, consultant en sécurité des systèmes d’information et pentesteur.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *