2026-10-05 14:13:39 +02:00
{
"updated" : "2026-10-05" ,
"classification" : "review_candidate" ,
"rules" : [
{
"id" : "php_nonstandard_handler" ,
"regex" : "\\b(?:addhandler|addtype|sethandler)\\b[^\\r\\n]{0,250}application/x-httpd-php[^\\r\\n]{0,100}\\.(?:deb|sig|ico|rpm|tgz|html|dat|png|so|sh)\\b" ,
"source" : "https://cloud.google.com/blog/topics/threat-intelligence/defending-against-active-exploitation-of-citrix-netscaler-adc-and-gateway-appliances" ,
"required_any_literal" : [
"application/x-httpd-php"
]
},
{
"id" : "php_engine_enabled" ,
"regex" : "\\bphp_(?:flag|admin_flag)\\s+engine\\s+on\\b" ,
"source" : "https://cloud.google.com/blog/topics/threat-intelligence/defending-against-active-exploitation-of-citrix-netscaler-adc-and-gateway-appliances" ,
"required_any_literal" : [
"php_flag" ,
"php_admin_flag"
]
},
{
"id" : "web_alias_routing" ,
"regex" : "\\b(?:alias|aliasmatch|rewriterule)\\b[^\\r\\n]{0,800}(?:/vpn/(?:media|theme|images)|\\.sig|\\.ctxs\\.receiver|\\.local_journal|receiver\\.min|logonuisimple)" ,
"source" : "https://cloud.google.com/blog/topics/threat-intelligence/defending-against-active-exploitation-of-citrix-netscaler-adc-and-gateway-appliances" ,
"required_any_literal" : [
"alias" ,
"rewriterule"
]
},
{
"id" : "css_webshell_alias" ,
"regex" : "(?:receiver\\.min(?:\\.[a-f0-9]*)?\\.css|logonuisimple\\.html\\.style\\.min(?:\\.[a-f0-9]+)?\\.css)" ,
"source" : "https://www.levelblue.com/blogs/spiderlabs-blog/citrix-netscaler-cve-2026-88771-observed-exploitation-artifacts-and-hunt-indicators" ,
"required_any_literal" : [
"receiver.min" ,
"logonuisimple"
]
},
{
"id" : "nsmon_cron" ,
"regex" : "^[ \\t]*\\*/5[ \\t]+\\*[ \\t]+\\*[ \\t]+\\*[ \\t]+\\*[^\\r\\n]{0,200}\\bperl\\b[^\\r\\n]{0,200}nsmon\\.pl" ,
"source" : "https://raw.githubusercontent.com/rtkwlf/wolf-tools/main/pack_alerts/202609-citrix-netscaler-active-exploitation-cve-2026-88771/README.md" ,
"required_any_literal" : [
"nsmon.pl"
]
},
{
"id" : "privileged_monitor_account" ,
"regex" : "\\b(?:add|set|bind)\\s+system\\s+user\\s+sec_monitor\\b[^\\r\\n]*" ,
"source" : "https://www.levelblue.com/blogs/spiderlabs-blog/citrix-netscaler-cve-2026-88771-observed-exploitation-artifacts-and-hunt-indicators" ,
"required_any_literal" : [
"sec_monitor"
]
},
{
"id" : "command_channel_header" ,
"regex" : "\\b(?:http[_-])?(?:nsc[_-](?:ldap|clienttype)|x[_-]ux(?:[_-][0-9]+)?)\\b" ,
"source" : "https://cloud.google.com/blog/topics/threat-intelligence/defending-against-active-exploitation-of-citrix-netscaler-adc-and-gateway-appliances" ,
"required_any_literal" : [
"ldap" ,
"clienttype" ,
"ux"
]
},
{
"id" : "cron_scrubbing_reference" ,
"regex" : "(?:preg_replace|sed)[^\\r\\n]{0,800}(?:crontab|/vpn/scripts/linux)" ,
"source" : "https://cloud.google.com/blog/topics/threat-intelligence/defending-against-active-exploitation-of-citrix-netscaler-adc-and-gateway-appliances" ,
"required_any_literal" : [
"preg_replace" ,
"sed"
]
},
{
"id" : "shell_privilege_change" ,
"regex" : "\\bchmod\\s+(?:u\\+s|[2467][0-7]{3})\\s+/bin/sh\\b" ,
"source" : "https://cloud.google.com/blog/topics/threat-intelligence/defending-against-active-exploitation-of-citrix-netscaler-adc-and-gateway-appliances" ,
"required_any_literal" : [
"chmod"
]
},
{
"id" : "reverse_shell_reference" ,
"regex" : "/dev/tcp/|\\b(?:nc|ncat)\\s+[^\\r\\n]{0,100}-e\\s+/bin/(?:ba)?sh|\\bdup2\\s*\\(" ,
"source" : "https://www.levelblue.com/blogs/spiderlabs-blog/citrix-netscaler-cve-2026-88771-observed-exploitation-artifacts-and-hunt-indicators" ,
"required_any_literal" : [
"/dev/tcp/" ,
"nc" ,
"dup2"
]
},
{
"id" : "configuration_staging_reference" ,
"regex" : "\\b(?:tar|cat)\\b[^\\r\\n]{0,500}/(?:flash/)?nsconfig[^\\r\\n]{0,500}(?:/var/netscaler|update_result)" ,
"source" : "https://www.levelblue.com/blogs/spiderlabs-blog/citrix-netscaler-cve-2026-88771-observed-exploitation-artifacts-and-hunt-indicators" ,
"required_any_literal" : [
"nsconfig"
]
2026-10-05 16:18:18 +02:00
},
{
"id" : "httpd_commented_security_directive" ,
"regex" : "^[ \\t]*#[ \\t]*(?:Require[ \\t]+all[ \\t]+denied|php_flag[ \\t]+engine[ \\t]+off)\\b" ,
"description" : "An Apache restriction is commented out. Compare with a trusted configuration of the same build; comments can be vendor defaults." ,
"source" : "" ,
"required_any_literal" : [
"#"
],
"path_regex" : "(?:^|/)(?:httpd|nshttpd)\\.conf$"
},
{
"id" : "httpd_php_handler_review" ,
"regex" : "^[ \\t]*AddHandler[ \\t]+application/x-httpd-php\\b" ,
"description" : "PHP handler declaration. Check the mapped extensions and vendor baseline; a handler alone is not malicious." ,
"source" : "" ,
"required_any_literal" : [
"addhandler"
],
"path_regex" : "(?:^|/)(?:httpd|nshttpd)\\.conf$"
},
{
"id" : "startup_python_reference" ,
"regex" : "(?:/flash)?/nsconfig/rc\\.netscaler[^\\r\\n]{0,300}\\bpython(?:[23](?:\\.\\d+)?)?\\b" ,
"description" : "Python is referenced alongside the startup configuration path. Verify actual file contents and administrative intent." ,
"source" : "" ,
"required_any_literal" : [
"rc.netscaler"
]
},
{
"id" : "core_file_removal" ,
"regex" : "\\brm[ \\t]+(?:-[a-z]+[ \\t]+){0,3}[\\x22\\x27]?/var/core/\\*" ,
"description" : "A command references removal of core files. This can be maintenance or evidence deletion; a logged command alone does not prove execution." ,
"source" : "" ,
"required_any_literal" : [
"/var/core/"
],
"path_regex" : "(?:^|/)(?:notice|sh|bash)\\.log(?:\\.|$)"
},
{
"id" : "wsfed_request_id_anomaly" ,
"regex" : "WSFed:[ \\t]*request_id[^\\r\\n]{0,2048}(?:[\\x80-\\xff\\xfe]|\\^[^\\r\\n]{0,256}\\^)" ,
"description" : "WS-Federation request ID contains unusual characters. Encoding, corruption and malformed input are alternatives; this does not prove memory disclosure." ,
"source" : "" ,
"required_any_literal" : [
"wsfed:"
],
"path_regex" : "(?:^|/)ns\\.log(?:\\.|$)"
},
{
"id" : "acs_control_marker" ,
"regex" : "acs=<[^\\r\\n]{0,2048}\\xf0\\^M[^\\r\\n]{0,2048}>,[ \\t]*for" ,
"description" : "ACS field contains an unusual byte/control representation. Inspect original bytes and authentication context; not proof of memory disclosure." ,
"source" : "" ,
"required_any_literal" : [
"acs=<"
],
"path_regex" : "(?:^|/)ns\\.log(?:\\.|$)"
},
{
"id" : "web_artifact_response_review" ,
"regex" : "(?:nsginstaller\\.deb|nsgclient[^\\s\\x22?]*|[0-9a-f]{6}\\.ico)[^\\r\\n\\x22]{0,512}HTTP/1\\.[01]\\x22[ \\t]+(?:404|202)[ \\t]+[0-9]{4}\\b" ,
"description" : "A candidate artifact returned 202 or 404 with a four-digit response size. Status and size do not establish a web shell; inspect response content and filesystem evidence." ,
"source" : "" ,
"required_any_literal" : [
"nsginstaller" ,
"nsgclient" ,
".ico"
],
"path_regex" : "(?:^|/)httpaccess[^/]*$"
},
{
"id" : "web_artifact_error_review" ,
"regex" : "(?:File does not exist|not found|\\[error\\])[^\\r\\n]{0,1024}(?:nsginstaller\\.deb|nsgclient|[0-9a-f]{6}/\\.sig)" ,
"description" : "Web server error mentions a candidate artifact. A missing-file error usually supports absence at that moment, not successful installation." ,
"source" : "" ,
"required_any_literal" : [
"nsginstaller" ,
"nsgclient" ,
"/.sig"
],
"path_regex" : "(?:^|/)httperror[^/]*$"
},
{
"id" : "packet_engine_open_file_review" ,
"regex" : "^NSPPE\\S*[ \\t]+\\d+[^\\r\\n]{0,1024}(?:/var/netscaler/|callhome)" ,
"description" : "A captured open-file listing associates NSPPE with a candidate path. Inspect file type and process context; legitimate open files can match." ,
"source" : "" ,
"required_any_literal" : [
"nsppe"
]
},
{
"id" : "web_user_process_review" ,
"regex" : "^(?:nobody|daemon)[ \\t]+\\d+[ \\t]+(?!(?:[^\\r\\n]*)(?:/bin/httpd|/usr/sbin/nshttpd)\\b)[^\\r\\n]{1,2048}$" ,
"description" : "A captured process listing contains a non-httpd process under a web-service account. Validate the executable and parent; legitimate helper processes can match." ,
"source" : "" ,
"required_any_literal" : [
"nobody" ,
"daemon"
]
},
{
"id" : "startup_python_content" ,
"regex" : "^[ \\t]*(?!#)[^\\r\\n]{0,512}\\bpython(?:[23](?:\\.\\d+)?)?\\b" ,
"path_regex" : "(?:^|/)(?:flash/)?nsconfig/rc\\.netscaler$" ,
"description" : "Python in startup configuration; compare with authorized configuration." ,
"source" : "" ,
"required_any_literal" : [
"python"
]
2026-10-05 14:13:39 +02:00
}
]
}