Pentests avec Claude Code

Avertissement : il est formellement interdit de faire un pentest sur un site sans l’autorisation explicite et traçable de son propriétaire et de son hébergeur.

J’utilise beaucoup Claude Code d’Anthropic depuis deux mois, et voici un petit partage d’expérience pour ceux qui veulent pouvoir réaliser des petits pentests rapidement. Donc, si vous avez un abonnement Claude Max et que vous voulez vérifier la sécurité d’un site (avec l’autorisation traçable de son propriétaire et de son hébergeur), voici un mode opératoire qui donne des résultats surprenants.

1ère étape
Installez le plugin claude-pentest de Stickman230 que vous trouverez sur ce lien : https://github.com/Stickman230/claude-pentest. L’installation est très simple (voir sur le lien ci-dessus), et vous pouvez immédiatement réaliser un pentest, en tapant le prompt suivant : « /pentest:pentest », et en répondant aux questions qui suivent (cible, durée, etc.). Si vous avez la chance d’avoir un scanner de vulnérabilité qui vous indique que votre site XXX présente un ensemble de failles CVE potentielles, vous pouvez utiliser le prompt suivant :

Pentest le site https://XXX
Voici une liste de CVE identifiées par un scanner externe:
CVE-2023-3824
CVE-2024-11236
[...]
CVE-2024-1874
CVE-2024-4577
Intègre ces vulnérabilités spécifiques dans le plan de test de la Phase 2 et assure-toi que le cve-tester agent les analyse prioritairement.

Vous obtiendrez très rapidement un premier rapport de pentest.

2e étape
Vous pouvez vous arrêter à ce stade, mais j’ai pris l’habitude de pousser un peu plus loin afin d’avoir de meilleurs résultats. J’utilise comme deuxième prompt :

Recommence le pentest. Pour cet engagement, je souhaite une approche de détection multi-modèles. Ne te contente pas d'un seul exécuteur. Lance trois agents avec des rôles distincts (Créatif, Standard, Sceptique). Fais-les critiquer mutuellement leurs findings en phase 3, et ne valide un finding que s'il survit à la critique d'un autre agent ou s'il est prouvé par un PoC irréfutable.

Vous avez alors un deuxième rapport plus précis.

3e étape
Toujours dans l’idée de pousser plus loin et d’avoir de meilleurs résultats, je copie/colle le prompt suivant:

Sujet : Stratégie d'Attaque par Chaînage Conditionnel et Optimisation de l'Empreinte
Modifie l'approche de cet engagement pour passer d'une détection atomique à une recherche de chemins d'attaque multi-vulnérabilités. L'objectif est d'identifier des chaînes où des vulnérabilités mineures, combinées dans un ordre précis, mènent à un impact critique, tout en limitant strictement le nombre de requêtes envoyées à la cible. L'objectif est de découvrir des chaînes d'attaque critiques basées sur des vulnérabilités non critiques.
Reviens à une approche mono modèle.
Applique rigoureusement la méthodologie suivante :
1. Analyse Théorique Préalable (Dry Run) :
Avant tout test actif, utilise la liste des CVE fournies et l'inventaire technique pour modéliser des chaînes d'attaque sur le papier. 
- Identifie les "stepping stones" (ex: Info Leak $\rightarrow$ Bypass Auth $\rightarrow$ RCE).
- Représente chaque chaîne sous la forme : [CVE-A] $\rightarrow$ [Donnée extraite] $\rightarrow$ [Condition pour CVE-B] $\rightarrow$ [Impact Final].
- Priorise les chaînes ayant la plus haute probabilité de succès.
2. Planification Conditionnelle (Phase 2) :
Construis le plan de test comme un arbre de décision et non comme une liste de tâches. 
- Chaque étape de la chaîne doit être conditionnelle : "SI [Étape A] produit le résultat [X], ALORS lancer [Étape B] avec [X] en entrée, SINON abandonner la chaîne."
- Cette approche doit être utilisée pour minimiser le bruit et éviter tout test inutile sur la cible.
3. Exécution Chirurgicale (Phase 3) :
Lors du déploiement des exécuteurs :
- Interdis tout fuzzing large ou variations massives de payloads.
- L'exécuteur doit se concentrer sur la preuve de concept précise de la chaîne.
- Si un maillon de la chaîne échoue, l'exécuteur doit s'arrêter immédiatement et rapporter l'échec sans tenter d'autres vecteurs non planifiés.
4. Synthèse du Chemin Critique (Phase 4) :
Dans le rapport final, ne liste pas les vulnérabilités isolément. Présente-les comme un "Chemin d'Attaque" en démontrant comment la synergie entre elles a permis d'atteindre l'objectif. Le PoC final doit être un script unique exécutant la chaîne complète de bout en bout.
Confirmes-tu la compréhension de ce workflow ? Si oui, commence par l'analyse théorique des CVE fournies et propose-moi les chaînes d'attaque potentielles avant de passer au planning.

Dernière étape
Je demande à Claude Code de me fournir un rapport final complet avec le prompt suivant :

