Audit de Code Pentest

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 11

AUDIT DE CODE

TESTS INTRUSIFS - INGÉNIERIE SOCIALE

Document réalisé par :


Aliou Dadal KA,
Ouleye Lam,
Cheikh Tidiane Guèye,
Ndeye Coumba Ndao,
Khorédia Kébé,
Mamadou Lamine Tamba,
Fanta Barry,
Souleymane Youm,
Habib Diallo,
Jean Ndong,
Abdoulaye Diallo,
Contexte

1 Audit de code
1.1 Qu’est-ce que l’audit de code ?
1.2 Les éléments à auditer au sein de l’entreprise Béta
1.3 Comment réaliser l’audit de code (méthodologie) ?

2 Test d’intrusion
2.1 Type de test d’intrusion
2.2 Comment se déroule un test d’intrusion basé sur l’ingénierie
sociale dans notre cas d’étude ?
2.3 Comment exploiter le pentest d’ingénierie sociale ?
3 Quelle suite à un audit de code, un test d’intrusion
3.1 Mesure de sécurité et bonnes pratiques à implémenter
3.2 Analyse Complémentaire
3.3 Fréquence des tests d’intrusion
Contexte

La tendance actuelle est au renforcement des exigences sécurité des clients, partenaires et
investisseurs. Les audits de sécurité se sont démocratisés aux petites et moyennes entreprises,
pour qui ils représentent un passage obligé afin de pouvoir collaborer sur des sujets IT avec des
grandes entreprises. En effet, les grands-comptes intègrent quasi systématiquement des
demandes de rapport d’audits de sécurité dans leurs processus d’achats. Les entreprises
commencent à prendre conscience des enjeux de sécurité des données, dans des secteurs
d’activité où la prise en compte des risques était auparavant peu élevée. Les certifications en
sécurité (ISO 27001, HDS, PCI-DSS, SOC2…) sont de plus en plus plébiscitées par les
entreprises de petite et moyenne taille, afin de se différencier et de faire de la sécurité un axe
de qualité. C’est dans ce contexte que l’entreprise Béta fait appel à des auditeurs, afin de
connaitre l’état des lieux du niveau de sécurité de son système informatique.
Il existe plusieurs types d’audits de sécurité, dont principalement : les audits organisationnels,
les audits techniques, et les tests d’intrusion. Ces différents types d’audits peuvent s’appliquer
à un périmètre plus ou moins étendu, selon que l’entreprise souhaite évaluer tout son SI ou
seulement certains domaines identifiés comme étant prioritaires. Nous nous focalisons dans cet
étude sur les audits techniques plus spécialement, l’audit de code et les tests d’intrusion (test de
pénétration ou pentest).
L’audit de code

1.1.Qu’est-ce que l’audit de code

L’audit de sécurité de codes fait partie de l’ensemble des audits de sécurité qui permettent
d’évaluer le niveau de sécurité d’un ou plusieurs composants d’un système d’information. La
revue du code source est ainsi une étape primordiale qui permet d’identifier les
implémentations ciblées par l’analyse et d’en évaluer la conformité. En effet, l’audit de code
est une pratique consistant à parcourir le code source d’un logiciel afin de s’assurer du respect
de règles précises.
1.2.Les éléments à auditer au sein de entreprise Béta

Après étude du texte, nous avons remarqué ces quelques applications qui nécessitent un audit

de code pour une meilleure sécurisation de son système : L’ERP TAWFEKH, Sage People,

l’outil GLPI.

1.3.Comment réaliser l’audit de code (méthodologie) ?

