If you run Citrix ADC or NetScaler Gateway appliances — or manage them for clients as an MSP — the recent reporting out of the security community should stop you mid-coffee. Attackers exploiting the ongoing NetScaler zero-days, a campaign already sweeping organizations across North America and Europe, are no longer stopping at initial access. Researchers now report they are using root access to plant two new payloads — WHIPSHOT and SLAPSHOT — and modifying appliance configurations to hold the foothold and pivot deeper into internal networks.
Root access. Config changes. Persistence.
Now ask yourself the question every sysadmin and MSP tech should be asking this week: if that was my appliance, who tells me? Not the vendor. Not a researcher. Not a blog post. Your monitoring.
For most teams, the honest answer is: nobody, and not for days or weeks. The appliance would keep answering pings. Port 443 would keep answering. The dashboard would stay green. Meanwhile, the first human to notice would be a user opening a ticket that says Citrix is slow — 40 minutes after the problem started, or in this case, potentially weeks after the intrusion started.
That gap — between up and healthy, between green dashboards and ground truth — is an infrastructure monitoring problem. And it is fixable.
The Problem in Depth
Ping is not monitoring
Most monitoring stacks treat network appliances like NetScaler as a checkbox: ICMP ping, maybe a TCP check on 443, maybe an SNMP poll of CPU and memory. That tells you the appliance is reachable. It tells you nothing about whether the appliance is behaving.
Attackers holding root want the box up. A foothold payload like WHIPSHOT or SLAPSHOT is worthless if the appliance crashes or draws attention. So the uptime check passes while the compromise runs.
And this exact blind spot bites you in boring ways long before anything exotic happens:
- The log partition on an ADC fills up over months until upgrades fail and behavior gets weird — and your ping check never notices.
- A config change quietly alters how sessions are handled, and users start complaining before any tool does.
- Process counts, service states, certificate expirations, disk growth — the metrics that actually predict appliance trouble — are simply never collected.
The tool sprawl tax
The typical mid-size IT shop or MSP runs something like this: an RMM for Windows endpoints (NinjaOne, ConnectWise Automate, N-able), a standalone network monitor for pings and bandwidth, a separate helpdesk (ConnectWise Manage, HaloPSA, Jira Service Management), and a spreadsheet — somewhere — tracking appliance firmware versions. Four or five tools. Four or five alert streams. Zero shared context.
Picture the Monday morning it produces:
- 9:40 — First user ticket: Citrix is slow.
- 9:55 — Tech checks the RMM: servers look fine.
- 10:05 — Checks the network monitor: appliance is green, because green means ping.
- 10:20 — Someone SSHes into the appliance and finds the log partition at 96%.
- 11:30 — Sessions stabilize after cleanup. Six Citrix-is-down tickets, two hours of a senior engineer, and an SLA report that will show a P1 with no corresponding monitoring alert — because the alerting tool was watching the wrong thing.
Every sysadmin reading this has lived a version of that morning. Multiply it across 20, 50, or 100 clients as an MSP and it becomes the whole job: a dozen tabs open across five tools, correlating by memory, with the human serving as the integration layer between products that should have been one product.
What it costs
- Detection time: when appliance compromises are discovered externally, victims routinely learn they were breached weeks after the intruders moved in.
- Response time: when monitoring only knows up versus down, your real mean time to detect is however long it takes a user to complain.
- Ticket volume: one degraded appliance generates dozens of vague Citrix-is-slow tickets before anyone identifies the actual cause.
- Morale: nothing burns out a good tech faster than 2am pages for a flapping ping check while the real problems surfaced via user complaints.
- Reporting: you cannot produce an honest SLA report when monitoring data lives in one system and ticket data lives in another. The manager presenting to leadership is guessing.
Why the gaps exist
Nobody designed it this way on purpose. RMM platforms grew up around Windows agent management. Network monitoring tools grew around ICMP and SNMP. Helpdesks grew around ticket queues. Each sees a slice of the environment, none share an alert stream or a common timeline, and the correlation work falls to a tired human at 2am. That is exactly the kind of gap a patient adversary — or a slowly filling disk — exploits.
How AlertMonitor Closes the Gap
AlertMonitor was built on a simple premise: one platform for the whole stack — infrastructure monitoring, RMM, helpdesk, network topology mapping, patch management, and intelligent alerting — with a single alert stream. Here is what that changes for this exact scenario:
Depth beyond ping. AlertMonitor watches the metrics that actually reflect appliance and server health: disk usage on every partition (including log partitions), CPU and memory trends, process and service states, scheduled tasks, and log growth. An appliance sitting at 85% disk becomes a page to the right person — not a surprise discovered at 96%.
One alert stream. Whether it is a critical Windows service crashing on APP01, a disk threshold on the ADC, or a workstation offline at a client site, it lands in the same stream with the same escalation rules. Nothing dies quietly in a console nobody had open.
Alert to ticket, automatically. Every alert can open a helpdesk ticket with device context attached. When the disk alert fires, the ticket already knows which device, which partition, which client. Your SLA reporting stops being fiction because the full timeline — alert, acknowledgment, response, resolution — lives in one system.
Remote remediation built in. From the alert or the ticket, the tech jumps straight into a remote session: clean up the log partition, restart the service, roll back the change. No tab switching, no VPN juggling.
Patch visibility across the fleet. When the next NetScaler-class advisory drops, are we exposed? becomes a 30-second query across every client from the NOC dashboard — not an afternoon of SSH sessions and spreadsheets.
For MSPs: one NOC, all clients. Per-client escalation policies, unified dashboards, no per-client tool juggling. The tech on duty sees everything that matters and nothing that does not.
To be clear: no monitoring platform stops a zero-day on its own, and this is not a replacement for your EDR or your security program. But the difference between knowing in seconds that something is wrong and finding out from a blog post is the difference between an incident and a breach. Operational visibility is the floor, not the ceiling.
Practical Steps You Can Take Today
1. Inventory every internet-facing appliance and its firmware
You cannot respond to the next advisory if you do not know where your appliances are. Centralize the list — model, firmware, exposure, owner. In AlertMonitor, the asset inventory maintains itself as devices are monitored; if you are starting from a spreadsheet, start today.
2. Stop monitoring appliances by ping alone
Add disk, process, service, and log-growth checks. From a NetScaler-style appliance shell, grab a quick health snapshot and baseline it:
# 10-second appliance health snapshot (run from the appliance shell)
df -h | grep -E 'var|flash'
uptime
ps aux | wc -l
Baseline the numbers. Sudden shifts in disk usage or process count are exactly the changes that deserve a look — and exactly the changes a ping check will never surface.
3. Pull disk usage across your servers — the check that catches most 'sudden' outages
$servers = @('DC01','SQL01','APP01','RDGW01','JUMP01')
Get-CimInstance -ComputerName $servers -ClassName Win32_LogicalDisk -Filter 'DriveType=3' -ErrorAction SilentlyContinue |
Select-Object PSComputerName, DeviceID,
@{n='SizeGB';e={[math]::Round($_.Size/1GB,1)}},
@{n='FreeGB';e={[math]::Round($_.FreeSpace/1GB,1)}},
@{n='FreePct';e={[math]::Round(($_.FreeSpace/$_.Size)*100,1)}} |
Where-Object { $_.FreePct -lt 15 } |
Sort-Object FreePct
AlertMonitor runs this class of check continuously and alerts at your thresholds. Until you are there, schedule this weekly — anything under 15% free deserves a ticket before it becomes an outage.
4. Verify critical services on every server
$services = 'Netlogon','DNS','wuauserv','WinRM','Spooler'
$servers = @('DC01','SQL01','APP01','RDGW01')
foreach ($srv in $servers) {
Get-Service -ComputerName $srv -Name $services -ErrorAction SilentlyContinue |
Where-Object { $_.Status -ne 'Running' } |
Select-Object @{n='Server';e={$srv}}, Name, Status
}
If the output is empty, everything is running. If it is not, you just found your next ticket before a user did.
5. Baseline scheduled tasks so anything unfamiliar stands out
You cannot recognize unexpected without knowing expected. Inventory the scheduled tasks on your servers monthly and diff against the last run — whether the trigger is a rogue script or a colleague's temporary fix that never left:
$report = foreach ($srv in @('APP01','JUMP01','RDGW01')) {
Invoke-Command -ComputerName $srv -ScriptBlock {
Get-ScheduledTask | Where-Object { $_.State -ne 'Disabled' } |
Select-Object @{n='Server';e={$env:COMPUTERNAME}}, TaskPath, TaskName, State
}
}
$report | Sort-Object Server, TaskPath |
Export-Csv -Path .\ScheduledTaskBaseline.csv -NoTypeInformation
AlertMonitor tracks scheduled tasks as first-class monitored objects, so a new or changed task surfaces in the alert stream instead of in a monthly diff.
6. Check patch compliance in minutes, not days
$servers = @('DC01','SQL01','APP01','RDGW01')
foreach ($srv in $servers) {
Get-HotFix -ComputerName $srv -ErrorAction SilentlyContinue |
Sort-Object InstalledOn -Descending |
Select-Object -First 3 PSComputerName, HotFixID, Description, InstalledOn
}
That is the manual version. AlertMonitor's patch management reports compliance across every managed device and every client from one screen — so when an advisory lands, exposure assessment takes seconds.
7. Test your pipeline
In your next maintenance window, fill a test disk or stop a non-critical service and start a timer. How long until a human knows — not a dashboard, a human? If the honest answer is a user will tell us, you have just measured your real mean time to detect. Now you know exactly what to fix.
The Bottom Line
The WHIPSHOT and SLAPSHOT campaign will not be the last time attackers turn an appliance zero-day into a durable foothold. You cannot patch someone else's zero-day, and no dashboard prevents intrusion by itself. What you control is this: whether your team learns something is wrong in seconds — a disk threshold crossed, a service crashed, a task changed — or learns it the way everyone else did, from an advisory.
Close the gap between online and healthy. One platform, one alert stream, seconds to awareness. Your on-call tech's sleep schedule, your SLA reports, and your incident timeline will all be better for it.
Related Resources
AlertMonitor Infrastructure & Server Monitoring AlertMonitor Platform Overview Book a Demo Infrastructure & Server Monitoring Resources
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.