Hackflash #5 : Ecrire un shellcode

Un shellcode est un petit programme dont il faut déclencher l'exécution, généralement en écrasant l'adresse de retour d'un programme dans la pile (la valeur de EIP empilée par le CALL du programme appelant) au moyen d'un buffer overflow.
Ecrire un shellcode
Qu'est-il attendu d'un shellcode, et quelles sont les contraintes qui imposent son écriture en assembleur ?
Continuer la lecture de "Hackflash #5 : Ecrire un shellcode"
Hackflash #5 : Ecrire un shellcode

Hackflash #4 : Déboguer avec GDB : un bref didacticiel

Qui veut en apprendre plus sur le shell coding ne peut faire l'économie de se mettre à l'assembleur et d'apprendre à déboguer des programmes écrits en C ou C++ avec le très fameux GNU Project Debuger, "GDB" pour les intimes.
Bien évidemment, les didacticiels pour apprendre à utiliser GDB sont légion. Toutefois, pourquoi ne pas apporter une pierre de plus à l'édifice en présentant aussi succinctement que possible les principales commandes afin de faciliter une première prise en main, qui permet d'approcher le monstre avant de rentrer dans les entrailles de sa documentation ?
Dans ce petit didacticiel, il s'agira donc de déboguer un programme C des plus élémentaires compilé avec GNU Compiler Collection, "GCC" pour les intimes, dans Kali Linux.
Continuer la lecture de "Hackflash #4 : Déboguer avec GDB : un bref didacticiel"
Hackflash #4 : Déboguer avec GDB : un bref didacticiel

Utiliser le client Xdebug en ligne de commandes

Le déboguage d'une application écrite en PHP n'a longtemps rien eu d'évident : on multipliait les echo. Fort heureusement, il existe désormais une solution : Xdebug.
Dans un article précédent, il a été question de la manière de configurer Apache et PHPStorm pour déboguer dans cet IDE.
Or, il aussi possible d'utiliser Xdebug en dehors du contexte d'un IDE. Pour cela, il suffit d'utiliser le client Xdebug en ligne de commandes. A la limite, il est fort instructif de tenter de l'utiliser avant même d'utiliser Xdebug dans PHPStorm ou tout autre IDE, tant cela permet de mieux comprendre comment Xdebug peut fonctionner.
Continuer la lecture de "Utiliser le client Xdebug en ligne de commandes"
Utiliser le client Xdebug en ligne de commandes

Apollo 11, le documentaire du dépassement

Comment échapper au spectacle lamentable d'un humanité de rampants, empêtrés dans de querelles intestines qu'ils reconduisent sans cesse en dépit de la démonstration flagrante que l'Histoire leur en donne de la futilité ; enfin merde, se faire la guerre pour s'accaparer un bout de territoire ? pour imposer ses idées, ou pire, ses valeurs, voire, plus pathétique encore, sa religion ? A défaut de parvenir à coexister paisiblement avec autrui, ne viendra-t-il à l'esprit de personne de vivre et mourir sagement dans son coin ? Quand se faire oublier sera-t-il enfin érigé en principe de vie ?
Paradoxalement, c'est quand elle s'est ainsi abaissée sous l'animal, ou pour le dire très opportunément, lorsqu'elle est tombée plus bas que terre, que cette humanité semble trouver le ressort nécessaire pour s'élever au-dessus d'elle. C'est du moins ce que donne à voir l'aventure de la conquête spatiale, qui est avant tout le produit du génie de la guerre. De fait, si l'on veut bien admettre que l'Humanité est animée de la rage de se répandre, alors la guerre est bien cet accélérateur de l'Histoire que décrivait Lénine, et pour aussi lamentable que ce soit, il faut admettre qu'au fond, elle nous sert. Ruse de l'Histoire, dira-t-on.
Ainsi, c'est alors que la guerre froide bat son plein que l'Amérique va trouver l'énergie de s'ébrouer enfin. Humiliée par les réussites de l'URSS, d'autant plus insolentes que la dictature exercée par le Kremlin lui permet de (faire) taire tous ses échecs, elle se lance à son tour dans la conquête spatiale et parvient, le 20 juillet 1969, à faire vivre à l'Humanité un moment, ce pourquoi elle demeure encore à ce jour une nation indépassée : dans le respect des hommes, car Apollo n'est pas un radeau de la Méduse jeté en pleine mer, en arracher à cette Terre pour les faire marcher sur la Lune.
Continuer la lecture de "Apollo 11, le documentaire du dépassement"
Apollo 11, le documentaire du dépassement

Root Me : racine-moi, si tu l’oses !

