mastg

GitHub

基于OWASP MASTG v2标准,利用igf动态插桩技术对移动应用进行自动化安全审计。涵盖存储、加密、网络等维度的检查清单分析,并导出结构化Markdown报告。

skills/mastg/SKILL.md ChiChou/grapefruit

Trigger Scenarios

需要进行移动应用安全合规审计 请求执行MASVS类别的安全测试 使用igf工具进行动态仪器分析

Install

npx skills add ChiChou/grapefruit --skill mastg -g -y
More Options

Use without installing

npx skills use ChiChou/grapefruit@mastg

指定 Agent (Claude Code)

npx skills add ChiChou/grapefruit --skill mastg -a claude-code -g -y

安装 repo 全部 skill

npx skills add ChiChou/grapefruit --all -g -y

预览 repo 内 skill

npx skills add ChiChou/grapefruit --list

SKILL.md

Frontmatter
{
    "name": "mastg",
    "description": "Autonomous mobile security audit aligned with OWASP MASTG v2. Performs checklist-driven analysis across MASVS categories: storage, crypto, network, platform, code, resilience, privacy. Exports structured markdown report with MASTG test references."
}

MASTG Mobile Security Audit Skill

You are performing an autonomous security audit of a mobile application using igf (Grapefruit) dynamic instrumentation, aligned with OWASP MASTG v2 (Mobile Application Security Testing Guide).

Prerequisites

The igf server must be running (npm run start or igf). A device must be connected with the target app running.

Session Setup

  1. Run igf device list to find connected devices
  2. If user didn't specify a device, use the only one or ask
  3. Confirm platform (droid or fruity) and bundle ID

Store as shell variables:

DEVICE="<device_id>"
PLATFORM="<droid|fruity>"
BUNDLE="<bundle_id>"
SESSION="-d $DEVICE --platform $PLATFORM -b $BUNDLE"

How to Execute

Use igf CLI via bash. The /igf skill documents all commands.

Rules:

  • Ask user before starting monitors or hooks (pin start, hook start)
  • Ask user before accessing paths outside app data directory
  • If a command fails, note the error and move on
  • Collect actual output as evidence for each finding
  • Reference MASTG test IDs in findings where applicable

Audit Checklist (OWASP MASTG v2 aligned)

Work through sections in order. Non-intrusive first (1-4, 6), hooks later (5, 7, 8).

Platform: [A] = Android, [I] = iOS, [*] = both.

1. MASVS-STORAGE — Data Storage & Privacy

Collect app info and filesystem roots: Run the platform-specific app metadata command plus the shared process/filesystem commands:

igf agent app process-info $SESSION
igf agent app info $SESSION      # Android
igf agent app plist $SESSION     # iOS
igf agent fs roots $SESSION

1.1 Logging [*] (MASWE-0001)

  • [A] MASTG-TEST-0231: Check for references to logging APIs in manifest/code
  • [A] MASTG-TEST-0203: Runtime use of logging APIs — igf log syslog $DEVICE $BUNDLE
  • [I] MASTG-TEST-0297: Insertion of sensitive data into logs
  • [I] MASTG-TEST-0296: Sensitive data exposure through insecure logging — igf log syslog $DEVICE $BUNDLE
  • Flag: tokens, passwords, PII in log output (HIGH)

1.2 Backup Exposure [*] (MASWE-0004)

  • [A] MASTG-TEST-0262: Check android:allowBackup in manifest — igf agent app manifest $SESSION
  • [A] MASTG-TEST-0216: Sensitive data not excluded from backup
  • [I] MASTG-TEST-0215: Sensitive data not marked for backup exclusion
  • [I] MASTG-TEST-0298: Runtime monitoring of files eligible for backup

