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
Portspoof — Emula porte aperte e firme di servizio su tutte le 65535 porte TCP per rallentare la ricognizione, confondere gli scanner e sprecare risorse dell'attaccante con servizi falsi convincenti e tarpitting. | Kitploit
Strumenti/GitHubGitHub/drk1wi/portspoof
Strumenti DifensiviRicognizioneAnalisi delle VulnerabilitàEvasione IDS/IPSSicurezza di ReteRed Teaming
GitHubdrk1wi/portspoof

Portspoof

Emula porte aperte e firme di servizio su tutte le 65535 porte TCP per rallentare la ricognizione, confondere gli scanner e sprecare risorse dell'attaccante con servizi falsi convincenti e tarpitting.

Vedi Repository
2.4k179414 giorni faRevisionato da Kitploit

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 →
Sito web
Condividi

Portspoof

License Platform Build Status

Portspoof emula porte aperte e firme di servizio su tutte le 65535 porte TCP, trasformando la fase di ricognizione da una scansione veloce in un processo lungo e dispendioso in termini di risorse. Gli scanner vedono migliaia di servizi fasulli convincenti, rendendo impraticabile identificare la reale superficie d'attacco.

Indice dei contenuti

  • Panoramica
  • Caratteristiche Principali
  • Come Funziona
  • Approccio di Progettazione
  • Installazione
  • Configurazione
  • Utilizzo
  • Rafforzamento con iptables
  • Portspoof Pro
  • Autori e Licenza

Panoramica

L'obiettivo principale di Portspoof è rendere la ricognizione lenta, costosa e inaffidabile per gli aggressori. Invece di una scansione Nmap standard di 5 secondi che mappa ogni servizio reale su un sistema, un aggressore che affronta Portspoof vede 65535 porte aperte, ciascuna che sembra eseguire un servizio legittimo diverso. Non esiste un modo rapido per capire quali siano reali.

Caratteristiche Principali

  • Tutte le 65535 porte TCP sono sempre aperte: Invece di informare un aggressore che una porta è CHIUSA o FILTRATA, Portspoof risponde con SYN+ACK per ogni tentativo di connessione.
  • Emulazione del servizio: Oltre 9000 firme di servizio dinamiche generate da espressioni regolari. Ogni porta risponde ai probe con un'identità di servizio diversa e convincente.
  • Modalità di consegna miste: Ogni porta riceve un profilo comportamentale diverso all'avvio (banner immediato, risposta ritardata o attesa silenziosa) con tempi di attesa distribuiti su un'ampia gamma. Il rilevamento delle versioni a gamma completa (nmap -sV -p-) va ben oltre i limiti pratici.
  • Difesa Offensiva: Può essere utilizzato come 'Frontend del Framework di Exploit' per sfruttare vulnerabilità negli strumenti di scansione dell'aggressore stesso.
  • Leggero e Sicuro: Funziona in userland (nessun privilegio di root richiesto), si lega a una SOLA porta TCP per istanza in esecuzione e ha un utilizzo di CPU/memoria marginale.

Come Funziona

1. Sconfiggere gli Scanner di Porte

Esempio di scansione Nmap:

root@kitploit:~
$ nmap -p 1-20 target
Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for target
Host is up (0.00016s latency).
PORT   STATE SERVICE
1/tcp  open  tcpmux
2/tcp  open  compressnet
3/tcp  open  compressnet
4/tcp  open  unknown
5/tcp  open  rje
6/tcp  open  unknown
7/tcp  open  echo
8/tcp  open  unknown
9/tcp  open  discard
10/tcp open  unknown
11/tcp open  systat
12/tcp open  unknown
13/tcp open  daytime
14/tcp open  unknown
15/tcp open  netstat
16/tcp open  unknown
17/tcp open  qotd
18/tcp open  unknown
19/tcp open  chargen
20/tcp open  ftp-data

2. Confondere il Rilevamento delle Versioni

Portspoof risponde ai probe dei servizi con firme valide generate dinamicamente basate su un enorme database di espressioni regolari. Di conseguenza, un aggressore non sarà in grado di determinare quali numeri di porta il tuo sistema stia realmente utilizzando.

