Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
portclue — Spiega perché una porta TCP Linux può essere o meno raggiungibile | Kitploit
Strumenti/GitHubGitHub/pbxqdown/portclue
Strumenti DifensiviSicurezza dei ContenitoriAudit di ConfigurazioneRaccolta InformazioniSicurezza di ReteUtilità e Framework
GitHubpbxqdown/portclue

portclue

Spiega perché una porta TCP Linux può essere o meno raggiungibile

Vedi Repository
3305 giorni 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 →
Sito web
Condividi

PortClue

CI Release License Go

PortClue spiega perché una porta TCP su una macchina Linux può o non può essere raggiungibile. Trasforma lo stato di socket, processi, firewall e Docker in una breve catena di prove invece di costringerti a correlare manualmente ss, /proc, nftables, iptables e docker inspect.

PortClue demo: an overview of local TCP listeners, then the evidence chain for port 8080

Eseguilo senza una porta per scoprire quali endpoint TCP locali meritano attenzione:

$ sudo portclue
LOCAL TCP LISTENERS

PORT    SERVICE                   CONFIDENCE BIND            OWNER       SOURCE BIND SCOPE
22      OpenSSH server            HIGH       0.0.0.0,::      ssh.service host   ALL_INTERFACES
8080    NGINX web server          HIGH       0.0.0.0,::      nginx       host   ALL_INTERFACES
8443    api service               MEDIUM     192.0.2.10      demo-api    docker SPECIFIC_INTERFACE
9000    Python HTTP server        MEDIUM     127.0.0.1       python3     host   LOOPBACK_ONLY

BIND SCOPE describes socket binding, not firewall reachability.
Run `portclue PORT` for the complete evidence chain and local exposure verdict.

ALL_INTERFACES, SPECIFIC_INTERFACE e LOOPBACK_ONLY descrivono dove un socket accetta traffico. Deliberatamente non affermano che un firewall lo consenta. Ispeziona una porta per l'analisi completa del firewall locale:

$ sudo portclue 8080
POTENTIAL EXTERNAL EXPOSURE

TCP port 8080

  0.0.0.0:8080/tcp  [POTENTIAL]
    Service            NGINX web server
    Category           web
    Confidence         HIGH
    Identity evidence  executable basename matched "nginx"
    -> LISTEN             NETLINK_INET_DIAG reports socket inode 123456 bound to 0.0.0.0:8080/tcp
    -> OWNED              PID 4242 (nginx), systemd unit nginx.service
    -> ALL_INTERFACES     0.0.0.0 accepts traffic addressed to any local interface
    -> ACCEPT             nftables: a direct rule matches TCP destination port 8080 and returns accept

Unknown outside this machine:
  - router port forwarding
  - cloud firewall or security group
  - upstream NAT, including carrier-grade NAT

[!IMPORTANT] PortClue v0.1 è un prototipo Linux precoce e conservativo. POTENTIAL significa che il percorso locale osservato consente il traffico; non afferma che una porta sia raggiungibile da internet pubblico. Le espressioni firewall non supportate producono UNKNOWN.

Perché non ss o lsof

  • Non ne ha bisogno. I listener provengono da NETLINK_INET_DIAG, la stessa interfaccia del kernel usata da ss, e i dettagli dei processi da /proc. Nulla viene estratto dall'output di un altro strumento, quindi un container che non ha né ss né lsof ottiene comunque il listener e il suo proprietario. L'analisi del firewall esegue nft o iptables-save, e segnala UNKNOWN senza di essi.
  • Risponde alla domanda successiva. ss -ltnp ti fornisce il socket e il PID. Se quel bind è solo loopback, se una regola del firewall lo consente e se la porta è una pubblicazione Docker anziché un listener host è un lavoro che altrimenti faresti a mano.
  • Non tira a indovinare. Una regola del firewall che PortClue non riesce a modellare produce UNKNOWN, mai una risposta sbagliata ma sicura di sé.

