Download New Code at Runtime

An app could download and execute dynamic code (not included in the original application package) after installation to evade static analysis techniques (and potentially dynamic analysis techniques) used for application vetting or application store review.[1]

On Android, dynamic code could include native code, Dalvik code, or JavaScript code that uses the Android WebView's JavascriptInterface capability.[2]

On iOS, techniques also exist for executing dynamic code downloaded after application installation.[3][4]

ID: T1407
Sub-techniques:  No sub-techniques
Tactic Type: Post-Adversary Device Access
Tactic: Defense Evasion
Platforms: Android, iOS
MTC ID: APP-20
Version: 1.2
Created: 25 October 2017
Last Modified: 09 October 2019
Provided by LAYER 8

Procedure Examples

ID Name Description
S0422 Anubis

Anubis can download attacker-specified APK files.[5]

S0293 BrainTest

Original samples of BrainTest download their exploit packs for rooting from a remote server after installation.[6]

S0432 Bread

Bread has utilized JavaScript within WebViews that loaded a URL hosted on a Bread-controlled server which provided functions to run. Bread downloads billing fraud execution steps at runtime.[7]

S0655 BusyGasper

BusyGasper can download a payload or updates from either its C2 server or email attachments in the adversary’s inbox.[8]

S0529 CarbonSteal

CarbonSteal can dynamically load additional functionality.[9]

S0480 Cerberus

Cerberus can update the malicious payload module on command.[10]

S0555 CHEMISTGAMES

CHEMISTGAMES can download new modules while running.[11]

S0505 Desert Scorpion

Desert Scorpion has been distributed in multiple stages.[12]

S0550 DoubleAgent

DoubleAgent has downloaded additional code to root devices, such as TowelRoot.[9]

S0420 Dvmap

Dvmap can download code and binaries from the C2 server to execute on the device as root.[13]

S0507 eSurv

eSurv’s Android version is distributed in three stages: the dropper, the second stage payload, and the third stage payload which is Exodus.[14]

S0478 EventBot

EventBot can download new libraries when instructed to.[15]

S0405 Exodus

Exodus One, after checking in, sends a POST request and then downloads Exodus Two, the second stage binaries.[16]

S0577 FrozenCell

FrozenCell has downloaded and installed additional applications.[17]

S0535 Golden Cup

Golden Cup has been distributed in two stages.[18]

S0551 GoldenEagle

GoldenEagle can download new code to update itself.[9]

S0536 GPlayed

GPlayed has the capability to remotely load plugins and download and compile new .NET code.[19]

S0544 HenBox

HenBox can load additional Dalvik code while running.[20]

S0325 Judy

Judy bypasses Google Play's protections by downloading a malicious payload at runtime after installation.[21]

S0485 Mandrake

Mandrake can download its second (Loader) and third (Core) stages after the dropper is installed.[22]

S0295 RCSAndroid

RCSAndroid has the ability to dynamically download and execute new code at runtime.[23]

S0539 Red Alert 2.0

Red Alert 2.0 can download additional overlay templates.[24]

S0549 SilkBean

SilkBean can install new applications which are obtained from the C2 server.[9]

S0327 Skygofree

Skygofree can download executable code from the C2 server after the implant starts or after a specific command.[25]

S0324 SpyDealer

SpyDealer downloads and executes root exploits from a remote server.[26]

S0545 TERRACOTTA

TERRACOTTA can download additional modules at runtime via JavaScript eval statements.[27]

S0424 Triada

Triada utilizes a backdoor in a Play Store app to install additional trojanized apps from the Command and Control server.[28]

S0506 ViperRAT

ViperRAT has been installed in two stages and can secretly install new applications.[29]

G0112 Windshift

Windshift has included malware functionality capable of downloading new DEX files at runtime during Operation BULL.[30]

S0489 WolfRAT

WolfRAT can update the running malware.[31]

S0494 Zen

Zen can dynamically load executable code from remote sources.[32]

S0287 ZergHelper

ZergHelper attempts to extend its capabilities via dynamic updating of its code.[33]

Mitigations

ID Mitigation Description
M1005 Application Vetting

Application vetting techniques could (either statically or dynamically) look for indications that the application downloads and executes new code at runtime (e.g., on Android use of DexClassLoader, System.load, or the WebView JavaScriptInterface capability, or on iOS use of JSPatch or similar capabilities). Unfortunately, this is only a partial mitigation, as additional scrutiny would still need to be applied to applications that use these techniques, as the techniques are often used without malicious intent, and because applications may employ other techniques such as to hide their use of these techniques.

M1006 Use Recent OS Version

On Android 10 and above devices, applications that target Android API level 29 or higher cannot execute native code stored in the application's internal data storage directory, limiting the ability of applications to download and execute native code at runtime.[34]

Detection

Downloading new code at runtime can be difficult to detect, and therefore enterprises may be better served focusing on detection at other stages of adversary behavior.

