
Framework OSINT/CTI haute performance pour le pivotement automatisé d'identités et l'analyse des risques à travers 120+ sources.
Cadre OSINT pour le red teaming, la forensique numérique et l'analyse d'exposition des entreprises.
NOX est un moteur de renseignement sur les menaces cybernétiques spécialement conçu pour les opérateurs qui nécessitent rapidité, sécurité opérationnelle et profondeur dans un seul cadre cohérent. Il ne s'agit pas d'un wrapper autour d'outils existants — c'est une plateforme de renseignement entièrement asynchrone et pilotée par des plugins, avec une séparation stricte entre la logique d'exécution et les définitions de sources.
NOX fonctionne sur une stricte séparation des préoccupations : nox.py est un moteur d'exécution pur et agnostique — il gère les E/S asynchrones, l'empreinte JA3, la gestion de session SSL, le pivot récursif et la corrélation des résultats. Il ne contient aucune logique de renseignement codée en dur.
Tout le renseignement est défini comme des plugins JSON dans sources/. Ces plugins sont la seule source de vérité pour ce que NOX interroge, comment il s'authentifie et ce qu'il extrait. L'outil de construction build_sources.py est le seul moyen autorisé de les créer ou de les modifier.```
build_sources.py ──► sources/*.json ──► nox.py (runtime loader)
[Builder] [Plugins] [Execution Engine]
> [!IMPORTANT]
> **Les fichiers `sources/*.json` sont des artefacts générés automatiquement. Ne les modifiez jamais directement.**
> Tous les ajouts et modifications de sources doivent être effectués dans `build_sources.py` et appliqués en exécutant `python build_sources.py`. Les modifications manuelles seront écrasées lors de la prochaine génération.
#### Schéma des Sources```json
{
"name": "MyPrivateDB",
"endpoint": "https://api.myprivatedb.com/search?q={target}",
"method": "GET",
"headers": { "Authorization": "Bearer {MY_API_KEY}" },
"regex_pattern": "([\\w.+-]+@[\\w-]+\\.[\\w.]+):([\\S]+)",
"required_api_key_name": "MY_API_KEY",
"api_key_slots": ["{MY_API_KEY}"],
"input_type": "email",
"output_type": ["username", "ip"],
"pivot_types": ["email", "username"],
"confidence": 0.9
}
Champs pris en charge : name, endpoint, method, headers, regex_pattern (ou json_root + normalization_map), required_api_key_name, api_key_slots, input_type, output_type, pivot_types, confidence.
--autoscan (CLI) / autoscan (REPL) exécute le pipeline d'intelligence complet en une seule commande :```
For each asset (seed + every discovered identifier):
├─ Phase 1 — Breach Scan
│ 124 sources queried in parallel (async)
│
├─ Phase 2 — Hash Crack (non-blocking, concurrent)
│ Hashes found in breach data → rainbow-table APIs → cracked plaintext
│ → password-recycling breach scan
│
├─ Phase 3 — Dorking
│ Google/Bing/SearXNG dorks → leaked docs, .env files, SQL dumps
│ → new identifiers extracted and re-injected
│
└─ Phase 4 — Scraping
Pastebin, IntelX, Telegram CTI channels → credential extraction
→ new identifiers extracted and re-injected
All identifiers discovered in phases 1–4 are re-injected as new seeds. Child assets are processed concurrently via asyncio.gather.
`scan` (sans `--autoscan`) exécute Phase 1 uniquement — sources de fuites, pas de pivot/dork/scrape.
---
### Moteur d'Avalanche Récursive
Chaque identifiant découvert lors d'un scan — provenant d'enregistrements de fuites, de résultats dork ou de contenu de paste/Telegram récupéré — est traité comme une nouvelle graine de renseignement. Pour chaque actif, le moteur exécute quatre phases séquentiellement : breach scan → hash crack → dork → scrape. Les identifiants extraits des **quatre phases** sont collectés et réinjectés comme de nouvelles graines. Les actifs enfants sont ensuite traités simultanément via `asyncio.gather`.```
[email protected]
└─► [Breach] username: j.doe ──► [Breach + Crack + Dork + Scrape]
│ └─► github.com/jdoe ──► [Breach + Crack + Dork + Scrape]
└─► [Breach] hash: 5f4dcc... ──► [AutoCrack] → "password123"
│ └─► [Breach] password-recycling scan across all sources
└─► [Dork] [email protected] ──► [Breach + Crack + Dork + Scrape]
└─► [Scrape/paste] [email protected] ──► [Breach + Crack + Dork + Scrape]
seen_assets set — déduplication globale ; aucun identifiant n'est traité deux fois, quelle que soit la phase qui l'a découvert--threads--depth N — profondeur de pivot configurable (défaut : 2) ; un arrêt brutal empêche la récursion incontrôlée--no-pivot — désactiver l'enrichissement récursif pour un scan rapide de type brèche uniquementLorsqu'un hachage est trouvé dans les données de brèche pendant --autoscan :
nox_system.log, le hachage est conservé dans le rapport, et le pivotement sur tous les autres actifs continue immédiatementLe processus de cassage est entièrement non bloquant. Un délai d'attente ou une défaillance d'API ne met jamais le scan en pause. Utilisez --no-online-crack pour limiter le cassage à la seule liste de mots locale (aucune donnée envoyée à des API tierces).
Le moteur Guardian est la couche OPSEC sans configuration de NOX. Il s'active automatiquement lorsqu'aucun indicateur --proxy ou --tor n'est fourni.
Ordre de résolution :
proxies.txt — si présent dans le répertoire de travail, NOX charge et alterne les proxies listés.proxies.txt est absent, le moteur Guardian récupère une nouvelle liste de proxies publics à haute anonymat, valide chacun d'eux, et conserve le pool validé en mémoire pour la session. Rien n'est écrit sur le disque.[!WARNING] Les pools de proxies publics sont intrinsèquement une infrastructure non fiable. Pour des engagements sensibles, fournissez toujours un proxy contrôlé via
--proxyou acheminez via Tor avec--tor.
Tous les formats de rapport incluent un tableau de bord de résumé exécutif :
| Métrique | Description |
|---|---|
| Temps total | Durée réelle du scan complet |
| Nœuds découverts | Identités uniques découvertes sur toutes les sources |
| Mots de passe en clair | Identifiants en texte clair trouvés ou cassés |
| Profondeur de pivot | Profondeur atteinte par le moteur d'avalanche récursif |
Les rapports incluent également une visualisation de la chaîne de pivot montrant le chemin relationnel complet de la graine initiale à la découverte finale :``` [[email protected]] -> [LeakA / username:jdoe] -> [Dork: leaked .env] -> [[email protected]]
Les exportations JSON incluent un bloc `_meta` avec `scan_id`, `target`, `timestamp`, `nox_version` et `pivot_depth_reached` — rendant chaque exportation auto-descriptive pour l'ingestion dans les plateformes de gestion de cas.
Toute la sortie est assainie — les erreurs de proxy, les délais d'attente et les tracebacks sont supprimés. Seules les informations exploitables sont incluses.
---
## Structure du système de fichiers```
~/.nox/
├── sources/ # Auto-generated JSON source plugins
├── reports/ # Generated forensic reports
├── logs/ # Runtime log (nox.log)
├── wordlists/ # Hash cracking wordlists
├── vault/ # Secure storage
└── nox_cache.db # Forensic persistence database (SQLite)
~/.config/nox-cli/
├── apikeys.json # API keys — chmod 0600, never committed to VCS
└── logs/
└── nox_system.log # Silent system log: API events, rate-limits, crack attempts
# .deb install (isolated venv)
/opt/nox-cli/
├── nox.py
├── build_sources.py
├── requirements.txt
├── sources/
└── .venv/ # Isolated Python environment (PEP 668 compliant)
python3-pip sur Debian/Kali)--tor. Sur Kali : sudo apt install tor -y. Le service tor doit être en cours d'exécution sur le port 9050.Téléchargez le paquet .deb depuis la page des versions, puis exécutez :```bash
sudo dpkg -i nox-cli_*_all.deb
nox-cli --help
Le script de post-installation :
1. Crée un environnement virtuel isolé à `/opt/nox-cli/.venv`
2. Installe toutes les dépendances Python dans le venv (conforme PEP 668 — zéro pollution système)
3. Construit les 124 plugins source
4. Lie `/usr/bin/nox-cli` → `/opt/nox-cli/nox-wrapper.sh`
### Option 2 : Depuis les sources```bash
git clone https://github.com/nox-project/nox-framework.git
cd nox-framework
pip install -r requirements.txt
python build_sources.py
python3 nox.py
Étape 1 — Construire les plugins source (à partir du source uniquement — .deb le fait automatiquement)```bash python build_sources.py
**Étape 2 — Configurer les clés API**
`build_sources.py` crée `~/.config/nox-cli/apikeys.json` lors de la première exécution, pré-rempli avec tous les services pris en charge. Le fichier a les permissions `chmod 0600` et n'est jamais commité dans le VCS.
C'est le **magasin de clés canonique unique** — toutes les sources le lisent au moment de l'exécution.```bash
# Edit the file directly
nano ~/.config/nox-cli/apikeys.json
# Or inspect plugin status and key configuration
nox-cli --list-sources
[!NOTE] Toute clé définie sur
INSERT_API_KEY_HEREou""est considérée comme non configurée — cette source est silencieusement ignorée. Les sources sans exigence de clé sont toujours actives.Priorité de chargement : variable d'environnement (ex.
export HIBP_API_KEY=xxx) →~/.config/nox-cli/apikeys.json
Étape 3 — Exécution
[!NOTE] Interrupteur de sécurité OPSEC : Par défaut, NOX active le moteur Guardian (rotation automatique du proxy). Utilisez
--guardian-offpour vous connecter directement.```bash
nox-cli -t [email protected]
nox-cli -t [email protected] --autoscan
nox-cli -t [email protected] --autoscan --tor
nox-cli -t [email protected] --autoscan --proxy socks5://127.0.0.1:1080 -o report.pdf --format pdf
nox-cli -t [email protected] --autoscan --depth 3
nox-cli -t [email protected] --no-pivot
nox-cli -t company.com
nox-cli --crack 5f4dcc3b5aa765d61d8327deb882cf99
nox-cli --crack 5f4dcc3b5aa765d61d8327deb882cf99 --no-online-crack
nox-cli --analyze "P@ssw0rd123"
nox-cli --dork [email protected]
nox-cli --scrape [email protected]
nox-cli -t [email protected] --diff
nox-cli --list-sources
nox-cli --reset-sources
## Référence CLI```
usage: nox-cli [-h] [-t TARGET] [-i] [--version]
[--autoscan] [--fullscan] [--no-pivot] [--depth N]
[--dork TARGET] [--scrape TARGET]
[--crack HASH] [--no-online-crack]
[--analyze PASS] [--list-sources] [--reset-sources]
[--tor] [--proxy URL] [--guardian-off] [--allow-leak]
[--threads N] [--timeout N]
[-o FILE] [--format {json,csv,html,md,pdf}]
[--diff]
-t, --target TARGET Target to scan (auto-detected type)
-i, --interactive Launch interactive REPL
--version Show version and exit
--autoscan Full pipeline: breach + pivot + dork + scrape
--fullscan Breach + pivot only (no dork/scrape)
--no-pivot Disable recursive pivot enrichment
--depth N Avalanche pivot depth (default: 2)
--dork TARGET Google/Bing/SearXNG dorking for leaked documents
--scrape TARGET Paste site + Telegram scraping
--crack HASH Identify and crack a hash
--no-online-crack Local wordlist only — no data sent to third-party APIs
--analyze PASS Deep password strength analysis
--list-sources Plugin debug: input type, confidence, key status
--reset-sources Force resync of source plugins from package
--tor Route all traffic through Tor (port 9050)
--proxy URL HTTP/S or SOCKS5 proxy URL
--guardian-off Bypass OPSEC kill-switch (direct connection)
--allow-leak Allow direct connection if proxy/Tor is unavailable
--threads N Concurrency limit (default: 20)
--timeout N Request timeout in seconds (default: 15)
-o, --output FILE Output file path
--format FORMAT Output format: json, csv, html, md, pdf
--diff Show only new findings vs last cached scan
Lancez le REPL interactif sans arguments:```bash nox-cli
CVE-2021-33739 – élévation de privilèges dans la bibliothèque principale DWM de Microsoft
[LPE et contournement de CVE-2021-33739 – élévation de privilèges dans la bibliothèque principale DWM de Microsoft](https://github.com/ynwarcs/CVE-2021-33739)```
Command Description
----------- ---------------------------------------------------------------
autoscan Full pipeline: breach + pivot + dork + scrape
scan Breach intelligence scan only
dork Google/Bing/SearXNG dorking for leaked documents
scrape Paste site + Telegram scraping
crack Identify and crack a hash
analyze Deep password strength analysis
graph ASCII identity graph of last scan
visualize ASCII relationship map (Target → Data → Pivots)
pivot <n> Re-scan using result #n as new pivot seed
search <q> Filter in-memory records by keyword
sources Plugin debug: input type, confidence, key status
export Export results (json / csv / html / md / pdf)
tor Toggle Tor routing on/off
proxy Set or clear proxy URL
config Configure threads / timeout / depth
help Show this menu
quit Exit NOX
Exemples:``` nox> autoscan [email protected] nox> graph nox> visualize nox> pivot 3 nox> search admin nox> export pdf investigation.pdf nox> sources nox> config threads 30 nox> config depth 3 nox> proxy socks5://127.0.0.1:1080 nox> tor
---
## Gestion des sources
### Ajouter une source
**1. Définir dans `build_sources.py`:**```python
_auth("NewIntelDB", "breaches",
"https://api.newinteldb.com/v1/search?q={target}", "GET",
{"results": "$.results"},
headers={"X-API-Key": "{NEWINTELDB_API_KEY}"},
api_key_slots=["{NEWINTELDB_API_KEY}"],
normalization_map={"email": "email", "password": "password"},
input_type="email",
output_type=["username", "ip"],
confidence=0.85)
2. Reconstruire:```bash python build_sources.py
> [!NOTE]
> Le builder valide chaque source au moment de la construction : les points de terminaison GET doivent contenir `{target}`, les sources volatiles doivent avoir `reliability_score ≤ 4`, et le champ `confidence` peut être défini explicitement pour remplacer la valeur dérivée de la formule.
---
## Construction du paquet .deb```bash
gem install fpm
bash build_deb.sh
sudo dpkg -i dist/nox-cli_*_all.deb
[!WARNING] NOX est exclusivement destiné à :
- Des tests d'intrusion autorisés et des engagements d'équipe rouge avec un consentement écrit explicite
- Des analyses d'exposition d'entreprise sur des actifs que vous possédez ou que vous êtes contractuellement chargé d'évaluer
- Des enquêtes numériques et des réponses aux incidents
- Des recherches académiques et de sécurité dans des environnements contrôlés et isolés
L'utilisation non autorisée de cet outil contre des systèmes, des réseaux ou des individus sans autorisation écrite explicite constitue une infraction pénale en vertu du Computer Fraud and Abuse Act (CFAA, 18 U.S.C. § 1030), du Computer Misuse Act 1990 (CMA) et des législations équivalentes dans toutes les juridictions majeures du monde.
Les auteurs et contributeurs de NOX n'assument aucune responsabilité pour les dommages directs, indirects, accessoires ou consécutifs résultant d'une mauvaise utilisation de ce logiciel. En téléchargeant, installant ou exécutant NOX, vous acceptez sans condition de vous conformer à toutes les lois locales, nationales et internationales applicables, et de cibler uniquement les systèmes et les données pour lesquels vous détenez une autorisation explicite et documentée.
Si vous n'acceptez pas ces conditions, n'utilisez pas ce logiciel.
| Capacité | Détail |
|---|
| ⚡ Moteur d'exécution asynchrone | Analyse massivement parallèle sur 124 flux de renseignement sans goulot d'étranglement séquentiel ni E/S bloquantes. |
| 🛡️ Moteur Guardian | Couche OPSEC intégrée avec rotation automatique des proxys et support SOCKS5. Interrupteur de sécurité d'arrêt d'urgence coupe tout le trafic si le circuit de transport est indisponible. |
| 🧠 Score de risque | Score dynamique de 0 à 100 avec décroissance temporelle, pondération de confiance des sources, analyse de complexité des mots de passe, multiplicateurs de persistance et détection HVT. |
| 🔗 Moteur d'avalanche récursif | Chaque actif découvert — nom d'utilisateur, email, mot de passe divulgué, téléphone — est automatiquement réinjecté comme nouvelle graine de scan. Le pipeline par actif s'exécute séquentiellement (divulgation → craquage → dork → scraping) ; les actifs enfants s'exécutent concurremment. Les identifiants des quatre phases alimentent la file d'attente de pivot. La déduplication globale et une limite de profondeur configurable empêchent une récursion incontrôlée. |
| 🔍 Autoscan | Une seule commande déclenche le scan de divulgation + le pivot récursif + le dorking + le scraping de pastes — entièrement automatisé, sans chaînage manuel. |
| Fonctionnalité | Description |
|---|
| 124 sources de plugins JSON | Chaque source de renseignement est un plugin JSON. Le moteur d'exécution ne contient aucune logique de source codée en dur. |
| Noyau asynchrone | Boucle d'événements asyncio complète avec empreinte JA3, gestion de session SSL, gigue par requête et concurrence configurable. |
| Pipeline Autoscan | --autoscan déclenche : scan de divulgation → pivot récursif → dorking Google/Bing/SearXNG → scraping de pastes/Telegram — tout en une seule commande. |
| Moteur d'avalanche récursif | Chaque identifiant découvert — à partir d'enregistrements de divulgation, de résultats de dork ou de contenu scrapé de paste/Telegram — est réinjecté comme nouvelle graine. Le pipeline par actif est séquentiel (divulgation → craquage → dork → scraping) ; les actifs enfants s'exécutent concurremment via asyncio.gather. Un ensemble global seen_assets empêche les boucles infinies. La concurrence et la profondeur sont entièrement configurables au moment de l'exécution via --threads et --depth. |
| Pivot de hachage | Les hachages trouvés dans les données de divulgation sont automatiquement identifiés (MD5/SHA1/SHA256/NTLM/bcrypt) et craqués via des requêtes API d'arrière-plan concurrentes. Les textes clairs craqués sont injectés dans la file d'attente de pivot comme graines de recyclage de mots de passe. Les échecs sont enregistrés silencieusement — le scan ne s'arrête jamais. |
| Moteur proxy Guardian | Couche OPSEC sans configuration : lit proxies.txt s'il existe ; sinon récupère et valide automatiquement un pool de proxys haute anonymité en mémoire. Support complet SOCKS5/HTTP/S et Tor. |
| Rotation de clés API | api_key_slots par source — NOX effectue un round-robin sur plusieurs clés pour contourner les limites de taux par clé. |
| Graphique d'identité | Moteur de corrélation Union-Find unifie les enregistrements de divulgation en clusters d'identité à travers toutes les sources, en utilisant une classification de pivot consciente du type. |
| Rapports forensiques d'entreprise | Rapports professionnels PDF/HTML/JSON/CSV/Markdown avec un tableau de bord de synthèse exécutif (temps total, nœuds découverts, mots de passe en clair, profondeur de pivot), visualisation interactive de la chaîne de pivot et une stricte sanitisation des données — aucun bruit technique dans les sorties. Les exports JSON sont auto-descriptifs avec un bloc de métadonnées complet. |
| Détection HVT | Marque automatiquement les comptes de niveau C, Admin, DevOps et les domaines gouvernementaux comme cibles à haute valeur. |
| Moteur de dorking | Découverte passive de documents via les dorks Google/Bing/SearXNG avec extraction de métadonnées PDF/Office. |
| Moteur de scraping | Indexation de sites de pastes, surveillance de canaux Telegram CTI, extraction d'identifiants et découverte de mauvaise configuration. Chaque actif d'autoscan obtient une session de scraping dédiée — aucun état partagé. |
| Proxy / Tor | SOCKS5, proxy HTTP/S, routage Tor complet via stem et repli automatique Guardian. Les proxys SOCKS5 sont validés et routés correctement via aiohttp-socks. |
| Stockage sécurisé de clés | Clés API gérées via ~/.config/nox-cli/apikeys.json (chmod 0600). Les clés non configurées sont ignorées silencieusement. Les clés définies via variable d'environnement sont détectées automatiquement sans redémarrage. |
| Journalisation système | Tous les événements de scan, achèvements de phase, découvertes de pivot, événements API, limites de taux et tentatives de craquage sont écrits dans ~/.nox/logs/nox.log. Seul le renseignement actionnable atteint le terminal. |
| Débogage de plugins | --list-sources affiche un tableau de débogage complet pour l'opérateur : nom du plugin, type d'entrée, score de confiance, statut de la clé (configurée / non configurée / publique) et toute erreur de parsing JSON. |
| Indicateur | Comportement |
|---|
--proxy <url> | Achemine tout le trafic via le proxy HTTP/S ou SOCKS5 spécifié. Désactive Guardian. |
--tor | Achemine tout le trafic via Tor (nécessite le service tor sur le port 9050). Désactive Guardian. |
--guardian-off | Ignore l'interrupteur de sécurité OPSEC et se connecte directement. |
| (aucun indicateur) | Le moteur Guardian s'active automatiquement. |