Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
SSHintel — Self-contained SSH honeypot per catturare le interazioni degli attaccanti e trasformarle in intelligence di sicurezza strutturata. | Kitploit
Strumenti/GitHubGitHub/sonitbahl/sshintel
Sicurezza di ReteThreat IntelligenceRilevamento IntrusioniRisposta agli IncidentiAnalisi dei Log
GitHubsonitbahl/sshintel

SSHintel

Self-contained SSH honeypot per catturare le interazioni degli attaccanti e trasformarle in intelligence di sicurezza strutturata.

Vedi Repository
131 giorno faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

SSHintel — Honeypot SSH leggero

License: MIT Python Last Commit Repo Size

SSHintel è un honeypot SSH leggero realizzato con Python e Paramiko. Simula una shell Linux fittizia per registrare tentativi di accesso non autorizzati, catturare credenziali e analizzare il comportamento degli attaccanti in un ambiente controllato.


🔧 Funzionalità

  • Registra i tentativi di accesso SSH con IP, nome utente e password
  • Fornisce una shell Linux simulata (un ambiente fittizio in memoria)
  • Supporta un ampio set di comandi di ricognizione e navigazione (ls, cd, pwd, , , , , , , , , , , , , , , , ecc.)
cat
echo
grep
find
tree
head
tail
wc
stat
ps
df
free
env
id
whoami
  • Modalità --tarpit opzionale per rallentare gli attaccanti con output ritardato
  • Filesystem fittizio isolato per sessione con supporto alla creazione e lettura di file
  • Dashboard web locale per visualizzare la telemetria di sicurezza catturata (sessioni, comandi, tentativi di autenticazione, principali attaccanti)
  • Vista di investigazione sessione — seleziona qualsiasi sessione e ricostruisci cronologicamente l'intera timeline dell'attacco, inclusi IP sorgente, esito dell'autenticazione, ogni comando eseguito con la relativa directory di lavoro e durata della sessione
  • Tutto è simulato — i comandi non vengono mai eseguiti sull'host, non accedono mai al filesystem reale e non effettuano richieste di rete.
  • SSHintel non è una shell Bash/Linux completa. Simula un sottoinsieme credibile di comandi comuni per raccogliere telemetria sugli attaccanti. I comandi vengono gestiti da un registro leggero; aggiungere un comando significa aggiungere una piccola funzione handler.


    🛠️ Configurazione

    1. 📦 Installare le dipendenze

    root@kitploit:~
    pip install -r requirements.txt
    

    Nota: La chiave host SSH viene generata automaticamente al primo avvio. Nessuna generazione manuale della chiave necessaria.


    🚀 Esecuzione dell'Honeypot

    Esegui l'honeypot con una porta, un nome utente e una password specifici:

    root@kitploit:~
    python3 run.py serve --port 2222 --username user1 --password pass123
    

    La porta predefinita è 2222 e l'host è 0.0.0.0.

    L'honeypot genera automaticamente una chiave host SSH in static/server.key al primo avvio se non esiste già. Nessuna generazione manuale della chiave necessaria.

    Per abilitare la modalità tarpit:

    root@kitploit:~
    python3 run.py serve --port 2222 --username user1 --password pass123 --tarpit
    

    Per disabilitare la telemetria SQLite (solo JSONL):

    root@kitploit:~
    python3 run.py serve --port 2222 --username user1 --password pass123 --no-db
    

    🛡️ Limiti di connessione e timeout

    SSHintel protegge dall'esaurimento delle risorse dovuto a molte connessioni simultanee o connessioni mantenute attive indefinitamente. Questi parametri sono configurabili tramite CLI:

    FlagPredefinitoScopo
    --max-connections50Numero massimo di connessioni attive simultanee; le connessioni extra vengono rifiutate e registrate come evento connection_rejected
    --auth-timeout60 (s)Tempo consentito per completare l'handshake/autenticazione SSH; i client bloccati vengono disconnessi
    --session-idle-timeout300 (s)Timeout di inattività per una shell autenticata; una sessione inattiva viene terminata, ma un attaccante che digita attivamente non viene mai interrotto

    Esempio:

    root@kitploit:~
    python3 run.py serve --port 2222 --username user1 --password pass123 \
      --max-connections 25 --auth-timeout 30 --session-idle-timeout 300
    

    Quando ci sono troppe connessioni aperte, la connessione extra viene chiusa immediatamente e un evento di sicurezza connection_rejected (con reason: connection_limit) viene scritto nel log JSONL. Un'autenticazione bloccata viene registrata come disconnessione con reason: auth_timeout; una shell inattiva termina con reason: idle_timeout.

    La modalità tarpit invia intenzionalmente l'output lentamente per mantenere impegnato un attaccante, quindi il ciclo del banner tarpit non è soggetto al timeout di inattività — ma le sessioni tarpit contano ai fini del limite di connessioni.


    📊 Dashboard

    SSHintel include una dashboard web locale che visualizza la telemetria di sicurezza memorizzata in SQLite.

    Avvia la dashboard

    root@kitploit:~
    python3 run.py dashboard
    

    Poi apri http://localhost:5000 nel tuo browser.

    La dashboard legge dal database SQLite in data/sshintel.db per impostazione predefinita. Avvia prima l'honeypot così la telemetria viene catturata, poi avvia la dashboard per vederla popolarsi.

    Cosa visualizza

    • Card KPI — sessioni totali, IP sorgente unici, tentativi di autenticazione, autenticazioni riuscite/fallite e comandi eseguiti
    • Grafico attività — connessioni nel tempo, raggruppate per ora
    • Comandi principali — i comandi attaccanti eseguiti più frequentemente
    • Nomi utente presi di mira — quali nomi utente stanno tentando gli attaccanti
    • Sessioni recenti — clicca su qualsiasi ID sessione per investigarla
    • Attività recente — gli ultimi eventi di telemetria in una tabella ricercabile

    Investigazione sessione

    Clicca su un ID sessione (o naviga su /session/<session_id>) per aprire la vista di investigazione sessione, che ricostruisce cronologicamente un singolo attacco:

    • Riepilogo sessione — IP sorgente, nome utente, orari di inizio/fine, durata, risultato dell'autenticazione, motivo della disconnessione
    • Timeline dell'attacco — ogni evento (connessione, tentativi di autenticazione, comandi, disconnessione) in ordine cronologico
    • Sequenza comandi — una vista compatta $ comando di tutto ciò che l'attaccante ha digitato, con le directory di lavoro

    Flusso di lavoro di esempio

    root@kitploit:~
    # Terminale 1: avvia l'honeypot
    python3 run.py serve --port 2222 --username user1 --password pass123
    
    # Terminale 2: avvia la dashboard
    python3 run.py dashboard
    
    # Terminale 3: simula un attaccante
    ssh user1@localhost -p 2222
    # (esegui alcuni comandi, poi esci)
    

    Poi apri http://localhost:5000 per ispezionare l'attività catturata.

    La dashboard supporta la telemetria live — interroga l'honeypot ogni 2 secondi e si aggiorna automaticamente. Nuove sessioni, comandi ed eventi appaiono in tempo reale senza ricaricare la pagina. Un indicatore live (● Live) mostra lo stato della connessione.


    🔐 Test da un Altro Terminale

    Apri un secondo terminale e prova a connetterti:

    root@kitploit:~
    ssh user1@localhost -p 2222
    

    Se le credenziali corrispondono, verrai inserito nella shell emulata.


    🚑 Opzionale: Cancella Host Noti (Se ti Riconnetti)

    Per rimuovere impronte SSH obsolete:

    root@kitploit:~
    notepad "%USERPROFILE%\.ssh\known_hosts"
    

    Elimina la riga pertinente che contiene localhost o l'IP dell'honeypot.


    📝 Informazioni Registrate

    • Le credenziali vengono registrate in creds_logger
    • I comandi della shell vengono registrati tramite funnel_logger
    • Gli eventi di sicurezza strutturati vengono scritti in log_files/events.jsonl come JSON Lines (JSONL) — un oggetto JSON valido per riga

    Ogni evento JSONL include un timestamp UTC ISO-8601, un event_type, un session_id univoco e l'source_ip. Connessioni, tentativi/risultati di autenticazione, esecuzione di comandi, attivazione tarpit e disconnessioni vengono tutti registrati come eventi strutturati.

    Ogni connessione SSH in entrata viene tracciata come una sessione indipendente con il proprio session_id. Una sessione registra l'IP sorgente, gli orari di connessione/disconnessione, l'esito dell'autenticazione e la durata della connessione, e ogni evento generato all'interno di quella connessione porta lo stesso session_id (così tentativi di autenticazione, comandi e disconnessioni possono essere ricondotti a una singola connessione). Le sessioni sono isolate per connessione — nessuno stato viene condiviso tra client simultanei.

    Ogni sessione riceve anche il proprio filesystem fittizio isolato in memoria — il filesystem simulato viene creato nuovo per ogni connessione e ripulito quando la connessione termina. File, directory e directory di lavoro creati o modificati da un attaccante non sono mai visibili a un altro attaccante connesso nello stesso momento. L'intero filesystem è simulato nella memoria Python e non tocca mai il filesystem reale dell'host.

    Valori correnti di event_type: connect, auth_attempt, auth_success, auth_failure, command, disconnect, connection_rejected, tarpit.


    📂 Struttura dei File

    root@kitploit:~
    SSHintel/
    ├── honeypot/                  # Logica principale dell'honeypot
    │   ├── __init__.py
    │   ├── main.py                # Ciclo di accettazione + limitazione connessioni
    │   ├── handlers.py            # Configurazione trasporto SSH + shell emulata
    │   ├── server.py              # Interfaccia server Paramiko (autenticazione)
    │   ├── session.py             # Tracciamento sessione per connessione
    │   ├── fs.py                  # Filesystem fittizio in memoria (isolato per sessione)
    │   ├── shell.py               # Shell fittizia: registro comandi + dispatcher
    │   ├── limits.py              # Limitazione connessioni simultanee thread-safe
    │   ├── logger.py              # Registrazione eventi JSONL + bridge SQLite
    │   └── telemetry_store.py     # Archivio telemetria SQLite + livello query
    │
    ├── dashboard/                 # Dashboard web locale
    │   ├── app.py                 # Applicazione Flask + rotte API
    │   ├── templates/
    │   │   ├── index.html         # Template principale della dashboard
    │   │   └── session.html       # Template investigazione sessione
    │   └── static/
    │       ├── style.css          # Stili della dashboard
    │       ├── dashboard.js       # JS principale della dashboard (aggiornamenti live)
    │       └── session.js         # JS investigazione sessione
    │
    ├── log_files/                 # Log di runtime (ignorati da git)
    │   ├── creds_audits.log       # Tentativi di credenziali
    │   ├── cmd_audits.log         # Traccia di audit dei comandi
    │   └── events.jsonl           # Eventi di sicurezza JSONL strutturati
    │
    ├── data/                      # Database SQLite (ignorato da git)
    │   └── sshintel.db
    │
    ├── static/                    # Chiave host SSH (generata automaticamente)
    │   └── server.key
    │
    ├── .github/workflows/         # Configurazione CI
    │   └── tests.yml
    │
    ├── Dockerfile
    ├── README.md
    ├── requirements.txt           # Dipendenze runtime (paramiko, flask)
    ├── requirements-dev.txt       # Dipendenze test (pytest, pytest-cov)
    └── run.py                     # Punto di ingresso CLI
    

    💪 Esecuzione con Docker (Metodo Alternativo)

    Se preferisci eseguire l'honeypot in un ambiente containerizzato, puoi usare il Dockerfile incluso.

    🔨 Costruisci l'Immagine Docker

    root@kitploit:~
    docker build -t sshintel .
    

    Questo crea un'immagine Docker denominata sshintel.


    🚀 Esegui il Container

    root@kitploit:~
    docker run -p 2222:2222 sshintel
    

    Questo:

    • Genererà automaticamente la chiave privata SSH in static/server.key (se non esiste già)
    • Avvierà l'honeypot sulla porta 2222 con credenziali predefinite:
      username: user1, password: pass123

    🔮 Testa l'Honeypot

    Apri un secondo terminale e connettiti via SSH:

    root@kitploit:~
    ssh user1@localhost -p 2222
    

    Verrai inserito nella shell simulata se le credenziali corrispondono.


    🧼 Ferma e Pulisci

    Per fermare il container:

    root@kitploit:~
    docker ps  # Trova l'ID del container
    docker stop <container_id>
    

    Per rimuovere l'immagine:

    root@kitploit:~
    docker rmi sshintel
    

    Puoi anche esportare l'immagine usando docker save -o sshintel.tar sshintel e caricarla successivamente con docker load -i sshintel.tar.


    📄 Licenza

    Questo progetto è concesso in licenza sotto la Licenza MIT.


    👤 Autore

    Sonit Bahl
    🔗 LinkedIn
    🔗 Portfolio

    Scarica lo strumento