VPN and SSL-VPN appliances sit at the boundary, run privileged and often hardened-but-unmonitored operating systems, and hold credentials, configuration and routes into the network. Exploitation of them is a recurring entry vector (T1190). Because you usually cannot install an agent, detection depends on forwarding the appliance’s own logs and on watching what the exploited device does next.
Signals at a Glance
| Signal | Where | ATT&CK |
|---|---|---|
| Administrative login from an address outside your management ranges | Appliance syslog | T1078 |
| Configuration export, backup download or support-bundle generation | Appliance audit log | T1005 |
| New local admin, VPN user or API key outside change windows | Appliance audit log | T1136.001 |
| VPN session reused from a second source address or a changed user agent | Appliance and proxy logs | T1550.004 |
| Appliance process crash or unexpected reboot shortly before suspicious sessions | Appliance system log | T1190 |
| Appliance initiating outbound connections to new destinations | Firewall, flow | T1071.001 |
Administrative Session and Config Anomalies
Start with administrative access. Every appliance admin login should come from a short, known list of management addresses. Anything else is worth a ticket. Forward appliance logs through CEF or syslog to the SIEM; the field names below vary by vendor, so map them to your parser.
// Sentinel (KQL) - appliance admin activity outside management ranges
let mgmt = dynamic(["10.10.0.0/24"]); // tune/validate: your management ranges
CommonSecurityLog
| where DeviceProduct has_any ("FortiGate", "NetScaler", "Pulse", "Connect Secure", "ASA")
| where Activity has_any ("admin login", "Admin login successful", "login success")
or Message has_any ("admin", "administrator")
| where not(ipv4_is_in_any_range(SourceIP, mgmt))
| project TimeGenerated, DeviceVendor, DeviceProduct, DeviceName, SourceIP, SourceUserName, Activity, Message
| order by TimeGenerated desc
Configuration reads are the second thing to watch. A config export gives the attacker local account hashes, pre-shared keys and routing data. Alert on any export, backup or support-bundle event that was not scheduled:
index=network sourcetype IN ("fortinet:fortigate:event","citrix:netscaler:syslog","pulse:connectsecure")
(config_backup OR "config export" OR "download config" OR "support bundle" OR "system backup")
| stats count min(_time) as first max(_time) as last values(src_ip) as src values(user) as user by host
| eval first=strftime(first,"%F %T"), last=strftime(last,"%F %T")
# Tune/validate: sourcetypes and field names vary; exclude your scheduled backup account.
Make the Appliance Observable
- Forward appliance syslog off-box in real time. Attackers with root on an appliance often delete local logs or rotate them aggressively.
- Alert on a gap in log volume from an appliance as well as on content; silence after an anomaly is itself a signal.
- Treat vendor integrity-check tools and external scanners as scheduled detections, and run them after every vendor advisory and at set intervals.
- After exploitation, expect credential theft and lateral movement from the appliance’s address. Watch for LDAP, SMB or RDP traffic that originates from the appliance and was not seen before.
- Keep a firmware inventory. Knowing which devices are on a vulnerable build lets you prioritise log review before an advisory turns into an incident.
Use vendor advisories and their integrity-check tools, CISA and national CERT guidance on edge device hunting, SigmaHQ and Elastic rules for VPN authentication anomalies, and Splunk ESCU analytics for network device administration. Baseline your own environment — admin locations, backup schedules and maintenance windows differ widely.
Build Detections That Fire
Mjolnir Security helps blue teams turn threat intelligence into high-fidelity detections across endpoint, network, identity and cloud telemetry.
- Detection Engineering We build and tune detections mapped to ATT&CK from your own telemetry.
- Threat Hunting as a Service Hypothesis-driven hunts for the behaviours on this page.
- 24/7 Incident Response Containment when a detection fires. Call +1 833 403 5875.
Stay ahead of emerging threats. Get notified when we publish new intelligence reports and advisories.
Subscribe to Alerts