
Strumento di scoperta della superficie d'attacco costruito con un approccio a microservizi, che utilizza il multi-threading per un rapido indicizzazione degli asset su scala internet.
Contesto del Progetto: Questo progetto serve come pezzo di portfolio che dimostra concetti di sicurezza offensiva, concorrenza e architettura distribuita.
Durante i miei primi giorni nel mondo della sicurezza offensiva, ero sempre affascinato da come i principali motori di ricerca come Shodan indicizzassero informazioni da milioni di dispositivi. Questo concetto continuava a girare nella mia testa; dovevo comprendere l'ingegneria dietro di esso simulandolo da solo.
Kimi è il risultato di quella curiosità. È uno scanner di ricognizione continua progettato per dare priorità all'analisi dell'esposizione della superficie di attacco esterna. Esegue scansioni su larga scala orientate alle porte per raccogliere informazioni dai servizi connessi a Internet.
Il mio obiettivo era creare un'architettura efficiente: l'implementazione di thread e code è stata progettata per massimizzare le prestazioni per ciclo di scansione, riducendo significativamente il tempo di esecuzione per grandi intervalli IP.
Kimi funge da proof of concept in aree critiche:
Concorrenza: Uso di Thread e Code in Python per orchestrare fino a ≈500 operazioni I/O di rete simultanee.
Architettura Disaccoppiata: Progettazione di un sistema distribuito (Engine → API → DB), separando l'esecuzione della scansione dalla persistenza dei dati.
Rete: Programmazione di socket a basso livello per handshake TCP/UDP e gestione precisa dei timeout.
Database NoSQL: Implementazione di MongoDB per memorizzare i risultati delle scansioni, che sono intrinsecamente variabili e non strutturati.
Rivisitare Kimi oggi mi permette di applicare una prospettiva ingegneristica ed etica moderna al mio lavoro iniziale:
Evoluzione Tecnica: La sfida più grande è stata padroneggiare threading in Python. Oggi riconosco che la soluzione più scalabile sarebbe migrare l'Engine verso la programmazione asincrona (asyncio) per evitare il sovraccarico del GIL e scalare ulteriormente la concorrenza.
Maturità Etica: La lezione più importante è stata la responsabilità professionale. Il progetto si è evoluto da un esperimento guidato dalla curiosità a uno strumento dimostrativo. Kimi è strettamente limitato a test etici su reti controllate, evidenziando il mio impegno verso pratiche di sicurezza legali e responsabili.
Il sistema è diviso in Engine (Scanner) e API (Persistenza).
MongoDB funge da archivio di ingestione primario. L'architettura è progettata per essere compatibile con l'integrazione Elasticsearch / Kibana (ELK), abilitando capacità di ricerca full-text e visualizzazioni analitiche dei dati raccolti.
| Scenario | Command Example | Description |
|---|---|---|
| Scansione Rapida |
Distribuzione: Il progetto è completamente containerizzato con Docker.
Licenza: Apache 2.0.
Contatto: [email protected]
Disclaimer Legale: Kimi è presentato esclusivamente a scopo educativo e dimostrazione tecnica. L'utilizzo al di fuori di ambienti controllati è di esclusiva responsabilità dell'utente.
python3 engine.py -r 192.168.0.0,192.168.0.255 -t 150 --top-ports |
| Esegue la scansione di un intervallo utilizzando 150 thread. |
| CIDR Personalizzato | python3 engine.py -r 192.168.0.0/24 -t 350 -C 80 443 21 | Esegue la scansione di porte specifiche utilizzando 350 thread. |