Lorsque je me suis intéressé à la sécurité informatique, je n'ai pas bien su pas où attaquer la chose. Finalement, je me suis décidé à l'attaquer à sa racine, Root Me étant là pour ça.
Le site de Root Me, avec son trop cool de logo
La sécurité informatique est un vaste domaine, c'est le moins que l'on puisse dire, d'autant plus que certains s'emploient à l'étendre joyeusement. Sans doute, dans la vie professionnelle, il faut savoir ravaler son domaine d'expertise pour l'accorder aux couleurs du temps, quitte à forcer un peu sur la peinture. Reste que cela ne va pas sans générer une certaine confusion. Pourquoi pas un "Grenelle du cul", avait proposé Roselyne Bachelot, lassée que l'on promette un Grenelle sur tout. On voit l'idée.
Pour y mettre un pied – dans la sécurité informatique, pas au cul –, j'ai déterminé que je partirai de la base, c'est-à-dire de la technique, et qu'après avoir acquis un vernis, je ferai des choix. Toutefois, passé un certain temps à lire quelques documents et regardé quelques vidéos portant essentiellement sur les techniques d'intrusion analysées par des pentesteurs, il m'est apparu impossible de vraiment assimiler des connaissances sans m'adonner à une pratique assez intense, les sujets, même à ce niveau et dans cette spécialité, étant trop divers.
Pirater le réseau WiFi du voisin étant exclu, les MOOC m'ont semblé tout indiqués. Reste qu'après en avoir tâté un peu, je n'ai pas trouvé la motivation pour m'y investir plus que quelques heures. Le problème, c'est que ce n'était pas le challenge. On était loin de l'ambiance demoparty, "elite rulez", ou "l337 rUl32" comme on dit maintenant, et tout ce qui tire vers le haut parce que c'est compliqué, et parce que c'est reconnu. Sorti de l'arène, le gladiateur s'ennuie.
Le salut devait venir d'ailleurs. Au hasard d'une rencontre – enfin, c'était une réunion traitant de cyberdéfense, donc le caractère fortuit est somme toute très relatif –, j'ai eu l'occasion de rencontrer quelqu'un pratiquant quelque chose de tout à fait passionnant, le forensics. Le gaillard, à qui j'ai exposé mon problème, m'a alors renvoyé sur Root Me.
Mise à jour du 31/08/2022 : C'est un peu Hacker's Quest: So You Want To Be A Hacker en plusieurs chapitres désormais. Après l'acquisition du socle technique, celle du socle culturel ici.
Mise à jour du 03/07/2022 : Pour finir, car tout fait son temps, classé au Top 100. Un conseil ? Aussi difficile que cela puisse être : n'abandonnez jamais.
Mise à jour du 30/01/2020 : Cet article a été rédigé il y a quelques mois, et n'est publié que maintenant sur ce blog pour être synchrone avec sa publication dans Programmez! Depuis, l'eau a coulé sous les ponts, m'étant adonné à bien d'autres challenges sur Root Me. Cryptanalyse, Web-client, Web-serveur et stéganographie pour l'heure : je confirme qu'ils sont tout aussi instructifs et prenants !
Continuer la lecture de "Root Me : racine-moi, si tu l’oses !"
Root Me : racine-moi, si tu l’oses !

Hackflash #3 : Dumper les heaps avec volatility

Nul ne peut prétendre s'investir sérieusement dans le forensics sans apprendre à utiliser volatility. Ce merveilleux outil sert à extraire toute sorte d'informations d'un dump de la mémoire d'une machine, capable qu'il est d'y retrouver les traces de structures de l'OS.
Volatility
Un travail souvent demandé à l'outil, c'est dumper les heaps d'un process, dans l'espoir que l'analyse de ces dernières permettra de trouver des traces de l'activité d'un utilisateur. L'exemple classique est le texte qu'un utilisateur était en train d'écrire dans le Bloc-Notes.
Etrangement, volatility ne permet pas d'emblée de procéder à un dump aussi sélectif. Heureusement, il suffit de bidouiller légèrement le code d'un plug-in pour y arriver.
Continuer la lecture de "Hackflash #3 : Dumper les heaps avec volatility"
Hackflash #3 : Dumper les heaps avec volatility

Hackflash #2 : Lister les segments d’un JPEG

Un grosse astuce en matière de stéganographie consiste à dissimuler des données dans un fichier image. Dans le cas d'un JPEG, il s'agira de jouer avec les segments.
Le flag est dans le JPEG...
La technique de base pour trouver ces données cachées est assez pénible, puisqu'elle consiste à passer en revue le contenu du fichier avec un éditeur hexadécimal tel que l'incontournable HxD.
Fort heureusement, il est possible d'automatiser cela en quelques lignes de Python...
Continuer la lecture de "Hackflash #2 : Lister les segments d’un JPEG"
Hackflash #2 : Lister les segments d’un JPEG

Hackflash #1 : Clé privée PKCS8 et formats ASN.1, DER et PEM

