SYMBOLCOMMON_NAMEaka. SYNONYMS
win.hotwax (Back to overview)

HOTWAX

Actor(s): Lazarus Group

VTCollection    

HOTWAX is a module that upon starting imports all necessary system API functions, and searches for a .CHM file. HOTWAX decrypts a payload using the Spritz algorithm with a hard-coded key and then searches the target process and attempts to inject the decrypted payload module from the CHM file into the address space of the target process.

References
2018-10-03 ⋅ Virus Bulletin ⋅ Michal Poslušný, Peter Kálnai
Lazarus Group A Mahjong Game Played with Different Sets of Tiles
Bankshot BanPolMex RAT FuwuqiDrama HOTWAX KillDisk (Lazarus) NACHOCHEESE REDSHAWL WannaCryptor
2018-03-01 ⋅ Kaspersky Labs ⋅ Kaspersky Lab
Lazarus under the Hood
BlueNoroff HOTWAX REDSHAWL WORMHOLE
2018-01-01 ⋅ FireEye ⋅ FireEye
APT38
Bitsran BLINDTOAD BOOTWRECK Contopee DarkComet DYEPACK HOTWAX NESTEGG PowerRatankba REDSHAWL WORMHOLE Lazarus Group
2017-05-30 ⋅ Group-IB ⋅ Group-IB
Lazarus Arisen: Architecture, Techniques and Attribution
HOTWAX NACHOCHEESE Ratankba
2017-04-03 ⋅ Kaspersky Labs ⋅ GReAT
Lazarus under the Hood
Alreay DYEPACK HOTWAX NESTEGG RatankbaPOS REDSHAWL WORMHOLE Lazarus Group
2017-02-20 ⋅ BAE Systems ⋅ Sergei Shevchenko
Lazarus’ False Flag Malware
HOTWAX NACHOCHEESE
2017-02-16 ⋅ ESET Research ⋅ Peter Kálnai
Demystifying targeted malware used against Polish banks
BanPolMex RAT HOTWAX NACHOCHEESE
Yara Rules
[TLP:WHITE] win_hotwax_auto (20260917 | Detects win.hotwax.)
rule win_hotwax_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-09-17"
        version = "1"
        description = "Detects win.hotwax."
        info = "autogenerated rule brought to you by yara-signator"
        tool = "yara-signator v0.6.0"
        signator_config = "callsandjumps;datarefs;binvalue"
        malpedia_reference = "https://malpedia.caad.fkie.fraunhofer.de/details/win.hotwax"
        malpedia_rule_date = "20260916"
        malpedia_hash = "53a643781c18e08f4a50949af60172d837a0b6f6"
        malpedia_version = "20260917"
        malpedia_license = "CC BY-SA 4.0"
        malpedia_sharing = "TLP:WHITE"

    /* DISCLAIMER
     * The strings used in this rule have been automatically selected from the
     * disassembly of memory dumps and unpacked files, using YARA-Signator.
     * The code and documentation is published here:
     * https://github.com/fxb-cocacoding/yara-signator
     * As Malpedia is used as data source, please note that for a given
     * number of families, only single samples are documented.
     * This likely impacts the degree of generalization these rules will offer.
     * Take the described generation method also into consideration when you
     * apply the rules in your use cases and assign them confidence levels.
     */


    strings:
        $sequence_0 = { 488d15a3c20000 498bf8 e8???????? 488bd8 4885c0 7467 }
            // n = 6, score = 100
            //   488d15a3c20000       | dec                 esp
            //   498bf8               | lea                 esp, [ecx + 8]
            //   e8????????           |                     
            //   488bd8               | dec                 ebp
            //   4885c0               | mov                 ebp, dword ptr [esp]
            //   7467                 | jmp                 0xc65

        $sequence_1 = { 488905???????? ff15???????? 488d158ad00000 488bcb }
            // n = 4, score = 100
            //   488905????????       |                     
            //   ff15????????         |                     
            //   488d158ad00000       | lea                 ecx, [eax + 3]
            //   488bcb               | dec                 ecx

        $sequence_2 = { 488d1583b70000 458d4803 498bc8 4c8d15a9d60000 }
            // n = 4, score = 100
            //   488d1583b70000       | mov                 dword ptr [esp + 0x28], eax
            //   458d4803             | inc                 ecx
            //   498bc8               | mov                 ecx, 1
            //   4c8d15a9d60000       | dec                 eax

        $sequence_3 = { 488981a0000000 83611000 c7411c01000000 c781c800000001000000 c6817401000043 c681f701000043 488d05e8cf0000 }
            // n = 7, score = 100
            //   488981a0000000       | sar                 ebp, 5
            //   83611000             | dec                 esp
            //   c7411c01000000       | lea                 esi, [0xa9a0]
            //   c781c800000001000000     | and    ebx, 0x1f
            //   c6817401000043       | dec                 eax
            //   c681f701000043       | imul                ebx, ebx, 0x58
            //   488d05e8cf0000       | dec                 ebx

        $sequence_4 = { 41b803010000 488bd7 ff15???????? 418d8770050000 }
            // n = 4, score = 100
            //   41b803010000         | lea                 edi, [0xd45f]
            //   488bd7               | mov                 edx, 0x58
            //   ff15????????         |                     
            //   418d8770050000       | cmp                 edi, esi

        $sequence_5 = { 33d2 41ff5500 448bd8 85c0 0f85ef020000 8b4500 8b4d10 }
            // n = 7, score = 100
            //   33d2                 | dec                 eax
            //   41ff5500             | sar                 eax, 5
            //   448bd8               | dec                 eax
            //   85c0                 | imul                ebp, ebp, 0x58
            //   0f85ef020000         | dec                 eax
            //   8b4500               | lea                 ecx, [0x36a7]
            //   8b4d10               | dec                 eax

        $sequence_6 = { 488d158d350000 488bce ff15???????? 488bc8 ff15???????? 488905???????? }
            // n = 6, score = 100
            //   488d158d350000       | dec                 ebx
            //   488bce               | mov                 eax, dword ptr [edi + esi*8]
            //   ff15????????         |                     
            //   488bc8               | inc                 edx
            //   ff15????????         |                     
            //   488905????????       |                     

        $sequence_7 = { ff15???????? 488d1572d40000 488bcb 488905???????? ff15???????? 488d154bd40000 }
            // n = 6, score = 100
            //   ff15????????         |                     
            //   488d1572d40000       | arpl                dx, cx
            //   488bcb               | mov                 al, byte ptr [ecx + ebx + 0x1c]
            //   488905????????       |                     
            //   ff15????????         |                     
            //   488d154bd40000       | inc                 edx

        $sequence_8 = { 84c0 741d 498bd6 0f1f4000 }
            // n = 4, score = 100
            //   84c0                 | test                eax, eax
            //   741d                 | je                  0x45f
            //   498bd6               | dec                 eax
            //   0f1f4000             | lea                 ecx, [0xa4db]

        $sequence_9 = { 488d0d13a20000 488b04c1 41f644070840 740b 41807d001a 0f8432f9ffff e8???????? }
            // n = 7, score = 100
            //   488d0d13a20000       | inc                 ecx
            //   488b04c1             | movsx               eax, al
            //   41f644070840         | inc                 cx
            //   740b                 | mov                 dword ptr [ebp + edx*2 + 0x58], eax
            //   41807d001a           | je                  0xcc
            //   0f8432f9ffff         | test                ebx, ebx
            //   e8????????           |                     

    condition:
        7 of them and filesize < 198656
}
Download all Yara Rules