28 décembre 2012

Un lexique ? Mais pourquoi ? Devant l’incompréhension et le regard inquiet de certains de mes collègues à partir du moment où je parle hacking, j’ai décidé d’écrire un petit post rapide pour poser les bases de la terminologie des hackers (pas de kikoololisme bien évidemment, je sous entends des termes techniques, on est pas des gitans).

Comme on est Vendredi, et que le Vendredi, tout est permis, cet article est décalé, et je suis disponible en cas de réclamation pour humour pourri (mais il n’en reste pas moins que toutes les définitions sont exactes)

Let’s Go !

 

ASLR : L’ASLR, pour Address Space Layout Randomization a été mis en place pour bloquer les buffer overflow. Avant l’ASLR, les adresses mémoires utilisées dans les programmes étaient fixes. L’ASLR permet de rendre aléatoire ces adresses pour éviter les attaques. En effet, un BoF doit manipuler des adresses mémoires pour fonctionner. Si ces adresses sont randomisées, il est plus difficile de trouver les bonnes adresses. Mais pas impossible 😉

Black Hat : Ce sont les méchants. Ce sont eux qui pillent les banques, volent les plus démunis et abusent des femmes et des enfants. Bon, j’exagère peut être légèrement, mais le principe est là, pour un black hat, le but du jeu est de faire de l’argent avec son activité, en proposant par exemple la vente de failles, la location de botnets, l’envoi de spam,… Ce sont eux qui donnent un coté malsain au hacking.

BotNet : un botnet est un réseau d’ordinateurs zombies contrôlé à distance par un C&C (Command & Control) crée et utilisé par un pirate. Il permet par exemple d’envoyer des spams ou de faire du DDoS.

Buffer Overflow : technique de hacker, dont l’abréviation est BoF. Quand deux hackers se rencontrent (souvent sur IRC), ils peuvent parler de Buffer Overflow. Exemple :

Hacker 1 : « Hey ! Salut <nom du hacker 2> »
Hacker 2 : « Io <nom du hacker 1> »
Hacker 1 : « Tu devineras jamais ce que j’ai trouvé hier ! »
Hacker 2 : « Ben non, dis le moi 🙂 »
Hacker 1 : « Ok, bon alors tu vois, j’avais mon Ollydbg d’ouvert, alors j’me suis dit ‘Hop ! Hacking Session’. Je cherche un truc à disass, et là, j’me dis ‘Tiens, il y a la dernière version de <nom du programme> qui vient de sortir’. Du coup, hop, je lance l’exe, j’attache le process, j’fais un Show Command pour checker les libs et les fonctions, j’en trouve une qui peut être pwnable, du coup, je trace je trace je trace, et là, j’trouve une vuln. Du coup, je commence à faire un script perl, j’injecte mes AAA, et plaf, ça segfault, du coup, happy face, j’me dis qu’il y a moyen, je commence à checker les addr mémoire, je crafte mon payload, et BAM ! mon shell s’ouvre, Buffer Overflow ! 🙂 »

Note : Toute ressemblance avec des personnes existantes ou ayant existé ne serait que pure coïncidence.
Plus sérieusement, un Buffer Overflow (dépassement de tampon en français) est le fait d’écrire dans la mémoire d’un programme, à un endroit qui n’était pas prévu pour cela. Il est possible d’injecter du code avec cette technique.

Crafter : crafter une donnée, c’est la créer ou la modifier pour qu’elle contienne exactement les valeurs voulues. On peut crafter plus ou moins tout et n’importe quoi, mais ça ne donne pas toujours les effets escomptés.

deface : Quand un pirate s’introduit sur un site Web, il a plusieurs possibilités, donc celle de tout casser. Un deface, c’est lorsque le hacker décide de modifier la page d’accueil pour signaler sa présence, un peu comme une signature. On trouve généralement des « <nom du hacker> was here », « Owned by <nom du hacker> », « Greetz to <noms des amis hacker> ». Souvent, les textes sont écrit avec pleiN de mOts en Majuscules hIstOire d’être Stylé.

DoS : Un DoS (Denial of Service) est une attaque pour bloquer l’accès à un serveur quelconque en l’inondant de requêtes, ou en faisant planter les services démarrés. Le cousin du DoS, le DDoS (pour Distributed Denial of Service) est similaire, mais on utilise de nombreux ordinateurs pour inonder encore plus vite le serveur. En 2002, un DDoS a été lancé sur les Root DNS, mais l’attaque n’a pas été assez longue ni puissante pour couper les 13 serveurs.

