DC offensive-osint
Operational arsenal for authorized external red-team and bug-bounty recon. Concrete probes, wordlists, regexes, dorks, curl one-liners for: subdomain enum, GraphQL/Swagger/REST discovery, identity fabric (Entra/Okta/ADFS/Google/SAML/M365 deep — Teams/SharePoint/OneDrive), cloud bucket enum (S3/GCS/Azure), CDN/WAF bypass, origin discovery, vendor fingerprinting (Citrix/F5/Pulse/Fortinet/PaloAlto/Cisco/VMware), CI/CD exposure, 48-pattern secret-scan catalog (AWS/GCP/GitHub/Stripe/Slack/Anthropic/OpenAI/Atlassian/DataDog/npm/PyPI), Postman workspaces, breach correlation (HudsonRock/HIBP/DeHashed/IntelX), TLS/JA3 audit, certificate transparency, JS endpoint extraction, package registry leaks, mobile/APK recon, sat imagery, sector-specific recon (healthcare DICOM, finance SWIFT, ICS/SCADA Modbus/BACnet). Detail content in 15 modular reference files, loaded on demand. Use for any authorized recon: scoping, asset discovery, attack-path mapping, secret triage, severity scoring.
Operational arsenal for authorized external red-team and bug-bounty recon.
As a process C 55/100 · Has gaps — weak spots: inputs and preconditions, progress reporting
What is at stake
Medium-severity findings: the skill is probably honest, but read what alarmed the scanner.
Below is the worst case for this category. The finding here is medium: the guard saw a sign, not a proof.
The files contain someone else's key or token. If it is live, your agent will call third-party services under a stranger's identity; if it was revoked, the skill's scripts simply fail. Such a key often arrives with the author's whole workspace, personal data included.
The key is visible to everyone who downloaded the skill and has likely been copied by catalog-scanning bots already. Revoke it now, check bills and access logs, then reissue.
How to improve
- The SKILL.md body is over 5,000 tokens: move reference detail into references/ and load it when needed.
- Your own cases (evals/evals.json, 4–6 real requests with expected answers): the full check would then run those instead of a model-drafted suite.
- A spec.yaml with trigger phrases and assertions — a behaviour contract for CI; `skilltest init` writes a template.
Guard findings · 21
✓ No critical or high findings
Medium and low: 21
-
medium Secrets in code
secret-private-keyreferences/helpers-and-automation.md:132Private key material (detector / deny-list definition; key header without key body)("RSA_PRIVKEY", SEV_CRITICAL, "private_key", r"-----BEGIN PRIVATE KEY----- …detectorheader only -
medium Secrets in code
secret-private-keyreferences/helpers-and-automation.md:133Private key material (detector / deny-list definition; key header without key body)("EC_PRIVKEY", SEV_CRITICAL, "private_key", r"-----BEGIN PRIVATE KEY----- …detectorheader only -
medium Secrets in code
secret-private-keyreferences/helpers-and-automation.md:134Private key material (detector / deny-list definition; key header without key body)("OPENSSH_PRIVKEY", SEV_CRITICAL, "private_key", r"-----BEGIN PRIVATE KEY----- …detectorheader only -
medium Secrets in code
secret-private-keyreferences/secret-patterns.md:35Private key material (key header without key body; documentation table row)| 25 | RSA Private Key | `-----BEGIN PRIVATE KEY----- …
header onlytable -
medium Secrets in code
secret-private-keyreferences/secret-patterns.md:36Private key material (key header without key body; documentation table row)| 26 | EC Private Key | `-----BEGIN PRIVATE KEY----- …
header onlytable -
medium Secrets in code
secret-private-keyreferences/secret-patterns.md:37Private key material (key header without key body; documentation table row)| 27 | OpenSSH Private Key | `-----BEGIN PRIVATE KEY----- …
header onlytable -
medium Secrets in code
secret-private-keyscripts/secret_scan.py:74Private key material (detector / deny-list definition; key header without key body)("RSA_PRIVKEY", SEV_CRITICAL, "private_key", r"-----BEGIN PRIVATE KEY----- …detectorheader only -
medium Secrets in code
secret-private-keyscripts/secret_scan.py:75Private key material (detector / deny-list definition; key header without key body)("EC_PRIVKEY", SEV_CRITICAL, "private_key", r"-----BEGIN PRIVATE KEY----- …detectorheader only -
medium Secrets in code
secret-private-keyscripts/secret_scan.py:76Private key material (detector / deny-list definition; key header without key body)("OPENSSH_PRIVKEY", SEV_CRITICAL, "private_key", r"-----BEGIN PRIVATE KEY----- …detectorheader only -
low Secrets in code
secret-aws-keyreferences/helpers-and-automation.md:92AWS access key ID (placeholder value)echo "AKIA…PLE" | python3 secret_scan.py
placeholder -
low Exfiltration
net-credential-usereferences/identity-fabric.md:210Credential used in a network call (verify the destination is the intended service) (destination host is a configured variable; documentation of a security skill)curl -sk -m 10 -I "https://${STEM}-my.sharepoint.com/personal/${USER_TOKEN}/Documents/" -w '%{http_code}\n'variable hostsecurity skill -
low Risky intent
intent-offensive-securityreferences/probes-and-wordlists.md:808Offensive-security / dual-use content (legitimate for authorised testing; review intended use) (detector / deny-list definition)| **VMware ESXi** | `/sdk`, `/ui/`, `/folder` | CVE-…974 (heap overflow → ESXiArgs ransomware, KEV). |
detector -
low Secrets in code
secret-password-literalreferences/secret-validators.md:66Hard-coded password / key literal (may be an example) (placeholder value)x-api-key: sk-a…...
placeholder -
low Risky intent
intent-offensive-securityreferences/severity-matrix.md:69Offensive-security / dual-use content (legitimate for authorised testing; review intended use) (detector / deny-list definition)| VMware ESXi exposed without VPN | HIGH | Multiple CVEs (ESXiArgs ransomware vector). |
detector -
low Risky intent
intent-offensive-securityreferences/specialized-osint.md:15Offensive-security / dual-use content (legitimate for authorised testing; review intended use) (test fixture / example file)### 29.1 Malware Analysis & Sandboxes
fixture -
low Secrets in code
secret-aws-keyscripts/secret_scan.py:6AWS access key ID (placeholder value)echo "AKIA…PLE" | python3 secret_scan.py
placeholder -
low Risky intent
intent-offensive-securitySKILL.md:8Offensive-security / dual-use content (legitimate for authorised testing; review intended use)- external red team
-
low Risky intent
intent-offensive-securitySKILL.md:9Offensive-security / dual-use content (legitimate for authorised testing; review intended use)- red team external
-
low Risky intent
intent-offensive-securitySKILL.md:12Offensive-security / dual-use content (legitimate for authorised testing; review intended use)- bug bounty recon
-
low Risky intent
intent-offensive-securitySKILL.md:13Offensive-security / dual-use content (legitimate for authorised testing; review intended use)- bug bounty
-
low Risky intent
intent-offensive-securitySKILL.md:133Offensive-security / dual-use content (legitimate for authorised testing; review intended use)- bug bounty reference
Files scanned: 21. Evidence is masked. Grey chips explain why severity was lowered.
Against the Agent Skills spec
- warning
body-longSKILL.md body ≈ 7496 tokens (recommended < 5000); move details to references/ - note
frontmatter-keyunknown frontmatter key "sources" - note
frontmatter-keyunknown frontmatter key "triggers" - note
edit-residuethe text marks something as outdated (lines 243, 247, 253, 254): check that old rules are not kept next to new ones — the full check reads the text for contradictions
Process rating: all ten parameters 55/100
- 0Inputs and preconditions. Does not say what the process needs to start
- 0Progress reporting. Says nothing while it works
- 50When it triggers. No condition that starts the skill
- 50Failures and branches. 0 branches, has a failure section
- 60Tools and files. Uses tools (bash, web) that frontmatter does not declare
- 60Steps. 76 steps, 5 vague phrases
- 60Result and completion. Output format stated, no completion criterion
- 70Execution cost. Instruction body is 7496 tokens
- 100Consistency. Name and required fields are in place
- 100Running it twice. Mutating operations check current state
- low 15 top-level sections: this looks like several domains in one skill
- low The response is described with custom markup (6 tags): a typed call is more reliable
Everything here is measured from the skill text rather than judged by a model, so the numbers are checkable. A parameter weighs more when it is a more common reason for the process to stall.
Quality signals
- +5Description has no quoted example phrases that should trigger the skill
- +4Description does not say when NOT to use the skill (false activations)
- +3Description length 984: 120–800 characters recommended
- +4No input/output examples
- +1No license
- +2Single-language instructions
- +4Structure: 16 headings
- +3Step-by-step instructions: 76 items
- +3Output format is stated explicitly
- +4Reference files are cited in the instructions (15 of 15)
- +3All 3 scripts are documented
Quality base 70; lint remarks subtract, signals add up to 100. Result: 75.