OWASP est une référence sur la sécurité des applications web, il publie annuellement une liste
des 10 vulnérabilités les plus exploitées sur la toile.
Pour faire un bon audit de code, on peut procédé ainsi, en prenant en compte le référencement
d’OWASP :
a°/ Définition des objectifs
L’audit de code vise ici à relever les vulnérabilités des outils métiers utilisés par l’entreprise
Béta, mais également on essayera de mettre l’accent sur les leviers à actionner pour améliorer
leur performance.
Vu qu’on a pas à notre disposition, les documents technique et fonctionnels de ces dits logiciels,
nous ne pouvons que se baser sur les informations mentionnées dans le fichier. Et à notre avis
elles ne sont pas suffisantes pour la réalisation de l’audit de code en profondeur.
b°/Cependant, on peut envisager d’utiliser des outils d’audit tels que SonarQube, Themis entre
autre pour réaliser une analyse automatisée.
Elle permettra d’identifier rapidement des vulnérabilités, des codes dupliqués ou inutilisés et le
non-respect de règles de programmation.
Cette revue est effectuée par des outils d’analyse statique. Il existe des outils open-sources pour
tous les langages de programmation et frameworks. Pour atténuer les faux-positifs, on ne peut
pas toujours s’appuyer sur un seul outil, il peut être nécessaire d’associer les forces et faiblesses
de plusieurs outils pour obtenir un meilleur résultat.
c°/Revue Manuelle
Les modules de l’application les plus sensibles seront revus manuellement.
Un diagramme de flux de données, indiquant le cheminement des données au sein de
l’application, peut-être réalisé préalablement afin de faciliter l’identification des zones
importantes du code source.

Il n’est pas possible de vérifier automatiquement la logique d’une application et sa conformité


avec les demandes fonctionnelles. Une revue manuelle est donc indispensable et son étendue
doit être clairement définie à l’avance.

d°/Livraison
C’est une étape essentielle ! Un audit est inutile s’il n’est pas suivi de corrections.
Le livrable contiendra la liste des problèmes identifiés. Elle sera accompagnée du risque qu’ils
posent et de la façon de les corriger.
Le livrable contiendra également des remarques et conseils afin d’améliorer les documents
techniques. Il peut aussi servir de base pour de futurs audits.
Test d’intrusion

Un test d’intrusion consiste à tester la sécurité d’un système informatique en effectuant des
attaques dans le but d’identifier les vulnérabilités du système et de proposer des correctifs de
sécurité.
Les tests d’intrusion et les tests de vulnérabilités diffèrent de par leurs objectifs. Un test de
vulnérabilité repose sur des scanners automatiques qui permettent d’identifier rapidement les
failles les plus courantes. Le test d’intrusion va plus loin. Il inclut notamment la recherche de
failles logiques, non détectables par des outils automatiques, et une phase d’exploitation
manuelle des vulnérabilités identifiées. C’est une méthode d’audit de sécurité éprouvée plus
complète, qui permet de mesurer l’impact réel de tout type de faille.
Un test d’intrusion peut inclure des tests en boite noire, en boite grise ou en boite blanche. Les
tests en boite noire ciblent la surface d’attaque accessible à n’importe quel attaquant externe,
tandis que des tests en boite grise vont concerner des éléments disponibles uniquement à des
clients, des partenaires ou des salariés d’une entreprise. L’audit en boite blanche quant à lui
permet d’analyser le niveau de sécurité en disposant des mêmes accès qu’un administrateur du
système (serveur, application…).
Le livrable remis à la suite d’un test d’intrusion est un rapport d’audit de sécurité qui présente
les vulnérabilités identifiées, classifiées par niveau de criticité, ainsi que des suggestions
techniques de remédiation. En complément du rapport, une synthèse non technique peut
également être délivrée, pour présentation au comité de direction ou à des partenaires.
2.1. Type de test d’ intrusion

Le type de test d’intrusion est défini par rapport à l’environnement dans lequel il est réalisé. On
distingue notamment le pentest réalisé sur une plateforme Web qui, recherche des vulnérabilités
liées à la configuration des serveurs ou celle de la couche application. Mais aussi, nous avons
entre autre des tests d’intrusions basés sur l’ingénierie sociale. Ces derniers s’intéressent aux
facteurs humains de l’entreprise. Il permettent de tester les réactions des équipes face aux
tentatives de phishing, d’attaques téléphoniques et d’intrusion physique.
Les techniques utilisées sont par exemple l’envoi d’emails de phishing, incluant des clones
d’interfaces et des malwares, la récolte d’informations sensibles par téléphone, et l’utilisation
de clés USB piégées.
2.2. Comment peut se dérouler un test d’intrusion basé sur l’ingénierie sociale dans