Cosa legge

  • Listener TCP tramite NETLINK_INET_DIAG, non estraendo l'output di ss
  • proprietà del processo, eseguibile, riga di comando, cgroup e network namespace tramite /proc
  • descrizioni delle unit systemd dai file delle unit installate e trigger dei socket attivi tramite systemctl show
  • nftables tramite nft --json list ruleset
  • iptables tramite iptables-save quando nftables non è disponibile
  • porte pubblicate da Docker tramite l'API HTTP locale del Docker Engine, inclusi immagine ed etichette

Identità del servizio

PortClue identifica a cosa appartiene una porta prima di spiegare l'esposizione. Le prove sono ordinate in questo modo:

  1. eseguibile osservato, unit systemd e trigger del socket attivo;
  2. immagine Docker, nome del container ed etichette;
  3. il catalogo dei servizi curato integrato;
  4. la convenzione locale delle porte in /etc/services.

Un proprietario effettivo prevale sempre su un nome di porta convenzionale. Se è nota solo la convenzione della porta, l'identità è esplicitamente contrassegnata con confidenza LOW. Il catalogo integrato è memorizzato in internal/identify/catalog.json e viene distribuito all'interno del singolo binario; PortClue non scarica dati di identità a runtime.

PortClue è in sola lettura. Non si connette alla porta interrogata, non scansiona un altro host, non modifica regole del firewall, non arresta processi o container, non carica dati e non esegue un daemon.

Installazione

Script di installazione (consigliato)

Funziona su Linux (amd64 e arm64). Lo script scarica l'archivio GitHub Release corrispondente, verifica SHA256SUMS e installa un singolo binario. Non modifica la configurazione della shell.

Installazione utente (predefinita, senza root). Installa in ~/.local/bin, di tua proprietà:

curl -fsSL https://raw.githubusercontent.com/pbxqdown/portclue/v0.1.2/scripts/install.sh | sh
portclue

Un'installazione utente viene eseguita senza root e riporta le prove disponibili per il tuo account, annotando ciò che manca. Questo è sufficiente per esplorare listener e mappature Docker. Poiché sudo non cerca in ~/.local/bin e questo binario è scrivibile dal tuo utente, non eseguire questa copia con sudo.

Installazione di sistema (di proprietà di root, per sudo portclue). PortClue legge le prove più complete ( /proc limitato, stato completo del firewall) come root. Per questo, installa un binario di proprietà di root in /usr/local/bin (lo script usa sudo solo per il passaggio finale di installazione, non per il download o l'estrazione):

curl -fsSL https://raw.githubusercontent.com/pbxqdown/portclue/v0.1.2/scripts/install.sh | sh -s -- --system
sudo portclue

Override opzionali: PORTCLUE_VERSION=0.1.2 (senza v iniziale) e PORTCLUE_INSTALL_DIR per entrambe le modalità.

Disinstallazione:

# user install
rm ~/.local/bin/portclue
# system install
sudo rm /usr/local/bin/portclue
# or, matching how you installed:
curl -fsSL https://raw.githubusercontent.com/pbxqdown/portclue/v0.1.2/scripts/install.sh | sh -s -- --uninstall
curl -fsSL https://raw.githubusercontent.com/pbxqdown/portclue/v0.1.2/scripts/install.sh | sh -s -- --system --uninstall

Archivio della release

Scarica il file corrispondente portclue-VERSION-linux-ARCH.tar.gz e SHA256SUMS da GitHub Releases, verifica il checksum, quindi installa:

sha256sum -c SHA256SUMS --ignore-missing
tar -xzf portclue-0.1.2-linux-amd64.tar.gz   # or linux-arm64
sudo install -m 0755 portclue-0.1.2-linux-amd64/portclue /usr/local/bin/portclue
portclue --version

Mappatura delle architetture:

uname -mArchivio
x86_64linux-amd64
aarch64, arm64linux-arm64

Ogni archivio include il binario, il README, la licenza Apache-2.0 e le note di terze parti.

Installazione con Go

Richiede Linux e Go 1.27+:

Scarica lo strumento