References

  1. Sebastian Poeplau, Yanick Fratantonio, Antonio Bianchi, Christopher Kruegel, Giovanni Vigna. (2014, February). Execute This! Analyzing Unsafe and Malicious Dynamic Code Loading in Android Applications. Retrieved December 21, 2016.
  2. Tom Sutcliffe. (2014, July 31). Remote code execution on Android devices. Retrieved December 9, 2016.
  3. Jing Xie, Zhaofeng Chen, Jimmy Su. (2016, January 27). HOT OR NOT? THE BENEFITS AND RISKS OF IOS REMOTE HOT PATCHING. Retrieved December 9, 2016.
  4. Tielei Wang, Kangjie Lu, Long Lu, Simon Chung, and Wenke Lee. (2013, August). Jekyll on iOS: When Benign Apps Become Evil. Retrieved December 9, 2016.
  5. K. Sun. (2019, January 17). Google Play Apps Drop Anubis, Use Motion-based Evasion. Retrieved January 20, 2021.
  6. Chris Dehghanpoor. (2016, January 6). Brain Test re-emerges: 13 apps found in Google Play Read more: Brain Test re-emerges: 13 apps found in Google Play. Retrieved December 21, 2016.
  7. A. Guertin, V. Kotov, Android Security & Privacy Team. (2020, January 9). PHA Family Highlights: Bread (and Friends) . Retrieved April 27, 2020.
  8. Alexey Firsh. (2018, August 29). BusyGasper – the unfriendly spy. Retrieved October 1, 2021.
  9. A. Kumar, K. Del Rosso, J. Albrecht, C. Hebeisen. (2020, June 1). Mobile APT Surveillance Campaigns Targeting Uyghurs - A collection of long-running Android tooling connected to a Chinese mAPT actor. Retrieved November 10, 2020.
  10. Threat Fabric. (2019, August). Cerberus - A new banking Trojan from the underworld. Retrieved June 26, 2020.
  11. B. Leonard, N. Mehta. (2019, November 21). The Secret Life of Sandworms. Retrieved December 31, 2020.
  12. A. Blaich, M. Flossman. (2018, April 16). Lookout finds new surveillanceware in Google Play with ties to known threat actor targeting the Middle East. Retrieved September 11, 2020.
  13. R. Unuchek. (2017, June 8). Dvmap: the first Android malware with code injection. Retrieved December 10, 2019.
  14. A. Bauer. (2019, April 8). Lookout discovers phishing sites distributing new iOS and Android surveillanceware. Retrieved September 11, 2020.
  15. D. Frank, L. Rochberger, Y. Rimmer, A. Dahan. (2020, April 30). EventBot: A New Mobile Banking Trojan is Born. Retrieved June 26, 2020.
  16. Security Without Borders. (2019, March 29). Exodus: New Android Spyware Made in Italy. Retrieved September 3, 2019.
  17. Michael Flossman. (2017, October 5). FrozenCell: Multi-platform surveillance campaign against Palestinians. Retrieved November 11, 2020.
  1. R. Iarchy, E. Rynkowski. (2018, July 5). GoldenCup: New Cyber Threat Targeting World Cup Fans. Retrieved October 29, 2020.
  2. V. Ventura. (2018, October 11). GPlayed Trojan - .Net playing with Google Market . Retrieved November 24, 2020.
  3. A. Hinchliffe, M. Harbison, J. Miller-Osborn, et al. (2018, March 13). HenBox: The Chickens Come Home to Roost. Retrieved September 9, 2019.
  4. CheckPoint. (2017, May 25). The Judy Malware: Possibly the largest malware campaign found on Google Play. Retrieved September 18, 2018.
  5. R. Gevers, M. Tivadar, R. Bleotu, A. M. Barbatei, et al.. (2020, May 14). Uprooting Mandrake: The Story of an Advanced Android Spyware Framework That Went Undetected for 4 Years. Retrieved July 15, 2020.
  6. Veo Zhang. (2015, July 21). Hacking Team RCSAndroid Spying Tool Listens to Calls; Roots Devices to Get In. Retrieved December 22, 2016.
  7. J. Chandraiah. (2018, July 23). Red Alert 2.0: Android Trojan targets security-seekers. Retrieved December 14, 2020.
  8. Nikita Buchka and Alexey Firsh. (2018, January 16). Skygofree: Following in the footsteps of HackingTeam. Retrieved September 24, 2018.
  9. Wenjun Hu, Cong Zheng and Zhi Xu. (2017, July 6). SpyDealer: Android Trojan Spying on More Than 40 Apps. Retrieved September 18, 2018.
  10. Satori Threat Intelligence and Research Team. (2020, August). TERRACOTTA Android Malware: A Technical Study. Retrieved December 18, 2020.
  11. Lukasz Siewierski. (2019, June 6). PHA Family Highlights: Triada. Retrieved July 16, 2019.
  12. M. Flossman. (2017, February 16). ViperRAT: The mobile APT targeting the Israeli Defense Force that should be on your radar. Retrieved September 11, 2020.
  13. The BlackBerry Research & Intelligence Team. (2020, October). BAHAMUT: Hack-for-Hire Masters of Phishing, Fake News, and Fake Apps. Retrieved February 8, 2021.
  14. W. Mercer, P. Rascagneres, V. Ventura. (2020, May 19). The wolf is back... . Retrieved July 20, 2020.
  15. Siewierski, L. (2019, January 11). PHA Family Highlights: Zen and its cousins . Retrieved July 27, 2020.
  16. Claud Xiao. (2016, February 21). Pirated iOS App Store’s Client Successfully Evaded Apple iOS Code Review. Retrieved December 12, 2016.
  17. Android Developers. (n.d.). Behavior changes: all apps - Removed execute permission for app home directory. Retrieved September 20, 2019.