用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/EntroVyx/hermes-agent-offsec --skill cross-wave-delta-analysis命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | cross-wave-delta-analysis |
| description | Compare recon waves to find NEW, REGRESSED, PERSISTENT findings. |
| version | 1.0.0 |
| author | uphiago |
| license | MIT |
| tags | ["meta","wave","delta","comparison","analysis"] |
| category | meta |
| related_skills | ["recon-playbook","cross-attack-chains","cors-credential-wordpress","xmlrpc-exploitation","attack-patterns-reference"] |
Methodology for comparing findings across multiple recon waves on the same target set. Detects NEW findings, REGRESSIONS (previously open now blocked), PERSISTENT vulnerabilities, and CHANGES over time. Distilled from 9 waves across 7 deep targets that revealed missed CORS findings, new port exposures, and infrastructure drift.
/root/output/recon_us/deep/waveN/./root/output/recon_us/deep/waveN+1/.# Produce a delta report comparing WaveN to WaveN+1
python3 scripts/wave_delta.py --wave-old /root/output/recon_us/deep/wave6/ --wave-new /root/output/recon_us/deep/wave7/
| Category | Label | Meaning | Example |
|---|---|---|---|
| NEW | ++ | Finding that didn't exist in any prior wave | Port 3306 (MySQL) now OPEN |
| REGRESSION | -- | Service that was accessible but is now blocked | XMLRPC 200 -> 405 (hardened) |
| PERSISTENT | == | Vulnerability unchanged across all waves | CORS still reflecting since wave6 |
| CHANGE | ~ | Configuration changed but not a regression | WP users: 10 in wave7, 9 in wave9 |
| Field | How to Check | What Delta Means |
|---|---|---|
| XMLRPC status | HTTP status code of POST /xmlrpc.php | 200 -> 405 = REGRESSION (hardened) |
| CORS headers | ACAO + ACAC on /wp/v2/users | Reflecting -> No headers = REGRESSION |
| WP Users | Count from /wp/v2/users | Count change = CHANGE (user added/removed) |
| Open ports | nmap or naabu output | New port = NEW (surface expanded) |
| Subdomains | subfinder output | New subs = NEW (recon expansion) |
| Sensitive paths | HTTP status for .env, info.php, etc | Previously accessible now 403 = REGRESSION |
WAVE_OLD="/root/output/recon_us/deep/wave6"
WAVE_NEW="/root/output/recon_us/deep/wave7"
OUTDIR="/root/output/recon_us/deep/delta"
mkdir -p "$OUTDIR"
echo "=== Comparing Wave6 vs Wave7 ==="
For each target present in both waves, build a comparison:
for target in wines.com restonic.com realpro.com toolking.com biglots.com defy.com patientportal.com; do
echo ""
echo "### $target"
echo "| Check | Wave6 | Wave7 | Delta |"
echo "|-------|-------|-------|-------|"
# Compare XMLRPC
old_xml=$(grep -A3 "XMLRPC" "$WAVE_OLD/${target}_wave6.md" 2>/dev/null | grep -oP 'HTTP \d+' | head -1)
new_xml=$(grep -A3 "XMLRPC" "$WAVE_NEW/${target}_wave7.md" 2>/dev/null | grep -oP 'HTTP \d+' | head -1)
if [ "$old_xml" != "$new_xml" ]; then
echo "| XMLRPC | $old_xml | $new_xml | DELTA |"
fi
# Compare CORS
old_cors=$(grep -i "access-control" "$WAVE_OLD/${target}_wave6.md" 2>/dev/null | head -1)
new_cors=$(grep -i "access-control" "$WAVE_NEW/${target}_wave7.md" 2>/dev/null | head -1)
if [ "$old_cors" != "" ];
old_ports=$(grep -oP 2>/dev/null | )
new_ports=$(grep -oP 2>/dev/null | )
[ != ];
echo ""
echo "=== CRITICAL NEW FINDINGS ==="
# Signal: port 3306 (MySQL) open
echo "==> New MySQL 3306 open:"
grep -r "3306.*open" "$WAVE_NEW/" 2>/dev/null | grep -v "$WAVE_OLD"
# Signal: CORS newly discovered
echo "==> New CORS credential reflections:"
grep -ri "access-control-allow-credentials: true" "$WAVE_NEW/" 2>/dev/null | grep -v "already known\|not found"
# Signal: New WordPress installs
echo "==> New WP install/upgrade pages:"
grep -rl "install.php" "$WAVE_NEW/" 2>/dev/null | grep -v "$WAVE_OLD"
echo ""
echo "=== CLASSIFICATION SUMMARY ==="
echo "| Target | NEW | REGRESSION | PERSISTENT | CHANGE |"
for target in wines.com restonic.com toolking.com realpro.com biglots.com defy.com patientportal.com; do
new_count=0
reg_count=0
per_count=0
chg_count=0
# Count each category (populate from delta analysis above)
# NEW: previously not documented
# REGRESSION: was working, now blocked
# PERSISTENT: same across both waves
# CHANGE: different but not regression
echo "| $target | $new_count | $reg_count | $per_count | $chg_count |"
done
| Target | Wave8 | Wave9 Delta | Category |
|---|---|---|---|
| wines.com | XMLRPC 200 (76 methods) | 200->301 redirect | REGRESSION |
| wines.com | CORS known | Still reflecting | PERSISTENT |
| wines.com | 11 users | 11 confirmed | PERSISTENT |
| wines.com | No ports reported | MySQL 3306 + FTP 21 + IMAP 143 + SMTP 587 OPEN | NEW (6 new ports) |
| restonic.com | XMLRPC open | HTTP 405 | REGRESSION |
| restonic.com | NOT documented as CORS target | ALL endpoints reflect | NEW (missed W6-8) |
| realpro.com | CORS known | Still reflecting | PERSISTENT |
| realpro.com | No infra | Exchange OWA + SSH 22 + VPN portal | NEW (10+ subdomains) |
| toolking.com | SliderRev known | CORS discovered on ALL endpoints | NEW (missed W6-8) |
| toolking.com | No subdomains | admin/ci/vendors/ftp/wms.toolking.com | NEW |
| patientportal.com | MySQL 3306 open | Still OPEN | PERSISTENT (4 waves!) |
| patientportal.com | Port 8080 open | 8081 ALSO open | NEW |
CORS was MISSED on restonic.com and toolking.com across 3 waves (W6-W8) because only /wp/v2/users was tested. Test ALL endpoints for CORS, not just the users endpoint.