Detection of Software Discovery

Technique Detected:  Software Discovery | T1418

ID: DET0600
Domains: Mobile
Analytics: AN1646, AN1647
Version: 1.0
Created: 21 October 2025
Last Modified: 12 May 2026

Analytics

AN1646

For Android, detect Software Discovery 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: PackageManager.getInstalledPackages() or getInstalledApplications() called by app NOT IN $AppEnumAllowList$]; Application State via Android Enterprise / EMM [Managed package inventory/status and package metadata]; Network Connection Creation via Android Enterprise Network Logging / Enterprise VPN [DevicePolicyManager.retrieveNetworkLogs(): DnsEvent / ConnectEvent; VPN flow metadata]. 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: PackageManager.getInstalledPackages() or getInstalledApplications() called by app NOT IN $AppEnumAllowList$
Application State (DC0123) android:EMM Managed package inventory/status and package metadata
Network Connection Creation (DC0082) android:EnterpriseNetworkLog DevicePolicyManager.retrieveNetworkLogs(): DnsEvent / ConnectEvent; VPN flow metadata
Mutable Elements
Field Description
AppEnumAllowList MDM agent, system diagnostic apps. Minimal.
AppCDNList Per-app CDN. Derive by measurement.
FollowOnWindow Default 120s. Tightening: 30s.

AN1647

For iOS, detect Software Discovery 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: UIApplication.canOpenURL() called > $URLProbeThreshold$ times with schemes NOT declared in app's LSApplicationQueriesSchemes within $ProbeWindow$]; Application State via Apple MDM [InstalledApplicationList / ManagedApplicationList]; Network Connection Creation via Apple Network Extension / Enterprise VPN [NEFilterFlow / per-app VPN / secure-web-gateway flow metadata]. 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: UIApplication.canOpenURL() called > $URLProbeThreshold$ times with schemes NOT declared in app's LSApplicationQueriesSchemes within $ProbeWindow$
Application State (DC0123) iOS:MDM InstalledApplicationList / ManagedApplicationList
Network Connection Creation (DC0082) iOS:NetworkExtension NEFilterFlow / per-app VPN / secure-web-gateway flow metadata
Mutable Elements
Field Description
URLProbeThreshold Default 10 undeclared scheme probes within window. iOS enforces 50-probe limit total.
ProbeWindow Default 30s.
AppCDNList Per-app CDN. Derive by measurement.
FollowOnWindow Default 120s.