Esempio di scansione versione (porte 1–100):

root@kitploit:~
$ nmap -sV -p 1-100 target
Nmap scan report for target
Host is up (0.00016s latency).
PORT    STATE SERVICE            VERSION
1/tcp   open  tcpmux?
2/tcp   open  irc                ircu ircd
3/tcp   open  tcpwrapped
5/tcp   open  http               Polycom CMA Global Address Book (GAB) httpd
10/tcp  open  http               PGP Universal httpd
11/tcp  open  http               SnapStream Media Beyond TV PVR http config
12/tcp  open  pop3               Novell GroupWise pop3d
13/tcp  open  http               micro_httpd
15/tcp  open  ssh                OpenSSH r (protocol 8; NCSA GSSAPI authentication patch)
16/tcp  open  ftp                QMS/Minolta Magicolor 2200 DeskLaser printer ftpd
17/tcp  open  smtp               Network Box smtpd
21/tcp  open  ftp?
22/tcp  open  ssh                OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
23/tcp  open  tcpwrapped
25/tcp  open  smtp?
27/tcp  open  http               BMC/Marimba Management http config
37/tcp  open  http               Indy httpd qlRKjiF
39/tcp  open  pop3
41/tcp  open  ftp                VSE ftpd WhH
43/tcp  open  imap               Scalix imapd 6
46/tcp  open  telnet             AXIS webcam telnetd 96747 (Linux)
49/tcp  open  smtp               Openwave Email Mx smtpd
50/tcp  open  http               3Ware web interface 3v (RAID storage)
51/tcp  open  ftp                WebStar 4dftp ...
53/tcp  open  tcpwrapped
55/tcp  open  webdav             Tonido WebDAV
56/tcp  open  tor-control        Tor control port (Authentication required)
59/tcp  open  irc                ircu ircd
60/tcp  open  rtsp               GStreamer rtspd
64/tcp  open  http               BaseHTTPServer CAxoE (Mercurial hg serve; Python LDkW)
66/tcp  open  telnet             Slirp PPP/SLIP-on-terminal emulator telnetd
70/tcp  open  smtp               qpsmtpd
71/tcp  open  smtp               Microsoft Exchange smtpd
73/tcp  open  http               Avaya IP Office VoIP PBX httpd
77/tcp  open  smtp               Zeus SMTPS smtpd
79/tcp  open  ftp                Sambar ftpd
80/tcp  open  tcpwrapped
81/tcp  open  imap-proxy         nginx imap proxy
82/tcp  open  ssh                (protocol 811)
83/tcp  open  http               peercast.org
88/tcp  open  csta               Alcatel OmniPCX Enterprise
90/tcp  open  http               WASD httpd
91/tcp  open  http               Fortinet FortiGate 50B firewall http config
93/tcp  open  imap               ModusMail imapd 4
98/tcp  open  ssh                Sysax Multi Server sshd 7 (protocol 940)
99/tcp  open  http               2Wire HomePortal http config 5473
100/tcp open  newacct?

Il Risultato

Combinati, questi mezzi significano che:

  • Non esiste un modo rapido per distinguere i servizi reali da quelli falsi. I tempi, il comportamento e il contenuto del banner variano su tutta la gamma di porte.
  • Una scansione versione completa (nmap -sV -p-) con le impostazioni predefinite di tarpit richiede oltre 10 ore e genera centinaia di megabyte di dati falsi.
  • Lo scanner dell'aggressore consuma tempo e thread su connessioni che non portano a nulla.

Approccio di Progettazione

I servizi reali (SSH, SMTP, FTP, HTTP) inviano un banner e mantengono la connessione aperta, in attesa dell'input del client. Un'emulazione convincente significa fare lo stesso: accettare, inviare, mantenere. Ma un modello thread-per-client consuma memoria e CPU nel cambio di contesto, e su larga scala il difensore esaurisce le risorse prima che l'aggressore perda la pazienza. Lo strumento di inganno diventa un vettore auto-DOS.

