JavaScript is disabled. Some features may not work.
Apk Redteam Pipeline — ★ 2.7K GitHub Stars — Install Guide | SkillsNav
🇺🇸 English🇨🇳 中文
SkillsNav
Home

Apk Redteam Pipeline

★ 2.7K repomlN/AIntermediateClaude
🤖 AI Summary

This skill automates the discovery and inventory of Android APKs linked to a target organization, using triggers like Play Store developer pages, direct APK file hosting, stealer log leaks, or bug bounty scope. It then initiates a full red-team pipeline for each identified APK.

How to Install

Claude Code:
git clone --depth 1 https://github.com/elementalsouls/Claude-BugHunter.git && cp Claude-BugHunter/skills/apk-redteam-pipeline ~/.claude/skills/SKILL.md -r

When to use this skill

Trigger when: - Recon surfaces 1+ mobile apps under the target's developer name (Play Store dev page) - A web app hosts *.apk files directly (e.g. Recruitz.apk found on a subdomain during one engagement) - APK package IDs leaked via stealer logs (e.g. com.<brand>.app, com.<brand>.<sub-brand> patterns in stealer dump format) - Customer-facing app, dealer/partner portal, or employee mobile companion app is in scope - Bug bounty program lists Android in scope

DO NOT use for: - iOS-only targets (different pipeline — IPA reverse, MobSF, frida-ios-dump) - React Native / Flutter web apps already covered by JS bundle analysis - Server-side only assessments


Stage 0 — Inventory all org-owned apps

Play Store developer-page scrape

# Find developer page from the target's brand name
curl -sk -A "Mozilla/5.0" "https://play.google.com/store/apps/developer?id=<Brand+Name>" -o /tmp/dev.html

# Extract package IDs
grep -oE 'id=[a-zA-Z0-9._]+' /tmp/dev.html | sort -u

Example output (anonymized — 7 packages typical for a multi-brand conglomerate):

com.events.<brand>build
com.<corp>.<sub-brand-1>
com.<corp>.<sub-brand-2>
com.<corp>.<flagship>
com.<corp>.<product-line-1>
com.<corp>.<product-line-2>
com.<corp>.<sub-brand-3>

Cross-reference with stealer logs

Stealer-log format includes package names like *@com.<corp>.<app> — extract these from creds_userpass.txt if you have a leaked dump.

Brand permutation guesses (multi-brand conglomerate patterns)

com.<brand>.app
com.<brand>.mobile  
com.<brand>.android
com.<brand>connect.app
in.<brand>.dealer
in.co.<brand>.app

Stage 1 — APK acquisition

Primary: APKPure direct (no auth required)

# Follow 302 redirects to actual download
curl -sk -L --max-time 60 \
  "https://d.apkpure.net/b/APK/<package_id>?version=latest" \
  -o "<package_id>.apk"

# Or via the legacy d-XX.winudf.com mirror chain (we saw this work)

Secondary: APKMirror search

curl -sk -A "Mozilla/5.0" "https://www.apkmirror.com/?post_type=app_release&searchtype=apk&s=<brand>" \
  | grep -oE 'href="[^"]+\.apk[^"]*"' | sort -u

Tertiary: APKPure web search

curl -sk "https://apkpure.com/search?q=<brand>" | grep -oE 'data-dt-app="[^"]+"'

XAPK vs APK

  • .xapk = a zip containing multiple split APKs (base + config.armeabi-v7a + config.en + etc.)
  • Unzip outer first, then unzip the inner base.apk or <package>.apk
  • Some apkpure downloads return truncated XAPK with missing EOCD signature — symptom of CDN rate-limiting; rotate IP and retry, OR use 7z x which is more lenient than unzip
# Standard unzip (works for clean APK)
unzip -o <package>.apk -d extracted_<package>/

# For truncated/repaired XAPK
7z x -y <package>.apk -o"extracted_<package>"

# For nested XAPK
for inner in extracted_<package>/*.apk; do
  mkdir -p "extracted_<package>/$(basename "$inner" .apk)"
  unzip -o "$inner" -d "extracted_<package>/$(basename "$inner" .apk)"
done

Stage 2 — DEX decompilation (jadx)

# Install
brew install jadx          # macOS
# or
wget https://github.com/skylot/jadx/releases/latest/download/jadx-1.5.x.zip

# Decompile
jadx -d decompiled_<package>/ <package>.apk

# For XAPK that contains multiple APKs
for inner in extracted_<package>/*.apk; do
  jadx -d decompiled_<package>_$(basename "$inner" .apk)/ "$inner"
done

For a fast "strings only" pass without full decompilation:

find extracted_<package> -name "classes*.dex" -exec strings -8 {} \; > strings_<package>.txt

Stage 3 — Secret grep (the 60-pattern catalog)

```bash

URL grep — owned-domain references

grep -oE 'https?://[a-zA-Z0-9.-]+.(target1|target2|target3).(com|io|net|in)[a-zA-Z0-9./?=&%-]*' strings.txt | sort -u

Internal IP / port URLs

grep -oE 'https?://(10.|172.(1[6-9]|2[0-9]|3[01]).|192.168.|127.)[0-9.]+(:[0-9]+)?[a-zA-Z0-9./?=&-]*' strings.txt

Cloud credentials

grep -oE 'AKIA[A-Z0-9]{16}' # AWS Access Key grep -oE 'aws_secret_access_key[\s:=]+[A-Za-z0-9/+=]{40}' # AWS Secret grep -oE 'AIza[A-Za-z0-9_-]{35}' # Google API key grep -oE 'ya29.[A-Za-z0-9_-]+' # Google OAuth refresh token grep -oE 'gh[ps][A-Za-z0-9]{36}' # GitHub PAT grep -oE 'glpat-[A-Za-z0-9-]{20}' # GitLab PAT grep -oE 'xox[pbar]-[A-Za-z0-9-]+' # Slack token grep -oE 'sk-[A-Za-z0-9]{48}' # OpenAI API key grep -oE 'sk-ant-[A-Za-z0-9_-]{90,}' # Anthropic API key grep -oE 'AC[a-f0-9]{32}' # Twilio Account SID grep -oE 'sk_live_[A-Za-z0-9]{24}' # Stripe live key grep -oE 'pk_live_[A-Za-z0-9]{24}' # Stripe publishable grep -oE 'mailgun-[A-Za-z0-9-]{40}' # Mailgun grep -oE 'SG.[A-Za-z0-9_-]{22}.[A-Za-z0-9_-]{4

Details

Category AI/ML → ml
Sourceelementalsouls/Claude-BugHunter
SKILL.mdView on GitHub →
Repo Stars★ 2.7K
Est. per SkillN/A (shared across 50 skills from this repo)
DifficultyIntermediate
Risk LevelN/A

Related Skills

Works Well With

Skills from the same repository — often designed to work together