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
Cisco-FMC-honeypot — Originariamente un honeypot per CVE-2026-20131 | Kitploit
Strumenti/GitHubGitHub/hassan-pouladi/cisco-fmc-honeypot
Analisi delle VulnerabilitàSicurezza di ReteAnalisi MalwareThreat IntelligenceRisposta agli Incidenti
GitHubhassan-pouladi/cisco-fmc-honeypot

Cisco-FMC-honeypot

Originariamente un honeypot per CVE-2026-20131

Vedi Repository
1132 mesi 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

FMC-Trap

Un honeypot a bassa interazione che simula la superficie web di un Cisco Secure Firewall Management Center (FMC) e cattura traffico di attacco non autenticato di tipo serializzazione Java (sonde di deserializzazione non sicura stile CVE).

  • Sicuro per progettazione: l'applicazione non deserializza oggetti Java; rileva \xac\xed\x00\x05 (e Base64 rO0AB…) ed estrae stringhe di shell o URL utilizzando espressioni regolari ed euristiche.
  • Nessuna esecuzione di comandi: gli URL di secondo livello vengono recuperati solo con Python requests in un volume di download non eseguibile.
  • Stack orientato alla produzione: Docker Compose con Gunicorn e Caddy opzionale (HTTPS, Let’s Encrypt).

Perché eseguirlo?

Log JSON su singola riga (compatibili con Splunk e ELK), avvisi Telegram opzionali, artefatti di secondo livello hashati e un utente container non root. Il progetto è pensato per ricercatori che necessitano di una trappola mirata stile FMC senza codice di integrazione aggiuntivo.

Requisiti

ElementoNote
Docker e Docker Compose v2Installare Docker
VPS o hostSi consiglia un segmento di rete dedicato o isolato
Dominio (opzionale)Per HTTPS: configurare DNS e consentire il traffico in entrata TCP 80 e TCP 443 verso l'host

Avvio rapido (circa cinque minuti)

1. Clonare

root@kitploit:~
git clone https://github.com/Hassan-Pouladi/Cisco-FMC-honeypot
cd FMC-Trap

2. Configurare l'ambiente

root@kitploit:~
cp .env.example .env

Modificare .env come richiesto (vedi Environment variables). Per distribuzioni dietro il Caddy incluso, impostare TRUST_X_FORWARDED_FOR=1 in modo che gli indirizzi IP dei client nei log riflettano il client originale.

3. Puntare Caddy al tuo dominio

Modificare Caddyfile: sostituire i nomi host segnaposto con il tuo dominio (e www se applicabile):

root@kitploit:~
example.com, www.example.com {
	reverse_proxy fmc-trap:5000
}

Opzionalmente, decommentare il blocco globale email [email protected] in Caddyfile per gli avvisi di scadenza di Let's Encrypt.

4. DNS e firewall (HTTPS)

  • Creare record A (e AAAA se applicabili): yourdomain.com verso l'IP pubblico del tuo server, e www se utilizzato.
  • Consentire il traffico in entrata TCP 80 e TCP 443 sull'host (gruppo di sicurezza cloud e firewall host, ad esempio ufw allow 80,443/tcp).

5. Directory dati (richieste)

L'applicazione viene eseguita come UID 10001 all'interno del container. La directory montata ./data deve essere scrivibile:

root@kitploit:~
mkdir -p data/logs data/downloads
sudo chown -R 10001:10001 data/logs data/downloads

Senza la proprietà corretta, le richieste POST di exploit potrebbero restituire 500 (Permission denied durante la scrittura di log o blob grezzi).

6. Avviare

root@kitploit:~
docker compose up -d --build

7. Verificare

root@kitploit:~
docker compose ps
curl -sI https://yourdomain.com/

Aspettarsi HTTP/2 200 (o 301 o 302) e Via: Caddy. In un browser, https://yourdomain.com/ dovrebbe mostrare la pagina di login FMC simulata.

Per sapere dove leggere eventi, payload e output Docker, vedere Finding logs, downloads, and service output e Common operations.

Finding logs, downloads, and service output

Tutto ciò che segue è relativo alla directory del progetto (la cartella che contiene docker-compose.yml, solitamente FMC-Trap dopo aver clonato). I percorsi sono sull'host; Docker li monta nel container.

CosaPercorso hostCome aprire o seguire
Log eventi (righe JSON)data/logs/fmc-trap.jsontail -f data/logs/fmc-trap.json (stream live), o aprire in un editor, o importare in Splunk o ELK
Payload di secondo livello scaricatidata/downloads/I file appaiono solo quando il raccoglitore salva una risposta remota; ogni file è nominato con il suo hash SHA256 (64 caratteri esadecimali), senza estensione. Elencare con ls -la data/downloads (Linux o macOS) o Get-ChildItem data\downloads (Windows PowerShell)
Output del processo applicativoNon un file; Dockerdocker compose logs -f fmc-trap
Caddy (TLS, proxy, ACME)Non un file; Dockerdocker compose logs -f caddy
Avvisi Telegram (opzionale)Non memorizzato in data/Impostare TELEGRAM_BOT_TOKEN e TELEGRAM_CHAT_ID in .env; gli avvisi vengono attivati quando gli eventi vengono registrati