1.3 Unencrypted Data in Private Storage [*] (MASWE-0006)

  • [A] MASTG-TEST-0207: Runtime storage of unencrypted data in app sandbox
  • [A] MASTG-TEST-0287: Sensitive data via SharedPreferences — igf agent fs ls <data_dir>/shared_prefs $SESSION then igf agent fs cat <file> $SESSION
  • [A] MASTG-TEST-0304: Sensitive data via SQLite — igf agent sqlite tables <path> $SESSION then igf agent sqlite dump <path> <table> $SESSION
  • [A] MASTG-TEST-0305: Sensitive data via DataStore
  • [A] MASTG-TEST-0306: Sensitive data via Room DB
  • [I] MASTG-TEST-0299: Data protection classes for files
  • [I] MASTG-TEST-0300/0301: Unencrypted data in private storage — igf agent ios userdefaults $SESSION
  • [I] MASTG-TEST-0302: Sensitive data unencrypted in private storage files
  • Flag: plaintext credentials, tokens, PII in databases or preferences (HIGH)

1.4 External/Shared Storage [*] (MASWE-0007)

  • [A] MASTG-TEST-0200: Files written to external storage
  • [A] MASTG-TEST-0201: Runtime use of external storage APIs
  • [A] MASTG-TEST-0202: References to external storage APIs/permissions
  • [I] MASTG-TEST-0303: Unencrypted data in shared storage
  • Browse: igf agent fs ls <data_dir> $SESSION

1.5 Keychain/Keystore [*]

  • [A] igf agent android keystore $SESSION — check key algorithms, purposes
  • [A] igf agent android keystore-info <alias> $SESSION — detailed attributes
  • [I] igf agent ios keychain $SESSION — check accessibility levels
  • [I] igf agent ios cookies $SESSION — session cookies without secure/httpOnly
  • Flag: kSecAttrAccessibleAlways (HIGH), weak key algorithms

2. MASVS-CRYPTO — Cryptography

2.1 Weak/Broken Algorithms [*] (MASWE-0020)

  • [A] MASTG-TEST-0221: Broken symmetric encryption algorithms
  • [A] MASTG-TEST-0232: Broken symmetric encryption modes (ECB)
  • [A] MASTG-TEST-0312: Explicit security provider usage
  • [I] MASTG-TEST-0210: Broken symmetric encryption algorithms
  • [I] MASTG-TEST-0211: Broken hashing algorithms (MD5, SHA1 for security)
  • [I] MASTG-TEST-0317: Broken symmetric encryption modes
  • Flag: DES, 3DES, RC4, ECB mode (HIGH), MD5/SHA1 for signatures

2.2 Hardcoded Keys [*] (MASWE-0014)

  • [A] MASTG-TEST-0212: Hardcoded cryptographic keys in code
  • [I] MASTG-TEST-0213: Hardcoded cryptographic keys in code
  • [I] MASTG-TEST-0214: Hardcoded cryptographic keys in files
  • Scan: igf agent symbol strings <main_module> $SESSION
  • Look for: base64 key-length strings, hex patterns, -----BEGIN.*KEY-----

2.3 Insufficient Key Sizes [*] (MASWE-0009)

  • [A] MASTG-TEST-0208: Insufficient key sizes
  • [I] MASTG-TEST-0209: Insufficient key sizes
  • Flag: <128-bit symmetric, <2048-bit RSA (HIGH)

2.4 IV Reuse [A] (MASWE-0022)

  • [A] MASTG-TEST-0309: References to reused IVs
  • [A] MASTG-TEST-0310: Runtime use of reused IVs
  • Flag: all-zero IVs, static IVs (HIGH)

2.5 Key Reuse [*] (MASWE-0012)

  • [A] MASTG-TEST-0307/0308: Asymmetric key pairs used for multiple purposes

2.6 Insecure Random [*] (MASWE-0027)

  • [A] MASTG-TEST-0204/0205: Insecure random / non-random sources
  • [I] MASTG-TEST-0311: Insecure random API usage

Runtime crypto monitoring (ask user first):

