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] |
| S0367 | Emotet | |
| S0512 | FatDuke |
FatDuke has been regularly repacked by its operators to create large binaries and evade detection.[41] |
| S0182 | FinFisher | |
| S0628 | FYAnti | |
| G0093 | GALLIUM |
GALLIUM packed some payloads using different types of packers, both known and custom.[45] |
| S0588 | GoldMax | |
| S0342 | GreyEnergy |
GreyEnergy is packed for obfuscation.[47] |
| S0132 | H1N1 | |
| S0601 | Hildegard | |
| S0431 | HotCroissant |
HotCroissant has used the open source UPX executable packer.[50] |
| S0398 | HyperBro | |
| S0483 | IcedID | |
| S0283 | jRAT | |
| G0094 | Kimsuky | |
| S0356 | KONNI | |
| S1160 | Latrodectus |
The Latrodectus payload has been packed for obfuscation.[55] |
| S0513 | LiteDuke |
LiteDuke has been packed with multiple layers of encryption.[41] |
| S1202 | LockBit 3.0 |
LockBit 3.0 can use code packing to hinder analysis.[56][57] |
| S0447 | Lokibot |
Lokibot has used several packing methods for obfuscation.[58] |
| S0532 | Lucifer | |
| S0409 | Machete | |
| G1051 | Medusa Group |
Medusa Group has packed the code of dropped kernel drivers using the packer ASM Guard.[61] |
| S0530 | Melcoz | |
| S0455 | Metamorfo | |
| S0083 | Misdat | |
| S1026 | Mongall | |
| G1019 | MoustachedBouncer |
MoustachedBouncer has used malware plugins packed with Themida.[65] |
| S0198 | NETWIRE | |
| C0002 | Night Dragon |
During Night Dragon, threat actors used software packing in its tools.[67] |
| S0264 | OopsIE |
OopsIE uses the SmartAssembly obfuscator to pack an embedded .Net Framework assembly used for C2.[68] |
| C0022 | Operation Dream Job |
During Operation Dream Job, Lazarus Group packed malicious .db files with Themida to evade detection.[35][69][70] |
| C0016 | Operation Dust Storm |
For Operation Dust Storm, the threat actors used UPX to pack some payloads.[64] |
| C0005 | Operation Spalax |
For Operation Spalax, the threat actors used a variety of packers, including CyaX, to obfuscate malicious executables.[71] |
| S0352 | OSX_OCEANLOTUS.D |
OSX_OCEANLOTUS.D has a variant that is packed with UPX.[72] |
| G0040 | Patchwork | |
| S0650 | QakBot | |
| S0565 | Raindrop |
Raindrop used a custom packer for its Cobalt Strike payload, which was compressed using the LZMA algorithm.[75][76] |
| S1130 | Raspberry Robin |
Raspberry Robin contains multiple payloads that are packed for defense evasion purposes and unpacked on runtime.[77] |
| S1240 | RedLine Stealer |
RedLine Stealer has used obfuscation tools such as DNGuard and Boxed App to pack their code.[78] |
| G0106 | Rocke |
Rocke's miner has created UPX-packed files in the Windows Start Menu Folder.[79][80][81] |
| S0085 | S-Type | |
| S1210 | Sagerunex |
Sagerunex has used VMProtect to pack and obscure itself.[82] |
| G1031 | Saint Bear |
Saint Bear clones .NET assemblies from other .NET binaries as well as cloning code signing certificates from other software to obfuscate the initial loader payload.[83] |
| S1018 | Saint Bot | |
| S0461 | SDBbot | |
| S0053 | SeaDuke | |
| C0058 | SharePoint ToolShell Exploitation |
During SharePoint ToolShell Exploitation, threat actors UPX-packed malicous payloads including 4L4MD4R ransomware.[87] |
| S0444 | ShimRat |
ShimRat's loader has been packed with the compressed ShimRat core DLL and the legitimate DLL for it to hijack.[88] |
| S0543 | Spark |
Spark has been packed with Enigma Protector to obfuscate its contents.[89] |
| S1030 | Squirrelwaffle |
Squirrelwaffle has been packed with a custom packer to hide payloads.[90][91] |
| G1053 | Storm-0501 |
Storm-0501 has used Themida to pack Cobalt Strike payloads.[92] |
| S1183 | StrelaStealer |
StrelaStealer variants have used packers to obfuscate payloads and make analysis more difficult.[93] |
| S0663 | SysUpdate | |
| G1018 | TA2541 |
TA2541 has used a .NET packer to obfuscate malicious files.[95] |
| G0092 | TA505 | |
| G0139 | TeamTNT |
TeamTNT has used UPX and Ezuri packer to pack its binaries.[96] |
| G0089 | The White Company |
The White Company has obfuscated their payloads through packing.[97] |
| G0027 | Threat Group-3390 |
Threat Group-3390 has packed malware and tools, including using VMProtect.[98][51] |
| S0671 | Tomiris | |
| S0678 | Torisma | |
| S0266 | TrickBot |
TrickBot leverages a custom packer to obfuscate its functionality.[100] |
| S0094 | Trojan.Karagany |
Trojan.Karagany samples sometimes use common binary packers such as UPX and Aspack on top of a custom Delphi binary packer.[101][102] |
| S1196 | Troll Stealer |
Troll Stealer has been delivered as a VMProtect-packed binary.[103][104] |
| S0022 | Uroburos | |
| S0476 | Valak | |
| S0257 | VERMIN | |
| G1017 | Volt Typhoon |
Volt Typhoon has used the Ultimate Packer for Executables (UPX) to obfuscate the FRP client files BrightmetricAgent.exe and SMSvcService.ex) and the port scanning utility ScanLine.[109] |
| S1207 | XLoader |
XLoader uses various packers, including CyaX, to obfuscate malicious executables.[110] |
| S0248 | yty | |
| S0251 | Zebrocy | |
| S0230 | ZeroT | |
| G0128 | ZIRCONIUM |
ZIRCONIUM has used multi-stage packers for exploit code.[115] |
| ID | Mitigation | Description |
|---|---|---|
| M1049 | Antivirus/Antimalware |
Employ heuristic-based malware detection. Ensure updated virus definitions and create custom signatures for observed malware. |
| ID | Name | Analytic ID | Analytic Description |
|---|---|---|---|
| DET0023 | Obfuscated Binary Unpacking Detection via Behavioral Patterns | AN0066 |
Detection of unpacking behavior through abnormal memory allocation, followed by executable code injection and execution from non-image sections. |
| AN0067 |
Correlates ELF file execution with high-entropy writable memory segments and self-modifying code patterns. |
||
| AN0068 |
Detection of packed Mach-O binaries unpacking into memory and transferring control to dynamically modified code segments. |