La quantité de formats que le profane rencontre en cryptographie a de quoi lui faire tourner la tête. Le sujet peut être d'autant plus déroutant que certains de ces formats semblent équivalents, au sens où ils permettent de véhiculer un même contenu, mais sous des formes différentes.
Tel est notamment le cas des formats ASN.1, DER et PEM, qu'il est possible d'utiliser pour stocker une clé privée générée avec l'algorithme RSA sous trois formes différentes.
Le PEM d'une clé privée
Bien connaître ces formats peut se révéler utile, notamment lors de challenges de sécurité informatique où il arrive d'avoir à forger des certificats et/ou des clés de manière tout à fait artisanale. Dans ce contexte, c'est le format ASN.1 qui peut être mobilisé.
Les brèves explications qui suivent visent à montrer, à travers l'exemple d'une petite clé privée générée avec l'algorithme RSA, comment il est possible de passer de l'un à l'autre de ces formats.
Continuer la lecture de "Hackflash #1 : Clé privée PKCS8 et formats ASN.1, DER et PEM"
Hackflash #1 : Clé privée PKCS8 et formats ASN.1, DER et PEM

Desire « ONE » : le coding-of d’une BBS-intro sur Amiga

Enfin, la dernière ! Au terme de quelques années de retour dans le passé pour revisiter la programmation du hardware de l'Amiga, voici Desire "ONE", la dernière des productions d'une série dont l'idée était de rendre hommages aux grandes figures de ce que fut la scène. Après avoir successivement salué le mérite des graphistes dans Scoopex "TWO", des coders dans Scoopex "ONE", des crackers dans Scoopex "THREE", c'est donc sur une salutation aux sysops que le rideau tombe définitivement.
Desire "ONE" : Une BBS-intro sur Amiga
Sans doute, il resterait encore bien assez d'aspects du hardware à explorer pour trouver l'occasion de produire des hommages à bien d'autres figures : musiciens, swappers, suppliers, spreaders, editors et qui sais-je encore. Toutefois, il faut rester au diapason du progrès technique, et sans qu'il s'agisse de prétendre en devenir un spécialiste, mais juste savoir un peu de quoi on parle, cela impose actuellement de se former à de sujets denses et divers comme jamais : Cloud, Machine Learning, Ethical Hacking, Ray-Tracing, etc. Le temps étant compté - le développement n'est pas mon métier -, cette mise à l'heure m'apparaît prioritaire.
La production dont il sera question ici est une BBS-intro. Autrement dit, c'est une intro consacrée à la promotion d'un Bulletin Board System (BBS). Elle est le fruit d'une collaboration avec le groupe Desire, qui reste très actif sur plusieurs scènes, notamment la scène Amiga.
Comme toujours : code, data et explications dans tout ce qui suit...
Mise à jour du 15/09/2019 : La BBS-intro a été distribuée lors de la Function 2019 qui s'est tenue à Budapest, et l'archive contenant l'ADF ainsi que le source et les données est donc maintenant proposée au téléchargement.
Continuer la lecture de "Desire « ONE » : le coding-of d’une BBS-intro sur Amiga"
Desire « ONE » : le coding-of d’une BBS-intro sur Amiga

Scoopex « THREE » : Le coding-of d’un menu de trainer sur Amiga

Sur Amiga, le trainer était essentiellement un menu enjolivé par un FX et une musique, qui permettait d'activer des options pour tricher dans un jeu : "Vie illimitées: On/Off", et ainsi de suite. Dans bien des cas, le trainer a pu être le seul moyen de parvenir à profiter totalement d'un jeu sans y passer trop de temps, vu la difficulté. Ne termine pas Shadow of the Beast qui veut...
Dans la continuité d'un programme d'hommages aux différentes figures de la scène, voici Scoopex "THREE", un trainer produit pour le fameux StingRay du glorieux groupe Scoopex. Après Scoopex "TWO" rendant hommage aux graphistes, un hommage aux crackers, donc.
Scoopex THREE : Un trainer pour A500 en 2019
Comme on pourra le constater, l'originalité a pris ici le pas sur la technique. Du moins en apparence, car en matière de programmation du hardware en assembleur sur Amiga, tout devient finalement assez technique rapidement !
Code, data et explications dans tout ce qui suit...
Mise à jour du 08/12/2019 : Le menu a été magnifiquement porté sur Flashtro. C'est ici !
Ce menu n'a toujours pas été utilisé par StingRay, mais comme dans le cas de Scoopex "ONE" j'ai jugé qu'après des mois d'attente, il était nécessaire... de ne plus attendre. A priori, il devrait être utilisé sous peu. On verra bien...
Continuer la lecture de "Scoopex « THREE » : Le coding-of d’un menu de trainer sur Amiga"
Scoopex « THREE » : Le coding-of d’un menu de trainer sur Amiga