
Outil de découverte de la surface d'attaque construit selon une approche microservices, exploitant le multithreading pour un indexage rapide d'actifs à l'échelle d'Internet.
Contexte du projet : Ce projet sert de pièce de portfolio démontrant des concepts en sécurité offensive, concurrence et architecture distribuée.
Au cours de mes premiers pas dans le monde de la sécurité offensive, j'ai toujours été fasciné par la façon dont les grands moteurs de recherche comme Shodan indexaient les informations de millions d'appareils. Ce concept tournait sans cesse dans ma tête ; j'avais besoin de comprendre l'ingénierie derrière en le simulant moi-même.
Kimi est le résultat de cette curiosité. C'est un scanner de reconnaissance continue conçu pour prioriser l'analyse de l'exposition de la surface d'attaque externe. Il effectue un scan à grande échelle orienté ports pour collecter des informations à partir des services connectés à Internet.
Mon objectif était de créer une architecture efficace : l'implémentation de threads et files d'attente a été conçue pour maximiser les performances par cycle de scan, réduisant considérablement le temps d'exécution pour des plages IP massives.
Kimi sert de preuve de concept dans des domaines critiques :
Concurrence : Utilisation de Threads et files d'attente en Python pour orchestrer jusqu'à ≈500 opérations d'E/S réseau simultanées.
Architecture découplée : Conception d'un système distribué (Moteur → API → BDD), séparant l'exécution du scan de la persistance des données.
Réseau : Programmation de sockets bas niveau pour les handshakes TCP/UDP et une gestion précise des timeouts.
Bases de données NoSQL : Implémentation de MongoDB pour stocker les résultats de scan, qui sont par nature variables et non structurés.
Revisiter Kimi aujourd'hui me permet d'appliquer une perspective d'ingénierie et éthique moderne à mon travail initial :
Évolution technique : Le plus grand défi était de maîtriser threading en Python. Aujourd'hui, je reconnais que la solution la plus évolutive serait de migrer le moteur vers la programmation asynchrone (asyncio) pour éviter la surcharge du GIL et augmenter encore la concurrence.
Maturité éthique : La leçon la plus importante a été la responsabilité professionnelle. Le projet a évolué d'une expérience motivée par la curiosité à un outil de démonstration. Kimi est strictement limité aux tests éthiques sur des réseaux contrôlés, soulignant mon engagement envers des pratiques de sécurité légales et responsables.
Le système est divisé en Moteur (Scanner) et API (Persistance).
MongoDB sert de magasin d'ingestion principal. L'architecture est conçue pour être compatible avec l'intégration Elasticsearch / Kibana (ELK), permettant des capacités de recherche en texte intégral et des visualisations analytiques des données collectées.
| Scénario | Exemple de commande | Description |
|---|---|---|
| Scan rapide |
Déploiement : Le projet est entièrement conteneurisé avec Docker.
Licence : Apache 2.0.
Contact : [email protected]
Avertissement légal : Kimi est présenté uniquement à des fins éducatives et de démonstration technique. L'utilisation en dehors d'environnements contrôlés relève de la seule responsabilité de l'utilisateur.
python3 engine.py -r 192.168.0.0,192.168.0.255 -t 150 --top-ports| Scanne une plage en utilisant 150 threads. |
| CIDR personnalisé | python3 engine.py -r 192.168.0.0/24 -t 350 -C 80 443 21 | Scanne des ports spécifiques en utilisant 350 threads. |