Detection of Input Capture

Technique Detected:  Input Capture | T1417

ID: DET0705
Domains: Mobile
Analytics: AN1825, AN1826
Version: 1.0
Created: 21 October 2025
Last Modified: 12 May 2026

Analytics

AN1825

For Android, detect Input Capture by correlating analyst-visible device/network evidence and management state; use streaming or batched telemetry only where the documented collector is deployed. Correlate API Calls via Application Vetting / Instrumented Dynamic Analysis [Dynamic API/runtime trace: AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED received by listener_app NOT IN $AccessibilityAllowList$]; Network Traffic Flow via Android Enterprise Network Logging / Enterprise VPN [DevicePolicyManager.retrieveNetworkLogs(): DnsEvent / ConnectEvent; VPN flow metadata]; Permissions Request via Android Enterprise DPC / Application Vetting [DevicePolicyManager.getPermissionGrantState(); PackageManager manifest/requested-permission review]. Alert on a sequence or state change inconsistent with the device/app baseline, approved management policy, or expected user workflow; do not infer unobserved API calls, file/process activity, or payload content from management state alone.

Log Sources
Data Component Name Channel
API Calls (DC0112) mobile:DynamicAnalysis Dynamic API/runtime trace: AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED received by listener_app NOT IN $AccessibilityAllowList$
Network Traffic Flow (DC0078) android:EnterpriseNetworkLog DevicePolicyManager.retrieveNetworkLogs(): DnsEvent / ConnectEvent; VPN flow metadata
Permissions Request (DC0116) android:DevicePolicyManager DevicePolicyManager.getPermissionGrantState(); PackageManager manifest/requested-permission review
Mutable Elements
Field Description
AccessibilityAllowList Approved assistive tech, screen readers, approved IME apps. Keep minimal. Derive from MDM catalog.
TargetAppList Banking, auth, enterprise SSO, email app packages. Derive from MDM app catalog by data tier.
KeylogUplinkThreshold Default 10KB — keystroke logs are small but high-value. Tightening: 1KB.
InputExfilWindow Default 300s.
AppCDNList Per-app CDN. Derive by measurement.

AN1826

For iOS, detect Input Capture by correlating analyst-visible device/network evidence and management state; use streaming or batched telemetry only where the documented collector is deployed. Correlate Application State via Apple MDM [InstalledApplicationList / ManagedApplicationList]; Network Traffic Flow via Apple Network Extension / Enterprise VPN [NEFilterFlow / per-app VPN / secure-web-gateway flow metadata]; Permissions Request via Application Vetting [Code-signing entitlements and Info.plist privacy usage-description keys]. Alert on a sequence or state change inconsistent with the device/app baseline, approved management policy, or expected user workflow; do not infer unobserved API calls, file/process activity, or payload content from management state alone.

Log Sources
Data Component Name Channel
Application State (DC0123) iOS:MDM InstalledApplicationList / ManagedApplicationList
Network Traffic Flow (DC0078) iOS:NetworkExtension NEFilterFlow / per-app VPN / secure-web-gateway flow metadata
Permissions Request (DC0116) mobile:ApplicationVetting Code-signing entitlements and Info.plist privacy usage-description keys
Mutable Elements
Field Description
KeyboardAllowList IT-approved keyboard bundle IDs. Keep minimal.
KeyboardVendorEndpoints Known cloud sync endpoints for each approved keyboard vendor.
KeystrokeFrequencyThreshold Default 2 packets/sec — matches human average typing rate. Derive from keystroke baseline measurement.
KeylogSessionThreshold Default 300s sustained — confirms ongoing capture vs one-time sync.