igf agent pin start crypto $SESSION
# wait for app interaction...
igf log crypto $DEVICE $BUNDLE --limit 100
igf agent pin stop crypto $SESSION

3. MASVS-NETWORK — Network Communication

3.1 Cleartext Traffic [*] (MASWE-0050)

  • [A] MASTG-TEST-0233: Hardcoded HTTP URLs
  • [A] MASTG-TEST-0235: Android configurations allowing cleartext
  • [A] MASTG-TEST-0237: Cross-platform framework cleartext config
  • [A] MASTG-TEST-0238: Runtime cleartext traffic
  • [A] MASTG-TEST-0239: Low-level socket APIs for custom HTTP
  • [I] MASTG-TEST-0321: Hardcoded HTTP URLs
  • [I] MASTG-TEST-0322: ATS configurations allowing cleartext — check NSAllowsArbitraryLoads in app info
  • [I] MASTG-TEST-0323: Low-level networking APIs for cleartext
  • Check manifest: igf agent app manifest $SESSION — look for usesCleartextTraffic=true
  • Flag: plaintext HTTP (HIGH), disabled ATS (HIGH)

3.2 Insecure TLS [*] (MASWE-0050)

  • [A] MASTG-TEST-0217: Insecure TLS protocols allowed in code
  • MASTG-TEST-0218: Insecure TLS in network traffic
  • [A] MASTG-TEST-0295: GMS security provider not updated
  • Flag: TLS 1.0/1.1 (HIGH), SSLv3 (CRITICAL)

3.3 Certificate Validation [*] (MASWE-0052)

  • [A] MASTG-TEST-0234: Missing hostname verification with SSLSockets
  • [A] MASTG-TEST-0282: Unsafe custom trust evaluation
  • [A] MASTG-TEST-0283: Incorrect hostname verification
  • [A] MASTG-TEST-0284: Incorrect SSL error handling in WebViews
  • [A] MASTG-TEST-0285: Outdated version trusting user CAs
  • [A] MASTG-TEST-0286: Network security config trusting user CAs

3.4 Certificate Pinning [*] (MASWE-0047)

  • [A] MASTG-TEST-0242: Missing pinning in network security config
  • [A] MASTG-TEST-0243: Expired certificate pins
  • MASTG-TEST-0244: Missing pinning in network traffic
  • Flag: no pinning (MEDIUM for L2)

Runtime HTTP monitoring (ask user first): Run the capture pin for the target platform:

igf agent pin start http $SESSION         # Android HTTP/WebSocket capture
igf agent pin start nsurl $SESSION        # iOS NSURLSession/WebSocket capture
igf agent pin start sslpinning $SESSION   # Android TLS validation monitoring
# wait for app interaction...
igf history http $DEVICE $BUNDLE --limit 100   # Android
igf history nsurl $DEVICE $BUNDLE --limit 100  # iOS
igf agent pin stop http $SESSION
igf agent pin stop nsurl $SESSION
igf agent pin stop sslpinning $SESSION

Flag: plaintext requests, API keys in headers/URLs, sensitive data in transit

4. MASVS-PLATFORM — Platform Interaction

4.1 WebView Security [A] (MASWE-0069)

  • [A] MASTG-TEST-0250/0251: Content provider access in WebViews
  • [A] MASTG-TEST-0252/0253: Local file access in WebViews
  • [A] MASTG-TEST-0227: Debugging enabled for WebViews (MASWE-0067)
  • [A] MASTG-TEST-0320: WebViews not cleaning up sensitive data (MASWE-0118)

4.2 Exported Components [A]

igf agent android activities $SESSION
igf agent android services $SESSION
igf agent android receivers $SESSION
igf agent android providers $SESSION

Flag: exported without permission protection (INFO-MEDIUM), content providers queryable (test with igf agent android provider-query <uri> $SESSION)

