Bonsoir à tous.
Devant le nombre, toujours plus croissant, de membres posant l'éternelle question "Par où commencer si je veux apprendre le Hacking ?", et devant le réel manque de sources regroupant tous les points importants en une seule documentation, il devenait donc nécessaire de mettre à disposition de tous une forme de cette documentation.
Je me propose donc dans ce post de vous donner quelques pistes afin de commencer votre initiation ; je m'efforcerai d'être le plus précis possible, de hiérarchiser les informations afin que ça ne parte pas dans tous les sens.
Bien évidemment cette documentation est entièrement subjective et basée sur mon expérience, elle conviendra à certains et ne sera peut être pas faite pour d'autres.
NOTE : cette documentation s'adresse aux personnes curieuses, motivées et intéressées par le Hacking. Pirates, carders et autres, vous pouvez passer votre chemin, cela ne vous intéressera pas.
I. Le Hacking : un Art à part entière
A) Histoire
Historiquement, nous sommes dans les années 70. Les grandes institutions technologiques commencent à prendre leur essort, et notamment le Masachusset Institute of Technology (MIT).
Au fond des laboratoires d'électronique du MIT, les ingénieurs commencent à s'intéresser à l'utilisation transverse des technologies ; c'est à dire, comment les dévier de leurs fonctions initiales afin de leur faire réaliser d'autres objectifs que ceux auxquels elles sont destinées.
La première démonstration de ce que l'on nommera plus tard le Hacking, est faite par un ingénieur en automatique du MIT ; devant un commité composé de chercheurs, il montrera une version modifiée d'une locomotive électrique (modélisme) détournée de son usage initial. En modifiant un transistor de réception infrarouge, il avait réussi à transformer cette locomotive en un brouilleur de signal.
Le Hacking est né.
Par la suite, de nombreux ingénieurs à travers le monde commencèrent à démontrer les failles techniques des technologies connues comme sûres auparavant. Devant cette nouvelle tendance s'est vite imposée la nécessité de partager le plus vite et le plus loin possible les informations dans le but d'accélérer les travaux de recherche sur tout le globe ; nous nous sommes donc tout naturellement tournés vers les ordinateurs, qui n'en étaient qu'à leurs prémices technologiques.
Dans l'optique d'une communication toujours plus rapide, mais aussi dans l'intention de se servir des ordinateurs comme d'outils de recherche, les ingénieurs spécialisés (notamment au MIT et au CIT) ont alors libéré toute la documentation technique acquise au fil des années, et à partir de là, les performances des ordinateurs ont été améliorées de façon exponentielle.
Avec l'aide d'un Internet naissant, c'est un véritable réseau de partage qui s'est instauré. Des communautés d'experts et de spécialistes se sont composées dans le but de centraliser les connaissances accumulées au sein d'élites internationnales.
Ce sont ces mêmes experts qui furent à l'origine des premiers véritables protocoles de communication réseau permettant une interconnexion globale de toutes les machines reliées à Internet.
La facilité déconcertante avec laquelle l'on pouvait accéder à n'importe quelle machine connectée amena la question de la Sécurité.
C'est dans les années 90 que les experts en sécurité se mettent systématiquement à traquer toute faille ou bug potentiels dans les protocoles réseaux mis en place, et à fournir une documentation à double finalité : expliquer la faille trouvée et comment on pourrait l'exploiter, et également fournir le correctif (manuel à l'époque) afin de le sécuriser.
Cependant, à cette période la majorité des machines connectées à Internet (serveurs professionnels comme ordinateurs particuliers) sont faillibles et exploitables ; la documentation sur la façon d'exploiter ces failles (dans un but totalement pédagogique) étant fournie par les experts et la lenteur des administrateurs à corriger les failles - à cette époque on ne prend pas au sérieux les problèmes de sécurité car les administrateurs ne connaissent pas le danger d'une exploitation, la mentalité unique à la base du partage de connaissance se fractionne.
D'un côté se placent les experts en sécurité traquant et réparant toute faille trouvée, et de l'autre une communauté naissante adhérant à une toute nouvelle pensée : si ces failles existent, pourquoi ne pas les exploiter ?
A partir de là la mentalité "Pirate" se développe. Il ne faut cependant pas oublier que les personnes ayant les compétences nécessaires à la compréhension et l'exploitation de ces failles sont très peu nombreuses, et sont en majorité des experts en sécurité basculant du "mauvais" côté.
C'est véritablement au début des années 2000, avec l'avènement des logiciels d'automatisation et de la décomplexification des protocoles, que les pirates sans grandes connaissances commencent à affluer et perpétrer leur action de destruction.
B ) Définir le Hacking
Le Hacking c'est avant tout la curiosité, car c'est cette dernière qui pousse l'esprit à perpétuellement chercher la Connaissance. L'envie de regarder derrière le rideau, s'affranchir des idées reçues ou des objectifs préconçus d'une technologie pour en repousser les limites.
Ensuite, l'imagination est une composante indissociable du Hacking, pouvoir envisager toutes les dimensions potentielles d'un concept technique afin d'en déduire les points forts et les faiblesses.
Le Hacking c'est aussi la rigueur, ne pas griller les étapes, débloquer une porte avant une autre, ne pas se précipiter. Cette étape passe obligatoirement par la compréhension des aspects théoriques de la discipline étudiée ; la connaissance théorique parfaite du sujet vous ouvrira toutes les portes quand vous devrez en appliquer les principes.
Et enfin, le Hacking c'est le partage de la connaissance, la libre circulation de l'information afin qu'elle en profite intelligemment aux autres. Il n'y a que de cette manière que la technologie peut évoluer.
L'aprentissage est par essence continu, nous n'avons et n'aurons jamais plus rien à apprendre. C'est ce qui nourrit l'esprit, la recherche perpétuelle de la connaissance.
Nous avons toujours à apprendre des autres. Et quand nous le pouvons, nous avons le devoir d'enseigner ce que nous savons.
La Sécurité est au coeur même du Hacking. Beaucoup pensent que sa finalité est le contournement de cette Sécurité, ce qui est une réponse incomplète.
Le Hacking oeuvre pour l'amélioration et le perfectionnement des technologies ; de ce fait, l'information peut librement circuler entre toutes les machines sans entraves, et les ordinateurs ainsi améliorés deviennent de formidables outils de travail pour l'avancement technologique.
Dans ce but, il est nécessaire de maitriser tous les aspects de la Sécurité. Ce n'est qu'en comprenant parfaitement les fonctionnements intrinsèques de celle-ci qu'il est possible d'en identifier les points faibles, et donc de proposer des pistes d'amélioration.
C'est donc un adage classique : "pour contourner une sécurité, il faut d'abord en connaitre le fonctionnement".
Un Hacker est avant tout, et surtout, un expert en Sécurité. Il mettra ses compétences au service de la recherche systématique de défauts présents dans les protocoles afin de proposer des améliorations ou des correctifs permettant de sécuriser l'information.
Et cela passe par la démonstration du contournement, de manière à transmettre un contenu pédagogique.
La véritable différence entre Pirate et Hacker est ici ; le pirate exploite, et le Hacker démontre.
II. Le Hacking : débuter son apprentissage
Dans cette partie nous aborderons exclusivement le domaine informatique du Hacking ; comme dit plus haut, le Hacking couvre tous les domaines techniques, l'informatique n'en est qu'une branche d'étude.
Le Hacker est donc un expert en sécurité, de ce fait il se doit de connaitre les bases avancées de tous les domaines de la sécurité. Il ne faut négliger aucune de ces branches car elles sont nécessaires à la construction d'un socle de connaissance solides qui formera la structure de vos compétences. La spécialisation vers un domaine particulier de la sécurité n'intervient qu'après l'incorporation de ces bases.
Voici les principaux champs composant la Sécurité Globale :
Il n'y a pas d'ordre conseillé ou de hiérarchie dans l'étude de ces champs ; plusieurs d'entre eux possèdent des éléments communs, il est donc nécessaire de tous les aborder afin d'avoir l'interconnexion la plus cohérente possible.
A) Réseaux
Un réseau représente un ensemble (mathématiquement un graphe) d'éléments interconnectés échangeant des ressources.
On distingue classiquement deux types de réseaux :
- réseau local (réseau domestique confiné)
- réseau global (classiquement toute machine reliée à Internet)
Un réseau fonctionne par l'intermédiaire de protocoles, tels que TCP/UDP/IP, qui permettent l'échange de données entre noeud.
On vulgarise également le concept de réseau à la communication entre un client et un serveur ; cette communication se fait par l'intermédiaire de trames utilisant les protocoles standards de communication.
Ces protocoles ont cependant des faiblesses et sont faillibles de part leur mode d'action ou leur architecture. Pour le comprendre, il est nécessaire d'étudier le fonctionnement de ces protocoles, et notamment les processus d'échanges de données qui sont la prérogative première des réseaux.
Voici les éléments devant être étudiés :
Liens utiles :
http://reseau.developpez.com/cours/
http://bp.perso.eisti.fr/doc/reseaux/
http://www.mines.inpl-nancy.fr/~tisseran/cours/reseaux/
B ) Web
Le Web définit le réseau global interconnecté Internet.
Bien que la navigation à l'aide de logiciels interfacés (navigateurs) soit totalement opaque pour l'utilisateur, il n'en reste pas moins que cette navigation obéit à des règles strictes définies par certains protocoles.
L'internaute n'a accès qu'au résultat de cette communication client-serveur. Pour comprendre les échanges continuels entre un navigateur et un serveur, il est nécessaire d'étudier le fonctionnement et la structure des requêtes effectuées.
Voici les éléments devant être étudiés :
Liens utiles :
http://reseau.developpez.com/cours/
http://w3.bretagne.ens-cachan.fr/DIT...s1_reseaux.pdf
http://perso.efrei.fr/~charroux/cour...rvlet_http.pdf
C) Cryptologie et Cryptanalyse
Les machines interconnectées s'échangent en permanence des données. Ces données peuvent être d'ordre public (ouvertes à tous), ou bien privées (destinées à une machine précise). Dans ce dernier cas, les données sont le plus souvent confidentielles et sensibles ; elles nécessitent donc d'être chiffrées afin d'être protégées de toute tentative de lecture extérieure.
Pour cela, la cryptologie a été développée afin de répondre à un besoin simple : comment chiffrer l'information de la manière la plus efficace possible ?
On retrouve cette discipline au carrefour de toutes les questions de sécurité : WI-FI (WEP, WPA), HTTPS, SSH, TSL, VPN...
Il est primordial d'en maitriser les aspects théoriques fondamentaux de manière à comprendre la faillibilité de certains protocoles de chiffrement.
Voici les éléments devant être étudiés :
Liens utiles :
http://www.hsc.fr/ressources/cours/crypto/crypto.pdf
http://perso.citi.insa-lyon.fr/mmini...aphie_2006.pdf
http://www.di.ens.fr/~bresson/P12-M1/
D) Virologie
Plus de la moitié des attaques concernant Internet sont représentées par des infections dont le vecteur est le virus.
Un virus est un programme destiné à infecter une machine victime et à accomplir des actes malveillants de différentes natures, tels que le vol de données ou la destruction du système hôte.
Ces dernières années ont vu l'émergence virus complexes, efficaces et destructeurs (Stuxnet, Blaster, Flame...) repoussant toujours plus loin les limites techniques.
Afin de pouvoir opposer un rempart efficace au virus, il est nécessaire d'étudier leur mode d'action.
Note : le terme virus est ici utilisé de façon générique, il concerne les Worms, ransomwares, trojans, stealers...
Voici les éléments devant être étudiés :
Liens utiles :
http://www.umc.edu.dz/vf/images/viru...lgerie-umc.pdf
http://www.labri.fr/perso/tabary/cou...si/cours10.pdf
E) Programmation
Dans le but de comprendre le fonctionnement des systèmes, il est nécessaire d'étudier la façon la plus directe de dialoguer avec eux.
La programmation permet la construction de programmes qui sont des instances communicantes avec tout système capable de comprendre le lange utilisé.
Elle est également au carrefour de nombreuses branches de la sécurité : virologie, logiciels d'exploitation automatisés, communication client-serveur...
L'unité caractéristique de la programmation est le langage, c'est à dire l'ensemble syntaxique utilisé pour écrire une suite d'instructions construisant le programme désiré. Il existe des dizaines de langages de différents types, ayant chacun une fonction propre et une finalité propre. L'objet de cette étude n'est pas d'apprendre tous les langages existants, mais d'étudier les bases de leur fonctionnement global, ainsi qu'étudier les langages les plus courament utilisés.
Voici les éléments devant être étudiés :
Liens utiles :
http://siteduzero.com
http://web.developpez.com/cours/
http://c.developpez.com/
http://java.developpez.com/cours/
http://python.developpez.com/cours/
http://vb.developpez.com/
F) Architecture des télécommunications
De plus en plus les systèmes informatiques ont à communiquer avec des protocoles de télécommunication tiers, soit dans le but de relayer des informations, soit dans le but de les hiérarchiser pour les redistribuer.
Ces protocoles doivent également être soumis à des mesures de sécurité strictes dans l'optique d'éviter toute brèche entre le relai et le système source.
Ces questions de sécurité se sont largement popularisées via le phreaking, technique consistant à utiliser des protocoles téléphoniques pour accéder à des données normalement sécurisées.
Voici les éléments devant être étudiés :
Liens utiles :
http://www.stielec.ac-aix-marseille....he_telecom.pdf
http://www.technologuepro.com/cours-...communication/
http://www.mines.inpl-nancy.fr/~tiss...printable.html
G) Théorie de l'information
L'ensemble des données échangées à travers un réseau se nomme l'Information. Une information est une donnée de nature indéfinie transportant ou précisant des paramètres et échangée entre au moins deux machines distantes.
De manière générale, la théorie de l'information désigne le moyen probabiliste de quantifier l'information contenu dans un message ou dans un objet échangé.
Savoir comment l'information est gérée au sein d'un système d'échange permet de comprendre les enjeux sécuritaires posés (cryptologie ++).
Voici les éléments devant être étudiés :
Liens utiles :
http://www.di.ens.fr/~lelarge/info11.html
http://www-igm.univ-mlv.fr/~beal/Ens...t/TheorieInfo/
http://www.enseignement.polytechniqu...ndrier/X02/TI/
http://www.rfai.li.univ-tours.fr/Pag...ti_theorie.pdf
H) Sécurité opératoire
Afin de protéger les systèmes informatisés contre les agressions extérieures constantes, des méthodes de sécurité opératoire sont apparues dans le but de maintenir l'intégrité des systèmes.
Ces méthodes sont de différentes natures et ont chacune une prérogative de protection précise : antivirus, firewall, IDS, agents...
A l'heure où les systèmes contiennent de plus en plus de données sensibles, ces moyens de protections sont devenus primordiaux dans la lutte contre les pirates et la cyber-malveillance.
Voici les éléments devant être étudiés :
Liens utiles :
http://igm.univ-mlv.fr/~duris/NTREZO...sAntivirus.pdf
http://deptinfo.cnam.fr/Enseignement...s_parefeux.pdf
http://odile.papini.perso.esil.univm...ours-SSI-5.pdf
I) Reversing
Le reversing consiste à désassembler, via des logiciels spécifiques, un programme afin d'analyser sa structure interne et son architecture.
Dans un but strictement pédagogique, le reverse engineering est un excellent moyen de comprendre le fonctionnement de structures logicielles complexes et les relations des instructions entre elles.
C'est aussi un moyen très efficace dans la lutte contre les virus ; en effet le reversing de malwares permet de comprendre leurs stratégies d'infection et d'attaques et permet donc aux laboratoires de perfectionner et améliorer les méthodes de sécurité opératoire.
Voici les éléments devant être étudiés :
Liens utiles :
http://asm.developpez.com/cours/
http://www.labri.fr/perso/tabary/cou...lpa/cours4.pdf
taz.newffr.com/TAZ/Reverse_Engineering/reverse.engineering.pdf
J) Systèmes
Les systèmes représentent les espaces physiques (ordinateurs, calculateurs) par lesquels un utilisateur accède au contenu logiciel. Les systèmes sont interfacés via des systèmes d'exploitation qui sont la couche native de communication directe entre hardware et software.
Ce sont donc ces systèmes les premières cibles lors d'attaques directes ou indirectes. Chacun possède classiquement ses propres protocoles de sécurité propriétaire, et se propre façon de gérer ses ressources sensibles de manière à être protégé contre les détournements (virus -> privileges escalation).
Connaitre le fonctionnement basique de ces systèmes est primordial afin de pouvoir en améliorer la sécurité.
Voici les éléments devant être étudiés :
Liens utiles :
http://systeme.developpez.com/cours/
http://cui.unige.ch/~billard/systemeII/
http://membres-liglab.imag.fr/donsez...ix_cmdunix.pdf
Devant le nombre, toujours plus croissant, de membres posant l'éternelle question "Par où commencer si je veux apprendre le Hacking ?", et devant le réel manque de sources regroupant tous les points importants en une seule documentation, il devenait donc nécessaire de mettre à disposition de tous une forme de cette documentation.
Je me propose donc dans ce post de vous donner quelques pistes afin de commencer votre initiation ; je m'efforcerai d'être le plus précis possible, de hiérarchiser les informations afin que ça ne parte pas dans tous les sens.
Bien évidemment cette documentation est entièrement subjective et basée sur mon expérience, elle conviendra à certains et ne sera peut être pas faite pour d'autres.
NOTE : cette documentation s'adresse aux personnes curieuses, motivées et intéressées par le Hacking. Pirates, carders et autres, vous pouvez passer votre chemin, cela ne vous intéressera pas.
I. Le Hacking : un Art à part entière
A) Histoire
Historiquement, nous sommes dans les années 70. Les grandes institutions technologiques commencent à prendre leur essort, et notamment le Masachusset Institute of Technology (MIT).
Au fond des laboratoires d'électronique du MIT, les ingénieurs commencent à s'intéresser à l'utilisation transverse des technologies ; c'est à dire, comment les dévier de leurs fonctions initiales afin de leur faire réaliser d'autres objectifs que ceux auxquels elles sont destinées.
La première démonstration de ce que l'on nommera plus tard le Hacking, est faite par un ingénieur en automatique du MIT ; devant un commité composé de chercheurs, il montrera une version modifiée d'une locomotive électrique (modélisme) détournée de son usage initial. En modifiant un transistor de réception infrarouge, il avait réussi à transformer cette locomotive en un brouilleur de signal.
Le Hacking est né.
Par la suite, de nombreux ingénieurs à travers le monde commencèrent à démontrer les failles techniques des technologies connues comme sûres auparavant. Devant cette nouvelle tendance s'est vite imposée la nécessité de partager le plus vite et le plus loin possible les informations dans le but d'accélérer les travaux de recherche sur tout le globe ; nous nous sommes donc tout naturellement tournés vers les ordinateurs, qui n'en étaient qu'à leurs prémices technologiques.
Dans l'optique d'une communication toujours plus rapide, mais aussi dans l'intention de se servir des ordinateurs comme d'outils de recherche, les ingénieurs spécialisés (notamment au MIT et au CIT) ont alors libéré toute la documentation technique acquise au fil des années, et à partir de là, les performances des ordinateurs ont été améliorées de façon exponentielle.
Avec l'aide d'un Internet naissant, c'est un véritable réseau de partage qui s'est instauré. Des communautés d'experts et de spécialistes se sont composées dans le but de centraliser les connaissances accumulées au sein d'élites internationnales.
Ce sont ces mêmes experts qui furent à l'origine des premiers véritables protocoles de communication réseau permettant une interconnexion globale de toutes les machines reliées à Internet.
La facilité déconcertante avec laquelle l'on pouvait accéder à n'importe quelle machine connectée amena la question de la Sécurité.
C'est dans les années 90 que les experts en sécurité se mettent systématiquement à traquer toute faille ou bug potentiels dans les protocoles réseaux mis en place, et à fournir une documentation à double finalité : expliquer la faille trouvée et comment on pourrait l'exploiter, et également fournir le correctif (manuel à l'époque) afin de le sécuriser.
Cependant, à cette période la majorité des machines connectées à Internet (serveurs professionnels comme ordinateurs particuliers) sont faillibles et exploitables ; la documentation sur la façon d'exploiter ces failles (dans un but totalement pédagogique) étant fournie par les experts et la lenteur des administrateurs à corriger les failles - à cette époque on ne prend pas au sérieux les problèmes de sécurité car les administrateurs ne connaissent pas le danger d'une exploitation, la mentalité unique à la base du partage de connaissance se fractionne.
D'un côté se placent les experts en sécurité traquant et réparant toute faille trouvée, et de l'autre une communauté naissante adhérant à une toute nouvelle pensée : si ces failles existent, pourquoi ne pas les exploiter ?
A partir de là la mentalité "Pirate" se développe. Il ne faut cependant pas oublier que les personnes ayant les compétences nécessaires à la compréhension et l'exploitation de ces failles sont très peu nombreuses, et sont en majorité des experts en sécurité basculant du "mauvais" côté.
C'est véritablement au début des années 2000, avec l'avènement des logiciels d'automatisation et de la décomplexification des protocoles, que les pirates sans grandes connaissances commencent à affluer et perpétrer leur action de destruction.
B ) Définir le Hacking
Le Hacking c'est avant tout la curiosité, car c'est cette dernière qui pousse l'esprit à perpétuellement chercher la Connaissance. L'envie de regarder derrière le rideau, s'affranchir des idées reçues ou des objectifs préconçus d'une technologie pour en repousser les limites.
Ensuite, l'imagination est une composante indissociable du Hacking, pouvoir envisager toutes les dimensions potentielles d'un concept technique afin d'en déduire les points forts et les faiblesses.
Le Hacking c'est aussi la rigueur, ne pas griller les étapes, débloquer une porte avant une autre, ne pas se précipiter. Cette étape passe obligatoirement par la compréhension des aspects théoriques de la discipline étudiée ; la connaissance théorique parfaite du sujet vous ouvrira toutes les portes quand vous devrez en appliquer les principes.
Et enfin, le Hacking c'est le partage de la connaissance, la libre circulation de l'information afin qu'elle en profite intelligemment aux autres. Il n'y a que de cette manière que la technologie peut évoluer.
L'aprentissage est par essence continu, nous n'avons et n'aurons jamais plus rien à apprendre. C'est ce qui nourrit l'esprit, la recherche perpétuelle de la connaissance.
Nous avons toujours à apprendre des autres. Et quand nous le pouvons, nous avons le devoir d'enseigner ce que nous savons.
La Sécurité est au coeur même du Hacking. Beaucoup pensent que sa finalité est le contournement de cette Sécurité, ce qui est une réponse incomplète.
Le Hacking oeuvre pour l'amélioration et le perfectionnement des technologies ; de ce fait, l'information peut librement circuler entre toutes les machines sans entraves, et les ordinateurs ainsi améliorés deviennent de formidables outils de travail pour l'avancement technologique.
Dans ce but, il est nécessaire de maitriser tous les aspects de la Sécurité. Ce n'est qu'en comprenant parfaitement les fonctionnements intrinsèques de celle-ci qu'il est possible d'en identifier les points faibles, et donc de proposer des pistes d'amélioration.
C'est donc un adage classique : "pour contourner une sécurité, il faut d'abord en connaitre le fonctionnement".
Un Hacker est avant tout, et surtout, un expert en Sécurité. Il mettra ses compétences au service de la recherche systématique de défauts présents dans les protocoles afin de proposer des améliorations ou des correctifs permettant de sécuriser l'information.
Et cela passe par la démonstration du contournement, de manière à transmettre un contenu pédagogique.
La véritable différence entre Pirate et Hacker est ici ; le pirate exploite, et le Hacker démontre.
II. Le Hacking : débuter son apprentissage
Dans cette partie nous aborderons exclusivement le domaine informatique du Hacking ; comme dit plus haut, le Hacking couvre tous les domaines techniques, l'informatique n'en est qu'une branche d'étude.
Le Hacker est donc un expert en sécurité, de ce fait il se doit de connaitre les bases avancées de tous les domaines de la sécurité. Il ne faut négliger aucune de ces branches car elles sont nécessaires à la construction d'un socle de connaissance solides qui formera la structure de vos compétences. La spécialisation vers un domaine particulier de la sécurité n'intervient qu'après l'incorporation de ces bases.
Voici les principaux champs composant la Sécurité Globale :
- Réseaux
- Web
- Cryptologie / Cryptanalyse
- Virologie
- Programmation
- Architecture des télécommunications
- Théorie de l'information
- Sécurité opératoire
- Reversing
- Systèmes
Il n'y a pas d'ordre conseillé ou de hiérarchie dans l'étude de ces champs ; plusieurs d'entre eux possèdent des éléments communs, il est donc nécessaire de tous les aborder afin d'avoir l'interconnexion la plus cohérente possible.
A) Réseaux
Un réseau représente un ensemble (mathématiquement un graphe) d'éléments interconnectés échangeant des ressources.
On distingue classiquement deux types de réseaux :
- réseau local (réseau domestique confiné)
- réseau global (classiquement toute machine reliée à Internet)
Un réseau fonctionne par l'intermédiaire de protocoles, tels que TCP/UDP/IP, qui permettent l'échange de données entre noeud.
On vulgarise également le concept de réseau à la communication entre un client et un serveur ; cette communication se fait par l'intermédiaire de trames utilisant les protocoles standards de communication.
Ces protocoles ont cependant des faiblesses et sont faillibles de part leur mode d'action ou leur architecture. Pour le comprendre, il est nécessaire d'étudier le fonctionnement de ces protocoles, et notamment les processus d'échanges de données qui sont la prérogative première des réseaux.
Voici les éléments devant être étudiés :
- Le modèle OSI et ses sept couches (ce modèle définit comment l'information est créée, transportée puis livrée entre deux machines)
- Architectures fonctionnelles (Internet, Extranet, Intranet)
- Structures (LAN, WLAN, PAN, SAN)
- Protocoles dynamiques (VoIP, P2P)
- Relations (Client-Serveur, architecture trois-tiers)
- Topologie (étoile, anneau, arbre)
- Transmission (WI-FI, bluetooth, ADSL, fibre optique)
- Domaines logiques (VLAN)
- Equipements (switch, modem, commutateur)
Liens utiles :
http://reseau.developpez.com/cours/
http://bp.perso.eisti.fr/doc/reseaux/
http://www.mines.inpl-nancy.fr/~tisseran/cours/reseaux/
B ) Web
Le Web définit le réseau global interconnecté Internet.
Bien que la navigation à l'aide de logiciels interfacés (navigateurs) soit totalement opaque pour l'utilisateur, il n'en reste pas moins que cette navigation obéit à des règles strictes définies par certains protocoles.
L'internaute n'a accès qu'au résultat de cette communication client-serveur. Pour comprendre les échanges continuels entre un navigateur et un serveur, il est nécessaire d'étudier le fonctionnement et la structure des requêtes effectuées.
Voici les éléments devant être étudiés :
- Protocole d'accès Web (DNS, Telnet, HTTP, HTTPS, SSH, FTP... communs avec le modèle OSI)
- Architecture des requêtes (GET, POST, HEAD, SMTP, POP...)
- Espaces de stockage (hébergement, dédié, partagé, base de données, VPS)
- Stratégie client-serveur (authentification, reconnaissance, connexion)
Liens utiles :
http://reseau.developpez.com/cours/
http://w3.bretagne.ens-cachan.fr/DIT...s1_reseaux.pdf
http://perso.efrei.fr/~charroux/cour...rvlet_http.pdf
C) Cryptologie et Cryptanalyse
Les machines interconnectées s'échangent en permanence des données. Ces données peuvent être d'ordre public (ouvertes à tous), ou bien privées (destinées à une machine précise). Dans ce dernier cas, les données sont le plus souvent confidentielles et sensibles ; elles nécessitent donc d'être chiffrées afin d'être protégées de toute tentative de lecture extérieure.
Pour cela, la cryptologie a été développée afin de répondre à un besoin simple : comment chiffrer l'information de la manière la plus efficace possible ?
On retrouve cette discipline au carrefour de toutes les questions de sécurité : WI-FI (WEP, WPA), HTTPS, SSH, TSL, VPN...
Il est primordial d'en maitriser les aspects théoriques fondamentaux de manière à comprendre la faillibilité de certains protocoles de chiffrement.
Voici les éléments devant être étudiés :
- Chiffrement symétrique et asymétrique (clé publique, clé privée, fonction de hachage, condensat)
- Protection logicielle (signature numérique)
- Protection des données (certificats, protocoles de chiffrement (HTTPS, SSH, TSL))
- Tunneling (VPN)
- Algoritmique (DES, AES, RSA, BlowFish)
- Principes (substitution, addition, intercalage...)
Liens utiles :
http://www.hsc.fr/ressources/cours/crypto/crypto.pdf
http://perso.citi.insa-lyon.fr/mmini...aphie_2006.pdf
http://www.di.ens.fr/~bresson/P12-M1/
D) Virologie
Plus de la moitié des attaques concernant Internet sont représentées par des infections dont le vecteur est le virus.
Un virus est un programme destiné à infecter une machine victime et à accomplir des actes malveillants de différentes natures, tels que le vol de données ou la destruction du système hôte.
Ces dernières années ont vu l'émergence virus complexes, efficaces et destructeurs (Stuxnet, Blaster, Flame...) repoussant toujours plus loin les limites techniques.
Afin de pouvoir opposer un rempart efficace au virus, il est nécessaire d'étudier leur mode d'action.
Note : le terme virus est ici utilisé de façon générique, il concerne les Worms, ransomwares, trojans, stealers...
Voici les éléments devant être étudiés :
- Stratégies d'infection (backdooring, cheveaux de Troie, anti-immunité)
- Stratégies de propagation (spreading global, carnets d'adresses, cloning)
- Stratégies de contrôle (privileges escalation, détournement de certificats, création de security descriptors)
- Stratégies de camouflage (injection, polymorphisme/oligomorphisme, mutation, dégénération)
- Stratégies de communication (client-serveur, transmissions (FTP, IRC, MAIL...))
Liens utiles :
http://www.umc.edu.dz/vf/images/viru...lgerie-umc.pdf
http://www.labri.fr/perso/tabary/cou...si/cours10.pdf
E) Programmation
Dans le but de comprendre le fonctionnement des systèmes, il est nécessaire d'étudier la façon la plus directe de dialoguer avec eux.
La programmation permet la construction de programmes qui sont des instances communicantes avec tout système capable de comprendre le lange utilisé.
Elle est également au carrefour de nombreuses branches de la sécurité : virologie, logiciels d'exploitation automatisés, communication client-serveur...
L'unité caractéristique de la programmation est le langage, c'est à dire l'ensemble syntaxique utilisé pour écrire une suite d'instructions construisant le programme désiré. Il existe des dizaines de langages de différents types, ayant chacun une fonction propre et une finalité propre. L'objet de cette étude n'est pas d'apprendre tous les langages existants, mais d'étudier les bases de leur fonctionnement global, ainsi qu'étudier les langages les plus courament utilisés.
Voici les éléments devant être étudiés :
- Les types de langage (impératif, POO, embarqué, logique)
- La modélisation (singletons, UML, Merise)
- La compilation (compilateur, assemblage, linkage, appels)
- Les langages orientés Web (finalité, architecture, HTML/PHP/JS)
- Les langages orientés logiciel (finalité, architecture, C/C++/Java(mixte)/VB)
- Les langages orientés modulaire (finalité, architecture, Python)
Liens utiles :
http://siteduzero.com
http://web.developpez.com/cours/
http://c.developpez.com/
http://java.developpez.com/cours/
http://python.developpez.com/cours/
http://vb.developpez.com/
F) Architecture des télécommunications
De plus en plus les systèmes informatiques ont à communiquer avec des protocoles de télécommunication tiers, soit dans le but de relayer des informations, soit dans le but de les hiérarchiser pour les redistribuer.
Ces protocoles doivent également être soumis à des mesures de sécurité strictes dans l'optique d'éviter toute brèche entre le relai et le système source.
Ces questions de sécurité se sont largement popularisées via le phreaking, technique consistant à utiliser des protocoles téléphoniques pour accéder à des données normalement sécurisées.
Voici les éléments devant être étudiés :
- Propagation des ondes (décibel, fréquence, puissance rayonnante)
- Technologies sans fil (WI-FI, bluetooth, VoIP)
- Architecture téléphonique (DSLAM, répartiteur, multiplexeur)
- Signaux (numérique, analogique)
- Equipements (antenne, amplificateur)
Liens utiles :
http://www.stielec.ac-aix-marseille....he_telecom.pdf
http://www.technologuepro.com/cours-...communication/
http://www.mines.inpl-nancy.fr/~tiss...printable.html
G) Théorie de l'information
L'ensemble des données échangées à travers un réseau se nomme l'Information. Une information est une donnée de nature indéfinie transportant ou précisant des paramètres et échangée entre au moins deux machines distantes.
De manière générale, la théorie de l'information désigne le moyen probabiliste de quantifier l'information contenu dans un message ou dans un objet échangé.
Savoir comment l'information est gérée au sein d'un système d'échange permet de comprendre les enjeux sécuritaires posés (cryptologie ++).
Voici les éléments devant être étudiés :
- Nature de l'information (définition de Shannon, notions de bits)
- Principes mathématiques (incertitude, probabilité, statistique, distribution, entropie)
- Sémantique de l'information (paradoxe du compresseur)
- Mesure et codage (entropie de Shannon, théorie des codes)
Liens utiles :
http://www.di.ens.fr/~lelarge/info11.html
http://www-igm.univ-mlv.fr/~beal/Ens...t/TheorieInfo/
http://www.enseignement.polytechniqu...ndrier/X02/TI/
http://www.rfai.li.univ-tours.fr/Pag...ti_theorie.pdf
H) Sécurité opératoire
Afin de protéger les systèmes informatisés contre les agressions extérieures constantes, des méthodes de sécurité opératoire sont apparues dans le but de maintenir l'intégrité des systèmes.
Ces méthodes sont de différentes natures et ont chacune une prérogative de protection précise : antivirus, firewall, IDS, agents...
A l'heure où les systèmes contiennent de plus en plus de données sensibles, ces moyens de protections sont devenus primordiaux dans la lutte contre les pirates et la cyber-malveillance.
Voici les éléments devant être étudiés :
- Antivirus (stratégies de scanning, détection de signatures, méthode heuristique)
- Firewalls (stratégies de blocus, système de veille intelligente, virtualisation des échanges)
- IDS (anti-sniffing, analyse de trames, contrôle des paquets)
- Agents (graphes, système de neurones, surveillance distribuée)
Liens utiles :
http://igm.univ-mlv.fr/~duris/NTREZO...sAntivirus.pdf
http://deptinfo.cnam.fr/Enseignement...s_parefeux.pdf
http://odile.papini.perso.esil.univm...ours-SSI-5.pdf
I) Reversing
Le reversing consiste à désassembler, via des logiciels spécifiques, un programme afin d'analyser sa structure interne et son architecture.
Dans un but strictement pédagogique, le reverse engineering est un excellent moyen de comprendre le fonctionnement de structures logicielles complexes et les relations des instructions entre elles.
C'est aussi un moyen très efficace dans la lutte contre les virus ; en effet le reversing de malwares permet de comprendre leurs stratégies d'infection et d'attaques et permet donc aux laboratoires de perfectionner et améliorer les méthodes de sécurité opératoire.
Voici les éléments devant être étudiés :
- Assembleur (ASM, NASM, MASM)
- Structure des programmes (PE, headers, architecture)
- Gestion mémorielle (adressage, registres, flags, appels, piles, BO)
- Fuzzing (injection, paramétrage)
- Debugging (point by point, OllyDBG)
Liens utiles :
http://asm.developpez.com/cours/
http://www.labri.fr/perso/tabary/cou...lpa/cours4.pdf
taz.newffr.com/TAZ/Reverse_Engineering/reverse.engineering.pdf
J) Systèmes
Les systèmes représentent les espaces physiques (ordinateurs, calculateurs) par lesquels un utilisateur accède au contenu logiciel. Les systèmes sont interfacés via des systèmes d'exploitation qui sont la couche native de communication directe entre hardware et software.
Ce sont donc ces systèmes les premières cibles lors d'attaques directes ou indirectes. Chacun possède classiquement ses propres protocoles de sécurité propriétaire, et se propre façon de gérer ses ressources sensibles de manière à être protégé contre les détournements (virus -> privileges escalation).
Connaitre le fonctionnement basique de ces systèmes est primordial afin de pouvoir en améliorer la sécurité.
Voici les éléments devant être étudiés :
- Architecture système (matériel interne)
- Les types de systèmes (répartis, embarqués, réels)
- Systèmes d'exploitation (communication native, notion de noyau, périphériques, partionnement)
- Unix (standards, POSIX, protocoles)
- Windows (formats propriétaires, gestion des privilèges, gestion des drivers, variables d'environnement, registre)
- Linux (formats propriétaires, gestion des privilèges, gestion des drivers, commandes d'administration)
Liens utiles :
http://systeme.developpez.com/cours/
http://cui.unige.ch/~billard/systemeII/
http://membres-liglab.imag.fr/donsez...ix_cmdunix.pdf
Commentaire