Mobile malware that can send, delete or alter text messages turns a single infected phone into a spreader of phishing links, a hidden command channel and a way to quietly remove the SMS warnings and codes that would expose fraud. MITRE ATT&CK for Mobile records this as T1582 SMS Control, an Impact technique listed for Android only. This guide explains the Android permissions and default SMS app model the technique depends on, what ATT&CK's procedure examples show, why iOS apps cannot do the same, and how to prevent, detect and respond on managed devices. It is written for mobile and endpoint security teams, SOC analysts and identity teams who still rely on SMS for one-time codes, and builds on the MITRE ATT&CK for Mobile Guide.
Key takeaways
- Two levels of control. Any Android app holding
SEND_SMScan send texts; only the default SMS app receivesSMS_DELIVER_ACTIONand can write to the SMS provider, which is what allows editing, hiding and deleting messages. - Default SMS app changes are a high-value signal. ATT&CK records SharkBot changing the device's default SMS handler; a work device whose default SMS app is not the expected one should be investigated.
- Google Play restricts SMS permissions. Play policy limits the SMS permission group to default handlers and a short list of exceptions, so most apps requesting them arrive from outside Play.
- iOS apps cannot send texts silently. Apple's MessageUI framework only presents a compose sheet for the person's approval, and ATT&CK lists no iOS platform for T1582.
- SMS is a weak authenticator. Malware that can read and delete SMS defeats SMS one-time codes, so move high-value accounts to phishing-resistant MFA.
What T1582 covers
ATT&CK describes T1582 as adversaries deleting, altering or sending SMS messages without user authorisation, to hide command and control (C2) messages, spread malware or cause other external effects. It is achieved by requesting the RECEIVE_SMS or SEND_SMS permissions, and, if the app is the device's default SMS handler, by registering for the SMS_DELIVER broadcast, which allows writing to the SMS content provider and so inserting, modifying or deleting arbitrary messages.
| Attribute | ATT&CK v20 Mobile value |
|---|---|
| ID and name | T1582 SMS Control |
| Tactic | Impact |
| Platforms | Android |
| Mitigation | M1011 User Guidance |
| Detection strategy | DET0599 Detection of SMS Control |
The Android SMS permission model
Android introduced the default SMS app in Android 4.4. Android's developer blog post for that release states that only the app receiving the SMS_DELIVER_ACTION broadcast, the user-selected default SMS app, can write to the SMS provider. Other apps can observe new messages through SMS_RECEIVED_ACTION but cannot write to the provider. Any app with SEND_SMS can still send messages through SmsManager, and the system writes those sent messages into the provider for it.
| What the app holds | What it can do | Typical malicious use |
|---|---|---|
SEND_SMS | Send SMS in the background | Spreading phishing links to contacts; premium-rate fraud; sending logs or status to the operator |
RECEIVE_SMS (and READ_SMS) | Observe and read incoming messages | Capturing one-time codes; receiving SMS commands |
| Default SMS app role | Receive SMS_DELIVER_ACTION and write to the SMS provider | Hiding, altering or deleting messages, including bank alerts and C2 traffic |
Google Play's SMS and Call Log permissions policy restricts READ_SMS, RECEIVE_MMS, RECEIVE_SMS, RECEIVE_WAP_PUSH, SEND_SMS and WRITE_SMS to apps actively registered as the default SMS, Phone or Assistant handler, plus listed exceptions such as enterprise device management and SMS-based financial transactions, each declared in the Play Console and subject to review. The policy points developers to the SMS Retriever API, which handles verification codes without any extra app permissions. An app outside those cases asking for SMS permissions is, by Play's own rules, unusual.
What the procedure examples show
ATT&CK lists more than 30 software entries under T1582, almost all Android banking trojans and spyware. The table groups representative examples as ATT&CK states them.
| Behaviour | Examples in ATT&CK |
|---|---|
| Spreading by SMS | FluBot can send SMS phishing messages to other contacts on an infected device; Crocodilus can send messages to a number, a list of numbers or all contacts |
| Hiding and deleting messages | Stealth Mango deletes incoming SMS from specified numbers or containing particular strings; TrickMo can delete SMS; Mandrake can block, forward, hide and send SMS; SharkBot can hide and send SMS |
| Taking the default SMS role | SharkBot can change which application is the device's default SMS handler |
| Interception and forwarding | Drinik can steal incoming SMS and send SMS; Exobot can forward SMS messages; Anubis can send, receive and delete SMS |
| Command channel and logging | BusyGasper can send an SMS after boot, send logs by SMS and delete all SMS; Rotexy can automatically reply to and delete SMS |
For how these families are delivered and monetised, see the Android Banking Trojans Guide and the Vishing and Smishing Guide.
iOS: why the technique does not apply the same way
ATT&CK lists Android only for T1582. Apple's MessageUI documentation states that MFMessageComposeViewController displays the standard message composition interface, that the app can only construct the initial message and present it for a person's approval, that the person may cancel it, and that if they choose to send, the Messages app takes responsibility for sending. A third-party iOS app therefore cannot send a text without the user tapping Send. The iOS risks around SMS sit elsewhere: smishing that reaches the user, and SIM swap at the carrier, covered in the SIM Swap Fraud Guide.
Prevention on managed Android devices
- Block untrusted installs: on Android Enterprise, keep
advancedSecurityOverrides.untrustedAppsPolicyatDISALLOW_INSTALL(the documented default) andgooglePlayProtectVerifyAppsatVERIFY_APPS_ENFORCED. Most SMS-abusing malware arrives as a side-loaded APK; see APK sideloading. - Deny SMS permissions by policy: the Android Management API's
permissionGrantscan setandroid.permission.SEND_SMSandRECEIVE_SMStoDENYfor managed apps that have no business need, overridingdefaultPermissionPolicy. - Disable SMS where it is not needed: the policy field
smsDisableddisables sending and receiving SMS on the device, which suits data-only kiosks, scanners and shared devices. See the Kiosk and Shared Device Security Guide. - User guidance (M1011): ATT&CK's mitigation is to tell users to be careful which apps they grant SMS access, and not to change the default SMS handler to an app they do not recognise. Put that in onboarding material for BYOD users, whose personal profile your MDM may not control.
- Review permissions in app vetting: treat SMS permissions on any non-messaging app as a finding; see Mobile App Permissions.
Detection
ATT&CK's DET0599 analytic correlates SMS permission state or the default SMS role with SMS sending, interception, message database changes or concealment by an app outside expected messaging workflows, especially from background or locked-device state without recent user interaction.
| Data source | Collected from | Signal |
|---|---|---|
| Application Permission | MDM logs | A managed app granted SEND_SMS or RECEIVE_SMS inconsistent with its approved function |
| Application Permission | MDM logs | Default SMS handler changes to an app that is not on the baseline |
| OS API Execution | Mobile EDR or MTD telemetry | An app sends, intercepts or deletes SMS, or writes to the SMS provider |
| File Modification | Mobile EDR or MTD telemetry | Message records inserted, updated, deleted or hidden right after an SMS is received or sent |
Two signals outside the device also help. Carriers and business SMS providers can flag unusual outbound SMS volume from a corporate line, and users reporting that "everyone in my contacts got a strange text from me" is a classic sign of FluBot-style spreading. Treat such reports as an incident, not a help desk ticket.
Where identity fits
SMS one-time codes and SMS-delivered recovery links are only as safe as the phone's message store. Malware with RECEIVE_SMS can read codes as they arrive, and malware holding the default SMS role can delete the message so the user never sees it. That makes SMS unsuitable for privileged users, administrators and any account whose compromise would expose service credentials or API keys. Use phishing-resistant methods instead; see the Phishing-Resistant MFA Guide and the Authenticator Apps and OTP Guide. If your own apps verify phone numbers, use the SMS Retriever API rather than requesting SMS permissions.
Response
- Contain: mark the device non-compliant and block corporate access; on the carrier side, consider suspending outbound SMS for the line if spreading is under way.
- Identify the app: from MDM inventory, find apps holding SMS permissions or the default SMS role that are not on your baseline.
- Remove and reset: uninstall the app, restore the expected default SMS app, and factory reset if the app resists removal or used accessibility abuse to protect itself.
- Revoke and re-enrol credentials: treat any SMS codes received during the infection window as exposed: reset passwords, revoke sessions and replace SMS MFA registrations.
- Warn recipients: where the device sent phishing texts, tell affected contacts and, for staff, issue an internal warning with the message text.
Measuring it
- SMS permission exposure: number of managed apps holding
SEND_SMSorRECEIVE_SMSoutside an approved list (target zero). - Default SMS baseline: percentage of managed devices whose default SMS app is on the approved list.
- SMS MFA reliance: percentage of privileged accounts still using SMS as a second factor (target zero).
- Response time: median time from detection or user report to device containment.
Common failure patterns
- Personal profile blind spot: BYOD work profiles protect corporate apps, but malware in the personal profile can still read SMS codes for corporate accounts.
- SMS codes for admins: privileged and break-glass accounts still using SMS one-time codes.
- No default SMS baseline: MDM collects app inventory but nobody checks which app holds the SMS role.
- Reports treated as spam: contacts reporting odd texts from a colleague are not escalated to security.
- Over-broad permission grants:
defaultPermissionPolicyset toGRANTfor convenience, granting SMS permissions to any managed app that asks.
Framework mapping
| Framework | Reference | Relevance to T1582 |
|---|---|---|
| NIST CSF 2.0 | PR.PS-05, DE.CM-09 | Prevent unauthorised software; monitor runtime environments |
| NIST SP 800-53 Rev 5 | AC-19, CM-7, CM-11, SI-3, IA-2 | Mobile device access control, least functionality, user-installed software, malicious code protection, identification and authentication |
| CIS Controls v8.1 | Control 2 (Inventory and Control of Software Assets), Control 6 (Access Control Management), Control 10 (Malware Defenses) | Approved apps; MFA; malware defences on devices |
| ISO/IEC 27001:2022 Annex A | A.8.1, A.8.5, A.8.7 | User endpoint devices, secure authentication, protection against malware |
| ATT&CK Mobile mitigation | M1011 | User guidance on SMS access and default handler |
Practitioner checklist
- Keep untrusted installs blocked and Play Protect verification enforced on every Android Enterprise policy.
- Deny
SEND_SMSandRECEIVE_SMSby policy to managed apps without a documented need. - Set
smsDisabledon kiosks, scanners and shared devices that never need SMS. - Baseline the default SMS app and alert on changes.
- Remove SMS one-time codes from privileged accounts and move them to phishing-resistant MFA.
- Escalate user reports of unexpected texts sent from a colleague's number as incidents.
- Include SMS permission and default handler guidance in BYOD onboarding.
Standards and references
- MITRE ATT&CK: SMS Control, Mobile technique T1582
- Android Developers Blog: Getting Your SMS Apps Ready for KitKat
- Google Play: Use of SMS or Call Log permission groups
- Apple Developer: MFMessageComposeViewController
- Google: Android Management API policy reference
- Google: SMS Retriever API overview
- Google: Use Google Play Protect to help keep your apps safe
Related NHI Mgmt Group resources: MITRE ATT&CK for Mobile Guide · Mobile Malware Guide · Android Enterprise Security Guide · Phone Number Fraud · Mobile T1616 Call Control · Mobile T1517 Access Notifications · Mobile Impact Tactic