L'approccio: un loop di eventi epoll a thread singolo. Ad ogni porta viene assegnata una modalità di consegna all'avvio: alcune inviano immediatamente un banner, altre aspettano che il client invii dati prima di rispondere, altre rimangono silenziose. I tempi di attesa sono distribuiti su diversi ordini di grandezza (decine di millisecondi a minuti) con jitter per connessione, in modo che i probe ripetuti alla stessa porta non restituiscano tempi identici.

Questo è importante perché senza di esso, un aggressore può inviare spazzatura a ogni porta e misurare i tempi di risposta: i servizi reali si chiudono rapidamente (protocollo sbagliato), mentre un tarpit ingenuo mantiene per secondi. Con modalità miste e un'ampia distribuzione temporale, migliaia di porte false si chiudono anche nella stessa gamma dei servizi reali. Non esiste una soglia pulita su cui filtrare.

L'economia funziona a causa dell'asimmetria:

  • Costo del difensore: ~1–2 KB di memoria kernel per connessione inattiva. Il loop epoll è a thread singolo, nessun overhead di cambio contesto. Una macchina modesta gestisce 10.000+ connessioni concorrenti senza sforzo.
  • Costo dell'aggressore: tempo e sforzo. Una scansione delle porte non dice nulla — ogni porta è aperta. Per trovare servizi reali hanno bisogno di rilevamento delle versioni su tutte le 65535 porte, poi probing a livello di protocollo su tutto ciò che sembra plausibile. Una scansione di 5 secondi diventa oltre 10 ore di lavoro attivo, il risultato è ancora un pagliaio, e la maggior parte degli aggressori passa a un bersaglio più facile.

Le modalità di consegna per porta sono fisse per la durata del processo ma imprevedibili tra riavvii. I tempi di attesa hanno una componente casuale per connessione, quindi probe ripetuti mostrano varianza naturale, simile ai servizi reali sotto carico.

v2.0 sostituisce il comportamento originale di banner-e-chiusura che era vulnerabile a un bypass di chiusura connessione (vedi post blog Vicarius/Hored1971). Il motore tarpit mantiene tutte le connessioni aperte con tempi misti, sconfiggendo il filtraggio basato sulla chiusura della connessione, l'impronta digitale temporale, l'analisi dei banner e la modellazione statistica dei pattern.


Installazione

Prerequisiti

Assicurati di avere un compilatore C++ e CMake (3.10+) installati.

Compilazione dal Sorgente

root@kitploit:~
mkdir build && cd build
cmake -DCMAKE_INSTALL_SYSCONFDIR=/etc .. 
make
sudo make install

Configurazione

Portspoof funziona in userland ma si basa sulle regole del firewall di sistema per intercettare il traffico destinato ad altre porte.

1. Configurare il Firewall (iptables)

Reindirizza tutto il traffico TCP in entrata (porte 1-65535) alla porta di Portspoof (default 4444).

Linux (iptables):

root@kitploit:~
# Escludere prima i servizi reali, poi reindirizzare il resto a Portspoof
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j RETURN
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -j REDIRECT --to-ports 4444

Nota: Sostituisci eth0 con la tua interfaccia di rete. Aggiungi una regola RETURN per ogni porta che esegue un servizio reale.

Per rendere persistente questa configurazione, puoi salvare le tue regole iptables o usare il file iptables-config fornito nella directory system_files.

2. Avvio del Sistema

Puoi aggiungere Portspoof agli script di avvio utilizzando gli esempi in system_files/init.d/.


Utilizzo

Modalità di Emulazione del Servizio (Consigliata)

Questa modalità genera e fornisce agli scanner di porte firme di servizio false.

root@kitploit:~
portspoof -c /etc/portspoof.conf -s /etc/portspoof_signatures -D

Con tempi di tarpit personalizzati (mantieni ogni connessione tra 10 e 60 secondi):

root@kitploit:~
portspoof -s /etc/portspoof_signatures -t 10 -T 60 -D

Modalità Porta Aperta

Questa modalità restituisce semplicemente uno stato OPEN per ogni tentativo di connessione senza inviare banner di servizio. Le connessioni sono comunque tarpittate.

root@kitploit:~
portspoof -D

Modalità Fuzzing

Portspoof può essere usato per fare fuzzing degli strumenti di scansione inviando payload casuali o basati su wordlist.

Fuzzing con generatore interno:

