Passive and active reconnaissance, subdomain enumeration, DNS analysis, technology fingerprinting, and OSINT data correlation for authorized security assessments
npx skills add https://github.com/Masriyan/Claude-Code-CyberSecurity-Skill --skill Reconnaissance & OSINT Automation
Enable Claude to conduct comprehensive reconnaissance and open-source intelligence gathering during authorized security assessments. Claude performs passive and active recon using its native analysis capabilities and orchestrates the included scripts for automation at scale.
> Authorization Required: Always confirm written authorization for the target scope before proceeding. Unauthorized reconnaissance is illegal in most jurisdictions.
This skill activates when the user asks about:
pip install requests dnspython python-whois beautifulsoup4 shodan
Optional enhanced capabilities:
nmap — Active port scanningamass — Advanced subdomain enumerationtheHarvester — Email and domain harvestingWhen the user asks for passive recon or OSINT:
site:target.com filetype:pdf — Exposed documentssite:target.com inurl:admin — Admin panelssite:target.com ext:env OR ext:config — Config files"@target.com" site:linkedin.com — Employee enumeration"target.com" site:pastebin.com — Credential leaksorg:targetorg api_keyfilename:.env target.com"target.com" passwordWhen the user asks to enumerate subdomains:
resources/Output format for subdomain findings:
Target: example.com
Discovery Method: CT Logs + DNS Brute-Force
Discovered: 47 subdomains
LIVE SUBDOMAINS:
admin.example.com → 203.0.113.10 [HTTP 200] [nginx/1.18]
dev.example.com → 203.0.113.11 [HTTP 302 → /login]
api.example.com → 203.0.113.12 [HTTP 200] [cloudflare]
internal.example.com → 10.0.0.5 [No public response — internal?]
INFRASTRUCTURE CLUSTERS:
203.0.113.10-15 → AS12345 (Company Hosting)
Cloudflare CDN → 7 subdomains proxied
When the user asks to scan ports or detect services:
-sV) on all open ports-O) if authorizedProvide Nmap commands ready to run:
# Quick discovery
nmap -sn 203.0.113.0/24
# Top 1000 TCP ports with service detection
nmap -sV -sC --top-ports 1000 -oA scan_results 203.0.113.10
# Full port scan with script engine
nmap -sV -sC -p- -T4 -oA full_scan 203.0.113.10
When the user asks for DNS analysis:
dig AXFR @ns1.example.com example.com
~all (softfail) or ?all (neutral) — both are weakp=none = monitoring onlyFlag these misconfigurations:
+all → Any server can send as this domainWhen the user asks to fingerprint technology:
Server: → Web server and versionX-Powered-By: → Application frameworkSet-Cookie: names → Session framework (PHPSESSID=PHP, JSESSIONID=Java)X-Generator: / X-WordPress-Cache: → CMS/robots.txt, /sitemap.xml, /.well-known/ for framework leaks/wp-admin/, /administrator/, /wp-json/)Technology stack report format:
URL: https://example.com
WEB SERVER: nginx/1.18.0 (Ubuntu)
APPLICATION: WordPress 6.4.2
LANGUAGE: PHP 8.1
DATABASE: MySQL (inferred from wp-config patterns)
CDN/WAF: Cloudflare
JS LIBRARIES: jQuery 3.6.0, Bootstrap 5.3
TLS: TLS 1.3, ECDHE-RSA-AES256-GCM-SHA384
NOTABLE HEADERS:
✗ Missing: X-Content-Type-Options
✗ Missing: X-Frame-Options
✗ Missing: Content-Security-Policy
✓ Present: Strict-Transport-Security
When the user asks to correlate OSINT findings:
Every recon engagement should produce a structured report:
# Reconnaissance Report — [Target]
Date: [Date] | Scope: [Authorized Scope] | Analyst: [Name]
## Executive Summary
[2-3 sentence overview of key findings]
## Discovered Assets
- Subdomains: N found, N live
- IP Ranges: [CIDRs]
- Open Services: [Top findings]
- Technologies: [Stack summary]
## Key Findings
1. [High-impact finding with evidence]
2. [Medium-impact finding]
...
## Attack Surface Summary
[Map of entry points for follow-on testing]
## Recommended Next Steps
- Feed live web apps → Skill 09 (Web Security)
- Feed discovered services → Skill 02 (Vulnerability Scanner)
- Feed cloud assets → Skill 10 (Cloud Security)
subdomain_enum.py# Passive CT log enumeration
python scripts/subdomain_enum.py --domain target.com --passive-only --output results.json
# Active brute-force with custom wordlist
python scripts/subdomain_enum.py --domain target.com --wordlist resources/common_subdomains.txt --threads 20 --output results.json
dns_recon.py# Full DNS reconnaissance
python scripts/dns_recon.py --domain target.com --output dns_report.json
# Check zone transfer vulnerability
python scripts/dns_recon.py --domain target.com --check-zone-transfer
tech_fingerprint.py# Single URL analysis
python scripts/tech_fingerprint.py --url https://target.com --output tech_report.json
# Batch URL fingerprinting
python scripts/tech_fingerprint.py --urls urls.txt --output tech_report.json
| Next Step | Condition | Target Skill |
|-----------|-----------|--------------|
| Vulnerability assessment | Live services discovered | → Skill 02 |
| Web application testing | Web apps found | → Skill 09 |
| Cloud asset auditing | Cloud-hosted assets found | → Skill 10 |
| Network traffic analysis | PCAP capture available | → Skill 08 |
| IOC correlation | Suspicious infrastructure found | → Skill 06 |
Sharper, more current recon tradecraft:
CNAME (pointing to an unclaimed S3/Azure/GitHub Pages/Heroku/Fastly target), flag it as a takeover candidate and identify the fingerprint of the orphaned service.cloud_enum-style logic). Map ASN → CIDR → cloud-provider attribution.mmh3 hashes and JARM/JA4S server fingerprints in Shodan/Censys to find sibling infrastructure behind CDNs./graphql for introspection; harvest schema, types, and mutations to feed Skill 09.*.map source maps that leak internal paths.Precision rule: always separate *confirmed* assets (resolved + responding) from *candidate* assets (CT-log only) in output, and tag the discovery source per asset so findings are reproducible.
Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take masriyan/reconnaissance & osint automation from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.