Grey Hat : les grey hats sont en quelque sorte les cow boys du web, ils n’ont pas l’intention de détruire, mais écraser quelques fleurs au passage ne dérange pas, si besoin est. Ils ne sont pas motivés par l’argent, mais plus par le défi technique.

Hook : Aucun rapport avec le capitaine crochet, un hook est une modification de l’adresse mémoire d’une fonction. Basiquement toutes les fonctions utilisées par un programme sont chargées au démarrage dans un tableau (voir IAT). En ayant accès à ce tableau et en modifiant une des entrées, on peut donc changer l’adresse de la fonction et mettre l’adresse d’une fonction injectée.

IAT : Import Address Table. Au démarrage d’un exécutable, toutes les fonctions utilisées sont chargées dans un tableau qui va contenir leurs adresses mémoires. Par exemple, la fonction ShowWindow, définie dans la dll user32.dll, aura une adresse en 0x76020DFB (définie dans l’EAT, un autre tableau, utilisé par les dll pour donner accès aux fonctions). Lorsque le programme aura besoin de la fonction ShowWindow, il va aller chercher les instructions Assembleur à cette adresse.

Injection SQL : L’injection SQL permet de rentrer dans une base de donnée, comme Richard Virenque, à l’insu de son plein gré (certes, la blague était facile, mais presque obligatoire). Le principe est de modifier une requête SQL (par exemple en changeant la valeur d’une variable) pour récupérer des informations autres que celles normalement renvoyées. Pour tester une injection SQL sur un site web, la technique de base est ‘ OR 1=1#.

Ci dessous, un exemple pratique et intéressant des injections SQL (mais l’histoire ne raconte pas si le conducteur a eu un PV !) :

 

Kernelland : Lieu magique où les enfants ne grandissent jamais. Partie du système d’exploitation utilisé pour les fonctions vitales, c’est le noyau de l’OS, et toute erreur dans le kernelland provoque des dégats importants (un écran bleu par exemple). Techniquement parlant c’est une partie de la mémoire qui permet de gérer les interruptions matérièles, le chargement de drivers,…

MITM : Acronyme de Man In The Middle. Une attaque MITM permet de se faire passer pour un autre ordinateur, et de faire ainsi intermédiaire entre deux postes, pour capturer le trafic réseau, ou encore le modifier.

Owned/Pwned/Ouned/Pouned et autres dérivés : vient de l’anglais to own. Le hacker dit qu’il a « owned » un serveur quand il a réussi à passer root dessus.

ROP : Return Oriented Programming, le ROP est une technique de Jedi utilisé durant la guerre des clones, oupa. Elle est utilisée sur certains OS, pour les buffer overflow. Elle permet de contourner les protections de détection d’attaque mises en place dans les sytèmes d’exploitation. Le principe basique est d’utiliser des morceaux de code assembleur déjà existants, plutôt que d’injecter directement du code.

userland : Inverse du kernel land, c’est la partie de la mémoire où les programmes classiques sont exécutés. Il existe certaines méthode pour passer du user land au kernel land. Mais bon, ça fait moins de dégats, donc c’est moins drôle !

Vxing : partie du hacking qui définit tout ce qui à attrait aux virus. A ne pas confondre avec les X-wing.

White Hat : à l’inverse des black hat, le white hat est un gentil. On le surnomme aussi « Chercheur en sécurité informatique », et il aide à la résolution de failles, en prévenant les administrateurs concernés et en indiquant la marche à suivre pour résoudre le problème.

XSS : Cross Site Scripting. C’est une injection de code (souvent du javascript) dans une page Web, qui permet de modifier le contenu de la page, uniquement sur le poste client.
Il existe deux clans : ceux qui disent que les XSS sont inutiles, et ceux qui disent qu’elles sont très dangereuses. Avec une XSS, on peut juste récupérer un accès non autorisé à un compte utilisateur, on peut juste faire un deface, on peut juste passer admin du site, on peut juste devenir root de la machine. (oui, je fais partie du deuxième clan ;))

This is the end, my only friend

 

Et voilà ! J’ai fait un tour rapide des mots qu’on utilise, nous, les hackers, ces gens bizarres. Il en manque surement beaucoup, je n’ai pas cherché à faire dans l’exhaustif, mais il y a toujours les commentaires pour me proposer des nouvelles définitions, je les rajouterais avec plaisir 🙂

 

 

Have fun

Corto

 

 

 

Partager :

Auteurs