Et si on backdoorait /dev/urandom ?

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
84
Mois de parution
mai 2016
Domaines


Résumé

Vous utilisez des algorithmes de chiffrement sûrs (AES, RSA, etc.) ? Fantastique ! Ces algorithmes chiffrent vos données grâce à des clés, qui sont générées aléatoirement la plupart du temps. Si ces clés ne contenaient plus de données aléatoires, elles deviendraient totalement prévisibles. Un attaquant en tirerait parti et pourrait déchiffrer facilement les données protégées.


La sécurité des logiciels cryptographiques repose sur une bonne source de nombres aléatoires. Voici comment modifier une de ces sources, le générateur de nombres pseudo-aléatoires du noyau Linux. Nous modifierons cette source (/dev/random et /dev/urandom) grâce à un rootkit noyau, ce qui nous permettra de comprendre ce type d'attaque.

1. Quelques (minimes) prérequis

Cet article décrit pas à pas la programmation d'un module noyau permettant de prendre le contrôle de /dev/random et /dev/urandom. Pour cela, vous devez savoir utiliser un système GNU/Linux et connaître les langages C et Python. Il y aura aussi un soupçon d'assembleur, mais très peu, ce n'est pas la peine de paniquer.

Quelques rudiments d'assembleur sont nécessaires, car le fonctionnement du noyau est étroitement lié à l'architecture du processeur. Pour cet article, nous nous limiterons à l'architecture x86_64, c'est-à-dire aux processeurs Intel et AMD 64 bits.

Les notions de...

Cet article est réservé aux abonnés. Il vous reste 98% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite
Références

[1] Site officiel : https://www.virtualbox.org

[2] Linux on-the-fly kernel patching without LKM, sd et devik, Phrack 58 article 7, 2001 : http://phrack.org/issues/58/7.html

[3] Définition sur : https://fr.wikipedia.org/wiki/Rootkit

[4] Code source sur : https://github.com/mncoppola/suterusu

[5] Code source sur : https://github.com/vrasneur/randkit

[6] Définition sur : https://en.wikipedia.org/wiki/Entropy_(computing)

[7] Driving Me Nuts - Things You Never Should Do in the Kernel, Greg Kroah-Hartman, 2005 : http://www.linuxjournal.com/article/8110 (la citation est extraite de la fin de l'article : « In conclusion, reading and writing a file from within the kernel is a bad, bad thing to do. Never do it. Ever. »)

[8] Site officiel : https://grsecurity.net

[9] A system call for random numbers: getrandom(), Jake Edge, 2014 : https://lwn.net/Articles/606141/

[10] Définition sur : https://fr.wikipedia.org/wiki/Endianness#Little_endian

[11] Analysis and exploitation of a Linux kernel vulnerability (CVE-2016-0728), Perception Point Research Team, 2016 : http://perception-point.io/2016/01/14/analysis-and-exploitation-of-a-linux-kernel-vulnerability-cve-2016-0728/

[12] Définition sur : https://fr.wikipedia.org/wiki/M%C3%A9thode_de_Monte-Carlo

[13] Définition sur : https://fr.wikipedia.org/wiki/Mersenne_Twister

[14] A model and architecture for pseudo-random generation with applications to /dev/random, Boaz Barak et Shai Halevi, 2005 : http://www.boazbarak.org/Papers/devrand.ps

[15] Cracking Random Number Generators - Part 3, James Roper, 2010 : https://jazzy.id.au/2010/09/22/cracking_random_number_generators_part_3.html

[16] Xorshift RNGs, George Marsaglia, Journal of Statistical Software, 2003 : http://www.jstatsoft.org/v08/i14/paper et Wikipédia : https://en.wikipedia.org/wiki/Xorshift

[17] Site officiel : https://www.gnupg.org

[18] Finding inverse operation to George Marsaglia's XorShift RNG, StackOverflow, 2015 : http://stackoverflow.com/questions/31513168/finding-inverse-operation-to-george-marsaglias-xorshift-rng

[19] Site officiel : http://www.fourmilab.ch/random/

[20] Site officiel : http://simul.iro.umontreal.ca/testu01/tu01.html

[21] Site officiel : http://www.chkrootkit.org

[22] Suterusu Rootkit: Inline Kernel Function Hooking on x86 and ARM, Michael Coppola, 2013 : http://poppopret.org/2013/01/07/suterusu-rootkit-inline-kernel-function-hooking-on-x86-and-arm

[23] Site officiel : https://www.openssl.org



Articles qui pourraient vous intéresser...

Attaques en environnement Docker : compromission et évasion

Magazine
Marque
MISC
Numéro
113
Mois de parution
janvier 2021
Domaines
Résumé

Ces dernières années, on a pu observer une évolution croissante des environnements conteneurisés et notamment de l’usage de Docker. Les arguments mis en avant lors de son utilisation sont multiples : scalabilité, flexibilité, adaptabilité, gestion des ressources... En tant que consultants sécurité, nous sommes donc de plus en plus confrontés à cet outil. Au travers de cet article, nous souhaitons partager notre expérience et démystifier ce que nous entendons bien trop régulièrement chez les DevOps, à savoir que Docker est sécurisé par défaut.

Les taxonomies se cachent pour ne pas mourir

Magazine
Marque
MISC
Numéro
113
Mois de parution
janvier 2021
Domaines
Résumé

« Attention, nouveau virus ! » Nombreux sont les articles à nous alerter régulièrement, par cette métonymie, sur l’émergence d’un nouveau malware. Pourtant, le terme de virus a-t-il encore un sens aujourd’hui ? Wannacry était-il un ver, ou un ransomware ? NotPetya, un wiper, ou bien un ver ? Et plus encore, au-delà de l’utilisation de termes et expressions se pose la question de la nécessaire catégorisation des incidents de cybersécurité ; pourquoi, comment, à quelles fins ? Essai (critique) de réponse.

Les difficultés du désassemblage sur ARM

Magazine
Marque
MISC
Numéro
113
Mois de parution
janvier 2021
Domaines
Résumé

Cet article aborde les problèmes spécifiques à l’architecture ARM qui se posent lorsqu’on désassemble un exécutable, c’est-à-dire lorsqu’on l’analyse statiquement pour en produire une représentation en langage assembleur. En effet, les particularités de l’architecture ARM peuvent rendre le désassemblage – déjà habituellement compliqué – particulièrement ardu.