Petit lexique du hacker à l’attention des DSI
L’informatique est un domaine rempli d’acronymes, d’anglicismes et de sigles et la sécurité informatique n’y échappe pas. En voici la preuve : « J’étais dans mon pentest, du coup, j’ai exec ma XSS pour toper le phpsessid, ça m’a permis de taper le back pour trigger la SQLI en error based. De là, j’ai lancé ma LFI pour remote exec et balancer mon reverse shell, et j’ai pu rooter la bécane via une race condition. ».
Pour ceux qui n’ont pas compris un traître mot à cette phrase, voici un petit résumé des principaux termes utilisés par les hackers 🙂
Les termes génériques
Ici sont notés tous les termes « classiques » qu’on retrouve très souvent, peu importe la situation.
Pentest: Anglicisme pour « Penetration Testing« . Il s’agit d’un Test d’Intrusion (souvent raccourci en TI) : une mission d’attaque, effectuée par la red team, afin de détecter les vulnérabilités d’un SI. Il existe globalement deux types de pentests :
- interne, l’idée est de se concentrer sur le réseau interne d’une entreprise
- externe, où le but est de tester les vulnérabilités d’un serveur accessible sur Internet.
Red team : Equipe attaquante. Ce sont eux qui font les pentests afin de rapporter les vulnérabilités détectées.
Blue team : Equipe de défense. La Blue Team, généralement le SOC, analyse les alertes potentielles de sécurité détectées pour les remonter
BF : Brute Force. Le principe d’un brute force est d’essayer toutes les combinaisons possibles d’un mot de passe pour le casser. Basiquement, l’idée est d’essayer AAA, puis AAB, AAC, etc. jusqu’à découvrir le mot de passe correct.
Password spraying : C’est un peu l’opposé d’une attaque par Brute Force. Plutôt que de tenter de trouver le mot de passe d’un utilisateur en tentant toutes les combinaisons, la technique du password spraying se concentre sur le fait d’essayer quelques mots de passe classiques sur un grand nombre de comptes.
(Reverse) shell : Obtenir un shell sur un serveur signifie avoir un accès sur celui-ci afin d’exécuter toutes les commandes que l’on souhaite. Obtenir un shell peut se résumer à avoir accès à ceci 🙂 :
Un reverse shell est similaire. La principale différence est technique, et se résume par le fait que le serveur se connecte sur la machine de l’attaquant pour demander les commandes à exécuter.
Rooter : définit le fait de pouvoir exécuter des commandes en tant que « root » sur une machine . Sur les systèmes linux, l’utilisateur root a tous les droits d’administration. Ainsi, « rooter » une machine signifie avoir un accès complet à celle ci. On peut retrouver le mot « pwn » comme synonyme.
Backdoor/bugdoor : Une backdoor est une vulnérabilité laissée intentionnellement par les développeurs d’une solution afin qu’ils puissent avoir un accès d’administration caché.
Le principe d’une bugdoor est similaire, mais plus subtil : en effet, l’idée est toujours d’avoir un accès caché, mais de déguiser la vulnérabilité afin de faire croire qu’elle n’est pas intentionnelle. Si jamais cette bugdoor est rendue publique, l’éditeur pourra donc se couvrir en expliquant que c’est un bug.
CVE/CVSS : Common Vulnerabilities and Exposures, et Common Vulnerability Scoring System. Les deux termes sont liés. Une CVE est la définition normée et publique d’une vulnérabilité détectée dans un produit et permet d’expliquer succinctement les risques associés.
Le score CVSS permet de qualifier selon un calcul la dangerosité d’une CVE, en prenant en compte certains aspects techniques (authentification nécessaire, élévation de privilèges possibles, etc.).
Un score CVSS n’est jamais parfait, possède de nombreux biais, et ne doit pas être pris pour le Saint Graal, mais la communauté sécurité n’a pour l’instant pas mieux à proposer :).
(Spear) phishing : Technique permettant de tromper les utilisateurs, en envoyant des emails frauduleux, ressemblant (plus ou moins) à des mails officiels. En général, ces emails contiennent un lien vers une fausse page d’authentification, permettant aux hackers de voler des mots de passe.
Le spear phishing est une « évolution » du phishing, qui définit le fait de cibler une entreprise en particulier et donc de se calquer au mieux à son fonctionnement, afin que les mails trompeurs soient les plus crédibles possibles. Et ça marche (beaucoup trop) bien !
Les termes axés attaques web
Certaines attaques sont spécifiques aux serveurs web.
XSS : Cross Site Scripting. C’est une attaque qui ne cible pas directement les ressources de l’entreprise, mais les utilisateurs du site web. Grâce à l’injection d’un code exécuté sur le navigateur de l’utilisateur, un hacker pourra voler sa session, et donc son compte pour se faire passer pour lui. C’est une des attaques les plus classiques, que l’on retrouve très souvent dans les pentest externes.
SQLI : Injection SQL. Il est possible, en envoyant certains caractères spécifiques, de « tronquer » une requête à la base de données et de lire le contenu complet de cette dernière. Il existe de nombreuses sous catégories d’injections SQL : time based, error based, blind, etc. Les bases de données contenant généralement les identifiants des utilisateurs, il est facile de voler des comptes par ce biais.
RCE : Sigle signifiant Remote Command Execution. C’est le Saint Graal des attaques web, car une RCE permet d’exécuter des commandes système directement sur le serveur, ce qui permet d’obtenir un shell, et donc de pouvoir rooter la machine 🙂
C’est une des attaques les plus dangereuses car elle permet à un attaquant d’effectuer plus ou moins n’importe quelle action !
LFI & RFI : Local File Include & Remote File Include. Derrière ces noms barbares, l’idée est ici de faire exécuter au serveur du code qui n’est pas autorisé par défaut. Un exemple valant mieux qu’un discours, on pourrait résumer en « Exécute moi la page PHP que je te donne en paramètre ».
Les termes axés réseau
Plusieurs techniques et attaques sont utilisables via le réseau, qu’on retrouve le plus souvent dans les pentests internes.
ARP spoofing : Action qui consiste à modifier son adresse pour se faire passer pour un autre poste. En utilisant cette technique, il est donc possible de se cacher du réseau, ou encore de récupérer des données destinées à une autre machine.
MITM : MITM signifie Man In The Middle. Globalement, c’est le fait d’effectuer un ARP spoofing pour se faire passer pour la passerelle réseau. Ainsi, toutes les communications passent par l’ordinateur du pirate, qui peut donc lire et analyser toutes les données.
(d)DoS : (d)DoS pour (distributed) Denial of Service, ou Déni de Service (distribué). Depuis plusieurs années, c’est un type d’attaque dont on entend de plus en plus parler. Le principe est basique et ne nécessite pas réellement de compétences techniques : il suffit d’inonder un serveur de requêtes afin que celui-ci soit saturé et ne puisse plus répondre.
Les termes axés système
On retrouve principalement ces expressions dans les attaques systèmes et logicielles.
Privesc : PRIVilege ESCalation. Lorsqu’un hacker arrive à s’introduire sur une machine, il n’a pas toujours les droits d’administration, et il n’est donc pas totalement maître de l’ordinateur. Le fait de trouver une faiblesse afin d’obtenir cet accès se nomme une privesc : une élévation de privilèges.
Reverse : Le nom complet est reverse engineering, souvent abrégé en RE. C’est un domaine du hacking qui consiste à – essayer de – comprendre le fonctionnement d’un programme en analysant le code bas niveau de celui ci : le code assembleur, afin de trouver des buffer overflows ou de casser des protections. Le reverse est souvent considéré comme la spécialité reine du hacking, car bien souvent la plus complexe.
Buffer overflow : souvent raccourci en BOF, c’est un dépassement de tampon en français. Sans rentrer dans les détails précis, un buffer overflow consiste à modifier le comportement normal d’un programme en injectant des paramètres incorrects, pour réécrire à la volée une partie de sa mémoire. Une fois la mémoire modifiée, il est possible de faire exécuter d’autres programmes, l’idée étant d’obtenir un shell ;).
Race condition : Le principe de cette technique est de « gagner une course contre la montre ». Pour donner un exemple concret, certains programmes vont écrire un mot de passe dans un fichier, puis le supprimer immédiatement. Cette action ne dure qu’une fraction de seconde, mais cela est suffisant pour un hacker ! S’il arrive à ouvrir le fichier pour le lire durant cette intervalle, il pourra obtenir le mot de passe.
This is the end, my friend
Il existe des dizaines de termes utilisés entre nous, qu’on ne comprend même pas toujours !
Il est donc compliqué de faire une liste exhaustive, ce qui n’est de toute façon pas le but de cet article. L’idée était ici simplement de pouvoir donner quelques clés de compréhension sur les expressions les plus fréquentes, et de ne pas être perdu dans la langue des techs !
En tout cas, j’espère que la phrase
J’étais dans mon pentest, du coup, j’ai exec ma XSS pour toper le phpsessid, ça m’a permis de taper le back pour trigger la SQLI en error based. De là, j’ai lancé ma LFI pour remote exec et balancer mon reverse shell, et j’ai pu rooter la bécane via une race condition.
est maintenant un peu plus compréhensible 🙂
Il a plusieurs cordes à son arc : pentest, régie, missions pompier, etc.
Merci pour ce super lexique Corto !
Merci Corto, grâce à toi je vais maintenant vous comprendre 😉