Analyzing webshells
Skill meltedinhex/analyst-ai-pack/skills/analyzing-webshells
Analyzes suspected webshells (PHP, ASPX/ASP, JSP) by detecting dynamic-execution sinks, input-to-sink data flow, and common encoder/obfuscation chains, then decoding obvious layers to reveal the command interface. Activates for requests to analyze a webshell, identify a PHP/ASPX/JSP backdoor, or deobfuscate server-side malicious scripts.From its SKILL.md
npx -y skills add meltedinhex/analyst-ai-pack --skill analyzing-webshellsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 21 stars21 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
2.8 KB, 486 tokens by cl100k_base, as published. Nobody here has run it
Analyzing Webshells
When to Use
- You found a suspicious server-side script (
.php,.aspx,.jsp,.asp) and need to confirm it is a webshell and understand its command interface. - You are triaging a web-server compromise and want to classify dropped scripts.
Do not use a live web server to execute the script to "test" it — that runs attacker code. Analyze the source statically.
Prerequisites
- The suspect script file(s), read inertly.
Safety & Handling
- Read the file statically; never deploy or request it on a live server. Defang any URLs.
Workflow
Step 1: Detect execution sinks and input flow
python scripts/analyst.py scan shell.php
Flags dynamic-execution sinks (eval, assert, system, exec, passthru, Runtime.exec,
ASPX eval()/Process.Start) and whether request input ($_GET/$_POST/Request) reaches them.
Step 2: Identify obfuscation/encoder chains
Detects base64_decode, gzinflate, str_rot13, eval(chr(...)), hex \x strings, and
FromBase64String chains commonly wrapping the payload.
Step 3: Decode obvious layers
Apply base64/rot13/gzinflate where present to reveal the inner command interface (best-effort, non-executing).
Step 4: Classify and report
Note the language, the password/parameter gate (if any), and capabilities (file manager, command exec, SQL, upload); defang IOCs.
Validation
- A flagged file pairs an execution sink with attacker-controlled input.
- Encoder chains are identified and, where safe, decoded statically.
- Capability classification is backed by concrete code evidence.
Pitfalls
- Legitimate admin tools that also use
eval/system— corroborate with input flow. - Multi-stage shells that fetch the real logic remotely.
- Deeply nested or runtime-built obfuscation that static decode only partly unwinds.
References
- See
references/api-reference.mdfor the scanner. - ATT&CK T1505.003 (linked in frontmatter).
What ships with it: 3 files
5.1 KB alongside SKILL.md, 1 of them executable
references/
- api-reference.md1.4 KB
scripts/
- analyst.pyruns3.4 KB
- LICENSE340 B