av Bhabesh Raj Rai, Security Research

Bland utvecklare är ngrok ett populärt reverse proxy-verktyg för att låta interna tjänster användas via internet genom att dirigera trafik genom dess molnnätverk. Med inspiration från ett Twitter-inlägg visar vi processen för att identifiera ngroks remote desktop protocol-tunnel (RDP).

Ngrok är mycket enkelt att använda och kräver inte port forwarding, dynamisk DNS eller VPN. Det som gör verktyget attraktivt för utvecklare är naturligtvis också attraktivt för angripare. Angripare missbrukar ngrok för persistens och lateral movement genom att exponera den lokala RDP-tjänsten.

Under 2019 rapporterade Malwarebytes om hotaktörer som införlivat ngrok i Lord EK. Ett år senare rapporterade Trend Micro om användningen av ngrok i en attack mot en av sina kunder. Samma år avslöjade Mandiant att ransomware-gruppen MAZE använde ngrok för att tunnla RDP-anslutningar. Även om ngrok kan upprätta tunnlar med en mängd olika protokoll har hotaktörer förståeligt fokuserat mer på RDP.

ngrol blog

Låt oss titta på de olika sätt som IT-tekniker kan söka efter ngrok-aktiviteter i nätverksmiljön. Kunder kan använda Logpoints Windows v5.4.1-applikation som inkluderar larm knutna till identifiering av ngrok-aktiviteter.

Loggkällor som krävs

  • Windows
  • Sysmon
  • Snort/Suricata
  • Zeek
  • Brandvägg

Identifiera ngrok med Logpoint

När en RDP-tunnel skapas med ngrok lämnas källadressvärdet ::%16777216 i systemets RDP-händelseloggar. IT-tekniker kan använda denna artefakt för att söka efter reverse RDP-tunnlar i sina system.

norm_id=WinServer
((event_source IN ["Microsoft-Windows-TerminalServices-LocalSessionManager",
"Microsoft-Windows-TerminalServices-RemoteConnectionManager"])
OR (channel=Security event_id=4779)) (source_address="::%16777216" OR eventxml.address="::%16777216")

Searching for ngrok’s IP artifact in Windows’s RDP event logs.

Söka efter ngrok IP-artefakter i Windows RDP-händelseloggar.

Administratörer bör säkerställa att deras Windows-system vidarebefordrar loggar från Microsoft-Windows-TerminalServices-LocalSessionManager/Operational och Microsoft-Windows-TerminalServices-RemoteConnectionManager/OperationalChannels till Logpoint.

Alternativt kan analytiker använda Florians sigma-regel som avslöjar de kommandoradsparametrar som används av ngrok.

label="Process" label=Create (("process"="*\ngrok.exe"
command IN ["* tcp *", "* http *", "* authtoken *"])
OR (command="* start *" command="*--all*" command="*.yml*" command="*--config*")
OR (command IN ["* tcp 139*", "* tcp 445*", "* tcp 3389*", "* tcp 5985*", "* tcp 5986*"]))

Searching for ngrok activity via its command line patterns.

Söka efter ngrok-aktivitet via dess kommandoradsmönster.

IT-tekniker kan använda Sysmon för att söka efter avvikande processer som binder RDP-porten till localhost.

norm_id=WindowsSysmon label=Network label=Connection
destination_address IN ["0:0:0:0:0:0:0:1", "127.0.0.1"] destination_port=3389 
-"process"="C:\Windows\System32\svchost.exe"

Searching for unusual processes binding the RDP port with localhost.

Söker efter ovanliga processer som binder RDP-porten till localhost.

Det är även möjligt att identifiera ngrok-aktivitet via nätverksloggarna. Innan ngrok-agenten skapar tunneln kommer den först att hämta ngrok-tunnelns serverdomäner och IP-adresslista från https://s3.amazonaws.com/dns.ngrok.com/tunnel.json. Analytiker kan söka efter ngrok-domänerna med DNS-frågor.

label=DNS label=Query (domain IN ["tunnel.nrok.com", "tunnel.us.ngrok.com", "tunnel.eu.ngrok.com", "tunnel.ap.ngrok.com", "tunnel.au.ngrok.com", "tunnel.sa.ngrok.com", "tunnel.jp.ngrok.com", "tunnel.in.ngrok.com"]
OR query IN ["tunnel.ngrok.com", "tunnel.us.ngrok.com", "tunnel.eu.ngrok.com", "tunnel.ap.ngrok.com", "tunnel.au.ngrok.com", "tunnel.sa.ngrok.com", "tunnel.jp.ngrok.com", "tunnel.in.ngrok.com"])

Searching for DNS queries to ngrok’s domains.

På samma sätt kan analytiker kontrollera närvaron av ngrok tunnel-IP-adresser i nätverksloggarna. Vi rekommenderar att administratörer placerar ngrok IP-adresser i en lista – ”NGROK_TUNNEL_IPS” – och regelbundet uppdaterar dem.

destination_address IN NGROK_TUNNEL_IPS

Ngrok använder update.equinox.io för uppdatering av paket som IT-tekniker kan söka efter vid analys av nätverkshändelser.

domain="equinox.io"

Searching for ngrok’s domain used for update.

Söka efter ngroks domän som används för uppdatering.
Förutom brandväggen kan analytiker även använda IDS/IPS (såsom Snort) för att identifiera ngrok-aktiviteter.

norm_id=Snort message="*ngrok*"

Searching for Snort rule triggers related to ngrok.

Incidenthantering vid äkta larm

Administratörer kan vidta följande åtgärder när de får ett äkta ngrok-larm.

  1. Undersök hur hotaktören har laddat ner och exekverat ngrok-binärfilen.
  2. Identifiera ngrok-tunnelns protokoll.
  3. Identifiera berörda användarkonton.
  4. Undersök vilka system som hotaktörerna har fått åtkomst till via tunneln.

Kunder kan använda sina SOAR-playbooks för att åtgärda komprometterade användarkonton och rensa berörda system.

Implementering av djupgående detektion är nyckeln i det nuvarande hotlandskapet

Ngrok är bara ett av flera exempel på hotaktörer som använder legitima verktyg för sina illasinnade syften. Angripare kommer att göra sitt bästa för att smälta in i bakgrundsbruset och försvåra försvararnas arbete. Djupgående detektion är avgörande tillsammans med insyn i klient-, slutpunkts-, identitets- och molnloggar.

Om utvecklare använder ngrok rekommenderar vi att organisationer fastställer basnivåer för den legitima ngrok-aktiviteten och flaggar aktiviteterna som normala så att alla avvikande ngrok-aktiviteter sticker ut från bruset.

Kontakta Logpoint

Kontakta oss och få information om varför branschledande företag väljer Logpoint:

Kontakta Logpoint