Créer son premier petit robot !

L’année dernière, lorsque j’étais en première nous avions, moi et deux autres camarades, choisi de créer un robot assez basique dans le cadre de notre TPE.

L’électronique étant étroitement liée à l’informatique, je pense que ce blog peut convenir à mettre en ligne notre dossier.

Nous nous sommes alors plongé dans un domaine immensément riche et complexe qu’est celui de l’électronique. N’ayant aucune base ce fut très difficile mais avec beaucoup de persévérance nous sommes arrivés à un résultat très convenable je pense et à la hauteur de mes attentes.

Robot

Read more

Breaking ADFGVX

J’ai décidé sur ce blog de vous faire part de plusieurs de mes projets, même les plus petits alors voici un petit article en attendant un prochain plus conséquent et/ou plus intéressant.
J’en profite pour dire que mon packer avance mais je me vois confronté à la complexité du format PE donc il faudra attendre un peu avant la prochaine partie. Je vous laisse alors de la lecture.

Un peu de cryptographie, de temps en temps ça ne fait pas de mal =).
Petit flash-back en 1918. Les français sont menacés d’une offensive par les allemands qui percerait jusqu’à Paris. Cinq points d’attaques sont redoutés par l’armée française. Elle n’a pas le droit à l’erreur. Les allemands utilisent un cryptage pour se communiquer, le chiffre ADFGVX. C’est alors que Georges-Jean Painvin fait apparition et parvient à casser ce cryptage. Tentons de faire la même chose et mettons au point un programme permettant de déchiffrer tous ces messages allemands.

Read more

Make your own packer – Part I

Bonjour/ Bonsoir,

bienvenue sur mon nouveau blog =). J’ai seulement gardé quelques anciens articles qui me paraissaient intéressant de mon ancien blog, mais les autres resteront consultable à mon ancienne adresse.

L’idée de réaliser un packer me trotte depuis longtemps dans la tête. Et aujourd’hui je vais donc vous proposer un article sur le sujet pour inaugurer ce nouveau blog.

Read more

Playing with PEB, listing process modules

(Article déjà paru sur nibbles)

Bonjour/Bonsoir,

Suite à l’article très intéressant de YoLeJedi où il fait des trucs et des machins de Jedi avec hFile je me suis dis qu’il devais y avoir un moyen plus simple de lister ces modules avec des techniques de padawan cette fois. Bon le contexte va être différent cette fois-ci puisque pas de session de debugging et on assistera pas en live au load des Dll cependant on pourra quand même les lister par ordre de chargement. Let’s go !
Read more

Sniffer TCP with Raw Sockets

Plop all :)
aujourd’hui je me penche un peu sur les raw sockets et je vous propose ce petit code qui permet de sniffer les trames TCP entrentent. Bon ici je montre que les bases mais le code ne demande qu’à être renchérit.

Le principe est simple, on créé un socket qui va écouter et intercepter toutes les données qui passent notre réseau. La création du socket se fait presque normalement, si ce n’est qu’il ne faut pas oublier d’activer le mode promiscuous de la carte réseau, à savoir grace à la fonction WSAIoctl().
Read more

Detect Hidden Processes – KiWaitListHead

Mon précédent article finissait sur un échec mais grâce à Ivanlef0u je peux continuer :) . Heureusement puisque la première technique que je présentais dans cet article, technique qui m’avais pris plusieurs heures à mettre en place, n’a pas résisté plus de 10 minutes à Overclok :( .
Nous nous étions arrêté à la récupération d’un pointeur sur la table KiWaitListHead après avoir scanné la fonction KeWaitForSingleObject() exportée par ntoskrnl.exe.
Mon problème était de savoir par quelles structures était composée cette table. Je n’est pas la réponse exacte mais j’ai pu recueillir les infos nécessaire ici
Read more

Detect Hidden Processes – Handle Table List

Bonjour/Bonsoir,
je me vois obligé de laisser un petit post en réponse à celui d’Overclok, je cite : “How to pwn lilxam’s toolz :) “. Ce post faisant lui-même référence à mon article ” Listing all processes“. Bref revoyons un peu tout ça :
-Ivanlef0u puis Overclok s’amuse à cacher des processus à “unlinkant” les structure EPROCESS de ces processus de la table PsActiveProcessList.
-Me viens alors l’idée de trouver un moyen de retrouver ces processus cachés, je met alors en place un Brute Force sur les ID des processus en testant leur existence via OpenProcess(). Rien de bien élégant mais ceci à le mérite de fonctionner.
-Overclok viens alors à présenter 2 autres techniques pour cacher des processus. La première étant l’unlink de la PspCidTable, technique qui met en échec mon précédent tool puisque la fonction OpenProcess() se sert de la table PspCidTable. La seconde est l’unlink d’une structure dans csrss.exe. Ce processus étant un sorte de “sous-système”, il a un handle ouvert sur tous les processus. On aurait donc pu lister les processus en récupérant tous les handles ouvert par csrss.exe.

Mon problème alors est d’arriver à lister tous les processus mêmes cachés avec les trois techniques précédentes.
Read more

Detect Hidden Processes – PID brute force

Plop :)
Alors que je lisais un article de monsieur Ivanlef0u (article), un article très intéressant où ivan nous projette en ring0 avec l’API NtSystemDebugControl() et notamment deux contrôles qui sont DebugSysReadVirtual et DebugSysWriteVirtual (ce ne sont pas les seuls permettant de faire ça :]), je vois monsieur s’amuse à cacher des processus et nous laisse un petit message “Il existe tout de même une façon de le retrouver mais shuuuuut !”. Je prends ça comme un petit défis et me dis qu’on va faire réapparaître sont processus ! Nan mais! Je prends mes petits doigts et je réfléchis… Je fais quelques petits tests et arrive par me demander s’il n’est pas possible de retrouver le nom d’un processus à partir de son ID. Je fais un saut chez la msdn et je vois la fonction GetModuleBaseName() :) . Juste ce qu’il me fallait, il ne me reste plus qu’à faire un petit BF sur les ID des processus et récupérer les noms correspondant.
Read more

Integer Overflow

Hello :) ,
je me suis souvent posé la question du pourquoi du comment j’obtenais parfois des résultats ambigus avec mes entiers. Par exemple une somme de deux entiers positifs qui donnait un résultat négatif…
Ceci est en fait du à ce qu’on appelle “Integer Overflow” ou débordement d’entier.
Tout d’abord essayons de comprendre comment tout ceci fonctionne.
Read more