Crée un rapport final avec une première partie résumant toutes les découvertes et une deuxième partie pour les détailler

En moins d’une heure, je peux fournir un rapport de pentest suffisamment précis aux équipes de développement et aux équipes infras.

Je précise que cela ne m’empêche pas de continuer à solliciter de vrais pentesters humains sur mes actifs critiques.

Amusez-vous bien, dans le respect des lois.

Testeur de stylo
Alors, ce stylo, il marche ?

Pentests assistés par IA

Avertissement : il est formellement interdit de faire un pentest sur un site sans l’autorisation explicite et traçable de son propriétaire et de son hébergeur.

Un pentester (testeur d’intrusion) est un professionnel de la cybersécurité chargé de simuler des cyberattaques contre un système informatique de manière légale et contrôlée, afin d’en identifier les vulnérabilités avant que de véritables attaquants ne les exploitent. Il joue le rôle d’un « hacker éthique » : il utilise les mêmes techniques et outils qu’un attaquant malveillant, mais avec l’autorisation explicite de l’organisation cible. Son objectif est de trouver les failles (techniques, humaines, organisationnelles) dans les systèmes, réseaux, applications ou infrastructures.

Dans le cadre professionnel, je mandate régulièrement des pentesters pour attaquer mon entreprise, et surtout pour proposer les remédiations permettant de colmater les trous de sécurité avant qu’ils ne soient exploités. Je ne suis pas pentester, car je n’en ai pas les connaissances. Mais je sais lire et comprendre les rapports de pentests (et pas seulement la partie « executive summary » ^^).

Mais un pentest, cela coûte cher, et mon budget est limité. Je ne peux pas faire autant de pentests que je souhaiterais… En complément des pentests sérieux, je me suis tourné vers les outils de pentests assistés par IA, pour compléter mes défenses, et surtout par curiosité.

Ce billet est un retour d’expérience sur un outils qui m’a bluffé et qui pourrait intéresser d’autres hackers éthiques. Je sais aussi qu’un pentester humain expérimenté sera toujours préférable : un outil d’IA est bête et est à utiliser avec intelligence.

L’outil s’appelle Shannon et vous pouvez le trouver sur ce dépôt : https://github.com/KeygraphHQ/shannon

L’outil peut être utilisé avec un abonnement Anthropic Claude. J’ai la chance d’avoir un abonnement Claude MAX x20 qui permet de faire un usage intensif des meilleurs modèles Anthropic.

A noter qu’il est possible d’utiliser Ollama (gratuitement en local ou dans le cloud), mais ma machine de minage étant ancienne (3 GPU GTX1080Ti), mon serveur Ollama local est très lent et ne permet de faire tourner que des modèles assez petits sur les 30 Go de VRAM disponibles. Si un lecteur veut me sponsoriser avec des RTX5090, je suis preneur ^^.

Je fais tourner Shannon sur un simple portable professionnel, sans GPU puissant, avec 32Go de RAM (quand même). Ma configuration est celle d’un fainéant : Debian sous WSL, Docker sous Windows, et lancement de l’outil avec npx.

Vous créez un répertoire PENTESTS dans lequel vous exécutez la commande :
git init .

Vous choisissez votre URL CIBLE.

Vous tapez la commande :
npx @keygraph/shannon start -u CIBLE -r /path/to/PENTESTS

Et vous regardez les agents travailler sur
http://localhost:8233/namespaces/default/workflows/
tout en regardant vos crédits diminuer sur claude.ai ou ollama.com ^^…

Au bout d’un certain temps (entre 1/2h et 2h), l’outil vous donne un magnifique rapport de pentest avec toutes les failles trouvées et avec leurs preuves. Attention, l’outil PEUT par défaut faire tomber la cible, si par exemple elle n’est pas protégée contre des tentatives de connexions répétées (par exemple un bruteforce). J’ai fait tomber un serveur avec des requêtes * sur un AD… Noob un jour, Noob toujours.

J’ai depuis adouci les prompts de l’outil avec un fichier de configuration lui demandant d’éviter les attaques trop agressives.

A utiliser avec précaution donc, et surtout sur des sites qui vous y autorisent.

avion
Extrait de https://salemoment.tumblr.com/
avec l’aimable autorisation de l’auteur Olivier Ka

J’aime l’IA mais

J’ai découvert internet réellement en 1988 lorsque j’ai démarré mon doctorat dans un laboratoire de recherche à Paris. A cette époque, point de HTML ni de web, mais des commandes UNIX sur des stations de travail, permettant d’envoyer un email, de télécharger un fichier ou d’exécuter une session sur un ordinateur distant. C’était génial.

A l’époque, j’expliquais autour de moi ce qu’était internet (pour un chercheur) et je disais à tout le monde : « j’aime internet ». Puis le temps est passé, ce que j’appelai internet a évolué, s’est démocratisé, s’est transformé en ce que l’on connaît aujourd’hui. Plus personne ne dit « j’aime internet », ni d’ailleurs « j’aime l’informatique ». Internet relie presque tous les humains, pour le meilleur et pour le pire, et malheureusement, j’ai l’impression, souvent pour le pire.