4.3 Sensitive UI Data Exposure [*] (MASWE-0053)

  • [A] MASTG-TEST-0258: Keyboard caching attributes
  • [A] MASTG-TEST-0316: Auth data in text input fields
  • [I] MASTG-TEST-0276-0280: Pasteboard security (general pasteboard, clearing, expiry, local-only)
  • [I] MASTG-TEST-0313/0314: Keyboard caching prevention

4.4 Screenshot/Screen Capture Prevention [*] (MASWE-0055)

  • [A] MASTG-TEST-0289: Sensitive content in screenshots during backgrounding
  • [A] MASTG-TEST-0291-0294: Screen capture prevention APIs
  • [I] MASTG-TEST-0290: Sensitive content in screenshots during backgrounding

4.5 Notification Data [A] (MASWE-0054)

  • [A] MASTG-TEST-0315: Sensitive data exposed via notifications

4.6 Deep Links / URL Schemes [I]

  • [I] igf agent app urls $SESSION — check for custom schemes accepting external input

5. MASVS-CODE — Code Quality

5.1 Binary Protections [*] (MASWE-0116)

igf agent checksec main $SESSION
  • [A] MASTG-TEST-0222: PIE not enabled
  • [A] MASTG-TEST-0223: Stack canaries not enabled
  • [I] MASTG-TEST-0228: PIE not enabled
  • [I] MASTG-TEST-0229: Stack canaries not enabled
  • [I] MASTG-TEST-0230: ARC not enabled
  • Flag: missing PIE (HIGH), missing canaries (MEDIUM), missing ARC (HIGH on iOS)

5.2 Dependencies [*] (MASWE-0076)

  • [A] MASTG-TEST-0272: Dependencies with known vulnerabilities
  • [I] MASTG-TEST-0273: Dependencies with known vulnerabilities
  • igf agent symbol modules $SESSION — identify third-party libraries

5.3 Debugging Symbols [*] (MASWE-0093)

  • [A] MASTG-TEST-0288: Debugging symbols in native binaries
  • [I] MASTG-TEST-0219: Testing for debugging symbols

5.4 Platform Version [A] (MASWE-0077)

  • [A] MASTG-TEST-0245: Platform version API references
  • Check: targetSdkVersion < 33 (MEDIUM)

6. MASVS-RESILIENCE — Reverse Engineering & Tampering

6.1 Debuggable [*] (MASWE-0067)

  • [A] MASTG-TEST-0226: android:debuggable=true in manifest — igf agent app manifest $SESSION
  • [I] MASTG-TEST-0261: get-task-allow entitlement — igf agent app entitlements $SESSION
  • Flag: debuggable in production (HIGH)

6.2 Code Signing [*] (MASWE-0104)

  • [A] MASTG-TEST-0224: Insecure signature version
  • [A] MASTG-TEST-0225: Insecure signature key size
  • [I] MASTG-TEST-0220: Outdated code signature format

6.3 Root/Jailbreak Detection [*] (MASWE-0097)

  • [A] MASTG-TEST-0324/0325: Root detection mechanisms
  • [I] MASTG-TEST-0240/0241: Jailbreak detection
  • igf agent class list $SESSION — search for root/jailbreak detection classes

6.4 Device Lock [*] (MASWE-0008)

  • [A] MASTG-TEST-0247/0249: Secure screen lock detection
  • [I] MASTG-TEST-0246/0248: Secure screen lock detection

6.5 StrictMode [A] (MASWE-0094)

  • [A] MASTG-TEST-0263-0265: StrictMode violations/APIs

6.6 Obfuscation Indicators [*]

  • igf agent class list $SESSION — short/randomized names = ProGuard/R8
  • igf agent symbol modules $SESSION — stripped symbols = obfuscation

7. MASVS-PRIVACY — User Privacy

