Adversaries may attempt to make a payload or file difficult to discover or analyze by encrypting, encoding, or otherwise obfuscating its contents on the device or in transit. This is common behavior that can be used across different platforms and the network to evade defenses.
Payloads may be compressed, archived, or encrypted in order to avoid detection. These payloads may be used during Initial Access or later to mitigate detection. Portions of files can also be encoded to hide the plaintext strings that would otherwise help defenders with discovery. Payloads may also be split into separate, seemingly benign files that only reveal malicious functionality when reassembled.[1]
ID | Name | Description |
---|---|---|
S1061 | AbstractEmu |
AbstractEmu has encoded files, such as exploit binaries, to potentially use during and after the rooting process.[2] |
S1095 | AhRat |
AhRat can use an encryption key received from its C2 to encrypt and decrypt configuration files and exfiltrated data.[3] |
S0525 | Android/AdDisplay.Ashas |
Android/AdDisplay.Ashas has hidden the C2 server address using base-64 encoding. [4] |
S0524 | AndroidOS/MalLocker.B |
AndroidOS/MalLocker.B has employed both name mangling and meaningless variable names in source. AndroidOS/MalLocker.B has stored encrypted payload code in the Assets directory, coupled with a custom decryption routine that assembles a .dex file by passing data through Android Intent objects. [1] |
S0540 | Asacub | |
S0293 | BrainTest |
BrainTest stores a secondary Android app package (APK) in its assets directory in encrypted form, and decrypts the payload at runtime.[6] |
S1094 | BRATA |
BRATA has employed code obfuscation and encryption of configuration files.[7][8] |
S0432 | Bread |
Bread uses various tricks to obfuscate its strings including standard and custom encryption, programmatically building strings at runtime, and splitting unencrypted strings with repeated delimiters to break up keywords. Bread has also abused Java and JavaScript features to obfuscate code. Bread payloads have hidden code in native libraries and encrypted JAR files in the data section of an ELF file. Bread has stored DEX payloads as base64-encoded strings in the Android manifest and internal Java classes.[9][10] |
C0033 | C0033 |
During C0033, PROMETHIUM used StrongPity to obfuscate code and strings to evade detection.[11] |
S0529 | CarbonSteal |
CarbonSteal has used incorrect file extensions and encryption to hide most of its assets, including secondary APKs, configuration files, and JAR or DEX files.[12] |
S0480 | Cerberus |
Cerberus uses standard payload and string obfuscation techniques.[13] |
S0323 | Charger |
Charger encodes strings into binary arrays to make it difficult to inspect them. It also loads code from encrypted resources dynamically and includes meaningless commands that mask the actual commands passing through.[14] |
S0555 | CHEMISTGAMES |
CHEMISTGAMES has encrypted its DEX payload.[15] |
S0550 | DoubleAgent |
DoubleAgent has used an AES encrypted file in the assets folder with an unsuspecting name (e.g. ‘GoogleMusic.png’) for holding configuration and C2 information.[12] |
S1054 | Drinik |
Drinik has used custom encryption to hide strings, potentially to evade antivirus products.[16] |
S0420 | Dvmap |
Dvmap decrypts executables from archive files stored in the |
S0478 | EventBot |
EventBot dynamically loads its malicious functionality at runtime from an RC4-encrypted TTF file. EventBot also utilizes ProGuard to obfuscate the generated APK file.[18] |
S0509 | FakeSpy |
FakeSpy stores its malicious code in encrypted asset files that are decrypted at runtime. Newer versions of FakeSpy encrypt the C2 address.[19] |
S0408 | FlexiSpy | |
S1067 | FluBot |
FluBot can obfuscated class, string, and method names in newer malware versions.[21] |
S0423 | Ginp | |
S0421 | GolfSpy |
GolfSpy encodes its configurations using a customized algorithm.[23] |
S0536 | GPlayed |
GPlayed has base64-encoded the exfiltrated data, replacing some of the base64 characters to further obfuscate the data.[24] |
S0406 | Gustuff |
Gustuff obfuscated command information using a custom base85-based encoding.[25] |
S0544 | HenBox |
HenBox has obfuscated components using XOR, ZIP with a single-byte key or ZIP/Zlib compression wrapped with RC4 encryption.[26] |
S0463 | INSOMNIA |
INSOMNIA obfuscates various pieces of information within the application.[27] |
S0485 | Mandrake | |
S0407 | Monokle | |
S0286 | OBAD |
OBAD contains encrypted code along with an obfuscated decryption routine to make it difficult to analyze.[30] |
S0399 | Pallas |
Pallas stores domain information and URL paths as hardcoded AES-encrypted, base64-encoded strings.[31] |
S0539 | Red Alert 2.0 |
Red Alert 2.0 has stored data embedded in the strings.xml resource file.[32] |
S0411 | Rotexy |
Starting in 2017, the Rotexy DEX file was packed with garbage strings and/or operations.[33] |
S1055 | SharkBot |
SharkBot can use a Domain Generation Algorithm to decode the C2 server location.[34] |
S0549 | SilkBean |
SilkBean has hidden malicious functionality in a second stage file and has encrypted C2 server information.[12] |
S0545 | TERRACOTTA |
TERRACOTTA has stored encoded strings.[35] |
S1056 | TianySpy |
TianySpy has encrypted C2 details, email addresses, and passwords.[36] |
S0427 | TrickMo |
TrickMo contains obfuscated function, class, and variable names, and encrypts its shared preferences using Java’s |
G0112 | Windshift |
Windshift has encrypted application strings using AES in ECB mode and Blowfish, and stored strings encoded in hex during Operation BULL. Further, in Operation BULL, encryption keys were stored within the application’s launcher icon file.[38] |
S0312 | WireLurker |
WireLurker obfuscates its payload through complex code structure, multiple component versions, file hiding, code obfuscation and customized encryption to thwart anti-reversing.[39] |
S0489 | WolfRAT | |
S0318 | XLoader for Android |
XLoader for Android loads an encrypted DEX code payload.[41] |
S0494 | Zen |
This type of attack technique cannot be easily mitigated with preventive controls since it is based on the abuse of system features.
ID | Data Source | Data Component | Detects |
---|---|---|---|
DS0041 | Application Vetting | API Calls |
Dynamic analysis, when used in application vetting, may in some cases be able to identify malicious code in obfuscated or encrypted form by detecting the code at execution time (after it is deobfuscated or decrypted). Some application vetting techniques apply reputation analysis of the application developer and can alert to potentially suspicious applications without actual examination of application code. |