notre cas d’étude ?

Dans notre cas, il s’agit de tester la sécurité du système informatique de l’entreprise Béta en
effectuant des tests d’intrusions. En effet pour cela, nous allons essayés d’exploiter les failles
(faiblesses) relevés notamment la mauvaise gestion des départs : avec une possible utilisation
de compte d’anciens employés. Avec un contrôle non suffisant des accès à la salle, on peut
même se rendre dans la salle serveur pour réaliser l’intrusion du système.
Le pentest social engineering peut être basé sur plusieurs techniques. Chacune demande à la
fois des compétences et des connaissances technologiques et aussi des compétences
relationnelles.
Le phishing est une technique très répandue, car très simple à mettre en place et souvent très
efficace. Par exemple un ancien employé de Béta, ayant une certaine rancune, peut adopter cette
technique et exploiter la période de sensibilisation à la sécurité informatique, en envoyant un
email frauduleux aux différents collaborateurs. Dans cet email, il reprend le design du Groupe.
Le but est d’amener le destinataire à cliquer sur des liens présents dans le message qui le
conduiront à un site lui aussi falsifié. L’exemple typique de phishing est l’email que vous
recevez soi-disant de votre banque et qui vous demande d’aller sur un site pour changer votre
mot de passe parce qu’il a été piraté. Une fois sur le faux site, l’utilisateur saisit son identifiant,
son ancien mot de passe et un nouveau. Ces informations sont collectées par le pirate qui n’a
plus qu’à les utiliser.
Vu que les accès physiques aux équipements de l’entreprise Béta de Dakar, sont faiblement
sécurisés. La technique du pentest par intrusion physique est alors largement envisageable.
Cette technique consiste à s’introduire dans les locaux de l’entreprise. Le pirate se fera passer
pour quelqu’un ayant un motif légitime de se trouver dans l’entreprise. Il pourra prétendre être
un salarié, un prestataire, un client ou un technicien devant intervenir sur un équipement
quelconque. Une fois à l’intérieur, il aura alors différents moyens d’obtenir les informations
sensibles qu’il est venu chercher :
• Connexion au réseau,
• Utilisation d’un support contenant un malware,
• Manipulation psychologique,
• Utilisation d’un poste non verrouillé, …
2.3. Comment exploiter le pentest sur l’ingénierie sociale

A l’issue du test d’intrusion, un rapport complet sera remis à l’entreprise.


Contrairement à d’autres pentest, les recommandations seront rarement techniques. Il s’agira là
plus de sensibilisation des équipes au danger représenté par ce type d’attaque. Des
recommandations seront détaillées sur la façon de former les collaborateurs afin de les
sensibiliser aux différentes techniques d’ingénierie sociale.
De plus, une communication efficace devra être mise en place.
L’objectif est que chaque collaborateur soit sensibilisé au problème et ait les bons réflexes pour
repérer et signaler toute communication ou demande lui paraissant suspecte.
Quelle suite à un audit de code et pentest?

3.1.Mesure de sécurité et bonnes pratiques à implémenter

Concernant les recommandations pour une optimisation de votre environnement de travail,


nous allons spécialement se référer aux normes ISO/CEI 27002.
La norme ISO/CEI 27002 présente des techniques de sécurité et les meilleurs pratiques pour la
gestion de la sécurité de l’information et des technologies de l’information.
Elle n’est pas obligatoire pour votre entreprise mais, cette norme constitue une bonne référence
pour des contrats Business To Business(B2B).
À travers de son chapitre sur le Sécurité de l’information : la norme recommande de mettre
en place une politique de sécurité de l’information (PSSI) et d’effectuer sa revue périodique.
Dans notre cas il s’agira d’appliquer la politique du siège d’Abidjan.

