Man In The Middle – étude du trafic d’applications Android/iOS

Après un semestre chargé, je reprends l’écriture avec un article sur un sujet connu et une technique réalisable en dix minutes.

Un pote à moi, étudiant en Master Imagerie Numérique a développé un jeu pour Android.

Le principe est assez simple, on pilote un vaisseau dans un environnement en 3D et on essaie d’éviter les obstacles en tentant d’aller le plus loin possible (l’environnement est changeant et la vitesse augmente au fil du temps).

Screenshot_2015-12-20-16-08-39

Lorsque l’on perd, on obtient notre score actuel, un rappel de notre meilleur score, et le classement.

L’ennui avec ce genre d’applications, c’est qu’il est très facile de tricher. Dans la très grande majorité des cas, le score obtenu est simplement envoyé vers un serveur (qui se charge de stocker l’ensemble des scores de tous les joueurs) à la fin de la partie.

Continue reading

Attaque DoS Low and Slow

Je viens de découvrir une série Américaine appelée « Mr.Robot ».
Ca se déroule à New-York et ça parle d’un hacker qui bosse pour une grosse boite spécialisée dans la cyber-sécurité et qui, à côté de ça, s’amuse à pirater les gens pour découvrir des informations confidentielles sur eux. (Puis les fait ensuite chanter si ils ne sont pas moralement ou légalement « corrects »)
Une sorte de cyber-justicier en somme.
Je viens de visionner la saison et je dois avouer que je suis plutôt agréablement surpris.
Dans ce genre de séries/films, je regarde un peu le côté informatique technique et je suis très souvent déçu par le fait qu’on se fou souvent du spectateur en partant du principe que, « de toutes façons il n’y connait rien, on peut raconter n’importe quoi, il va pas aller vérifier ! ». C’est un peu la philosophie qu’on retrouve dans beaucoup de films qui traitent un minimum de Hacking (Je pense notamment à Opération Espadon, Hackers, ou Independance Day où les mecs arrivent quand même à gagner la guerre contre les aliens en piratant l’ordinateur du vaisseau du chef extra-terrestre)
D’ailleurs j’ai trouvé une petite liste de films qui sont de vraies perles en terme de conneries sur le piratage informatique (certains plus que d’autres), ici.
A l’inverse, il existe des films ou des scènes plutôt réalistes. Je pense notamment à « Cybertraque », le film sur l’histoire de Kevin Mitnick ou alors, en plus récent, la scène de ‘Hacking’ de « The Social Network »
Tout ça pour dire que les épisodes de « Mr.Robot » sont plutôt réalistes mis à part quelques absurdités.

Bref. Dans ce fameux épisode, les protagonistes évoquent un type d’attaque par déni de service appelé « Attaque RUDY ».
Un terme qui m’était inconnu à ce moment. Une petite recherche sur le web pour découvrir que le nom exact d’une telle attaque est « Attaque DoS Low and Slow » et RUDY est le nom de l’outil : « R U Dead Yet ? »
C’est en fait une attaque par déni de service qui est réalisable avec très peu de moyens, qui utilise la couche Application du modèle OSI et qui touche essentiellement les serveurs synchrones. (Comme Apache par exemple ! Toujours lui, je sais…)

Le principe est d’établir une connexion avec la cible, de forger une requête correcte et de l’envoyer par petits bouts (disons octet par octet). Chaque octet est envoyé toutes les X secondes, ce qui force le serveur à maintenir une connexion pendant un long moment.
En multipliant les connexions simultanées, on oblige le serveur à maintenir une multitude de connexions ouvertes. Au bout d’un moment, il n’est plus capable de servir correctement et l’utilisateur légitime ne peut plus accéder au service.
Ça fait un peu penser au SYN FLOOD.

J’ai donc réalisé une telle attaque sur mon environnement de tests.

Continue reading

Faille PHP: pirater le générateur de nombres pseudo-aléatoires

random_number

Il y a un moment, je suis tombé sur un article plutôt intéressant d’un blog de sécurité concernant un problème avec PHP et la génération de nombres pseudo-aléatoires avec les fonctions comme rand() ou mt_rand().

Ces fonctions sont très souvent utilisées dans les applications web pour:
– générer des CAPTCHA et assurer la protection de formulaires de systèmes de contact, de commentaires etc. contre le SPAM et le flood.
– permettre à des jeux en ligne (parfois d’argent !) de générer des nombres pseudo-aléatoires. (On peut imaginer une roulette en ligne où la case sur laquelle s’arrête la bille est déterminée par un appel à mt_rand() )
– assurer le fonctionnement de certaines fonctions cryptographiques
– plein d’autres trucs en rapport avec la sécurité de l’application qui s’appuient sur ce genre de fonctions.

La bonne nouvelle si vous êtes un vilain pirate, c’est que ces fonctions de génération de nombres pseudo-aléatoires génèrent (du moins sur d’anciennes versions de PHP), comme leur nom l’indique, des nombres pseudo-aléatoires. C’est à dire qu’il est, dans certaines circonstances, possible de deviner les nombres générés par le système à l’avance. (Et dans notre exemple de gagner en permanence à la roulette, ou de développer un programme qui devinera les caractères générés pour le CAPTCHA du formulaire de contact de votre site, le rendant inutile)

Continue reading

Introduction au fuzzing avec Fusil the fuzzer

Après avoir entendu parler un million de fois de l’efficacité du fuzzing sur la recherche de vulnérabilités, j’ai finalement décidé de m’intéresser un minimum au sujet. Oui, je sais, ça s’appelle être long à la détente. Pour rappel (ou pas), le fuzzing est une méthode de test logiciel qui permet de traquer les bugs et éventuellement les vulnérabilités. Ça consiste à injecter des données aléatoires (beaucoup !) en entrée et observer le comportement du programme ciblé. (Si il plante, c’est tout benef’ !). Après ça, on jette un oeil aux données passées en entrée et on essaie de comprendre ce qui a causé le problème. Bref, ça permet d’auditer un logiciel, même si on n’a pas sa source. Ce qui est plutôt intéressant.
Pour cet article, j’ai décidé d’utiliser Fusil: une bibliothèque Python écrite par Victor Stinner. Fusil permet d’écrire des fuzzers adaptés aux logiciels à tester.
Je débute complètement avec Fusil, donc cet article sera une vraie introduction. Je ferai peut-être des articles plus poussés dessus à l’avenir. En attendant, ce qui m’interesse, c’est d’être capable d’écrire un petit fuzzer fonctionnel.

Continue reading

Etude d’une vulnérabilité référencée + écriture de l’exploit

Pendant longtemps, j’étais habitué à écrire du code, beaucoup de code, et à en lire peu. J’avais horreur de lire du code qui ne m’appartenait pas. (Et des fois j’avais aussi horreur de relire du code qui m’appartenait mais que je n’avais pas touché depuis un moment^^. Mais à ce qui paraît c’est normal). Je me suis mis à la recherche d’un exo qui me permettrait de lire du code mais aussi de faire l’effort de comprendre où le développeur voulait en venir… et tant qu’à faire, que ça ait un rapport avec la sécu. Je n’ai pas eu à chercher très longtemps 🙂

Continue reading