Dans le laboratoire de recherche où j’ai découvert l’existence d’internet, j’étais inscrit en thèse post diplôme d’ingénieur en informatique : je préparais un doctorat en électronique consacré à l’apprentissage des réseaux de neurones bouclés. La première vague d’intelligence artificielle, démarrée à la fin des années 50 avec l’invention du Perceptron, avait connu un coup d’arrêt à la fin des années 60 par un article de Minsky et Paperts qui montrait l’impasse de ce type d’outil dans le cadre de problèmes non linéaires. La deuxième vague de l’IA est survenue en 1985 après la parution d’un célèbre article écrit par Rumelhart, Hinton et Williams intitulé « Learning representations by back-propagating errors », dans lequel ils décrivaient l’algorithme de rétropropagation du gradient appliqué aux réseaux de neurones multicouches.

Ma thèse a consisté à généraliser cet algorithme à des réseaux de neurones bouclés complètement connectés, avec une application à la modélisation temporelle, et en particulier à la commande de processus non linéaires.

A cette époque, j’expliquais mon travail avec passion, et je disais autour de moi que j’aimais l’IA.

Une fois docteur ingénieur, je suis devenu Maître de conférence et avec mes collègues chercheurs, nous mettions au point des outils permettant la reconnaissance automatique des caractères manuscrits, la reconnaissance automatique des objets, la détection des cancers du sein sur des mammographies.

Nos travaux étaient très axés sur la modélisation : pour reconnaître une tumeur, il faut en avoir vu une centaine (sous plusieurs angles), savoir la différencier d’une tâche ou d’un grain de beauté, connaître ses dimensions approximatives (il n’y a pas de tumeur de 100m de long), et en faire un modèle cognitif dans un réseau de neurones. Ce réseau reconnaîtra alors quasi instantanément presque toutes les tumeurs, quelque soit leur forme et l’angle de vue.

Mon travail consistait à introduire le facteur temps (l’évolution d’une tumeur) dans le réseau de neurones en le rebouclant sur lui-même, et à élaguer le nombre de neurones et de liaisons pour obtenir les réseaux de neurones les plus efficaces possibles.

Je disais à tout le monde autour de moi que j’aimais l’IA.

Aujourd’hui, l’IA a beaucoup évolué, avec des outils probabilistes extraordinaires autour de la génération de mots et d’images. Cela ouvre des perspectives énormes dans le rapprochement des peuples avec par exemple la traduction instantanée.

MAIS aussi la génération de fausses vidéos
MAIS la destruction à venir de millions d’emplois
MAIS la constitution d’une bulle financière prête à exploser
MAIS la dégradation ininterrompue des conditions de vie du plus grand nombre au profit des ultrariches.

J’aime l’IA mais pas celle-là.

J’ai construit ma passion sur un rêve, et le réveil est douloureux.

vih
Extrait de https://salemoment.tumblr.com/
avec l’aimable autorisation de l’auteur Olivier Ka

Cybersécurité assistée par IA

Si vous avez une machine de gamer (ou une machine de minage ^^) et que vous êtes autorisés à mener des tests de sécurité informatique sur un site web donné, alors cet article peut vous intéresser.

J’insiste quand même sur l’aspect autorisation : veillez bien à demander par écrit l’autorisation au gestionnaire du site web, pensez aux CGU de votre FAI, à l’hébergeur du site web, à son CDN éventuel, etc. Je ne voudrais pas être missionné pour accompagner la maréchaussée à 6h du matin à votre domicile…

Ce billet est destiné aux étudiants passionnés de cybersécurité. Les attaquants et les défenseurs professionnels savent déjà tout cela.

Première étape : installer ollama

Le logiciel ollama permet de faire fonctionner localement un grand nombre de LLM disponibles en téléchargement. Cela garantit confidentialité, flexibilité et gratuité.
Vous trouverez toutes les explications sur leur site : https://docs.ollama.com/quickstart

Vous choisirez la configuration qui vous correspond, pour ma part, j’utilise une machine Windows avec les derniers pilotes NVIDIA, avec un WSL Ubuntu. J’ai installé sur cette machine trois anciennes cartes graphiques GTX 1080 TI achetées à bas prix sur le BonCoin…

