apk-redteam-pipeline
End-to-end Android APK red-team pipeline — automated APK acquisition (Play Store + apkpure + apkmirror fallback), jadx…
External recon for software supply-chain attack surface — package-namespace squatting candidates, dependency-confusion vulnerabilities, GitHub Actions injection openings, container image registry exposure, SBOM mining, internal-package-name leakage, and CI/CD configuration
Claude Code
$ npx -y skills add elementalsouls/Claude-BugHunter --skill supply-chain-attack-recon --agent claude-code
Codex
$ npx skills add elementalsouls/Claude-BugHunter --skill supply-chain-attack-recon -a codex -y
Cursor
$ npx skills add elementalsouls/Claude-BugHunter --skill supply-chain-attack-recon -a cursor -y
Gemini CLI
$ npx skills add elementalsouls/Claude-BugHunter --skill supply-chain-attack-recon -a gemini-cli -y
GitHub Copilot
$ npx skills add elementalsouls/Claude-BugHunter --skill supply-chain-attack-recon -a github-copilot -y
OpenCode
$ npx skills add elementalsouls/Claude-BugHunter --skill supply-chain-attack-recon -a opencode -y
Windsurf
$ npx skills add elementalsouls/Claude-BugHunter --skill supply-chain-attack-recon -a windsurf -y
name: supply-chain-attack-recon description: External recon for software supply-chain attack surface — package-namespace squatting candidates, dependency-confusion vulnerabilities, GitHub Actions injection openings, container image registry exposure, SBOM mining, internal-package-name leakage, and CI/CD configuration exposure. Reconnaissance and identification ONLY — actual package publishing / typosquat attacks are EXTERNAL-OFFENSIVE and require explicit written sign-off because they can affect the entire npm/PyPI ecosystem. Use when the target has a public GitHub org, when their build artifacts/SBOMs are reachable, when their docker images are on Docker Hub/GHCR, or when you find internal package names in their JS bundles. sources: alex-birsan-dependency-confusion, supply-chain-research, github-actions-security, cisa-advisories, mandiant-tag, github-security-blog, snyk-research report_count: 12
Trigger when:
Do NOT use for:
---
Target Org ├── Public GitHub Org → workflow files → secrets exfil opportunities ├── Internal package names in JS/Android bundles → dependency confusion ├── Docker images on public registries → secrets in layers, RCE on pull ├── SBOM / artifact metadata → exact dep versions for known-vuln chaining ├── npmrc / pip.conf in repos → internal registry URL disclosure ├── External package dependencies → typosquat name candidates └── Build/release pipelines → injection if pull_request_target etc.
---
TARGET="<brand>" # set to target brand name
# Direct guesses
for guess in $TARGET "${TARGET}-tech" "${TARGET}corp" "${TARGET}-io" "${TARGET}-eng"; do
curl -sI "https://github.com/$guess" | grep -E "HTTP|status" | head -1
done
# Via WHOIS / email-domain → GitHub search
gh search users --owner-affiliations=organization --query "$TARGET" --limit 10
# Via employees → reverse from social media + GitHub profile
# Many employees list their employer org on their GitHub profile---
ORG="targetorg" # List public repos gh repo list "$ORG" --limit 100 --json name,description,visibility,defaultBranchRef # Look for high-signal repo names gh repo list "$ORG" --limit 100 --json name | jq -r '.[].name' | grep -iE "internal|infra|deploy|config|secret|setup|sdk|api" # Clone all (small org) or selectively gh repo clone "$ORG/$repo_name"
---
# JS bundles are the easiest source of internal npm names
curl -sk https://target.com/main.js | grep -oE '@[a-z-]+/[a-z-]+' | sort -u
curl -sk https://target.com/main.js | grep -oE 'require\("[^"]+"\)' | sort -u
# Look for scoped names that are NOT public on npm
for pkg in @target/utils @target-internal/api @companybrand/sdk; do
status=$(curl -sI "https://registry.npmjs.org/$pkg" | head -1 | awk '{print $2}')
echo " $pkg → $status"
# 404 → name unclaimed on public npm → DEPENDENCY-CONFUSION CANDIDATE
done# Public repos with package.json that reference internal scopes
for repo in $(gh repo list "$ORG" --limit 50 --json name --jq '.[].name'); do
pkg=$(gh api "repos/$ORG/$repo/contents/package.json" --jq '.content' 2>/dev/null | base64 -d 2>/dev/null)
echo "$pkg" | jq -r '.dependencies // {} | keys[]' 2>/dev/null | grep -E '^@[a-z-]+/'
done | sort -u# Internal pip package names for repo in $(gh repo list "$ORG" --limit 50 --json name --jq '.[].name'); do gh api "repos/$ORG/$repo/contents/requirements.txt" --jq '.content' 2>/dev/null | base64 -d 2>/dev/null done | sort -u | grep -vE '^(requests|django|flask|numpy|pandas|...common)'
---
For each internal-looking package name discovered:
NAME="@target-internal/utils" # example # npm check curl -sI "https://registry.npmjs.org/$NAME" | head -1 # 404 → name is registerable → DEPENDENCY-CONFUSION POSSIBLE # pypi check (no scopes, just name) NAME="target_utils" curl -sI "https://pypi.org/project/$NAME/" | head -1 # 404 → name is registerable # rubygems curl -sI "https://rubygems.org/api/v1/gems/$NAME.json" | head -1 # Go modules — slightly different, since module names are URLs # Check if module path is reachable curl -sI "https://proxy.golang.org/github.com/$ORG/$NAME/@latest" | head -1
**Severity calibration:** Just because a name is unclaimed doesn't mean it's exploitable. You also need: 1. Evidence the target's BUILD SYSTEM resolves names from public registries (not just their internal one) 2. OR evidence the target's package manager is configured insecurely (e.g., `.npmrc` without `@scope:registry=` mapping) 3. OR the package would be installed by their builds (it's actually in package.json, not just referenced in dead code)
A 404 on registry without supporting context is INFORMATIONAL only.
---
For each external public dependency the target uses:
# Common typosquat patterns: # Ori
A self-contained Claude skill bundle for bug hunting and external red-team work · 83 skills · 15 slash commands · 681 disclosed-report patterns (433 now individually cited & auditable) across 24 core vulnerability classes · enterprise identity +
End-to-end Android APK red-team pipeline — automated APK acquisition (Play Store + apkpure + apkmirror fallback), jadx…
Local-tooling companion to the bug-bounty orchestrator — carries the SAME complete bug-bounty workflow, but reach for THIS…
Use at the START of any bug bounty hunting session, when switching targets, or when feeling lost about what to do next. Master…
Complete bug bounty workflow — recon (subdomain enumeration, asset discovery, fingerprinting, HackerOne scope, source code…
Bugcrowd-specific reporting tactics complementing report-writing: VRT category search-and-fallback strategy when no exact match…
Cloud IAM red-team attack chain across AWS, Azure, GCP — focused on EXTERNAL exploitation paths and post-credential-discovery…
Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication,…
Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys)…
Clean and finalize authorized natural-language text intended for readers by auditing suspicious invisible Unicode and rewriting…