<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Detection rules on Shelltrap</title><link>https://shelltrap.com/rules/</link><description>Recent content in Detection rules on Shelltrap</description><generator>Hugo</generator><language>en-GB</language><lastBuildDate>Fri, 04 Sep 2026 12:00:00 +0200</lastBuildDate><atom:link href="https://shelltrap.com/rules/index.xml" rel="self" type="application/rss+xml"/><item><title>Hash sets</title><link>https://shelltrap.com/rules/hashes/</link><pubDate>Fri, 04 Sep 2026 12:00:00 +0200</pubDate><guid>https://shelltrap.com/rules/hashes/</guid><description>&lt;p>Shelltrap ships two kinds of hash data in every signed generation:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Known-bad hashes&lt;/strong> (&lt;code>hashes/*.hsb&lt;/code>): exact SHA-256 matches of confirmed malware. A match produces a malicious verdict with confidence 100.&lt;/li>
&lt;li>&lt;strong>Allow sets&lt;/strong> (&lt;code>allow/*.sha256&lt;/code>): SHA-256 hashes of verified files, currently the WordPress core files of supported releases downloaded from wordpress.org and hashed by Panomity. A match suppresses heuristic signals for that file; signature and ClamAV hits still take precedence.&lt;/li>
&lt;/ul>
&lt;p>Hashes are data, not works; the allow sets are published under the MIT license by Panomity GmbH. False positives or missing versions: &lt;a href="mailto:hallo@panomity.de">hallo@panomity.de&lt;/a>
.&lt;/p></description></item><item><title>Heuristics engine</title><link>https://shelltrap.com/rules/heuristics/</link><pubDate>Fri, 04 Sep 2026 12:00:00 +0200</pubDate><guid>https://shelltrap.com/rules/heuristics/</guid><description>&lt;p>The heuristics engine (&lt;code>shelltrap:heuristics-v1&lt;/code>, proprietary, Panomity GmbH) scores files by combining independent signals: request-driven command execution, dynamic eval/assert, encoded payload layers, escape density, entropy and long lines.&lt;/p>
&lt;ul>
&lt;li>Weak statistical signals (entropy, long lines) never produce a suspicious verdict on their own; minified bundles and caches stay clean.&lt;/li>
&lt;li>Documented library files (PHP tag first, a &lt;code>@package&lt;/code>/&lt;code>@license&lt;/code> docblock in the first 2 KiB, no eval/base64_decode/gzinflate) are held below suspicious even with escape-heavy code.&lt;/li>
&lt;li>Verified WordPress core files are cleared by the allow sets before heuristics run.&lt;/li>
&lt;li>Per domain, &lt;code>heuristics.action&lt;/code> can be set to report, quarantine or off, and &lt;code>heuristics.threshold&lt;/code> raises the bar for suspicious findings.&lt;/li>
&lt;/ul>
&lt;p>Report false positives with finding ID and file hash to &lt;a href="mailto:hallo@panomity.de">hallo@panomity.de&lt;/a>
.&lt;/p></description></item><item><title>Known webshell families</title><link>https://shelltrap.com/rules/known-shells/</link><pubDate>Fri, 04 Sep 2026 12:00:00 +0200</pubDate><guid>https://shelltrap.com/rules/known-shells/</guid><description>&lt;p>Signature strings of well-known PHP webshells (c99, r57, b374k, WSO, FilesMan, p0wny), spam mailers and back-connect helpers. Every rule requires PHP context and at least two independent indicators.&lt;/p>
&lt;p>Source file: &lt;code>panomity_known_shells.yar&lt;/code> (license MIT, author Panomity GmbH). Scores range from 0 to 100; 85 and above marks a finding as malicious on its own, 40 to 84 as suspicious.&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Rule&lt;/th>
 &lt;th>Score&lt;/th>
 &lt;th>What it detects&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>Panomity_Shell_C99&lt;/code>&lt;/td>
 &lt;td>92&lt;/td>
 &lt;td>c99 PHP webshell family markers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_Shell_R57&lt;/code>&lt;/td>
 &lt;td>92&lt;/td>
 &lt;td>r57 PHP webshell family markers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_Shell_B374k&lt;/code>&lt;/td>
 &lt;td>92&lt;/td>
 &lt;td>b374k PHP webshell family markers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_Shell_WSO&lt;/code>&lt;/td>
 &lt;td>90&lt;/td>
 &lt;td>WSO (Web Shell by oRb) family markers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_Shell_FilesMan&lt;/code>&lt;/td>
 &lt;td>88&lt;/td>
 &lt;td>FilesMan file-manager webshell module marker&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_Shell_P0wny&lt;/code>&lt;/td>
 &lt;td>92&lt;/td>
 &lt;td>p0wny-shell single-file PHP shell markers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_Shell_Generic_Mailer_Spam&lt;/code>&lt;/td>
 &lt;td>86&lt;/td>
 &lt;td>Bulk mailer spam kit markers (leaf/inbox mailer style), distinct from legitimate mail libraries&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_Shell_Generic_Uname_Backconnect&lt;/code>&lt;/td>
 &lt;td>87&lt;/td>
 &lt;td>Generic PHP shell exposing a back-connect helper driven by request input&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="reporting-a-false-positive">Reporting a false positive&lt;/h2>
&lt;p>Send the finding ID, the rule name and, if possible, the file (or its SHA-256) to &lt;a href="mailto:hallo@panomity.de">hallo@panomity.de&lt;/a>
 or open a ticket in the &lt;a href="https://shop.shelltrap.com/clientarea/" rel="noopener">client area&lt;/a>
. Confirmed false positives are fixed in the next signed generation; clients receive it automatically.&lt;/p></description></item><item><title>PHP obfuscation rules</title><link>https://shelltrap.com/rules/php-obfuscation/</link><pubDate>Fri, 04 Sep 2026 12:00:00 +0200</pubDate><guid>https://shelltrap.com/rules/php-obfuscation/</guid><description>&lt;p>Loader and obfuscation patterns: eval/base64 chains, assert and create_function loaders, preg_replace /e, str_rot13/gzinflate layers, hex and chr escape chains, goto obfuscation.&lt;/p>
&lt;p>Source file: &lt;code>panomity_php_obfuscation.yar&lt;/code> (license MIT, author Panomity GmbH). Scores range from 0 to 100; 85 and above marks a finding as malicious on its own, 40 to 84 as suspicious.&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Rule&lt;/th>
 &lt;th>Score&lt;/th>
 &lt;th>What it detects&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Eval_Base64_Chain&lt;/code>&lt;/td>
 &lt;td>90&lt;/td>
 &lt;td>eval() applied directly to a decode/inflate call, the classic packed PHP shell loader&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Assert_Superglobal_Loader&lt;/code>&lt;/td>
 &lt;td>90&lt;/td>
 &lt;td>assert() used as a code-execution sink over request input&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Assert_Decode_Loader&lt;/code>&lt;/td>
 &lt;td>88&lt;/td>
 &lt;td>assert() applied to a decode/inflate call used as an eval substitute&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_CreateFunction_Loader&lt;/code>&lt;/td>
 &lt;td>87&lt;/td>
 &lt;td>create_function() lambda body built from request input or a decode call&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_PregReplace_E_Modifier&lt;/code>&lt;/td>
 &lt;td>88&lt;/td>
 &lt;td>preg_replace() with the deprecated /e modifier, a code-execution primitive in old PHP shells&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_StrRot13_GzInflate&lt;/code>&lt;/td>
 &lt;td>90&lt;/td>
 &lt;td>Stacked str_rot13/gzinflate/base64 decode layers wrapping an executable payload&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Hex_Escape_Chain&lt;/code>&lt;/td>
 &lt;td>85&lt;/td>
 &lt;td>PHP file whose executable identifiers are hidden as long \x hex escape runs&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Chr_Concat_Chain&lt;/code>&lt;/td>
 &lt;td>85&lt;/td>
 &lt;td>PHP identifier assembled from a long chr() concatenation chain&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Goto_Obfuscation&lt;/code>&lt;/td>
 &lt;td>85&lt;/td>
 &lt;td>PHP file flattened with many goto jumps to random labels, typical of automated shell packers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Concat_Eval_Obfuscation&lt;/code>&lt;/td>
 &lt;td>86&lt;/td>
 &lt;td>eval/assert identifier split across string concatenation to evade naive scanners&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Variable_Function_Superglobal&lt;/code>&lt;/td>
 &lt;td>89&lt;/td>
 &lt;td>Variable-function dispatch where both callable and argument come from request input&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="reporting-a-false-positive">Reporting a false positive&lt;/h2>
&lt;p>Send the finding ID, the rule name and, if possible, the file (or its SHA-256) to &lt;a href="mailto:hallo@panomity.de">hallo@panomity.de&lt;/a>
 or open a ticket in the &lt;a href="https://shop.shelltrap.com/clientarea/" rel="noopener">client area&lt;/a>
. Confirmed false positives are fixed in the next signed generation; clients receive it automatically.&lt;/p></description></item><item><title>PHP remote code execution patterns</title><link>https://shelltrap.com/rules/php-rce/</link><pubDate>Fri, 04 Sep 2026 12:00:00 +0200</pubDate><guid>https://shelltrap.com/rules/php-rce/</guid><description>&lt;p>Direct command execution driven by request data: system/exec/passthru/shell_exec with superglobals, backtick execution, proc_open pipes and similar.&lt;/p>
&lt;p>Source file: &lt;code>panomity_php_rce.yar&lt;/code> (license MIT, author Panomity GmbH). Scores range from 0 to 100; 85 and above marks a finding as malicious on its own, 40 to 84 as suspicious.&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Rule&lt;/th>
 &lt;th>Score&lt;/th>
 &lt;th>What it detects&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Superglobal_Command_Exec&lt;/code>&lt;/td>
 &lt;td>90&lt;/td>
 &lt;td>OS command function fed directly from request input, including whitespace-padded variants&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Superglobal_Eval&lt;/code>&lt;/td>
 &lt;td>90&lt;/td>
 &lt;td>eval() executed directly on request input&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Backticks_Superglobal&lt;/code>&lt;/td>
 &lt;td>88&lt;/td>
 &lt;td>Shell backtick execution of request input inside a PHP file&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Base64_Superglobal_Exec&lt;/code>&lt;/td>
 &lt;td>87&lt;/td>
 &lt;td>Command/eval sink taking base64_decode() of request input&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Image_Polyglot_PHP_Payload&lt;/code>&lt;/td>
 &lt;td>90&lt;/td>
 &lt;td>Image file (JPEG/PNG/GIF/ICO magic) carrying an executable PHP payload appended to the pixels&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_PHP_Preg_Replace_Superglobal&lt;/code>&lt;/td>
 &lt;td>86&lt;/td>
 &lt;td>preg_replace() whose subject or replacement is request input combined with the /e modifier&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="reporting-a-false-positive">Reporting a false positive&lt;/h2>
&lt;p>Send the finding ID, the rule name and, if possible, the file (or its SHA-256) to &lt;a href="mailto:hallo@panomity.de">hallo@panomity.de&lt;/a>
 or open a ticket in the &lt;a href="https://shop.shelltrap.com/clientarea/" rel="noopener">client area&lt;/a>
. Confirmed false positives are fixed in the next signed generation; clients receive it automatically.&lt;/p></description></item><item><title>WordPress-specific droppers</title><link>https://shelltrap.com/rules/wordpress/</link><pubDate>Fri, 04 Sep 2026 12:00:00 +0200</pubDate><guid>https://shelltrap.com/rules/wordpress/</guid><description>&lt;p>Backdoors that hide inside WordPress structures: PHP in uploads, fake wp-config includes, mu-plugins backdoors, fake plugin headers with curl/eval, appended eval in index.php.&lt;/p>
&lt;p>Source file: &lt;code>panomity_wordpress_droppers.yar&lt;/code> (license MIT, author Panomity GmbH). Scores range from 0 to 100; 85 and above marks a finding as malicious on its own, 40 to 84 as suspicious.&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Rule&lt;/th>
 &lt;th>Score&lt;/th>
 &lt;th>What it detects&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>Panomity_WP_Uploads_PHP_Dropper&lt;/code>&lt;/td>
 &lt;td>88&lt;/td>
 &lt;td>PHP file dropped into wp-content/uploads that writes another PHP payload&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_WP_Config_Fake_Include&lt;/code>&lt;/td>
 &lt;td>87&lt;/td>
 &lt;td>Fake wp-config style loader that includes and evaluates a hidden payload file&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_WP_MuPlugins_Backdoor&lt;/code>&lt;/td>
 &lt;td>90&lt;/td>
 &lt;td>mu-plugins auto-loaded backdoor combining add_action with dynamic code execution on request input&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_WP_Fake_Plugin_Header_Backdoor&lt;/code>&lt;/td>
 &lt;td>89&lt;/td>
 &lt;td>File carrying a WordPress plugin header while fetching and evaluating remote code&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>Panomity_WP_Index_Appended_Eval&lt;/code>&lt;/td>
 &lt;td>86&lt;/td>
 &lt;td>WordPress bootstrap file with an appended eval loader over request input&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="reporting-a-false-positive">Reporting a false positive&lt;/h2>
&lt;p>Send the finding ID, the rule name and, if possible, the file (or its SHA-256) to &lt;a href="mailto:hallo@panomity.de">hallo@panomity.de&lt;/a>
 or open a ticket in the &lt;a href="https://shop.shelltrap.com/clientarea/" rel="noopener">client area&lt;/a>
. Confirmed false positives are fixed in the next signed generation; clients receive it automatically.&lt;/p></description></item></channel></rss>