Adversaries may perform software packing or virtual machine software protection to conceal their code. Software packing is a method of compressing or encrypting an executable. Packing an executable changes the file signature in an attempt to avoid signature-based detection. Most decompression techniques decompress the executable code in memory. Virtual machine software protection translates an executable's original code into a special format that only a special virtual machine can run. A virtual machine is then called to run this code.[1]
Utilities used to perform software packing are called packers. Example packers are MPRESS and UPX. A more comprehensive list of known packers is available, but adversaries may create their own packing techniques that do not leave the same artifacts as well-known packers to evade defenses.[2]
| ID | Name | Description |
|---|---|---|
| C0025 | 2016 Ukraine Electric Power Attack |
During the 2016 Ukraine Electric Power Attack, Sandworm Team used UPX to pack a copy of Mimikatz.[3] |
| S0504 | Anchor | |
| G1007 | Aoqin Dragon |
Aoqin Dragon has used the Themida packer to obfuscate malicious payloads.[5] |
| S0622 | AppleSeed | |
| G0016 | APT29 | |
| G0022 | APT3 | |
| G0082 | APT38 |
APT38 has used several code packing methods such as Themida, Enigma, VMProtect, and Obsidium, to pack their implants.[10] |
| G0087 | APT39 |
APT39 has packed tools with UPX, and has repacked a modified version of Mimikatz to thwart anti-virus detection.[11][12] |
| G0096 | APT41 |
APT41 uses packers such as Themida to obfuscate malicious files.[13] |
| S0373 | Astaroth |
Astaroth uses a software packer called Pe123\RPolyCryptor.[14] |
| S0638 | Babuk | |
| S0534 | Bazar | |
| S0268 | Bisonal |
Bisonal has used the MPRESS packer and similar tools for obfuscation.[20] |
| S0520 | BLINDINGCAN |
BLINDINGCAN has been packed with the UPX packer.[21] |
| C0017 | C0017 |
During C0017, APT41 used VMProtect to slow the reverse engineering of malicious binaries.[22] |
| S0020 | China Chopper |
China Chopper's client component is packed with UPX.[23] |
| S0611 | Clop | |
| S1105 | COATHANGER |
The first stage of COATHANGER is delivered as a packed file.[26] |
| S0614 | CostaBricks |
CostaBricks can implement a custom-built virtual machine mechanism to obfuscate its code.[27] |
| S0527 | CSPY Downloader |
CSPY Downloader has been packed with UPX.[28] |
| S0625 | Cuba | |
| G0070 | Dark Caracal |
Dark Caracal has used UPX to pack Bandook.[30] |
| S0334 | DarkComet |
DarkComet has the option to compress its payload using UPX or MPRESS.[31] |
| S0187 | Daserf | |
| S0281 | Dok | |
| S0695 | Donut | |
| S0694 | DRATzarus | |
| S0024 | Dyre |
Dyre has been delivered with encrypted resources and must be unpacked for execution.[36] |
| S0554 | Egregor |
Egregor's payloads are custom-packed, archived and encrypted to prevent analysis.[37][38] |
| G0066 | Elderwood |
Elderwood has packed malware payloads before delivery to victims.[39] |
| G1003 | Ember Bear |
Ember Bear has packed malware to help avoid detection.[40] |
| S0367 | Emotet | |
| S0512 | FatDuke |
FatDuke has been regularly repacked by its operators to create large binaries and evade detection.[42] |
| S0182 | FinFisher | |
| S0628 | FYAnti | |
| G0093 | GALLIUM |
GALLIUM packed some payloads using different types of packers, both known and custom.[46] |
| S0588 | GoldMax | |
| S0342 | GreyEnergy |
GreyEnergy is packed for obfuscation.[48] |
| S0132 | H1N1 | |
| S0601 | Hildegard | |
| S0431 | HotCroissant |
HotCroissant has used the open source UPX executable packer.[51] |
| S0398 | HyperBro | |
| S0483 | IcedID | |
| S0283 | jRAT | |
| G0094 | Kimsuky | |
| S0356 | KONNI | |
| S0513 | LiteDuke |
LiteDuke has been packed with multiple layers of encryption.[42] |
| S0447 | Lokibot |
Lokibot has used several packing methods for obfuscation.[56] |
| S0532 | Lucifer | |
| S0409 | Machete | |
| S0530 | Melcoz | |
| S0455 | Metamorfo | |
| S0083 | Misdat | |
| S1026 | Mongall | |
| G1019 | MoustachedBouncer |
MoustachedBouncer has used malware plugins packed with Themida.[62] |
| S0198 | NETWIRE | |
| C0002 | Night Dragon |
During Night Dragon, threat actors used software packing in its tools.[64] |
| S0264 | OopsIE |
OopsIE uses the SmartAssembly obfuscator to pack an embedded .Net Framework assembly used for C2.[65] |
| C0022 | Operation Dream Job |
During Operation Dream Job, Lazarus Group packed malicious .db files with Themida to evade detection.[35][66][67] |
| C0016 | Operation Dust Storm |
For Operation Dust Storm, the threat actors used UPX to pack some payloads.[61] |
| C0005 | Operation Spalax |
For Operation Spalax, the threat actors used a variety of packers, including CyaX, to obfuscate malicious executables.[68] |
| S0352 | OSX_OCEANLOTUS.D |
OSX_OCEANLOTUS.D has a variant that is packed with UPX.[69] |
| G0040 | Patchwork | |
| S0650 | QakBot | |
| S0565 | Raindrop |
Raindrop used a custom packer for its Cobalt Strike payload, which was compressed using the LZMA algorithm.[72][73] |
| G0106 | Rocke |
Rocke's miner has created UPX-packed files in the Windows Start Menu Folder.[74][75][76] |
| S0085 | S-Type | |
| S1018 | Saint Bot | |
| S0461 | SDBbot | |
| S0053 | SeaDuke | |
| S0444 | ShimRat |
ShimRat's loader has been packed with the compressed ShimRat core DLL and the legitimate DLL for it to hijack.[80] |
| S0543 | Spark |
Spark has been packed with Enigma Protector to obfuscate its contents.[81] |
| S1030 | Squirrelwaffle |
Squirrelwaffle has been packed with a custom packer to hide payloads.[82][83] |
| S0663 | SysUpdate | |
| G1018 | TA2541 |
TA2541 has used a .NET packer to obfuscate malicious files.[85] |
| G0092 | TA505 | |
| G0139 | TeamTNT |
TeamTNT has used UPX and Ezuri packer to pack its binaries.[86] |
| G0089 | The White Company |
The White Company has obfuscated their payloads through packing.[87] |
| G0027 | Threat Group-3390 |
Threat Group-3390 has packed malware and tools, including using VMProtect.[88][52] |
| S0671 | Tomiris | |
| S0678 | Torisma | |
| S0266 | TrickBot |
TrickBot leverages a custom packer to obfuscate its functionality.[90] |
| S0094 | Trojan.Karagany |
Trojan.Karagany samples sometimes use common binary packers such as UPX and Aspack on top of a custom Delphi binary packer.[91][92] |
| S0022 | Uroburos | |
| S0476 | Valak | |
| S0257 | VERMIN | |
| S0248 | yty | |
| S0251 | Zebrocy | |
| S0230 | ZeroT | |
| G0128 | ZIRCONIUM |
ZIRCONIUM has used multi-stage packers for exploit code.[101] |
| ID | Mitigation | Description |
|---|---|---|
| M1049 | Antivirus/Antimalware |
Employ heuristic-based malware detection. Ensure updated virus definitions and create custom signatures for observed malware. |
| ID | Data Source | Data Component | Detects |
|---|---|---|---|
| DS0022 | File | File Metadata |
Use file scanning to look for known software packers or artifacts of packing techniques. Packing is not a definitive indicator of malicious activity, because legitimate software may use packing techniques to reduce binary size or to protect proprietary code. |