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.

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")
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*"]))
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"
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"])
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"
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*"
Hændelsesrespons på ægte positiver
Administratorer kan tage følgende skridt, når de har registreret en ægte positiv ngrok-alarm.
- Undersøg, hvordan trusselsaktøren downloadede og kørte den binære ngork-fil.
- Identificér ngrok-tunnelens protokol.
- Identificer de berørte brugerkonti.
- 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.