Objectifs
Salut, Apache ! Ce projet vise à vous initier aux techniques OSINT appliquées au réseau Tor, en simulant l’analyse de services cachés (dark pools) de manière éthique. DarkPoolScanner est une démo statique qui montre comment scraper des pages onion publiques (ex. : moteurs de recherche comme Ahmia) et extraire des informations comme les liens ou les titres. L’objectif est éducatif : comprendre le deep web sans franchir les limites légales.
Pourquoi ce projet ? Pour démystifier le deep web et enseigner l’OSINT responsable.
À qui s’adresse-t-il ? Aux passionnés de cybersécurité, aux chercheurs, et aux curieux avertis, dans un cadre légal.
Théorie OSINT
L’OSINT, c’est comme être un détective cyber : tu collectes des indices publics sans laisser de traces. Sur Tor, ça veut dire explorer des sites onion légaux avec une éthique en béton.
Qu’est-ce que l’OSINT ? ℹ️Open-Source Intelligence : collecte de données publiques pour analyse.
L’OSINT (Open-Source Intelligence) récupère des données publiques pour construire un puzzle d’infos. Exemple : scraper le moteur Ahmia pour trouver des blogs onion, sans jamais toucher à des trucs louches comme les dark pools illégaux.
Réseau Tor ℹ️The Onion Router : réseau d’anonymisation via nœuds relais.
Tor, c’est ta cape d’invisibilité : il cache ton IP en faisant rebondir ta connexion via trois nœuds. Les sites onion (.onion) sont des services cachés, allant de bibliothèques libres à… des trucs qu’on ne touche pas. Ce tuto reste sur des sites clean comme Ahmia.
Méthodologie OSINT
Voici comment un Apache OSINT bosse sur le deep web :
- Identification des sources : Moteurs comme Ahmia, Torch, ou forums légaux (ex. : Reddit onion).
- Collecte passive : Scraper sans cliquer ni s’authentifier. Ex. : extraire les liens d’une page d’accueil.
- Analyse : Chercher des patterns (ex. : URLs admin, mots-clés). Exemple : un site avec “/login” peut indiquer une zone privée.
- Documentation : Sauvegarder tout avec horodatage. Ex. : captures d’écran via Tor Browser.
Outils complémentaires
Pour aller plus loin (toujours éthique) :
- OnionScan : Vérifie les fuites de config des services onion.
- Maltego : Dessine des graphes pour lier des données (ex. : URLs → domaines).
- SpiderFoot : Automatise l’OSINT multi-source.
Légalité
En France, naviguer sur Tor est 100 % légal, mais scraper sans permission peut enfreindre les CGU d’un site, et toucher à des contenus illicites (ex. : marchés noirs) = jusqu’à 7 ans de taule. Ce tuto simule tout en local pour rester clean.
Spécifications
Caractéristiques techniques de DarkPoolScanner :
- Plateforme : Navigateur web (Chrome, Firefox) avec Tor Browser configuré manuellement.
- Technologies : HTML5, CSS3, JavaScript (ES6).
- Fonctionnalités : Simulation de scraping de pages onion, extraction de liens et titres, visualisation en graphe, export JSON, rapport PDF.
- Interface : Champ de saisie pour l’URL onion, sélection de profondeur et nœud Tor, bouton d’analyse, graphe de liens, logs d’activité.
- Données : Mockées (simulées) pour rester statique.
- Sécurité : Aucune requête réelle, respect des lois françaises.
Mise en œuvre
Étapes pour utiliser DarkPoolScanner :
Étape 1 : Installer Tor Browser
Téléchargez et installez Tor Browser depuis torproject.org. Lancez-le et configurez-le pour naviguer anonymement. Testez : accédez à Ahmia pour vérifier la connexion.
Étape 2 : Créer le fichier HTML
Utilisez ce fichier HTML comme base. Enregistrez-le sous darkpoolscanner.html dans votre répertoire de site statique. Testez : ouvrez-le dans un navigateur classique pour voir l’interface.
Étape 3 : Simuler le scraping
Entrez une URL onion fictive (ex. : http://example.onion), choisissez la profondeur et le nœud Tor, et cliquez sur « Analyser ». Le JavaScript simule le scraping et affiche un graphe des liens. Testez : les résultats (liens, titre, graphe) s’affichent.
Étape 4 : Générer un rapport
Cliquez sur « Générer un rapport OSINT » pour obtenir un PDF des résultats. Exportez en JSON pour une analyse hors ligne.
Interface Utilisateur
Console de scanning OSINT :
- URL : Saisir une URL onion fictive.
- Profondeur : Niveau de scan (1 à 3).
- Nœud Tor : Simulation de connexion.
- Analyse : Lancer le scan simulé.
- Graphe : Visualisation des liens (clic pour détails).
Logs d’activité :
Code
Code JavaScript pour la simulation OSINT :
const mockData = {
"http://example.onion": {
status: 200,
title: "Exemple de Service Onion",
description: "Blog anonyme sur la cybersécurité (EN)",
links: ["http://example.onion/about", "http://example.onion/contact", "http://example.onion/blog"],
metadata: { server: "Apache/2.4.41", lastModified: new Date().toLocaleDateString(), contentType: "text/html", size: "12.5 KB" },
latency: 2000
},
"http://testnet.onion": {
status: 200,
title: "TestNet Archive",
description: "Archive de documents publics (FR)",
links: ["http://testnet.onion/docs", "http://testnet.onion/search", "http://testnet.onion/faq"],
metadata: { server: "Nginx/1.18.0", lastModified: new Date(Date.now() - 86400000).toLocaleDateString(), contentType: "text/html", size: "8.2 KB" },
latency: 3000
},
"http://securehub.onion": {
status: 200,
title: "SecureHub Forum",
description: "Forum de discussion anonyme (EN)",
links: ["http://securehub.onion/login", "http://securehub.onion/threads", "http://securehub.onion/profile"],
metadata: { server: "LiteSpeed/6.0", lastModified: new Date().toLocaleDateString(), contentType: "text/html", size: "15.7 KB" },
latency: 5000
},
"http://hiddenlib.onion": {
status: 404,
title: "Bibliothèque Cachée",
description: "Page introuvable (ES)",
links: [],
metadata: { server: "Inconnu", lastModified: "N/A", contentType: "N/A", size: "0 KB" },
latency: 7000,
error: "404 - Page non trouvée"
},
"http://blocked.onion": {
status: 403,
title: "Service Bloqué",
description: "Accès refusé par le nœud Tor (DE)",
links: [],
metadata: { server: "Inconnu", lastModified: "N/A", contentType: "N/A", size: "0 KB" },
latency: 10000,
error: "403 - Nœud Tor bloqué"
}
};
const logs = [];
function logAction(action) {
const logEntry = \`[\${new Date().toISOString()}] \${action}\`;
logs.push(logEntry);
const logList = document.getElementById("log-list");
if (logList) {
logList.innerHTML = logs.map(log => \`Erreur : URL onion invalide. Format attendu : http://exemple56chars.onion
\`; logAction(\`Erreur : URL invalide (\${urlInput})\`); return; } const siteData = mockData[urlInput] || { status: 503, title: "Service Inaccessible", description: "Timeout ou nœud Tor défaillant", links: [], metadata: { server: "Inconnu", lastModified: "N/A", contentType: "N/A", size: "0 KB" }, latency: 8000, error: "503 - Timeout réseau Tor" }; logAction(\`Scan de \${urlInput} (Profondeur \${scanDepth}, Nœud \${torNode})\`); showLoadingScreen(); setTimeout(() => { hideLoadingScreen(); if (siteData.error) { resultsDiv.innerHTML = \`\${siteData.error}
\`; logAction(\`Erreur détectée : \${siteData.error}\`); drawLinkGraph([], urlInput); return; } let simulatedLinks = [...siteData.links]; let metadata = expertMode ? [ \`Server: \${siteData.metadata.server}\`, \`Last-Modified: \${siteData.metadata.lastModified}\`, \`Content-Type: \${siteData.metadata.contentType}\`, \`Size: \${siteData.metadata.size}\` ] : []; if (scanDepth >= 2) { simulatedLinks.push(\`\${urlInput}/login\`, \`\${urlInput}/dashboard\`); } if (scanDepth >= 3) { simulatedLinks.push(\`\${urlInput}/admin\`, \`\${urlInput}/users\`); } resultsDiv.innerHTML = \`Analyse de \${urlInput}
Niveau \${scanDepth} | Nœud : \${torNode} | \${new Date().toLocaleString()}
Statut : \${siteData.status} OK
Titre : \${siteData.title}
Description : \${siteData.description}
Liens (\${simulatedLinks.length}) :
-
\${simulatedLinks.map(link => \`
- \${link} \${link.includes('admin') ? '[ADMIN]' : link.includes('login') ? '[AUTH]' : '[PAGE]'} \`).join("")}
Métadonnées :
- \${metadata.map(meta => \`
- \${meta} \`).join("")}
Timeline :
- \${new Date().toLocaleTimeString()} : Connexion au nœud \${torNode}
- \${new Date().toLocaleTimeString()} : Scan de \${urlInput} (Niveau \${scanDepth})
- \${new Date().toLocaleTimeString()} : \${simulatedLinks.length} liens détectés
Rapport OSINT Simulé - \${currentDate.toLocaleDateString()}
Métadonnées
- Date : \${currentDate.toLocaleString()}
- URL : \${urlInput}
- Outil : DarkPoolScanner (simulation)
- Profondeur : Niveau \${document.getElementById("scan-depth").value}
- Nœud Tor : \${document.getElementById("tor-node").value}
Résultats
Simulation de collecte OSINT. En conditions réelles :
- Structure du site : pages principales, authentification.
- Patterns : URLs sensibles (ex. : /admin).
- Métadonnées : headers, dates, tailles.
Recommandations
- Vérifier la légalité des actions.
- Documenter avec captures datées.
- Signaler tout contenu illicite.
Explication : Le script utilise des données mockées pour simuler une page onion, affiche les résultats avec des métadonnées réalistes, et dessine un graphe interactif des liens.
Sécurité & Légalité
DarkPoolScanner est conçu pour être un bouclier éthique :
- Anonymat : Tor Browser masque ton IP. Ne te connecte jamais à un site onion via un navigateur classique.
- Légalité : OK pour visiter Ahmia ou des blogs publics, mais scraper sans autorisation peut violer les CGU, et les sites illicites sont un délit (articles 323-1 à 323-7).
- Éthique : On simule ici avec des données mockées. En vrai, demande la permission du proprio du site.
- Protection : Pas de téléchargements depuis des onions inconnus. Un antivirus comme ClamAV te couvre.
Bonnes pratiques opérationnelles
Pour OSINT comme un pro :
- Isolation : Lance Tor dans une VM (ex. : VirtualBox avec Tails OS).
- Protection d’identité : Crée un email jetable pour les recherches, jamais d’infos persos.
- Journalisation : Note tout (ex. : “Visité Ahmia le 17/04/2025 à 14h”).
- Conteneurisation : Utilise Docker pour tester des outils OSINT (ex. : Maltego en conteneur).
Exemple : Si tu scrapes Ahmia sans permission, tu risques un ban. Avec autorisation, tu peux collecter des liens publics pour une étude. Teste dans un lab sécurisé !
Recommandation : Va sur torproject.org et legifrance.gouv.fr pour les règles.
Tests
Tests pour valider DarkPoolScanner :
- Interface : Ouvre la page dans un navigateur et vérifie l’affichage (contenu, graphe, logs).
- Saisie : Entre une URL fictive (ex. : http://example.onion) et clique sur « Analyser ».
- Résultats : Vérifie que les données mockées (titre, liens, graphe, timeline) s’affichent.
- Erreur : Teste une URL invalide (ex. : http://test.com) pour le message d’erreur.
- Rapport : Génère un rapport PDF et vérifie son contenu.
- Export JSON : Vérifie le téléchargement du fichier JSON.
- Tor (optionnel) : Visite un site onion légal (ex. : Ahmia) via Tor Browser pour comparer.
Avertissement : Ne teste que des sites légaux et publics.
Bonus : OSINT Surface Web – Projet Simple
Merci d’avoir suivi ce tuto, Apache ! DarkPoolScanner est une plongée dans le deep web, mais voici un projet plus simple : un Analyseur OSINT Surface Web. Il simule le scraping de sites publics (ex. : blogs, forums) pour extraire des liens, sans Tor ni risques légaux.
Pourquoi ce projet ?
Un moyen sûr d’apprendre l’OSINT, parfait pour les débutants ou les Apaches qui restent en surface.
Spécifications
- Technologies : HTML5, CSS3, JavaScript.
- Fonctionnalités : Saisie d’une URL fictive, affichage de liens/titre mockés.
- Sécurité : 100 % statique, aucun risque légal.
Code
Exemple de code JS pour l’analyseur surface web :
const surfaceMock = {
url: "https://example.com",
title: "Exemple de Blog",
links: [
"https://example.com/about",
"https://example.com/posts",
"https://example.com/contact"
]
};
function analyzeSurface() {
const resultsDiv = document.createElement("div");
resultsDiv.className = "demo-output";
document.body.appendChild(resultsDiv);
resultsDiv.innerHTML = \`
Titre de la page : \${surfaceMock.title}
Liens trouvés :
-
\${surfaceMock.links.map(link => \`
- \${link} \`).join("")}
Sécurité
Aucun risque : code statique avec données simulées. Respecte les CGU des sites réels si adapté.
Résultats
Un outil éducatif pour apprendre l’OSINT sans plonger dans le deep web. Testez-le et amusez-vous !
CTF OSINT Immersif
Prêt pour un défi, Apache ? Décode cette URL onion en base64 : aHR0cDovL2V4YW1wbGUub25pb24=. Ensuite, trouve l’URL cachée correspondant au regex /[a-z]{5}\\.onion/ dans les résultats d’analyse! Indice : utilise un décodeur en ligne ou base64.b64decode. 😈