root@kitploit:~
# Genera payload casuali di dimensione casuale
portspoof -1 -v

Fuzzing con una wordlist:

root@kitploit:~
portspoof -f payloads.txt -v

Rafforzamento con iptables

La semplice regola REDIRECT sopra funziona, ma uno scanner aggressivo può ancora tentare di sopraffare Portspoof con connessioni. Il seguente insieme di regole aggiunge limitazione di velocità e ban automatico per host che superano la soglia di connessione. Le porte che ospitano servizi reali (SSH in questo esempio) sono escluse dal reindirizzamento ma ancora protette dalla regola di ban globale.

root@kitploit:~
# --- NAT: reindirizza tutto tranne i servizi reali ---
# aggiungi una regola RETURN per ogni porta che usi effettivamente (SSH, HTTP, ecc.)
iptables -t nat -A PREROUTING -p tcp --dport 22 -j RETURN
iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-ports 4444

# --- FILTRO: difesa in profondità ---

# consenti loopback (critico: previene la rottura dei servizi locali)
iptables -A INPUT -i lo -j ACCEPT

# se questo IP è stato segnalato come abusivo, scarta tutto (silenzioso, nessun RST)
iptables -A INPUT -m recent --name PORTSCAN --rcheck --seconds 60 -j DROP

# limita la velocità dei nuovi SYN per IP sorgente
iptables -A INPUT -p tcp --syn -m hashlimit \
  --hashlimit-above 10/sec --hashlimit-burst 30 \
  --hashlimit-mode srcip --hashlimit-name syn_throttle -j DROP

# se un singolo IP mantiene 100+ connessioni a portspoof, segna e scarta
iptables -A INPUT -p tcp --syn --dport 4444 -m connlimit \
  --connlimit-above 100 --connlimit-mask 32 \
  -m recent --name PORTSCAN --set -j DROP

# consenti traffico stabilito e nuove connessioni
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --syn -j ACCEPT
iptables -A INPUT -j DROP

Per distribuzioni ad alto traffico, aumenta la dimensione della lista xt_recent:

root@kitploit:~
echo "options xt_recent ip_list_tot=10000" > /etc/modprobe.d/xt_recent.conf

E ottimizza il connection tracking del kernel:

root@kitploit:~
sysctl -w net.netfilter.nf_conntrack_max=131072
sysctl -w net.core.somaxconn=4096

Portspoof Pro

Portspoof Pro estende l'inganno da un singolo host a un'intera rete. Un singolo sensore emula intere reti /16: migliaia di IP, ciascuno con servizi unici su tutte le porte, mantenendo conversazioni stateful multi-step.

  • Inganno a livello di rete. Trasforma spazi IP oscuri e sottoreti inutilizzate in una griglia di inganno attiva. Ogni host emulato presenta servizi unici con una personalità diversa per IP sorgente. Il tarpitting attivo esaurisce i pool di socket dell'attaccante e strangola gli strumenti automatici.
  • Rilevamento di scansioni e impronte digitali degli strumenti. Rileva tecniche di scansione SYN, FIN, NULL, XMAS, ACK. Fornisce impronte digitali a Nmap, Masscan, ZMap e scanner personalizzati. Telemetria JSON strutturata con mappatura MITRE ATT&CK, inviata al tuo SIEM.
  • Distribuzione sicura in produzione. Funziona in un ambiente sandboxato insieme al traffico di produzione. Le politiche di routing indirizzano il traffico di inganno al sensore. Nessun tap in linea, nessun rischio per i carichi di lavoro reali.
  • Conformità nativa. Supporta NIS2, DORA, ISO 27001, NIST CSF e CIS Controls.

portspoof.io


Autori e Licenza

Autore: Piotr Duszyński (@drk1wi)

Licenza: GNU General Public License v2.0 (GPLv2). Vedi il file LICENSE per dettagli.

Per applicazioni commerciali e legittime, contatta l'autore per gli accordi di licenza appropriati.


Segnalazione Problemi

Se incontri bug o hai richieste di funzionalità, segnalali sul GitHub Issue Tracker o contatta l'autore via email a piotr [at] duszynski.eu.

Scarica lo strumento