7.1 Dangerous Permissions [A] (MASWE-0117)

  • [A] MASTG-TEST-0254: Dangerous app permissions — extract from manifest
  • [A] MASTG-TEST-0255: Permission requests not minimized
  • [A] MASTG-TEST-0256: Missing permission rationale
  • [A] MASTG-TEST-0257: Not resetting unused permissions
  • Flag: >= 8 dangerous permissions (MEDIUM)

7.2 SDK Data Handling [*] (MASWE-0112)

  • [A] MASTG-TEST-0318/0319: SDK APIs handling sensitive user data
  • [I] MASTG-TEST-0281: Undeclared known tracking domains

7.3 PII in Network Traffic [A] (MASWE-0108)

  • [A] MASTG-TEST-0206: Undeclared PII in network traffic capture

Runtime privacy monitoring (ask user first):

igf agent pin start privacy $SESSION
# wait for app interaction...
igf history privacy $DEVICE $BUNDLE --limit 100
igf agent pin stop privacy $SESSION

Categorize: microphone, camera, photos, sensors, bluetooth, wifi, location, health

8. Hardcoded Secrets (cross-cutting)

igf agent symbol modules $SESSION           # find main module
igf agent symbol strings <main_module> $SESSION

Search for:

  • API keys: sk_, pk_, api_, key_, token_, AIza, AKIA, ghp_, glpat-
  • Private keys: -----BEGIN.*PRIVATE KEY-----
  • URLs with credentials: ://.*:.*@
  • AWS/GCP/Azure patterns
  • Firebase config
  • Hardcoded IPs and internal hostnames

Also check:

  • [A] SharedPreferences XML files for credential-like keys
  • [I] igf agent ios userdefaults $SESSION for credential-like keys

Cleanup

Stop all active hooks:

igf agent pin list $SESSION
igf agent pin stop <id> $SESSION   # for each active pin
igf agent hook status $SESSION
igf agent hook stop <group> $SESSION   # for low-level hook groups, if used

Open Files / Network

igf agent lsof $SESSION

Flag unexpected network connections.


Report Format

Write to file the user specifies (default: mastg-report.md).

# Security Audit Report: {bundle}

| Field | Value |
|-------|-------|
| **Date** | {YYYY-MM-DD} |
| **Platform** | {Android/iOS} |
| **Device** | {device} |
| **Bundle** | {bundle} |
| **Standard** | OWASP MASTG v2 |

## Executive Summary

| Severity | Count |
|----------|-------|
| Critical | N |
| High | N |
| Medium | N |
| Info | N |
| Positive | N |

> **Risk Assessment:** {one sentence}

## Findings

### MASVS-STORAGE

#### [!] {Finding Title}

**Severity:** HIGH | **MASTG:** MASTG-TEST-XXXX | **MASWE:** MASWE-XXXX

{Description}

**Evidence:**

{actual igf command output}


**Recommendation:** {fix}

### MASVS-CRYPTO
### MASVS-NETWORK
### MASVS-PLATFORM
### MASVS-CODE
### MASVS-RESILIENCE
### MASVS-PRIVACY

## Positive Findings

- [+] **{title}** — {description}

## Recommendations Summary

1. **[CRITICAL]** {rec}
2. **[HIGH]** {rec}
...

Severity Guide

  • CRITICAL: Immediate exploitation risk (hardcoded credentials, SQL injection in exported provider)
  • HIGH: Significant weakness (debuggable, disabled ATS, plaintext credentials, weak crypto, missing PIE)
  • MEDIUM: Notable concern (excessive permissions, missing pinning, legacy storage)
  • INFO: Worth noting (exported components, missing network security config)
  • OK: Security control properly implemented

Version History

  • d16322f Current 2026-08-20 11:17

Same Skill Collection

skills/igf/SKILL.md

Metadata

Files
0
Version
d16322f
Hash
d009e01e
Indexed
2026-08-20 11:17

inicio - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-17 05:05
浙ICP备14020137号-1