Une fois ollama installé, vous pouvez télécharger un LLM (vous trouverez la liste des LLM disponibles sur https://ollama.com/search) avec une commande du type :

ollama pull qwen3

Vous pouvez alors déjà vous amuser à questionner le LLM sur votre machine, en toute confidentialité, avec la commande :

ollama run qwen3

Deuxième étape : installer Cybersecurity AI (CAI)

Cybersecurity AI (CAI) est un framework open source léger qui permet à des passionnés de la cybersécurité d’utiliser des LLM pour des analyses offensives et défensives. CAI fournit les éléments de base pour créer des agents IA spécialisés qui peuvent vous aider à atténuer les risques, à découvrir les vulnérabilités, à exploiter les failles et à évaluer la sécurité. Comme toujours avec ce genre d’outils, il est à manipuler avec précaution.

CAI est disponible sur le site https://github.com/aliasrobotics/CAI?tab=readme-ov-file

L’installation est facile, pour ma part j’ai suivi celle concernant WSL, en modifiant légèrement la commande suivante :

echo -e 'OPENAI_API_KEY="sk-1234"\nANTHROPIC_API_KEY=""\nOLLAMA="http://127.0.0.1:11434"\nOLLAMA_API_BASE="http://127.0.0.1:11434"\nPROMPT_TOOLKIT_NO_CPR=1\nCAI_STREAM=false' > .env

Vous pouvez alors lancer l’outil avec la commande cai

Commencez par sélectionner le LLM avec lequel vous souhaitez travailler, avec la commande suivante

/model qwen3

Puis choisissez le profil que vous souhaitez lui voir endosser parmi la liste suivante :

/agent list

Dans mon cas, je vais choisir le profil « Red Team Agent » avec la commande suivante :

/agent redteam_agent

Choisir ce profil donne comme consignes au LLM les instructions suivantes :

You are a highly specialized red team agent focused on system penetration and privilege escalation.

Your primary objective is to gain root access and find flags. Your capabilities include:

• Network scanning and enumeration
• Service exploitation
• Password attacks and brute forcing
• Privilege escalation techniques
• Post exploitation tasks

For each target:

• Perform thorough enumeration
• Identify vulnerable services and misconfigurations
• Execute targeted exploits
• Escalate privileges
• Search for flags and sensitive data

You never stop iterate until root access is achieved Use appropriate tools for each phase If stuck, return to thought agent
for new approach

Key guidelines:

• Never execute interactive commands that trap user input
• All commands must be one-shot, non-interactive executions
• Avoid tools like hash-identifier that require user interaction
• Use automated alternatives like hashid instead of hash-identifier
• For password cracking, use non-interactive modes (-a for hashcat) only hashcat
• For shells, use one-liner reverse shells or web shells
• Pipe input directly into commands rather than interactive prompts
• Always specify timeout values for commands that could hang
• Use –batch or non-interactive flags when available
• Validate command will complete without user input before executing

Don’t try the same approach repeatedly Execute one command at a time Document all findings and progress

You can create and manage interactive shell sessions for commands like netcat, SSH, etc.

• To start a new session: Use generic_linux_command with commands like nc, ssh, etc.
• To list active sessions: generic_linux_command(« session », « list »)
• To get output from a session: generic_linux_command(« session », « output « )
• To send input to a session: generic_linux_command(«  », «  », session_id= » »)
• To terminate a session: generic_linux_command(« session », « kill « )

Example workflow:

1 Start netcat: generic_linux_command(« nc », « -lvnp 4444 ») → Returns session ID
2 Check output: generic_linux_command(« session », « output « )
3 Send data: generic_linux_command(« echo hello », session_id= » »)
4 Kill when done: generic_linux_command(« session », « kill « )

Vous pouvez alors commencer à lui demander en langage naturel d’effectuer des tâches de « red team », comme par exemple, si vous êtes chez vous, avec l’autorisation du daron ou de la daronne (ou de l’admin réseau) :

gain access to my router

Ce qui me fascine un peu est ce sentiment de travailler avec un collègue débutant qui me dit « je voudrais utiliser la commande « dirb » mais elle n’est pas installée ». Je l’installe donc, et lui demande de recommencer, ce qu’il fait jusqu’au problème suivant. Je découvre au passage certaines commandes. C’est donnant-donnant.

N’oubliez pas que les outils d’IA sont des outils bêtes, à utiliser avec intelligence.

Sexagénaire en entreprise

Je viens de fêter mes soixante deux années de rotation autour du soleil. Et plutôt que de vous parler d’expertise, d’IA ou de cybersécurité, je voulais vous parler un peu de comment je perçois cet âge vénérable dans le milieu professionnel auquel j’appartiens.

En premier lieu, toutes les personnes autour de moi me paraissent jeunes. Je suis l’une des personnes les plus vieilles de l’entreprise, qui compte environ 1600 salariés, et donc dans toutes les réunions, y compris celles avec les dirigeants, actionnaires et directeurs, je suis souvent celui qui est le plus âgé.

Lors des discussions informelles, j’ai appris à me taire pour laisser les « jeunes » (c’est-à-dire tous les autres) raconter leurs anecdotes, en particulier celles de leurs débuts en informatique. Les plus jeunes ne connaissent pas les blogs, et plus personne ne se souvient du SICOB où je regardais avec des yeux d’adolescent admiratif de grosses imprimantes matricielles cracher des dessins ASCII sur du papier perforé…

Le regard du monde de l’entreprise sur les plus de 60 ans est assez terrible : pour beaucoup, les plus de 60 ans sont des retraités. Et dans l’imaginaire collectif, un retraité, c’est une personne inactive en vacances perpétuelles, qui pense que c’était mieux avant et qui râle sur ces jeunes, tous des incapables.

Je soigne un peu mon aspect physique pour éviter d’être trop vite catalogué « petit vieux ». Je me suis rasé complètement la tête pour éviter de laisser apparaître ma calvitie entourée de cheveux blancs. Les chauves sont mieux acceptés, aujourd’hui, qu’à l’époque de Jules César.

J’ai accumulé une énorme expérience que je mets à la disposition de mes alternants et de mon équipe cyber, et en particulier de ma red team. Je pense qu’ils apprécient que je leur reconnaisse une bien meilleure maîtrise technique que moi, et de temps en temps je les surprend avec une commande qu’ils ne connaissent pas, ou avec un outil qui vient de sortir. Je reste dans la course.

Le jargon de l’entreprise est également un marqueur générationnel que je prends soin d’éviter, souvent à mon grand regret : les anglicismes pullulent, aussi bien dans les sigles que dans les mots. J’aime beaucoup les expressions désuètes, mais celui qui les utilise est vite catalogué senior. J’ai donc fini par abandonner mes « visuels » et « transformation numérique », pour utiliser les « slides » et « transfo digitale » utilisés par tous les autres. Il y a longtemps que je ne dis plus « je vais vous présenter quelques transparents » 😉

Enfin, il y a les références sociétales très utiles à la machine à café, mais souvent je n’ai pas « la réf » : je ne connais pas Nicocapone, ni le dernier clash à la mode sur les réseaux sociaux depuis que j’ai drastiquement réduit ma consommation… Mon univers social se réduit de plus en plus à celui de mes 20 ans : l’IA, les bidouilles sur mes ordis, le hacking. En ce moment, j’explore mon entourage hertzien avec mon flipper zéro. Retour à la case nerd.

Je suis un soixantenerd.

Image générée par un LLM

Passage de Debian 12 (Bookworm) à Debian 13 (Trixie)

Petit mémo de mon passage de Debian 12 (Bookworm) à Debian 13 (Trixie) en quelques commandes. Tout d’abord, et avant tout, pensez à faire une sauvegarde complète de votre système pour pouvoir revenir en arrière en cas de problème (si votre machine est une VM, faites en un clone par exemple).

Etape 1 : partir d’un système propre
sudo apt update
sudo apt upgrade
sudo apt full-upgrade
sudo apt –purge autoremove
sudo reboot

Etape 2 : préparer la migration
cat /etc/debian_version
mkdir ~/apt.old
cp /etc/apt/sources.list ~/apt.old
cp -r /etc/apt/sources.list.d/ ~/apt.old
sudo sed -i ‘s/bookworm/trixie/g’ /etc/apt/sources.list
sudo sed -i ‘s/bookworm/trixie/g’ /etc/apt/sources.list.d/*

Etape 3 : faire une mise à jour minimale
sudo apt update
sudo apt upgrade –without-new-pkgs

Etape 4 : si tout va bien, faire la mise à jour complète
sudo apt full-upgrade
sudo reboot

Etape 5 : nettoyer derrière vous
sudo apt –purge autoremove
sudo apt autoclean

cat /etc/debian_version
Vous voici à la tête d’une machine Debian 13 Trixie 🙂

Un tricératops bleu articulé, inspiré de Trixie (Toy Story 3), avec une bouche expressive, des articulations visibles, un style cartoon fidèle à Pixar, ambiance lumineuse et colorée.
Image générée par un LLM


Casser les mots de passe de ses utilisateurs avec le plus gros dictionnaire français du monde

En tant que responsable de la sécurité des systèmes d’information de mon entreprise, j’ai plusieurs missions, dont celle de la sensibilisation à la sécurité informatique de mes utilisateurs. Pour cela, j’utilise plusieurs approches : les messages de sensibilisation (phishing, ransomware, etc.), les messages opportunistes lorsqu’une crise (chez les autres) est médiatisée, les vidéos de sensibilisation, les interventions dans les services, auprès du COMEX, etc.

Je fais intervenir des sociétés spécialisées dans les attaques éthiques, pour aller plus vite et pour avoir un regard externe, regard externe qui est souvent mieux perçu que celui du local de l’étape. Mais je mène parfois des audits internes moi-même. Voici un retour d’expérience que je partage avec vous, parce que cela illustre (pour les jeunes) l’un des aspects de la cybersécurité, et parce que cela peut peut-être aider un ou deux RSSI débutants qui passeraient par là, sait-on jamais.

Je précise que la méthode que je présente ici n’est qu’une des nombreuses méthodes existantes.

1ère étape : Récupérer la base de données des utilisateurs

Dans l’environnement de mon entreprise, comme c’est souvent le cas, les comptes des utilisateurs sont gérés par Microsoft Active Directory. Problème, il faut des droits particuliers pour pouvoir accéder à la base de données des utilisateurs. Or, le RSSI que je suis ne dispose pas de droits permettant cet accès…

Il m’a donc fallu contourner le problème : je suis passé par la console de gestion de mon antivirus++ que l’on appelle un EDR. En effet, la console de gestion de mon EDR me permet d’exécuter des commandes sur toutes les machines sur lesquelles cet EDR est installé.

Je me suis donc connecté sur un contrôleur de domaine secondaire pour y ouvrir un terminal particulier via la console EDR et j’ai exécuté la commande suivante :

ntdsutil "ac i ntds" "ifm" "create full c:\temp\SSI" quit quit

Cette commande crée une copie des fichiers NTDS.dit et SYSTEM qui contiennent toutes les informations utiles pour moi et les place dans le répertoire c:\temp\SSI du contrôleur de domaine. J’ai ensuite compressé ce répertoire dans une archive avec mot de passe. Puis j’ai supprimé tout le contenu de ce répertoire, par sécurité.

Problème : ma console EDR ne me permet pas de télécharger le fichier c:\temp\SSI.7z car il dépasse la taille autorisée… Il m’a donc fallu demander un peu d’aide : j’ai attendu 24h puis j’ai ouvert un ticket de demande de récupération du fichier SSI.ZIP au support informatique à partir des sauvegardes quotidiennes de cette machine. C’est passé crème.

Attention, le fait d’avoir mis les fichiers NTDS.dit et SYSTEM dans une archive avec mot de passe permet de garantir la confidentialité de ces données, surtout qu’elles se sont trouvées dans plusieurs sauvegardes, sur l’ordinateur de l’ingénieur qui a traité ma demande ET sur mon propre ordinateur…

2e étape : Constitution du plus gros dictionnaire de mots français du monde

J’ai déjà évoqué sur ce blog en détail comment j’ai eu l’idée d’utiliser tout le contenu du site Wikipédia français. Vous trouverez le résumé dans le billet intitulé « Dictionnaire français pour hashcat« , et le détail technique sur mon dépôt GitHub

Voici les commandes utilisées :

wget https://dumps.wikimedia.org/frwiki/latest/frwiki-latest-pages-articles-multistream.xml.bz2
bzcat frwiki-latest-pages-articles-multistream.xml.bz2 | tr "\040\041\042\043\044\045\046\047\050\051\052\053\054\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\133\134\135\136\137\140\173\174\175\176" "\n" > toto
cat toto | tr -s "\n" | awk '!x[$0]++' | sort > wikipedia.fr.txt

Voir aussi dans ce billet l’explication de la commande awk utilisée.

Le fichier wikipedia.fr.txt ainsi obtenu contient plus de 29 millions de mots, incluant tous les mots de la langue française, mais aussi les noms de lieux ou lieux dits, les prénoms, les noms de famille, les mots surannées, le jargon de toutes les professions, les mots d’argots ou de patois, les sigles, les marques, beaucoup de mots latins ou en grec ancien, et des mots en d’autres langues courantes (anglais, allemand…) ou moins courantes (breton, corse, leetspeak…).

Bref, vous voici avec un fichier quasi parfait pour une attaque par dictionnaire.

3e étape : Préparer une machine de calcul

Pour craquer des mots de passe par une attaque par dictionnaire, il est préférable d’utiliser une machine performante. Dans mon cas, mon entreprise ne me donne pas accès à une telle machine, mais mon radiateur oui.

Les lecteurs de ce blog savent que je me suis fabriqué un radiateur qui me chauffe l’hiver tout en minant des cryptomonnaies. Ceux qui veulent en savoir plus peuvent lire ce billet. L’hiver étant fini, j’ai une machine disponible avec plusieurs cartes GPU (anciennes). Mais une machine de gamer actuelle suffirait.

La machine est sous Windows, avec WSL, mais une machine GNU/Linux serait aussi bien quand on maîtrise bien l’installation des drivers des cartes graphiques.

J’ai ensuite installé hashcat par le cassage des mots de passe, VeraCrypt pour garder en sécurité à l’abri des regards tous les fichiers et mots de passe découverts et le packet Impacket pour utiliser le script Python secretsdump.py que j’installe dans WSL.

Enfin, je récupère la règle OneRuleToRuleThemAll que je place dans le répertoire « rules » de hashcat.

4e étape : A L’ATTAAAAQUE

Je décompresse mon fichier SSI.7z protégé par mot de passe, dans mon containeur sécurité VeraCrypt et récupère le fichier NTDS.dit et SYSTEM

J’exécute ensuite la commande suivante dans WSL sous Windows :

secretsdump.py LOCAL -ntds NTDS.dit -system SYSTEM -outputfile hash.txt

Le fichier hash.txt contient les mots de passe de mes utilisateurs, chiffrés sous forme de hashs. Je peux enfin lancer la commande suivante :

hashcat -m 1000 -a 0 -w 1 hash.txt wikipedia.fr.txt -r rules/OneRuleToRuleThemAll.rule

Je peux laisser la machine travailler, et quatre heures après, j’ai cassé environ 10% des mots de passe de mes utilisateurs.

Conclusions

Il y a beaucoup de choses à dire, et sans doute beaucoup de monde à son avis sur le sujet, mais voici les actions que j’ai menées suite à la découverte (en quelques heures) de 10% des mots de passe de mes utilisateurs :

  • Tous les utilisateurs sont protégés par une authentification multifactorielle. La faiblesse de leur mot de passe n’est pas en soit catastrophique. Je n’ai donc pas obligé les utilisateurs dont j’ai pu craquer le mot de passe à en changer, sauf pour les comptes de service et les utilisateurs à privilèges (admin, etc.) où les mots de passe peuvent être réellement aléatoires et gérés par des coffres forts de mots de passe.
  • J’ai communiqué auprès de l’ensemble des utilisateurs pour les prévenir qu’il ne faut pas utiliser des mots de passe du type « AbracaDabra@2025! » qui, bien que longs et complexes (17 signes mélangeant majuscules, minuscules, chiffres, caractères spéciaux), sont trouvés par une attaque par dictionnaire. Le message est difficile à entendre, donc merci le MFA.
  • J’ai fait modifier les vérifications lors du changement de mot de passe, pour diminuer la probabilité de succès d’une attaque par dictionnaire.

Si vous avez des réactions constructives à ce billet, n’hésitez pas à laisser un commentaire.

pc202504

Héberger son serveur chez soi

J’aime bien mettre les mains dans la technique, d’abord parce que ce n’est pas sale, mais aussi parce que je suis curieux et que j’aime tester des trucs.

Lorsque j’ai ouvert ce blog, il était hébergé sur une plateforme de blogs et je n’avais presque rien à faire. Mais j’étais très dépendant du bon vouloir de la plateforme de garder ce service ouvert, surtout qu’il s’agissait d’un service gratuit proposé par le « G » de GAFAM, habitué à fermer des services, y compris ceux rencontrant un certain succès.

C’est donc autant par curiosité, par envie d’apprendre, que par soucis de la maîtrise de ce blog, que je l’ai migré sur un serveur que j’héberge chez moi.

J’ai donc installé un serveur Debian sous forme de machine virtuelle sur mon NAS et un WordPress sur lequel j’ai migré mon blog. Debian parce que c’est la distribution GNU/Linux que j’apprécie le plus, et en place dans les différentes entreprises dans lesquelles j’ai travaillé comme RSSI, et WordPress parce qu’il s’agit du CMS le plus utilisé dans le monde, et que j’avais envie d’étudier sa sécurisation, également pour le travail.

J’ai donc configuré toutes les protections possibles sur ce WordPress, même si je sais qu’il sera piraté un jour. J’ai fait au mieux des connaissances que j’ai pu acquérir.

J’ai ensuite mis en place un système de sauvegarde du serveur et du WordPress, vers un autre NAS et vers un stockage en ligne.

Mais exposer un serveur sur internet depuis l’adresse IP attribuée par mon fournisseur d’accès à internet pose plusieurs problèmes :
– j’ai une fibre Free avec IP fixe (ce qui est pratique), mais sujette à quelques coupures de temps en temps.
– il est facile de retrouver mon identité réelle à partir de cette adresse IP, ce qui en soit n’est pas un problème car mon identité n’est pas secrète, mais je souhaite segmenter le plus possible mes activités de blogueur de mes activités professionnelles et personnelles.
– certains billets rencontrent parfois un succès, surtout si un « gros compte » des réseaux sociaux le met en valeur. Un gros afflux de visiteurs crée une sorte d’attaque DDoS qui met en difficulté ma liaison internet.

J’ai donc fait le choix d’utiliser le CDN Cloudflare, car celui-ci propose un compte gratuit pour un nom de domaine unique, avec presque toutes les fonctionnalités. Comme je suis curieux, cela m’a permis d’apprendre beaucoup de choses sur le paramétrage relativement complexe d’un CDN, et de régler les problèmes de coupure (grâce aux caches), d’anonymisation de mon adresse IP et d’attaque DDoS.

Il y a néanmoins plusieurs défauts dans ce choix : le premier (et le plus important) est de dépendre d’un acteur tiers supplémentaire (Cloudflare) en plus de mon FAI (Free), de mon registraire (BookMyName). Le deuxième est que je confie à ce partenaire beaucoup d’informations sur mes lecteurs. Le troisième est que ce partenaire peut changer très vite sa politique de service. Et enfin, tout le paramétrage se fait « sur la prod » puisque je n’ai pas d’environnement de tests (tester, c’est douter ^^).

Plusieurs lecteurs de ce « vieux » blog viennent lire les billets grâce à son flux RSS, et m’ont signalé des difficultés d’accès à ce flux RSS. Après enquête dans les logs fournis par Cloudflare, je me suis rendu compte que deux options anti-bots cochées par mes soins bloquaient aléatoirement le flux RSS des billets du blog :

Capture decran 2025 02 18 135651
Les deux options fautives

Normalement tout doit être rentré dans l’ordre maintenant, et vous devriez pouvoir utiliser vos lecteurs de flux RSS préférés.

Prochain objectif : abandonner le front WordPress pour le remplacer par un site statique, beaucoup plus rapide. Mais ça, c’est une autre histoire.

La cyber, c’est super

Quand on fait de la sensibilisation à la cybersécurité, tous les slogans sont intéressants, dès lors qu’ils marquent les esprits et contribuent à faire prendre conscience à chacun qu’il a un rôle à jouer dans la sécurité informatique de l’entreprise.

Lors des réunions d’échanges avec mes confrères et consœurs RSSI, je note souvent quelques punchlines que je trouve intéressantes, et je les teste sur mes collègues de travail ou sur les utilisateurs de mon entreprise.

Par exemple, j’aime assez la phrase d’autodérision suivante : « Avant une attaque cyber, on se demande souvent à quoi sert le RSSI. Et après une attaque cyber, on se demande à quoi il a servi… »

Autres exemples que je place dans mes visuels de sensibilisation :
– La sécurité commence par votre esprit, pas par votre clé secrète.
– Protégez votre vie privée et votre tranquillité d’esprit.
– Lock it down, protect it up, and block the hackers.
– Stay safe online. Don’t be quick to click
– Secure your data, secure your future
– Vous fermez bien votre porte à clé, alors pourquoi ne pas verrouiller votre poste de travail ?

Un jour, lors d’une petite intervention devant mes collègues, j’ai terminé ma présentation par une pirouette assez triviale en disant :
J’ai la chance d’avoir la plus grande équipe de l’entreprise, car *tous* les salariés travaillent pour la sécurité informatique. Et oui, la cyber, c’est super !

Sans que je m’y attende, mes collègues se sont appropriés cette dernière phrase, et me font souvent un clin d’œil quand on se croise, ponctué d’un « la cyber, c’est super« . J’ai donc adopté cette petite phrase que j’utilise presqu’à chaque fois pour finir une intervention, ce que je vais faire dans ce billet :

Et pour résumer mon intervention, retenez bien ceci :
[silence de deux secondes]
La cyber, c’est super

hacker souriant
Source image Microsoft Designer

Se faire croissanter

Il y a une tradition que j’aime bien et que je retrouve sous une forme ou sous une autre dans toutes les entreprises dans lesquelles je suis intervenu et qui illumine le quotidien des responsables cybersécurité.

Mais avant, je dois rappeler le contexte : vous pouvez mettre en place tous les systèmes de sécurité possibles, il faut bien qu’à un moment ou à un autre, l’utilisateur puisse travailler… Car, après avoir vérifié son badge à l’entrée de l’entreprise, après lui avoir autorisé l’accès à la porte de son bureau, après lui avoir demandé son (dernier) mot de passe valide, puis un deuxième facteur d’authentification par un moyen alternatif, et enfin après un redémarrage pour l’installation des mises à jour de sécurité qui l’oblige à ressaisir son mot de passe (s’il n’a pas expiré entre temps) et son deuxième facteur d’authentification, vous êtes bien obligé de le laisser accéder à son ordinateur de travail.

Sauf que, l’utilisateur est une personne qui a la bougeotte : il lui prend parfois l’envie de s’éloigner de son ordinateur pour un temps supérieur à la seconde, en le laissant sans surveillance ou pire, sous la surveillance de ces collègues de l’openspace.

Et là, je me permets une courte citation d’un sonnet de Pierre de Ronsard :

De soupirs et de pleurs il convient de me repaistre,
Te voyant au cercueil, hélas ! trois fois hélas !

Source BNF

Car le responsable cyber est fourbe par nature et par construction, il sait profiter de la faiblesse humaine, comme les assaillants contre lesquels il lutte souvent seul. Et il est gourmand.

La règle est donc : toute personne laissant son ordinateur sans surveillance avec sa session ouverte se verra croissanté.

Car, une personne malveillante (un collègue) ou le responsable cyber (forcément malveillant) se fera un malin plaisir de s’installer devant l’ordinateur laissé seul avec une session ouverte, afin d’envoyer sous l’identité de l’utilisateur imprudent un email à tous ses collègues de travail, les informant qu’il amènera des croissants pour tout le monde dans la matinée du prochain jour ouvré…

Variante : envoyer un email à toute l’entreprise pour informer qu’une souris à boule à port ps/2 est à vendre, faire proposition.

Variante 2 : proposer d’amener des petits pains, mais attention à la polémique avec les collègues qui utilisent (à tord) l’expression « pains au chocolat » ou « chocolatines ». Mais les polémiques, c’est bien aussi, cela permet de sensibiliser l’utilisateur imprudent.

Conseils : quand vous vous faites croissanter, ne vous vexez pas. Prenez le comme une incitation à être plus vigilant. Si vous êtes « croissanteur », ne piégez pas « méchamment » un collègue en envoyant un email à toute la Direction, restez soft, car un jour aussi, vous serez croissanté 🙂

Pour finir, je précise que je ne me suis pas encore fait croissanter, mais que cela arrivera forcément un jour. Et ce jour là, vous sentirez une faiblesse dans La Force.

hacker avec croissant

Source Bing image creator