Sécurité liée à l’exploitation : Pour mieux gérer les changements, une séparation des
environnements est souhaitable, le déploiement d’antivirus pour pallier aux codes malveillants
et la journalisation des événements les plus pertinents est également nécessaire pour les
processus métiers.
Gestion des incidents : signalement des incidents, des failles, recueil des preuves à travers les
logs du serveur
Sécurité physique et environnementale : mesure de sécurité pour la salle des machines,
utilisation convenable des équipements, et une maintenance adéquate
Sécurité des communications : subdiviser le réseau le plus possible pour éviter d’avoir un
grand réseau avec des ramifications, éviter d’avoir des conversations confidentielles dans les
lieux publics,
Développement et maintenance des systèmes d’information : Changement
applicatif =>revue technique, de code et faire un suivi pour voir son application.
Cryptographie : Chiffrer les échanges lorsque les liaisons ne sont pas considérées comme sûre
par exemple en cas d’échange entre serveurs distants.
Gestion des actifs : Classification de l’information afin de mettre en évidence les données,
actifs les plus sensibles,
Sécurité des ressources humaines : Préciser les critères de sélection d’un employé, clarifier les
règles de sécurité applicable aux salariés même en cas de départ.
Relations avec les fournisseurs : Établir une PSSI destiné aux fournisseurs, ils doivent être en
mesure d’apporter la preuve qu’il respecte ces engagements en matière de sécurité
Contrôle d’accès : établir une liste qui référencie les personnes qui auront accès aux différentes
ressources, et appliquer une certaine rigueur au contrôle.
Bonnes pratiques pour le développement

Dans le développement, la conception il peut être intéressant d’identifier les exigences de


sécurité, notamment :
• Rôles dans l’application (admin, gestionnaire, développeur, invité)
• Mettre en place le Throtteling (limiter le nombre de requêtes) pour atténuer les attaques
par force brute et par déni de service.
• Identifier les données à chiffrer (courriel, informations confidentielles, …)

Augmenter la capacité des Développeurs à éviter, découvrir, et corriger les vulnérabilités, en


faisant la promotion de la revue de code, de mise à jour en continue et des normes de codage
sécurisé.
Les normes de codage sécurisé est spécifique à chaque langage de programmation. Nous
pouvons vous citer quelques lignes directrices par rapport au codage sécurisé :
• Nettoyer les entrées,
• Éviter les fonctions dangereuses (exec, …)
• Refuser l’accès par défaut,
• Mise à jour des versions et dépendances,
• Bonne gestion des erreurs et journalisation
• Modélisation des menaces, en faisant un listing de nos menaces potentiels, des ports
ouverts, avec un certain nombre d’outils de modélisation.

La norme 27002 est une référence internationale et elle permet de faire évoluer nos pratiques
pour tendre vers une sécurisation optimale.

3.2.Analyse Complémentaire

Suite à un test d’intrusion, il peut être recommandé de conduire des analyses complémentaires,
par exemple :
• Tests d’intrusions plus approfondis, ou sur des portions de la cible non inclues dans le
périmètre du test précédent
• Audits en boite blanche, pour pousser plus loin l’analyse sécurité
En fonctions des vulnérabilités identifiées, les analyses sécurité peuvent être complétées par
des formations en sécurité pour des équipes techniques et/ou non-techniques.

3.3.Fréquence des audits

Un audit de sécurité fournit un état des lieux du niveau de sécurité d’une cible à un instant T.
Se pose alors la question de la fréquence à laquelle reconduire ce type de tests.
Cela dépend du niveau de risque auxquels est exposée l’entreprise, des enjeux réglementaires
et commerciaux autour de la cible, du degré d’exhaustivité de l’audit précédent, de la fréquence
des évolutions techniques et fonctionnelles de la cible. Dans certains cas, le choix sera mensuel
et d’autre annuel.

Vous aimerez peut-être aussi