SYMBOLCOMMON_NAMEaka. SYNONYMS
win.purplewave (Back to overview)

PurpleWave

VTCollection    

ZScaler reported on a new Infostealer called PurpleWave, which is written in C++ and silently installs itself onto a user’s system. It connects to a command and control (C&C) server to send system information and installs new malware onto the infected system.

The author of this malware is advertising and selling PurpleWave stealer on Russian cybercrime forums for 5,000 RUB (US$68) with lifetime updates and 4,000 RUB (US$54) with only two updates.

References
2020-08-14ZscalerMohd Sadique
PurpleWave - A New Infostealer from Russia
PurpleWave
Yara Rules
[TLP:WHITE] win_purplewave_auto (20260504 | Detects win.purplewave.)
rule win_purplewave_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-05-04"
        version = "1"
        description = "Detects win.purplewave."
        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.purplewave"
        malpedia_rule_date = "20260422"
        malpedia_hash = "a182e35da64e6d71cb55f125c4d4225196523f14"
        malpedia_version = "20260504"
        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 = { c20400 e8???????? 85c0 0f8440a40000 c3 833d????????ff 7503 }
            // n = 7, score = 400
            //   c20400               | ret                 4
            //   e8????????           |                     
            //   85c0                 | test                eax, eax
            //   0f8440a40000         | je                  0xa446
            //   c3                   | ret                 
            //   833d????????ff       |                     
            //   7503                 | jne                 5

        $sequence_1 = { c3 8b853cffffff 2500100000 0f8415000000 81a53cffffffffefffff 8d8d08ffffff }
            // n = 6, score = 400
            //   c3                   | ret                 
            //   8b853cffffff         | mov                 eax, dword ptr [ebp - 0xc4]
            //   2500100000           | and                 eax, 0x1000
            //   0f8415000000         | je                  0x1b
            //   81a53cffffffffefffff     | and    dword ptr [ebp - 0xc4], 0xffffefff
            //   8d8d08ffffff         | lea                 ecx, [ebp - 0xf8]

        $sequence_2 = { ff75d0 e8???????? eb15 807dd700 7426 8b45c4 8b4dac }
            // n = 7, score = 400
            //   ff75d0               | push                dword ptr [ebp - 0x30]
            //   e8????????           |                     
            //   eb15                 | jmp                 0x17
            //   807dd700             | cmp                 byte ptr [ebp - 0x29], 0
            //   7426                 | je                  0x28
            //   8b45c4               | mov                 eax, dword ptr [ebp - 0x3c]
            //   8b4dac               | mov                 ecx, dword ptr [ebp - 0x54]

        $sequence_3 = { a1???????? 83664c00 83663800 894640 a1???????? 894644 6a02 }
            // n = 7, score = 400
            //   a1????????           |                     
            //   83664c00             | and                 dword ptr [esi + 0x4c], 0
            //   83663800             | and                 dword ptr [esi + 0x38], 0
            //   894640               | mov                 dword ptr [esi + 0x40], eax
            //   a1????????           |                     
            //   894644               | mov                 dword ptr [esi + 0x44], eax
            //   6a02                 | push                2

        $sequence_4 = { 8d4da0 e8???????? 8d8d20ffffff e8???????? 8d8d18ffffff e8???????? 8d4d88 }
            // n = 7, score = 400
            //   8d4da0               | lea                 ecx, [ebp - 0x60]
            //   e8????????           |                     
            //   8d8d20ffffff         | lea                 ecx, [ebp - 0xe0]
            //   e8????????           |                     
            //   8d8d18ffffff         | lea                 ecx, [ebp - 0xe8]
            //   e8????????           |                     
            //   8d4d88               | lea                 ecx, [ebp - 0x78]

        $sequence_5 = { e8???????? 8d8de4feffff 885dfc e8???????? 8b9544ffffff 8d8de4feffff e8???????? }
            // n = 7, score = 400
            //   e8????????           |                     
            //   8d8de4feffff         | lea                 ecx, [ebp - 0x11c]
            //   885dfc               | mov                 byte ptr [ebp - 4], bl
            //   e8????????           |                     
            //   8b9544ffffff         | mov                 edx, dword ptr [ebp - 0xbc]
            //   8d8de4feffff         | lea                 ecx, [ebp - 0x11c]
            //   e8????????           |                     

        $sequence_6 = { e9???????? 8b85dcfeffff 83e001 0f8412000000 83a5dcfefffffe 8b8dbcfeffff e9???????? }
            // n = 7, score = 400
            //   e9????????           |                     
            //   8b85dcfeffff         | mov                 eax, dword ptr [ebp - 0x124]
            //   83e001               | and                 eax, 1
            //   0f8412000000         | je                  0x18
            //   83a5dcfefffffe       | and                 dword ptr [ebp - 0x124], 0xfffffffe
            //   8b8dbcfeffff         | mov                 ecx, dword ptr [ebp - 0x144]
            //   e9????????           |                     

        $sequence_7 = { 8b048d201e4900 5a 8854072c 8b45e4 8bf0 eb13 6a0a }
            // n = 7, score = 400
            //   8b048d201e4900       | mov                 eax, dword ptr [ecx*4 + 0x491e20]
            //   5a                   | pop                 edx
            //   8854072c             | mov                 byte ptr [edi + eax + 0x2c], dl
            //   8b45e4               | mov                 eax, dword ptr [ebp - 0x1c]
            //   8bf0                 | mov                 esi, eax
            //   eb13                 | jmp                 0x15
            //   6a0a                 | push                0xa

        $sequence_8 = { ff75e8 ff75f0 e8???????? 8b45f4 5f 5e 5b }
            // n = 7, score = 400
            //   ff75e8               | push                dword ptr [ebp - 0x18]
            //   ff75f0               | push                dword ptr [ebp - 0x10]
            //   e8????????           |                     
            //   8b45f4               | mov                 eax, dword ptr [ebp - 0xc]
            //   5f                   | pop                 edi
            //   5e                   | pop                 esi
            //   5b                   | pop                 ebx

        $sequence_9 = { e8???????? 6a0e e8???????? 83c40c 8d8c24a8000000 8bd0 c7003519ef54 }
            // n = 7, score = 400
            //   e8????????           |                     
            //   6a0e                 | push                0xe
            //   e8????????           |                     
            //   83c40c               | add                 esp, 0xc
            //   8d8c24a8000000       | lea                 ecx, [esp + 0xa8]
            //   8bd0                 | mov                 edx, eax
            //   c7003519ef54         | mov                 dword ptr [eax], 0x54ef1935

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