af Bhabesh Raj Rai, Security Research

Blandt udviklere er ngrok et populært reverse proxy-værktøj til at eksponere interne tjenester for internettet ved at dirigere trafik gennem dets cloudnetværk. Lad os med inspiration fra en Twitter-tråd  gennemgå processen med at detektere ngroks RDP-tunnel (remote desktop protocol).

ngrok er meget brugervenlig og er ikke afhængig af portviderestilling, dynamisk DNS eller VPN. Det, der gør det attraktivt for udviklere, gør det naturligvis også attraktivt for modstandere. Angriberne misbruger ngrok til fastholdelse og lateral movement ved at eksponere den lokale RDP-tjeneste.

I 2019 rapporterede Malwarebyte om trusselsaktører, der inkorporerede ngrok i Lord EK. Et år senere rapporterede Trend Micro brugen af ngrok i et angreb mod deres kunde. Samme år afslørede Mandiant MAZE ransomware-gruppen, der brugte ngrok til RDP-forbindelser. Selvom ngrok kan skabe forbindelse til en lang række protokoller, har trusselsaktører forståeligt nok fokuseret mere på RDP.

ngrol blog

Lad os se på de forskellige måder, hvorpå forsvarer af virksomheder kan søge efter ngrok-aktiviteter i deres miljø. Kunderne kan bruge Logpoints Windows v5.4.1-applikation, der omfatter alarmer relateret til registrering af ngrok-aktivitet.

Påkrævede logkilder

  • Windows
  • Sysmon
  • Snort/Suricata
  • Zeek
  • Firewall

Detektering af ngrok med Logpoint

Oprettelsen af en RDP-tunnel med ngrok efterlader en kildeadresseværdi på ::%16777216 i systemets RDP-hændelseslogfiler. Forsvarerne kan bruge dette artefakt til at søge efter reverse RDP-tunneller i deres miljø.

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øgning efter ngrok IP-artefakt i Windows RDP-eventlogfiler.

Administratorer skal sørge for, at deres Windows-systemer videresender logfiler fra Microsoft-Windows-TerminalServices-LocalSessionManager/Operational og Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational til Logpoint.

Alternativt kan analytikere bruge Florians sigma-regel, der ser på de kommandolinjeparametre, der bruges af 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øgning efter ngrok-aktivitet via dens kommandolinjemønstre.

Forsvarere kan bruge Sysmon til at søge efter usædvanlige processer, der knytter RDP-porten til den lokale vært
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øgning efter usædvanlige processer, der knytter RDP-porten til den lokale vært.

Det er også muligt at registrere ngrok-aktivitet via netværkslogfiler. Før oprettelsen af tunnelen vil ngrok-agenten hente ngrok-tunnelservernes domæner og IP-adresseliste fra https://s3.amazonaws.com/dns.ngrok.com/tunnel.json. Analytikere kan søge efter ngrok-domæner i DNS-forespørgsler.

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å samme måde kan analytikere kontrollere tilstedeværelsen af ngrok tunnel-IP-adresser i netværkslogfilerne. Vi anbefaler, at administratorer placerer ngrok IP-adresser på en liste -NGROK_TUNNEL_IPS – og regelmæssigt opdaterer dem.

destination_address IN NGROK_TUNNEL_IPS

Ngrok bruger update.equinox.io til at opdatere pakker, som forsvarere kan søge efter i netværkshændelserne.

domain="equinox.io"

Searching for ngrok’s domain used for update.

Søger efter ngroks domæne, der bruges til at opdatere.
Ud over firewallen kan analytikere også bruge IDS/IPS (såsom Snort) til at registrere ngrok-aktivitet.

norm_id=Snort message="*ngrok*"

Searching for Snort rule triggers related to ngrok.

Hændelsesrespons på ægte positiver

Administratorer kan tage følgende skridt, når de har registreret en ægte positiv ngrok-alarm.

  1. Undersøg, hvordan trusselsaktøren downloadede og kørte den binære ngork-fil.
  2. Identificér ngrok-tunnelens protokol.
  3. Identificer de berørte brugerkonti.
  4. Undersøg, hvilke systemer trusselaktørerne fik adgang til ved hjælp af tunnelen.

Kunderne kan køre deres SOAR-playbooks for at afhjælpe kompromitterede brugerkonti og rydde op i de berørte systemer.

Implementering af omfattende detektering er altafgørende i det aktuelle trusselslandskab

Ngrok er blot et af flere eksempler på trusselsaktører, der bruger legitime værktøjer til deres forbryderiske formål. Angriberne vil gøre deres bedste for at gå i ét med baggrundsstøjen og på den måde gøre forsvarernes arbejde meget vanskeligt. Omfattende detektering er afgørende sammen med synlighed i slutpunkt-, netværks-, identitets- og cloudlogfiler.

Hvis udviklerne bruger ngrok, anbefaler vi organisationer at basere den legitime ngrok-aktivitet på en sikker liste og dermed sikre, at enhver usædvanlig ngrok-aktivitet skiller sig ud fra støjen.

Kontakt Logpoint

Kontakt os og hør, hvorfor brancheførende virksomheder vælger Logpoint:

Kontakt Logpoint