Adversaries may communicate using application layer protocols associated with web protocols traffic to avoid detection/network filtering by blending in with existing traffic. Commands to remote mobile devices, and often the results of those commands, will be embedded within the protocol traffic between the mobile client and server.
Web protocols such as HTTP and HTTPS are used for web traffic as well as well as notification services native to mobile messaging services such as Google Cloud Messaging (GCM) and newly, Firebase Cloud Messaging (FCM), (GCM/FCM: two-way communication) and Apple Push Notification Service (APNS; one-way server-to-device). Such notification services leverage HTTP/S via the respective API and are commonly abused on Android and iOS respectively in order blend in with routine device traffic making it difficult for enterprises to inspect.
| ID | Name | Description |
|---|---|---|
| S1061 | AbstractEmu |
AbstractEmu can use HTTP to communicate with the C2 server.[1] |
| S1095 | AhRat | |
| S0525 | Android/AdDisplay.Ashas |
Android/AdDisplay.Ashas has communicated with the C2 server using HTTP.[3] |
| S0304 | Android/Chuli.A |
Android/Chuli.A used HTTP uploads to a URL as a command and control mechanism.[4] |
| S0540 | Asacub |
Asacub has communicated with the C2 using HTTP POST requests.[5] |
| S1079 | BOULDSPY |
BOULDSPY uses unencrypted HTTP traffic between the victim and C2 infrastructure.[6] |
| S1094 | BRATA |
BRATA can use both HTTP and WebSockets to communicate with the C2 server.[7] |
| S0432 | Bread |
Bread communicates with the C2 server using HTTP requests.[8] |
| C0033 | C0033 |
During C0033, PROMETHIUM used StrongPity to communicate with the C2 server using HTTPS.[9] |
| S0480 | Cerberus | |
| S1083 | Chameleon |
Chameleon has used HTTP to communicate with the C2 server.[11] |
| S0555 | CHEMISTGAMES |
CHEMISTGAMES has used HTTPS for C2 communication.[12] |
| S1225 | CherryBlos |
CherryBlos has communicated with the C2 server using HTTPS.[13] |
| S0426 | Concipit1248 |
Concipit1248 communicates with the C2 server using HTTP requests.[14] |
| S0425 | Corona Updates |
Corona Updates communicates with the C2 server using HTTP requests.[14] |
| S9004 | Crocodilus |
Crocodilus has communicated to HTTP C2 nodes.[15] |
| G0070 | Dark Caracal |
Dark Caracal controls implants using standard HTTP communication.[16] |
| S0479 | DEFENSOR ID |
DEFENSOR ID has used Firebase Cloud Messaging for C2.[17] |
| S9005 | DocSwap |
DocSwap has sent a POST request to downcat.php while recording the access time and APK URL path.[18] |
| S0478 | EventBot | |
| S0522 | Exobot | |
| S0405 | Exodus |
Exodus One checks in with the command and control server using HTTP POST requests.[21] |
| S0509 | FakeSpy | |
| S1067 | FluBot |
FluBot can use HTTP POST requests on port 80 for communicating with its C2 server.[23] |
| S1093 | FlyTrap | |
| S1231 | GodFather | |
| S0535 | Golden Cup |
Golden Cup has communicated with the C2 using MQTT and HTTP.[26] |
| S0551 | GoldenEagle |
GoldenEagle has used HTTP POST requests for C2.[27] |
| S0536 | GPlayed |
GPlayed has communicated with the C2 using HTTP requests or WebSockets as a backup.[28] |
| S0406 | Gustuff |
Gustuff communicates with the command and control server using HTTP requests.[29] |
| S1077 | Hornbill |
Hornbill can use HTTP and HTTP POST to communicate information to the C2.[30] |
| S0463 | INSOMNIA |
INSOMNIA communicates with the C2 server using HTTPS requests.[31] |
| S1185 | LightSpy |
LightSpy has used both HTTPS and Websockets to communicate with the C2.[32][33][34] |
| S9040 | NGate |
NGate has used TLS to communicate with the C2 server.[35] NGate has also used HTTP to communicate with the C2 server.[36] |
| S1241 | RatMilad |
RatMilad has used HTTP POST requests for communicating with its C2 server.[37] |
| S0539 | Red Alert 2.0 |
Red Alert 2.0 has communicated with the C2 using HTTP.[38] |
| S0326 | RedDrop | |
| S0403 | Riltok |
Riltok communicates with the command and control server using HTTP requests.[40] |
| S0411 | Rotexy |
Rotexy can communicate with the command and control server using JSON payloads sent in HTTP POST request bodies. It can also communicate by using JSON messages sent through Google Cloud Messaging.[41] |
| S0313 | RuMMS | |
| S1062 | S.O.V.A. |
S.O.V.A. can use the open-source project RetroFit for C2 communication.[43] |
| S1055 | SharkBot |
SharkBot can use HTTP to send C2 messages to infected devices.[44] |
| S0549 | SilkBean | |
| S0327 | Skygofree |
Skygofree can be controlled via HTTP, XMPP, FirebaseCloudMessaging, or GoogleCloudMessaging in older versions.[45] |
| S1195 | SpyC23 |
SpyC23 can communicate with the Command and Control server using HTTPS and Firebase Cloud Messaging (FCM).[46][47] |
| S0427 | TrickMo |
TrickMo communicates with the C2 by sending JSON objects over unencrypted HTTP requests.[48] |
| S0307 | Trojan-SMS.AndroidOS.Agent.ao |
Trojan-SMS.AndroidOS.Agent.ao uses Google Cloud Messaging (GCM) for command and control.[49] |
| S0306 | Trojan-SMS.AndroidOS.FakeInst.a |
Trojan-SMS.AndroidOS.FakeInst.a uses Google Cloud Messaging (GCM) for command and control.[49] |
| S0308 | Trojan-SMS.AndroidOS.OpFake.a |
Trojan-SMS.AndroidOS.OpFake.a uses Google Cloud Messaging (GCM) for command and control.[49] |
| S0418 | ViceLeaker |
ViceLeaker uses HTTP requests for C2 communication.[50][51] |
| S0311 | YiSpecter |
This type of attack technique cannot be easily mitigated with preventive controls since it is based on the abuse of system features.
| ID | Name | Analytic ID | Analytic Description |
|---|---|---|---|
| DET0620 | Detection of Web Protocols | AN1681 |
For Android, detect Web Protocols 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: FirebaseMessaging.getToken() called for project_id NOT IN $FCMAllowList$ — rogue FCM project registration is the adversary enabling C2 over Google infrastructure]; Network Connection Creation via Android Enterprise Network Logging / Enterprise VPN [DevicePolicyManager.retrieveNetworkLogs(): DnsEvent / ConnectEvent; VPN flow metadata]; Network Traffic Content via Enterprise Secure Web Gateway / Proxy [DNS/HTTP(S) inspection or proxy transaction metadata where enterprise decryption/inspection is deployed]. 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. |
| AN1682 |
For iOS, detect Web Protocols 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: UNUserNotificationCenter or legacy UIApplication.registerForRemoteNotifications with Apple Team ID NOT IN $APNSAllowList$ — rogue APNS sender registration]; Network Connection Creation via Apple Network Extension / Enterprise VPN [NEFilterFlow / per-app VPN / secure-web-gateway flow metadata]; Network Traffic Content via Enterprise Secure Web Gateway / Proxy [DNS/HTTP(S) inspection or proxy transaction metadata where enterprise decryption/inspection is deployed]. 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. |