mid-engagement-ir-detection
Teaches your AI agent to protect apps against attacks.
What it does
This tool helps understand if a website's security is changing while you're testing it. It detects if the site is actively defending against your actions or if someone else is trying to hack it at the same time.
When to use it
- ✓When you are testing the security of a website that is being monitored.
- ✓If a security flaw you found suddenly stops working.
- ✓If the website's response time changes a lot or unexpected errors appear.
Example of what to ask your AI
“Detect if the website is defending itself while I test it.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The tool compares how the website behaves before and after you perform tests. It looks for changes like slower responses, new security warnings, or unexpected blocks.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add sickn33/agentic-awesome-skills --skill mid-engagement-ir-detectionOr download just the file:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/mid-engagement-ir-detection/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
When to use this skill
Trigger when:
- Running active testing against a target with active SOC monitoring
- A confirmed-vulnerable finding stops reproducing on recheck
- Baseline timing shifts unexpectedly (3× slower, sudden errors, new headers)
- Response sizes change between test windows
- New WAF cookies or headers appear that weren't there at session start
- Lockout / error rates change between test windows (especially LOCKED count for credential attacks)
- Engagement is "assume breach" or "white box" — client knows you're testing
DO NOT use for:
- Bug bounty (client doesn't know you're there; no real-time IR)
- Pure recon (no state-change happening)
- One-off vulnerability scanning (no temporal dimension)
The core insight
In a real red-team engagement against a competent SOC, the security state of the target is not static. It changes during your test in response to your traffic. These state changes are:
- Themselves valuable findings (positive operational observations about IR responsiveness)
- Confirmation evidence (mid-engagement patch = the original vulnerability was real)
- Classification signals (WAF rule deployment vs code fix — different remediation depth)
Anti-pattern: treating reproduction failure as evidence the original signal was a false positive. Original PoC artifacts captured before the change are still the vulnerability finding.
The discipline — capture before, diff after
Before any active test:
# Capture pre-test fingerprint of the target
fingerprint = {
"ts_pre": time.time(),
"ip_seen": "<operator-src-ip>",
"baseline_response_time_ms": <measure>,
"baseline_response_size_bytes": <measure>,
"response_headers": <capture set>,
"waf_cookies": <list>,
"lockout_count_in_state": <count from o365_attempts.json>,
}
Persist to engagement_log/fingerprint_pre.json.
During the test:
Log every test result with full context (timestamp, IP, payload, response code, response size, response time, headers if relevant) to JSONL append-only.
After the test session OR on first failed-recheck:
fingerprint_post = same structure
delta = {
"baseline_time_change_ms": post.time - pre.time,
"baseline_size_change_bytes": post.size - pre.size,
"new_headers_appeared": post.headers - pre.headers,
"new_waf_cookies": post.cookies - pre.cookies,
"new_lockouts": post.locked_count - pre.locked_count,
}
If any delta is significant — investigate, don't retract.
The three primary IR observations
Observation 1 — Mid-engagement WAF rule deployment
Symptoms:
- Original payloads return identical response → no signal at all on recheck
- Body size identical to baseline (login page reflection)
- Timing reverts to baseline regardless of payload
- New cookie or header in responses (e.g.,
cf-bm,__cf_bm,awselb) - Specific keyword in URL/body now triggers different response code (403, 406, 429)
Confirmation: retry with WAF-evasion variants:
- URL-encode the payload differently (
%27vs%5cu0027) - Change request method (POST → PUT, GET → POST)
- Different content-type (form-urlencoded → multipart)
- Slower pace (5s → 60s between requests)
- Mixed-case keywords (
SLEEP→SlEeP)
If WAF-evasion variants restore the signal, the mitigation is at the WAF layer (bypassable).
If even WAF-evasion variants stay blocked, the mitigation is likely in code.
Finding template:
Subject: Mid-engagement mitigation deployed for <vulnerability X>
Observation: At engagement timestamp T0, vulnerability <X> on <endpoint> was
confirmed via <PoC>. At T0+<minutes>, recheck via the original payload no longer
reproduces the timing/error/size differential. <WAF-evasion variant> [does/does
not] restore the signal.
Description: This pattern is consistent with the client SOC observing engagement
traffic and deploying a mitigation in real time. Mitigation depth assessment:
[at-WAF, bypassable] vs [in-code, durable].
Impact (positive): Client SOC has both detection-grade visibility into application
traffic AND the authority to deploy mitigations within ~<minutes> of detection.
Impact (caveat): The original vulnerability did exist and was exploitable for at
least the engagement window before mitigation. If the mitigation is at the WAF
layer only, the underlying code-level flaw remains exploitable via alternative
payloads.
Recommendation:
…
FAQ
Why is it important to know if security is changing?
It shows that the website's security system is working and reacting to your actions. It can also indicate that someone else is trying to attack the site simultaneously.
What should I do if I find a flaw that stops working?
Don't dismiss the flaw. The tool helps record that the flaw existed before the change, even if it no longer works. This is important evidence.
When should I NOT use this tool?
Do not use it for bug bounty hunting, where the website owner doesn't know you're testing, or for quick scans without analyzing changes over time.
Details
Original description by the author
Methodology for detecting client SOC patches, attacker activity, and security-state changes that occur DURING a red-team engagement
Popularity
- GitHub stars
- 48k
- Ranking position
- #3594
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
00-andruia-consultant
Helps your agent start or improve AI projects. It analyzes code, suggests tools, and creates action plans in Spanish.
sickn33/agentic-awesome-skills
007
Lets your agent perform security audits and threat modeling. It's useful for protecting projects against attacks and vulnerabilities.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Helps your agent create or improve AI tools. It defines how tools work, writes documentation, and validates the structure.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Lets your agent create a summary about a specific industry. It's useful for understanding the context, rules, usage patterns, and risks of a project, using reliable sources.
sickn33/agentic-awesome-skills
Similar skills
django-security
Helps your agent implement security practices in Django applications. It focuses on authentication, authorization, and prevention against common attacks, ensuring more secure code.
affaan-m/ECC
laravel-security
Helps your agent secure Laravel applications against threats. Implements security practices for authentication, authorization, and common attack prevention.
affaan-m/ECC
module-regression
Helps your agent manage changes in large projects. Ensures code changes in one part don't break other parts.
affaan-m/ECC