Quando qualcosa appare nel file di log: fmc-trap.json riceve un oggetto JSON per riga quando una richiesta corrisponde al comportamento di sonda di deserializzazione (byte magici in un POST). Le richieste GET ordinarie alla pagina di login fittizia non vengono scritte in questo file per impostazione predefinita.

Quando la cartella dei download ha file: le voci appaiono solo se la pipeline estrae un URL da una sonda e il raccoglitore recupera con successo contenuti remoti consentiti entro MAX_DOWNLOAD_MB. Se la directory rimane vuota, potrebbero non esserci ancora URL qualificanti, o i recuperi potrebbero essere bloccati dalla politica nell'applicazione.

Stampa formattata JSON (opzionale): per una singola riga, inviarla tramite python -m json.tool o usare jq se installato.

Common operations

ObiettivoComando o azione
Verificare se i container sono in esecuzionedocker compose ps
Riavviare dopo aver modificato .env o Caddyfiledocker compose up -d --build (o docker compose up -d --force-recreate se è cambiato solo l'ambiente)
Fermare lo stackdocker compose down
Seguire i nuovi eventi JSON in modo continuotail -f data/logs/fmc-trap.json
Ispezionare gli ultimi eventitail -n 50 data/logs/fmc-trap.json
Contare gli artefatti scaricatiAprire data/downloads nel gestore file, o usare un conteggio file shell su quella directory (i file sono nominati per SHA256)
Confermare che la pagina honeypot si carichiAprire https://yourdomain.com/ in un browser o usare curl -sI come nel passaggio di verifica

Architettura

root@kitploit:~
Internet :443/:80 → Caddy (TLS, Let’s Encrypt) → fmc-trap:5000 (Gunicorn/Flask)
                              ↓
                    ./data/logs, ./data/downloads (bind mounts)
  • Solo Caddy pubblica 80 e 443 sull'host; il container dell'applicazione non è esposto direttamente (vedi expose: "5000" in Compose).
  • Caddy utilizza resolver DNS pubblici (1.1.1.1, 8.8.8.8) all'interno del container in modo che Let's Encrypt abbia successo su host dove il resolver VPS non è raggiungibile da Docker (una limitazione comune su alcuni provider cloud).

Environment variables

VariabileScopoDefault / nota
TRUST_X_FORWARDED_FORUsare il primo hop X-Forwarded-For come src_ip1 è raccomandato con Caddy
DECEPTION_STATUS200 restituisce un corpo HTML; 302 restituisce un reindirizzamento200
DECEPTION_REDIRECT_URLPercorso di destinazione quando lo stato è 302/
MAX_DOWNLOAD_MBLimite del raccoglitore per URL16
TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_IDAvvisi opzionaliVuoto disabilita gli avvisi
FMC_SERVER_HEADERIntestazione della risposta Servernginx
VT_API_KEYRiservatoOpzionale

Compose passa queste variabili al servizio fmc-trap; fare riferimento a docker-compose.yml per i dettagli.

JSON log fields (reference)

Ogni riga in data/logs/fmc-trap.json è un oggetto JSON. Le chiavi comuni includono timestamp, event_type, src_ip, headers, raw_payload_hash, extracted_commands e downloaded_file_hash quando un file è stato memorizzato. I blob salvati in data/downloads/ usano modalità 0400 (sola lettura per il proprietario).

Risoluzione dei problemi

SintomoRisoluzione
Permission denied durante la scrittura in data/Eseguire sudo chown -R 10001:10001 data/logs data/downloads
Bind for 0.0.0.0:80 failed: port is already allocatedUn altro servizio o container è in ascolto sulla porta 80. Fermare quel servizio o liberare la 80; solo un processo può essere in ascolto sulla 80 per host.
Errori Let's Encrypt o ACME nei log di CaddyConfermare che il DNS risolva a questo server e che le porte 80 e 443 siano raggiungibili da internet. Compose configura DNS 1.1.1.1 e 8.8.8.8 per Caddy quando il resolver dell'host fallisce all'interno di Docker.
curl verso HTTPS restituisce output vuoto o fallisce al primo tentativoAspettare che certificate obtained successfully appaia in docker compose logs caddy.
L'IP del client nei log è 172.x.x.xImpostare TRUST_X_FORWARDED_FOR=1 quando si utilizza Caddy, poi ricreare i container: docker compose up -d --force-recreate.

Opzionale: esporre l'applicazione su localhost (debug)

Per raggiungere Gunicorn direttamente senza Caddy, aggiungere quanto segue sotto fmc-trap in docker-compose.yml:

root@kitploit:~
ports:
  - "127.0.0.1:5000:5000"

Non associare l'applicazione a 0.0.0.0 in produzione quando Caddy termina TLS.

Sicurezza

  • Distribuire su un VPS dedicato o rete isolata. Il servizio gestisce traffico dannoso e potrebbe scaricare malware per l'analisi.
  • Memorizzare i token Telegram e altri segreti solo in .env sull'host (mai fare commit di .env).
  • Limitare il firewall alle porte minime richieste (80 e 443 per HTTPS).

Uso legale ed etico

Distribuire solo su sistemi di tua proprietà o sui quali sei esplicitamente autorizzato a distribuire strumentazione. Gli honeypot possono raccogliere traffico di attacco e malware; rispettare le leggi applicabili e le politiche organizzative. Questo software è destinato alla ricerca sulla sicurezza.

Scarica lo strumento