a6hinandh/RakshakX
GitHub: a6hinandh/RakshakX
一款 Android 端隐私优先的终端安全防护平台,利用设备端 ML 和跨通道关联引擎检测并防御短信、通话、邮件、网页和即时消息中的社会工程与钓鱼攻击。
Stars: 2 | Forks: 1
# RakshakX — On-Device Mobile Cybersecurity Platform
**Real-time, privacy-preserving threat detection and response for Android**
RakshakX is a multi-layered mobile cybersecurity platform that provides endpoint protection across five attack surfaces — SMS, voice calls, email, web browsing, and instant messaging — using on-device machine learning, behavioral analysis, network-level traffic inspection, and cross-channel threat correlation. Every computation runs locally; zero user data leaves the device.
## Cybersecurity Capabilities
### 1. Multi-Vector Threat Detection
RakshakX defends against the full spectrum of social engineering and phishing attacks targeting mobile users:
| Attack Vector | Threat Types Detected | Detection Technique |
|---------------|----------------------|---------------------|
| **SMS (Smishing)** | Phishing links, OTP harvesting, UPI fraud, fake banking alerts, prize scams, job/investment fraud | Hybrid NLP classification (DistilBERT/IndicBERT) + contextual rule engine with sender reputation |
| **Voice Calls (Vishing)** | Tech support scams, law enforcement impersonation, banking fraud, credential harvesting, remote access social engineering | Real-time speech-to-text (Vosk ASR) + fraud intent classification + pre-call number reputation screening |
| **Email (Phishing)** | Credential phishing, spear phishing, BEC (business email compromise), malicious attachments, URL obfuscation, homoglyph attacks | Multi-signal pipeline: URL reputation, intent analysis, obfuscation detection, attachment risk scoring |
| **Web (Drive-by / Malicious URLs)** | Phishing sites, malware distribution domains, typosquatting, redirect chain attacks, malicious QR codes | VPN-based DNS sinkholing + domain reputation analysis + TLS metadata inspection + redirect chain tracking |
| **Messaging (WhatsApp/Telegram/Signal)** | Forwarded scam chains, UPI collect request fraud, social engineering via messaging platforms | Notification interception + ML classification + UPI deep-link pattern detection |
### 2. Cross-Channel Threat Correlation (MITRE ATT&CK Aligned)
The `MultiChannelCorrelationEngine` is RakshakX's differentiating capability — it detects **coordinated multi-stage attacks** that single-channel filters miss. These map to real-world attack kill chains:
| Correlation Strategy | Kill Chain Pattern | Time Window | Risk Escalation |
|---------------------|--------------------|-------------|-----------------|
| `SMS_WEB_URL` | Smishing → victim visits phishing site | 1 hour | +0.25 |
| `EMAIL_WEB_URL` | Phishing email → victim visits spoofed portal | 1 hour | +0.25 |
| `CALL_SMS_PHONE` | Vishing call → OTP-harvesting SMS from same number | 15 minutes | +0.35 |
| `PHONE_MULTI_CHANNEL` | Persistent threat actor across call + SMS + email | 24 hours | +0.55 |
| `TEMPORAL_BURST` | Coordinated blitz across 2+ channels in rapid succession | 15 minutes | +0.15 |
Example: A scammer calls pretending to be from a bank → hangs up → sends an SMS with a "verification link" → the user clicks the link and visits a phishing site. RakshakX detects each event independently, then the correlation engine links all three via phone number and URL domain matching, creating a `ThreatSessionEntity` that escalates the combined risk score and triggers a critical alert.
### 3. Network Security Layer (Local VPN)
`FraudVpnService` implements a **DNS-level network security layer** via Android's VPN API:
App DNS request → TUN interface (10.0.0.1)
→ DnsVpnRelay intercepts query
→ PacketParser extracts domain
→ DomainRiskAnalyzer checks:
├─ Known malicious domain database
├─ Typosquatting detection
├─ Suspicious TLD analysis
├─ Domain age heuristics
└─ TLS certificate metadata
→ ThreatBlockingEngine: ALLOW / WARN / BLOCK
→ DNS forwarded to upstream resolver
Design decision: **no MITM.** The VPN does not install a custom CA or decrypt TLS — this would compromise the security of every HTTPS connection on the device. Instead, it analyzes DNS metadata, which is sufficient for domain-level threat intelligence without breaking encryption guarantees.
### 4. On-Device ML Inference Pipeline
All machine learning runs locally using ONNX Runtime — no cloud API calls, no data exfiltration risk:
| Model | Architecture | Purpose | Runtime |
|-------|-------------|---------|---------|
| **DistilBERT** | `distilbert-base-uncased`, fine-tuned, INT8 quantized | English scam/phishing NLP classification | ONNX Runtime 1.19.2 |
| **IndicBERT** | `ai4bharat/IndicBERT`, fine-tuned, INT8 quantized | 11 Indian language scam/phishing classification | ONNX Runtime 1.19.2 (lazy-loaded) |
| **Vosk ASR** | Lightweight English acoustic model | Real-time call transcription (16kHz PCM → text) | Vosk 0.3.38 |
| **AiThreatScorer** | TFLite/ONNX web fraud model | Domain + page-level threat scoring | TensorFlow Lite 2.9.0 |
**Hybrid Scoring Formula:**
finalScore = (ML_confidence × 0.60) + (RuleEngine_score / 100 × 0.40)
Classification:
< 0.40 → SAFE (no action)
0.40–0.69 → SUSPICIOUS (warning notification)
≥ 0.70 → SCAM (critical alert, blocking options)
The 60/40 ML/rules split is deliberate — pure ML models are vulnerable to adversarial evasion (crafted messages that bypass learned patterns). The rule-based `RiskEngine` provides a safety net with keyword matching, sender reputation tracking, time-of-day weighting, and combination amplification that catches threats even when ML is fooled.
**Language Detection:** Zero-dependency Unicode block analysis routes text to the correct model:
- Counts characters per script (Devanagari, Tamil, Telugu, Kannada, Malayalam, Bengali, Gujarati, Gurmukhi, Odia, Arabic/Urdu)
- If any Indic script ≥ 15% of letters OR ≥ 6 characters → IndicBERT
- Otherwise → DistilBERT
- Low-confidence DistilBERT result with detectable Indic script → automatic fallback to IndicBERT
### 5. Encrypted Data-at-Rest
All threat data is persisted in **SQLCipher-encrypted Room databases** (AES-256-CBC):
| Layer | Technology | Purpose |
|-------|-----------|---------|
| Database encryption | SQLCipher 4.6.1 | AES-256 encryption of all Room databases |
| Key management | Android Keystore + `androidx.security.crypto` | Hardware-backed encryption key derivation |
| File encryption | `EncryptedFile` (AES-256-GCM) | Sensitive threat logs on disk |
| Settings | `EncryptedSharedPreferences` | User preferences and configuration |
The encryption key is derived via the Android Keystore system, making it hardware-protected on devices with a TEE (Trusted Execution Environment) or StrongBox.
### 6. Threat Intelligence Network
`ThreatIntelligenceManager` implements **privacy-preserving threat sharing** with differential privacy:
- **Shared:** SHA-256 hashed phone numbers and domains only (irreversible one-way hash)
- **Never shared:** Raw identifiers, message content, call transcripts, contact lists, location, device info
- **Timestamps:** Rounded to nearest hour for k-anonymity
- **Strictly opt-in:** Disabled by default, user controls via `ThreatIntelScreen`
### 7. Real-Time Call Protection
During active phone calls, RakshakX provides a live security overlay:
Incoming call → CallStateMonitor (PHONE_STATE broadcast)
→ PreActionDecisionEngine: check ScamCallDatabase for known scam numbers
→ CallRecordingService: capture audio (RECORD_AUDIO, foreground service)
→ VoskTranscriber: streaming speech-to-text (16kHz PCM → JSON transcript)
→ FraudInferenceEngine + FraudIntentClassifier: classify transcript segments
→ OverlayBubbleService: floating UI overlay (SYSTEM_ALERT_WINDOW)
├─ Live risk meter (color-coded: green/amber/red)
├─ Contextual fraud phrase warnings
└─ Quick actions: End Call, Report Number, Mark Safe
→ FraudDao.insertCall(): persist to encrypted database
→ MultiChannelCorrelationEngine.correlateCallEvent(): cross-channel check
**Fraud intent categories:** Financial fraud, tech support scam, prize/lottery, urgent action demand, credential harvesting, law enforcement impersonation.
### 8. QR Code & URL Security Scanner
`QrScannerActivity` (CameraX + ML Kit Barcode) and `UrlScanActivity` provide:
- Real-time QR code scanning with domain reputation check before navigation
- Context menu integration (`ACTION_PROCESS_TEXT`) — long-press any URL in any app to scan
- Redirect chain analysis for shortened/obfuscated URLs
- Whitelisting for known-safe domains (government portals, major banks)
### 9. Family Protection Mode
`FamilyProtectionManager` provides role-based security for non-technical family members:
| Role | Capabilities |
|------|-------------|
| **Admin** | Full access, manages members and settings |
| **Elder** | Simplified UI with large text, receives extra guidance, alerts forwarded to admin |
| **Child** | Restricted controls, all critical alerts forwarded to admin |
| **Self** | Standard single-user mode |
### 10. Device Integrity & Health Scoring
`DeviceIntegrityScanner` performs a comprehensive security posture evaluation of the Android device itself:
- **Root detection** — checks `/system/bin/su`, `/system/xbin/su`, Magisk paths, SuperSU artifacts, `Build.TAGS` for test-keys
- **Weighted risk scoring** — deductions for root (-40), debug build (-10), ADB enabled (-10), developer options (-5), unknown sources (-10), security patch >90 days old (-15), no screen lock (-15), no encryption (-10), no Play Protect (-10)
- **Composite Security Posture Score** — `SecurityPostureScore` combines device score (40%), network score (30%), and active threat count (30%) into a letter grade (A–F)
- **`DeviceHealthScreen`** — animated arc score ring with grade-colored fill, staggered finding cards with severity-colored borders
### 11. App Security Auditing
`AppSecurityAuditor` iterates all installed packages via `PackageManager` and evaluates each app against a multi-factor risk model:
- **`PermissionRiskModel`** — 40+ permission weights (CAMERA:15, RECORD_AUDIO:15, BIND_ACCESSIBILITY_SERVICE:30, PROCESS_OUTGOING_CALLS:20) with spyware cluster detection (CAMERA+RECORD_AUDIO+INTERNET = +20 bonus), data harvesting cluster, and overlay attack cluster
- **Install source classification** — Play Store / Sideloaded / System / Unknown via installer package name
- **Risk levels** — SAFE / LOW / MEDIUM / HIGH / CRITICAL based on permission score, sideload status, device admin status
- **`AppAuditScreen`** — filterable list with risk badge, top-3 dangerous permissions, and install source chip per app
### 12. Wi-Fi Security Analysis
`WifiSecurityAnalyzer` evaluates the current Wi-Fi connection for encryption quality and active attacks:
- **Encryption classification** — parses `WifiManager` capabilities string for WPA3 / WPA2 / WPA / WEP / OPEN; scored 100/85/50/20/0
- **Evil-twin detection** — identifies multiple BSSIDs sharing the same SSID at strong signal strength (rogue AP attack)
- **DNS hijack detection** — resolves `connectivitycheck.gstatic.com` and verifies the response IP falls within known Google ranges; any other IP indicates DNS manipulation
- **Captive portal detection** — HTTP 204 check to identify intercepting portals before sensitive operations
- **`WifiAuditScreen`** — arc score ring, encryption badge, threat card list, and specific remediation recommendations
### 13. Application Firewall
`FirewallRuleStore` backed by `EncryptedSharedPreferences` provides per-app network policy enforcement:
- **Per-app Wi-Fi / Mobile data toggles** — rules stored as JSON in `EncryptedSharedPreferences` (AES-256-GCM, `MasterKey` via AndroidKeyStore)
- **`FirewallRule`** data class — packageName, allowWifi, allowMobile, blockedDomains list, enabled flag
- **`FirewallScreen`** — non-system app list from `PackageManager`, switch toggles per app, real-time rule persistence
- Designed to feed into `FraudVpnService`'s UID-based packet filtering for enforcement at the network layer
### 14. Local Network Scanner
`LocalNetworkScanner` maps the local Wi-Fi subnet for security threats:
- **Parallel host discovery** — derives /24 subnet from `WifiManager.dhcpInfo`, fans 254 concurrent `isReachable(200ms)` probes via `async`/`awaitAll`
- **TCP port scanning** — 12 ports per discovered host: 21 (FTP), 22 (SSH), 23 (Telnet), 80, 443, 445 (SMB), 1883 (MQTT), 5683 (CoAP), 5900 (VNC), 3389 (RDP), 8080, 8443
- **MAC-to-vendor lookup** — reads `/proc/net/arp` for MAC addresses, maps against 20-entry OUI table
- **Risk classification** — Telnet=HIGH_RISK (unencrypted remote shell), SMB/VNC/RDP=SUSPICIOUS (lateral movement surfaces)
- **`NetworkScanScreen`** — pulsing radar animation during scan, device cards with colored risky-port chips
### 15. Traffic Anomaly Detection
`TrafficAnomalyDetector` (in `web/analyzers/`) performs behavioral analysis on DNS query streams intercepted by the VPN:
- **C2 Beaconing** — inter-arrival variance <5s² with <2min average interval; indicates automated periodic callback to a command-and-control server
- **DGA Domain Detection** — Shannon entropy >3.5, consonant run >8, digit ratio >0.3, domain length >15; characteristic of Domain Generation Algorithm malware
- **DNS Tunneling** — label length >30 chars (HIGH) or >50 unique queries/min (MEDIUM); data exfiltration via DNS sublabel encoding
- **Cryptomining** — 24 known mining pool domains (pool.supportxmr.com, xmrpool.eu, etc.)
- **Data Exfiltration** — >100 unique subdomains per apex domain within a 5-minute window
- **`TrafficMonitorScreen`** — five detector status rows with active/severity indicators, anomaly cards with technique description
### 16. Privacy Dashboard & Tracker Detection
`TrackerDatabase` contains 50+ tracker signatures mapped to `TrackerCategory` (ANALYTICS, ADVERTISING, CRASH_REPORTING, FINGERPRINTING, SOCIAL, PROFILING):
- Detects trackers in installed apps by matching package names against known tracker SDKs (Google Analytics, Facebook Ads, AppsFlyer, Adjust, Branch, Firebase, Crashlytics, etc.)
- Canvas-rendered per-category progress bars showing tracker prevalence
- App-level drill-down listing specific tracker SDKs embedded per app
- **`PrivacyDashboardScreen`** — expandable app rows with category breakdown and block-domain list
### 17. Secure Credential Vault
`SecureVault` provides on-device encrypted credential storage using two independent security layers:
- **Transport encryption** — AndroidKeyStore AES/GCM/NoPadding, fresh IV prepended to every ciphertext, Base64 output
- **Storage layer** — `EncryptedSharedPreferences` with `MasterKey` (hardware-backed on TEE/StrongBox devices)
- **`VaultEntry`** — id, title, content, category (`VaultCategory`: PASSWORD / NOTE / RECOVERY_CODE / API_KEY / CREDIT_CARD / OTHER), timestamps
- **`VaultScreen`** — `combinedClickable` list with long-press reveal, `AddEntryDialog` with category dropdown, monospace font for sensitive values
### 18. Data Breach Detection (k-Anonymity HIBP)
`BreachChecker` integrates with the Have I Been Pwned v3 API using **k-anonymity** — the full hash or email never leaves the device:
- **Email breach check** — queries `/breachedaccount/{email}` with only the SHA-1 prefix sent; 404=clean, 200=returns breach list
- **Password hash check** — sends only the first 5 hex chars of the SHA-1 password hash to `/range/{prefix}`; compares the returned hash suffixes locally
- **Response caching** — results cached in `SharedPreferences` to avoid repeat API calls
- **`HttpURLConnection` only** — zero external HTTP library dependencies; no OkHttp/Retrofit
- **`BreachCheckScreen`** — email input with breach detail cards, password section with k-anonymity guarantee display
### 19. MITRE ATT&CK Mobile Matrix
`MitreAttackMapper` maps detected threats to the MITRE ATT&CK for Mobile framework:
| Technique ID | Name | Tactic | Detection Source |
|-------------|------|--------|-----------------|
| T1660 | Phishing (SMS) | Initial Access | SMS channel |
| T1660.001 | Phishing: Spearphishing Voice | Initial Access | Call channel |
| T1566 | Phishing (Email) | Initial Access | Email channel |
| T1659 | Content Injection | Initial Access | Web channel |
| T1417 | Input Capture: Keylogging | Collection | App audit |
| T1571 | Non-Standard Port | C2 | Beaconing detector |
| T1496 | Resource Hijacking | Impact | Cryptomining detector |
| T1437 | Application Layer Protocol | Exfiltration | Exfil detector |
| T1584.002 | Compromise Infrastructure: DNS | Resource Dev | Wi-Fi audit |
| T1404 | Exploitation for Priv Esc | Privilege Escalation | Device integrity |
| T1476 | Deliver Malicious App | Initial Access | App audit |
| T1418 | Software Discovery | Discovery | App audit |
- **`AttackMatrixScreen`** — tactic-grouped technique cards (red border = detected, grey = monitored), coverage stats, tap-to-expand detail panel with mitigations
### 20. Threat Analytics Dashboard
`ThreatAnalyticsScreen` visualizes the historical threat dataset:
- **24-hour trend card** — rolling hourly event count for the past 24 hours
- **Channel breakdown bar chart** — Canvas `drawRoundRect` horizontal bars per channel (SMS/Call/Email/Web/Messaging) normalized to max count
- **24-hour heatmap grid** — 24-column Canvas grid where each cell's alpha encodes threat density for that hour, enabling pattern recognition of attack timing
### 21. Forensic Export (STIX 2.1)
`ForensicExporter` generates industry-standard threat intelligence bundles:
- **STIX 2.1 JSON format** — threat-actor, identity, indicator, relationship, and report objects with proper `spec_version: "2.1"` headers
- **Device fingerprint** — SHA-256 of `ANDROID_ID + appVersion`; included in every bundle as the reporting identity
- **Integrity hash** — `computeIntegrityHash()` produces a SHA-256 of the entire bundle for tamper evidence
- **File output** — saves to `getExternalFilesDir()/rakshakx_forensics/` for direct file access without FileProvider
- **`ForensicExportScreen`** — bundle ID + integrity hash display (monospace font), FileProvider sharing intent, cybercrime portal button
## System Architecture
┌──────────────────────────────────────────────────────────────────────┐
│ PRESENTATION LAYER │
│ Jetpack Compose (Material3) │ Glassmorphism Dark Theme │
│ 5-Tab Navigation (Home/Shield/Network/Threats/More) │
│ Haptic Feedback System │ Animated Onboarding (Lottie) │
│ PageHeader component style │ Glassmorphism surface components │
│ 25 Screens across 5 security domains │
├──────────────────────────────────────────────────────────────────────┤
│ ORCHESTRATION LAYER │
│ FraudMonitoringForegroundService │ AppStartupCoordinator │
│ MultiChannelCorrelationEngine │ ScamClassifierRouter │
│ SecurityDigestWorker │ ModelUpdateManager (OTA) │
│ PreActionDecisionEngine │ ScamAlertManager │
├──────────┬──────────┬──────────┬───────────┬────────────────────────┤
│ SMS │ EMAIL │ CALL │ WEB │ MESSAGING │
│ SmsScan │ EmailTh │ Vosk+ │ VPN+DNS │ WhatsApp/Telegram │
│ Dedup │ Pipeline │ Overlay │ TLS+QR │ Signal/UPI │
│ 3xIngest │ Analyzer │ CallRec │ DomainRep │ ForwardDetect │
├──────────┴──────────┴──────────┴───────────┴────────────────────────┤
│ ENDPOINT SECURITY LAYER (NEW v2.0) │
│ DeviceIntegrityScanner (root/debug/patch) │ SecurityPostureScore │
│ AppSecurityAuditor (40+ permission weights) │ PermissionRiskModel │
│ WifiSecurityAnalyzer (WPA3/evil-twin/DHNS) │ LocalNetworkScanner │
│ FirewallRuleStore (EncryptedSharedPrefs) │ TrafficAnomalyDetector│
├──────────────────────────────────────────────────────────────────────┤
│ THREAT INTELLIGENCE LAYER (NEW v2.0) │
│ MitreAttackMapper (15 techniques, 13 tactics) │ ForensicExporter │
│ TrackerDatabase (50+ signatures, 6 categories) │ STIX 2.1 export │
│ BreachChecker (HIBP v3, k-anonymity) │ SecureVault │
├──────────────────────────────────────────────────────────────────────┤
│ ML / AI LAYER │
│ DistilBERT (ONNX, English) │ IndicBERT (ONNX, 11 Indic langs) │
│ Vosk ASR (call transcription) │ AiThreatScorer (web fraud) │
│ FraudIntentClassifier │ RiskEngine (contextual rules) │
├──────────────────────────────────────────────────────────────────────┤
│ SECURITY LAYER │
│ SQLCipher (AES-256-CBC) │ Android Keystore (TEE/StrongBox) │
│ EncryptedFile (AES-256-GCM) │ SecureVault (AES/GCM/NoPadding) │
│ EncryptedSharedPreferences │ SHA-256 differential privacy │
├──────────────────────────────────────────────────────────────────────┤
│ DATA LAYER │
│ Room (FraudDao, ThreatDao) │ ThreatSessionEntity │
│ ThreatIntelligenceManager │ ScamCallDatabase │
│ FamilyProtectionManager │ SettingsStore (StateFlow) │
└──────────────────────────────────────────────────────────────────────┘
### Detection Pipeline
1. INGRESS ─────── NotificationListenerService / BroadcastReceiver / VPN / Polling
│
2. DEDUPLICATION ── SmsDeduplicationGuard (time-window hash, prevents triple-processing)
│
3. ROUTING ──────── Package name → channel dispatch (SMS / Email / Call / Web / Messaging)
│
4. ANALYSIS ─────── Channel-specific detector → ScamClassifierRouter.classify(text, channel)
│
┌────┴────┐
│ │
5. ML PATH ──── DistilBERT IndicBERT ← language detection routing
or IndicBERT ← lazy-loaded on first Indic text
│ │
6. RULE PATH ── RiskEngine.calculate(text, sender, context)
│ │
└────┬────┘
│
7. HYBRID SCORE ── finalScore = ML × 0.60 + Rules × 0.40
│
8. ALERT ──────── ScamAlertManager → severity-grouped notification channels
│
9. PERSISTENCE ── FraudDao.insert*() → SQLCipher-encrypted Room database
│
10. CORRELATION ── MultiChannelCorrelationEngine → ThreatSessionEntity
│
11. RESPONSE ──── Block / Warn / Report / Auto-silence / Family alert forwarding
## Tech Stack
| Category | Technology | Version |
|----------|-----------|---------|
| Language | Kotlin | 2.2.10 |
| UI Framework | Jetpack Compose + Material3 | BOM 2026.02.01 |
| Build System | Gradle Kotlin DSL + KSP | 9.4.1 / 2.3.0 |
| ML Inference | ONNX Runtime (on-device NLP) | 1.19.2 |
| ML Inference | TensorFlow Lite (web fraud) | 2.9.0 |
| Speech-to-Text | Vosk (on-device ASR) | 0.3.38 |
| Database | Room + SQLCipher | 2.7.2 / 4.6.1 |
| Crypto | AndroidX Security Crypto | Latest |
| Camera | CameraX (QR scanning) | 1.4.1 |
| Barcode | ML Kit Barcode Scanning | Latest |
| Background | WorkManager | 2.10.1 |
| Animation | Lottie Compose | 6.6.6 |
| Min SDK | Android 8.0 | API 26 |
| Target SDK | Android 15 | API 36 |
| JDK | Java 21 | 21 |
## Project Structure
RakshakX/
├── app/src/main/java/com/security/rakshakx/
│ ├── call/ # Call channel — 54 files
│ │ ├── callanalysis/ # VoskTranscriber, CallStateMonitor, OverlayBubbleService
│ │ ├── core/ # Orchestrator, EncryptionManager, DatabaseFactory
│ │ ├── services/ # FraudMonitoringForegroundService, CallRecordingService
│ │ ├── ai/ # CallScamDetector, FraudInferenceEngine, ModelLoader
│ │ └── data/ # CallRecord, CallRepository, BlockedNumbersRepository
│ ├── sms/ # SMS channel — 7 files
│ │ ├── SmsScamDetector.kt # ML classification entry point
│ │ ├── SmsReceiver.kt # SMS_RECEIVED broadcast + correlation trigger
│ │ ├── SmsPollingWorker.kt # Fallback inbox polling (WorkManager)
│ │ ├── SmsDeduplicationGuard.kt # Time-window hash deduplication
│ │ └── RiskEngine.kt # Contextual rule scoring (8 categories, multilingual)
│ ├── email/ # Email channel — 17 files
│ │ ├── analyzer/ # URL, intent, obfuscation, attachment analyzers
│ │ ├── database/ # ThreatDatabase (Room), ThreatEntity, ThreatDao
│ │ ├── pipeline/ # EmailThreatPipeline (orchestrator)
│ │ ├── scoring/ # ThreatCorrelationEngine
│ │ └── EmailScamDetector.kt # ML classification entry point
│ ├── web/ # Web channel — 37 files
│ │ ├── services/ # FraudVpnService, DnsVpnRelay, AccessibilityMonitorService
│ │ ├── analyzers/ # DomainRisk, ScamLanguage, BrowserNetworkCorrelation
│ │ ├── extractors/ # PacketParser, TlsMetadataExtractor, RedirectChainTracker
│ │ ├── ai/ # AiThreatScorer, ModelManager, OnDeviceFraudModel
│ │ ├── storage/ # EncryptedStorageManager, CryptoKeyManager
│ │ └── ui/ # QrScannerActivity, UrlScanActivity, VpnDashboardScreen
│ ├── integration/ # Shared ML layer — 6 files
│ │ ├── ScamClassifierRouter.kt # Central routing: language detect → model select → hybrid score
│ │ ├── DistilBertClassifier.kt # ONNX inference + WordPiece tokenizer (eager load)
│ │ ├── IndicBertClassifier.kt # ONNX inference + SentencePiece tokenizer (lazy load)
│ │ ├── ModelResult.kt # Classification output data class
│ │ └── ScamAlertManager.kt # Severity-based alert routing
│ ├── core/ # Cross-cutting concerns
│ │ ├── correlation/ # MultiChannelCorrelationEngine (5 strategies) + MitreAttackMapper
│ │ ├── integrity/ # DeviceIntegrityScanner, SecurityPostureScore (NEW)
│ │ ├── appsecurity/ # AppSecurityAuditor, PermissionRiskModel (NEW)
│ │ ├── network/ # WifiSecurityAnalyzer, LocalNetworkScanner (NEW)
│ │ ├── firewall/ # FirewallRule, FirewallRuleStore (NEW)
│ │ ├── privacy/ # TrackerDatabase (50+ signatures) (NEW)
│ │ ├── breach/ # BreachChecker (HIBP v3 k-anonymity) (NEW)
│ │ ├── vault/ # SecureVault (AES/GCM + EncryptedSharedPrefs) (NEW)
│ │ ├── forensics/ # ForensicExporter (STIX 2.1) (NEW)
│ │ ├── threatintel/ # ThreatIntelligenceManager (SHA-256 sharing)
│ │ ├── family/ # FamilyProtectionManager (role-based)
│ │ ├── callerid/ # ScamCallDatabase (pre-call screening)
│ │ ├── modelupdate/ # ModelUpdateManager (OTA with rollback)
│ │ └── SettingsStore.kt # Per-channel enable/disable (StateFlow)
│ ├── data/ # Unified persistence
│ │ ├── entities/FraudEntities.kt # 5 Room entities (SMS, Call, Email, Web, ThreatSession)
│ │ ├── dao/FraudDao.kt # Multi-channel queries + correlation lookups
│ │ └── repository/FraudRepository.kt
│ ├── notifications/ # Alert system
│ │ ├── RakshakNotificationListenerService.kt # Unified listener (20+ app packages)
│ │ ├── RakshakNotificationChannels.kt # CRITICAL / SUSPICIOUS / DIGEST channels
│ │ ├── SecurityDigestWorker.kt # Daily 24h threat summary
│ │ └── receivers/NotificationActionReceiver.kt # Block / Report / Mark Safe actions
│ ├── permissions/ # PermissionManager, readiness state model
│ ├── onboarding/ # Progressive permission setup (6-step wizard)
│ ├── startup/ # AppStartupCoordinator (boot sequence)
│ ├── widget/ # SecurityWidgetProvider (home screen)
│ └── ui/ # Compose UI layer
│ ├── screens/ # 25 screens across 5 security domains
│ │ ├── HomeDashboardScreen.kt, ThreatLogsScreen.kt, CorrelationScreen.kt
│ │ ├── ShieldsControlScreen.kt, NetworkHubScreen.kt, MoreHubScreen.kt
│ │ ├── DeviceHealthScreen.kt, AppAuditScreen.kt (endpoint security)
│ │ ├── WifiAuditScreen.kt, FirewallScreen.kt (network security)
│ │ ├── NetworkScanScreen.kt, TrafficMonitorScreen.kt
│ │ ├── PrivacyDashboardScreen.kt, PrivacyScreen.kt, VaultScreen.kt
│ │ ├── ThreatAnalyticsScreen.kt, ForensicExportScreen.kt
│ │ ├── PasswordStudioScreen.kt, SettingsScreen.kt, ScanningScreen.kt
│ │ ├── LiveThreatScreen.kt, ReportScreen.kt, ThreatIntelScreen.kt
│ │ ├── FamilyProtectionScreen.kt
│ │ └── AttackMatrixScreen.kt (MITRE ATT&CK)
│ ├── components/ # Reusable threat cards, status chips, glass surfaces
│ ├── navigation/ # NavHost + bottom navigation (5 tabs, 25 routes)
│ ├── anim/ # Haptics.kt, Animations.kt, StaggeredEntry
│ └── theme/ # Deep Navy glassmorphism dark theme
├── app/src/main/assets/
│ ├── rakshakx_model/ # On-device ML models
│ │ ├── distilbert/model.onnx + vocab.txt
│ │ ├── indicbert/model.onnx + vocab.txt
│ │ └── model_config.json
│ ├── model-en-us/ # Vosk ASR model (English)
│ └── RXlogo.png
├── ml/ # Python ML training pipeline
│ ├── train_distilbert.py # DistilBERT fine-tuning + ONNX export
│ ├── train_indicbert.py # IndicBERT fine-tuning + ONNX export
│ ├── generate_dataset.py # Training data generation
│ ├── copy_to_assets.py # Model → app assets pipeline
│ └── run_all.py # Master pipeline
├── docs/ # Developer documentation
│ ├── ARCHITECTURE.md # System architecture deep-dive
│ ├── SECURITY.md # Security model, threat model, privacy guarantees
│ ├── ML_PIPELINE.md # ML training, inference, OTA updates
│ ├── API_REFERENCE.md # Key public APIs
│ ├── SETUP_GUIDE.md # Development environment setup
│ ├── CHANGELOG.md # Version history
│ └── ROADMAP.md # Feature roadmap
└── .github/workflows/ # CI/CD (build, test, lint, APK tracking)
## Security & Privacy Model
### Privacy-First Design Principles
1. **Zero data exfiltration** — All ML inference, text analysis, and scoring runs locally on the device. No user data is transmitted to any server.
2. **Encrypted persistence** — All threat data stored in SQLCipher (AES-256) databases with hardware-backed key management via Android Keystore.
3. **Minimal retention** — The app processes messages to detect threats but does not retain raw message content beyond what's needed for the threat log. Automated pruning queries remove old data.
4. **User sovereignty** — Every detection channel can be independently enabled/disabled. Threat intelligence sharing is strictly opt-in and uses irreversible SHA-256 hashing.
5. **No MITM** — The VPN layer inspects DNS metadata only and does not install custom certificates or decrypt TLS traffic.
### Threat Model
| Threat | Mitigation |
|--------|-----------|
| Adversarial text evasion | Hybrid ML + rules scoring; rule engine catches keyword patterns even if ML is fooled |
| Model extraction via APK reverse engineering | ProGuard/R8 obfuscation (planned); ONNX models are INT8 quantized (reduced utility for extraction) |
| Notification content side-channel | NotificationListenerService filters by package name; non-SMS/email/messaging notifications are ignored |
| VPN traffic interception | DNS-only inspection; no custom CA; all HTTPS encryption preserved |
| Local database access (rooted device) | SQLCipher AES-256 encryption; key in Android Keystore (hardware-backed on supported devices) |
| Replay attacks on threat intel | SHA-256 hashing of identifiers; timestamp rounding for k-anonymity |
See [docs/SECURITY.md](docs/SECURITY.md) for the complete security architecture.
## Permissions & Justification
| Permission | Security Justification | Attack Surface Protected |
|-----------|----------------------|------------------------|
| `RECEIVE_SMS` / `READ_SMS` | SMS threat ingress and inbox polling fallback | Smishing |
| `READ_CALL_LOG` / `READ_PHONE_STATE` | Call state monitoring, caller ID reputation lookup | Vishing |
| `RECORD_AUDIO` | Call audio capture for on-device transcription (Vosk) | Vishing |
| `SYSTEM_ALERT_WINDOW` | Real-time fraud overlay during active calls | Vishing |
| `POST_NOTIFICATIONS` | Threat alert delivery across all channels | All vectors |
| `INTERNET` / `ACCESS_NETWORK_STATE` | VPN DNS relay to upstream resolver | Web threats |
| `CAMERA` | QR code scanning for malicious URL detection | Quishing (QR phishing) |
| `RECEIVE_BOOT_COMPLETED` | Auto-start protection services on device reboot | Persistence |
| `VIBRATE` | Haptic feedback for threat alerts | UX |
| NotificationListenerService | SMS/email/messaging notification interception | Smishing, phishing, messaging scams |
| AccessibilityService | Browser URL bar monitoring for web threat detection | Web threats |
| VpnService | DNS-level network traffic analysis and blocking | Malicious domains |
The app enforces a progressive onboarding flow — permissions are explained individually with security context before each grant. Accessibility Service is optional during onboarding and prompted when the user enables Web Shield.
## Getting Started
### Prerequisites
- **Android Studio** Ladybug (2024.3) or newer
- **JDK 21** (bundled with Android Studio)
- **Android SDK** API 36
- **Git LFS** (ONNX model files are stored via LFS)
- **Python 3.8+** (ML training pipeline only)
- **Physical Android device** (Android 8.0+) — recommended for full testing
### Build & Run
# Pull model files via Git LFS
git lfs install
git lfs pull
# Build debug APK (includes ONNX model verification)
.\gradlew.bat assembleDebug
# Install on connected device
.\gradlew.bat installDebug
# Run unit tests
.\gradlew.bat testDebugUnitTest
# Full local CI
.\gradlew.bat assembleDebug testDebugUnitTest lintDebug
### ML Training Pipeline
cd ml/
python -m venv .venv && .venv\Scripts\activate
pip install -r requirements.txt
python run_all.py # dataset → train DistilBERT → train IndicBERT → export to assets
See [docs/ML_PIPELINE.md](docs/ML_PIPELINE.md) for detailed training instructions.
### ONNX Model Requirement
The build requires two ONNX model files in `app/src/main/assets/rakshakx_model/`:
- `distilbert/model.onnx` (minimum 1MB)
- `indicbert/model.onnx` (minimum 500KB)
The Gradle task `verifyRakshakOnnxAssets` fails the build if these are missing or undersized. Pull via Git LFS or train with the ML pipeline.
## Configuration
### Model Configuration (`assets/rakshakx_model/model_config.json`)
{
"distilbert_confidence_threshold": 0.75,
"hinglish_threshold": 0.65,
"language_detection_threshold": 0.15,
"indic_languages": ["hi", "ta", "te", "kn", "ml", "mr", "bn", "gu", "pa", "ur", "or"],
"channels": ["sms", "email", "call", "web"],
"models": {
"distilbert": { "path": "distilbert/model.onnx", "vocab": "distilbert/vocab.txt", "max_seq_len": 128 },
"indicbert": { "path": "indicbert/model.onnx", "vocab": "indicbert/vocab.txt", "max_seq_len": 128 }
},
"labels": ["SAFE", "SCAM", "SUSPICIOUS"],
"version": "1.0.0"
}
### Risk Scoring Thresholds
| Final Score | Classification | Response |
|------------|---------------|----------|
| < 0.40 | SAFE | No alert |
| 0.40 -- 0.69 | SUSPICIOUS | Warning notification (ALERTS_SUSPICIOUS channel) |
| >= 0.70 | SCAM | Critical alert (ALERTS_CRITICAL channel), blocking options |
### RiskEngine Contextual Scoring
The rule-based engine applies 8 keyword categories with contextual modifiers:
| Modifier | Effect | Rationale |
|----------|--------|-----------|
| Sender reputation | +8 to +15 for repeat offenders | Persistent threat actors score higher |
| Time-of-day | Late night (11PM-6AM) = 1.2x | Scams disproportionately target late-night recipients |
| Combination amplification | +10 when urgency + credential keywords co-occur | Multi-signal attacks are more likely malicious |
| Banking false-positive reduction | Score reduction for legitimate debit/balance patterns | Reduces false alarms on genuine bank alerts |
| Multilingual keywords | Hindi, Kannada, Tamil, Telugu keyword lists | Regional scam vocabulary coverage |
## Testing
.\gradlew.bat testDebugUnitTest # JVM unit tests
.\gradlew.bat lintDebug # Static analysis
.\gradlew.bat connectedDebugAndroidTest # Instrumented tests (device required)
### Demo Mode
- `HackathonModeCallMonitorService` — simulated call fraud detection without real calls
- Correlation Screen "Demo Scenario" toggle — visualizes a multi-stage attack timeline
- `DemoScenario.kt` + `DemoAudioUtils.kt` — test audio generation
## Documentation
| Document | Description |
|----------|-------------|
| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | System architecture, channel design, service lifecycle, module dependencies |
| [SECURITY.md](docs/SECURITY.md) | Security model, threat model, privacy guarantees, encryption, VPN design |
| [ML_PIPELINE.md](docs/ML_PIPELINE.md) | ML training, ONNX export, language detection, hybrid scoring, OTA updates |
| [API_REFERENCE.md](docs/API_REFERENCE.md) | Key public APIs: ScamClassifierRouter, RiskEngine, CorrelationEngine, FraudDao |
| [SETUP_GUIDE.md](docs/SETUP_GUIDE.md) | Development environment setup, build, test, debug |
| [CHANGELOG.md](docs/CHANGELOG.md) | Version history |
| [ROADMAP.md](docs/ROADMAP.md) | Feature roadmap and technical debt tracking |
## Codebase Statistics
| Metric | Count |
|--------|-------|
| Kotlin source files | 193 (+23 new security modules) |
| Core packages | 18 (sms, call, email, web, integration, core/{integrity,appsecurity,network,firewall,privacy,breach,vault,forensics,correlation}, data, notifications, ui, onboarding) |
| UI Screens | 25 (10 original + 15 new screens) |
| Navigation tabs | 5 (Home, Shield, Network, Threats, More) |
| Reusable UI Components | PageHeader, GlassCard, ShieldStatusCard, ThreatCard, SecurityScoreGauge + 12 more |
| Room entities | 6 (SmsEvent, CallEvent, EmailEvent, WebEvent, ThreatSession, RiskScore) |
| Activities | 12 |
| Services | 6 (NotificationListener, Accessibility, VPN, FraudMonitoring, CallRecording, Overlay) |
| Broadcast Receivers | 4 (SMS, Call, Boot, NotificationAction) |
| ML Models | 3 (DistilBERT ONNX, IndicBERT ONNX, Vosk ASR) |
| MITRE ATT&CK techniques | 15 mapped (Mobile framework) |
| MITRE ATT&CK tactics | 13 (Initial Access → Resource Development) |
| Tracker signatures | 50+ (analytics, advertising, crash reporting, fingerprinting, social, profiling) |
| Traffic anomaly detectors | 5 (beaconing, DGA, DNS tunneling, cryptomining, exfiltration) |
| Wi-Fi security checks | 4 (encryption, evil-twin, DNS hijack, captive portal) |
| Network port scan targets | 12 ports (21/22/23/80/443/445/1883/5683/5900/3389/8080/8443) |
| Supported languages | 12 (English + 11 Indic) |
| Correlation strategies | 5 |
| Notification channels | 5 |
| SMS ingress paths | 3 (triple-redundancy) |
| Supported email clients | 6+ (Gmail, Outlook, Yahoo, ProtonMail, Samsung, Spark) |
| Supported messaging apps | 5+ (WhatsApp, Telegram, Signal, Google Messages, etc.) |
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full contributor guide.
Quick checklist:
1. Fork and create a feature branch: `git checkout -b feat/your-feature`
2. Ensure `assembleDebug`, `testDebugUnitTest`, and `lintDebug` all pass
3. Update Room schema snapshots if modifying entities
4. Do not modify detection logic, correlation engines, or ML pipelines without explicit approval
5. Open a PR with description and screenshots for UI changes
## License
This project is proprietary. Contact maintainers for licensing inquiries.
标签:Android, DSL, 反诈骗, 本地DNS拦截, 目录枚举, 移动安全, 端点防护(EDR)