The Pitboss Pipeline: NetScaler Log Poisoning and a FreeBSD Sliver Implant
82[.]167[.]14[.]7- ASN
- AS35753
- Provider
- Etihad Salam Telecom CJSC
- Location
- Riyadh, Saudi Arabia
- Observed role
- first observed request source for the Nx-zD two-stage pattern
Scripts in headers, commands in later requests
Three groups of exploit requests reached NetScaler Gateways between September 28th and October 2nd: two-step INDEX: scripts, plain-text copy-and-fetch commands from Tor, and a loader download from a host under the same parent domain as the configured C2 of a FreeBSD Sliver implant.
On September 29th and 30th, two sources sent NetScaler exploit requests in two stages. First, a User-Agent header carried an encoded script: the text INDEX: followed by Base64, such as INDEX:bWtkaXIgLXAgL3Zhci92cG4vYm9va21hcmsv…, which the gateway records in its log. Then separate login requests paired decoder commands with Pitboss failure text recognized by NetScaler's vulnerable log processor.

The full script templates carry the Nx-zD marker. That marker, matching script structure, and shared trigger text link the activity from 82[.]167[.]14[.]7 and 130[.]12[.]182[.]7. The second source's Nx_zD script matches three from the first source apart from the file tag. Both sources requested /vpn/bookmark/Nx_zD.html 36 minutes apart.
The eight decoded scripts contain commands to write verification markers and PHP handlers to appliance web paths. Five full templates also contain commands to create Perl CGI files and enable PHP and CGI handling in /etc/httpd.conf. The Perl write commands resolve to empty files.
Tor-routed configuration-copy and fetch requests
Later on September 29th, seven Tor-routed sources used the same Pitboss trigger format with the command in plain text instead of an encoded script: four copies of the appliance configuration, /nsconfig/ns.conf, to web paths, followed by a fetch request for /p through a forwarding hostname. All seven carried a variant in User-Agent; five also submitted one in login. The commands save the response as /tmp/.p and pass that path to nohup sh.
Three Serveo hostnames and one Pinggy hostname encode the same forwarding address, 77[.]247[.]126[.]239. All seven sources presented JA4 t13i9012h1_c6771aded2ed_57a60bdf03d1, which matches no standard client such as Python, curl or Node.js, and was also seen from 22 sources in 30 days.
Two loader versions and a FreeBSD Sliver implant
On October 2nd, a separate source, 51[.]158[.]203[.]95, sent requests with the same Pitboss failure text and a command that downloads a script from f[.]pylrk[.]cc and runs it. The URL returned a 297-byte shell loader at 12:32 UTC and a different 443-byte loader at 18:31 UTC.
Both loaders contain commands to fetch and run a file from one payload URL on that host. The second loader's commands write the download to /nsconfig/.nsl, record uname -srm under the LogonPoint directory, start the file with nohup, and append a boot entry to /nsconfig/rc.netscaler, which NetScaler runs at every restart.
A FreeBSD build of Sliver, the open-source command-and-control (C2) framework, uses www[.]pylrk[.]cc as its only configured C2. That hostname shares the delivery host's parent domain, registered at 06:56 UTC the same day. Static analysis shows HTTPS with a plain-HTTP fallback and 16 message handlers covering command execution, file transfer, an interactive shell, and tunnels.
Defender-visible markers
Search URL-decoded request bodies and User-Agent values for pitboss PPE unexpectedly died NSPPE and pitboss PPE missed too many heartbeatsNSPPE. Search access logs for INDEX: followed by Base64 in User-Agent. Exclude authorized test sources.
From the authorized NetScaler BSD shell, search for Nx_*, nx_verify.html, nx_proof.html, x.php, c88771_*.txt, wt88771*.txt, /var/tmp/wtw888, and /tmp/.p. Compare /etc/httpd.conf with a known-good copy for unexpected php_engine on or AddHandler cgi-script .pl lines.
Search DNS and TLS logs for the appliance's traffic to pylrk[.]cc. Look for /var/tmp/.host, /nsconfig/.nsl, /var/nslog/.nsl, ns_ctx.html under LogonPoint, and unexpected nohup lines in /nsconfig/rc.netscaler.
Preserve evidence before applying the Citrix CTX697096 fixes (14.1-73.37 or 13.1-64.23). Rebuild an appliance with a confirmed malicious file or unauthorized boot entry from a known-good image. Open the Full Report tab for hashes, samples, and detections.
- domain530b8741684cbce5-77-247-126-239[.]serveousercontent[.]comreferenced fetch endpoint variant (1 Tor source)
- domain92100c9a47539ad9-77-247-126-239[.]serveousercontent[.]comreferenced fetch endpoint variant (2 Tor sources)
- domaind9f9bcd8c65d62ea-77-247-126-239[.]serveousercontent[.]comreferenced fetch endpoint variant (4 Tor sources)
- domainf[.]pylrk[.]ccdelivery host named in the fetch command and both loaders
- domainpylrk[.]ccparent domain, registered on the 2nd of October 2026
- domainwww[.]pylrk[.]cconly C2 host configured in the Sliver implant
- domainylnep-77-247-126-239[.]free[.]pinggy[.]netreferenced fetch endpoint variant (1 Tor source, Pinggy service)
- file_path/nsconfig/.nsldestination named in the second-wave loader
- file_path/nsconfig/rc.netscalerboot file named in the second-wave loader's append command
- file_path/tmp/.plocal target named in the captured fetch command
- file_path/var/netscaler/logon/LogonPoint/ns_ctx.htmltarget of the uname -srm write in the second-wave loader
- file_path/var/netscaler/logon/themes/wt88771*.txtwrite-and-check target pattern named in batch-scanner requests
- file_path/var/nslog/.nsldestination named in the second-wave loader when /nsconfig does not exist
- file_path/var/tmp/.hostdestination named in the first-wave loader
- file_path/var/tmp/wtw888marker path named in a captured exploit request
- file_path/var/vpn/bookmark/nx_verify.htmlwrite target named in captured verification commands
- file_path/var/vpn/bookmark/Nx_zD.htmlwrite target named in the decoded Nx_zD script
- file_path/var/vpn/theme/Nx_zD.phpPHP command-handler path named in the decoded Nx_zD script
- ip109[.]70[.]100[.]9Tor-routed source that sent a copy/fetch command variant in login and User-Agent
- ip130[.]12[.]182[.]7second request source using the same Nx-zD token and template
- ip178[.]20[.]55[.]182Tor-routed source that sent a copy/fetch command variant in login and User-Agent
- ip185[.]220[.]101[.]160Tor-routed source that sent a copy/fetch command variant in User-Agent
- ip185[.]243[.]218[.]225Tor-routed source that sent a copy/fetch command variant in login and User-Agent
- ip192[.]42[.]116[.]13Tor-routed source that sent copy/fetch command variants in login and User-Agent
- ip192[.]42[.]116[.]63Tor-routed source that sent a copy/fetch command variant in login and User-Agent
- ip23[.]129[.]64[.]131Tor-routed source that sent a copy/fetch command variant in User-Agent
- ip51[.]158[.]203[.]95source of the 2nd October fetch-and-pipe requests
- ip77[.]247[.]126[.]239forwarding address encoded in all four command-referenced hostnames
- ip82[.]167[.]14[.]7first observed request source for the Nx-zD two-stage pattern
- ja4t13i9012h1_c6771aded2ed_57a60bdf03d1presented by all seven Tor-routed sources; matches no standard client such as Python, curl or Node.js; seen from 22 sources in 30 days
- sha2560188b0eba4b01c4fb838df9d1d76c76d7f1dc22897e25161975b606c134c1027FreeBSD Sliver implant
- sha256223edab12979b91a01a53519fbfb52a97f772ac50ae6cc34bfde7a784306da30retained decoded Nx_5100 script
- sha256270818363029321786e16e2102c550a1edc7bd6fde172ed6c620ad1958c36ac8first-wave shell loader
- sha2566ce6b4ebd1a25b971fcc9e1b8ef8ff00d2aed3b5117b3799bd1943c4400f9fbdretained decoded Nx_7508 script
- sha2567bfdc8b959ef92ef35cb9eb74f9641096e74508061be37effe74abdb5435408eretained decoded nx_verify script, second iteration
- sha2567f0c6678d94bed94ddd2369bb5d59ead44fb2777dbb1ca27d86143f3cf73e1b8retained decoded Nx_8507 script
- sha256accc5d1c6a5affdfce6e316f7ac7745a93598c568723d5b69189b86ee1b8b58fretained decoded nx_verify script, first iteration
- sha256bfad966f4b09e89b20d72d2fa16d2bc0a305297621d2eb88f4d8768d7ed92633retained decoded Nx_5936 script
- sha256c2f5532f3209dce0bd30ead47a2616a74ce8170324ef68dfd59acac3f5f1da34second-wave shell loader
- sha256c69576b1daa1246563e2391f84ad603c6fba454adc363146712a2e77f7b09510retained decoded Nx_zD script
- sha256f878eccf4b300f8085ceb866a2f71aed10428109e2cb89079a685699c6ef0941retained decoded nx_verify script, third iteration
- string6EB1C38D3B25FF0Bminisign key ID embedded in the implant
- stringage1wt8dqwncznpg4zyp9ul0tkhvehgja73xw2rkfwu9m22fqmjjlelqkeaykwserver age public key embedded in the implant
- stringc88771_prefix used in four configuration-copy destination filenames
- stringINDEX:script-staging User-Agent marker before Base64; exclude authorized test traffic
- stringNx-zDtoken in decoded scripts and expected marker-file contents
- stringpitboss PPE missed too many heartbeatsNSPPEURL-decoded alternate exploit grammar marker
- stringpitboss PPE unexpectedly died NSPPEURL-decoded exploit grammar marker
- stringpylrkfbsdSliver implant name
- stringRWQL/yU7jcOxblkexuBugf/7ULtXwqV/M6ascEk+Y9ucrFTLjL31fUarminisign public key embedded in the implant
- urlhxxp://530b8741684cbce5-77-247-126-239[.]serveousercontent[.]com/pURL named in one captured fetch-command variant
- urlhxxp://92100c9a47539ad9-77-247-126-239[.]serveousercontent[.]com/pURL named in captured fetch-command variants from two Tor sources
- urlhxxp://d9f9bcd8c65d62ea-77-247-126-239[.]serveousercontent[.]com/pURL named in captured fetch-command variants from four Tor sources
- urlhxxps://f[.]pylrk[.]cc/haki2ufpiq8aevtz/hostpayload URL named in both loaders
- urlhxxps://f[.]pylrk[.]cc/i77amhetm1z7892k/sloader URL named in the fetch command; returned two different loaders
- urlhxxps://ylnep-77-247-126-239[.]free[.]pinggy[.]net/pURL named in one captured fetch-command variant
- user_agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.3945.475 Safari/537.36fixed User-Agent in the implant's HTTP client
- user_agentMozilla/5.0 (X11; Linux x86_64) batch-cve-2026-88771batch-scanner User-Agent