rule win_nymaim_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-09-17"
        version = "1"
        description = "Detects win.nymaim."
        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.nymaim"
        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 = { 89d8 01c8 31d2 f7f7 }
            // n = 4, score = 1800
            //   89d8                 | mov                 eax, ebx
            //   01c8                 | add                 eax, ecx
            //   31d2                 | xor                 edx, edx
            //   f7f7                 | div                 edi

        $sequence_1 = { 92 31d2 bf64000000 f7f7 }
            // n = 4, score = 1700
            //   92                   | xchg                eax, edx
            //   31d2                 | xor                 edx, edx
            //   bf64000000           | mov                 edi, 0x64
            //   f7f7                 | div                 edi

        $sequence_2 = { 09c0 0f94c1 09c8 6bc064 09c0 }
            // n = 5, score = 1700
            //   09c0                 | or                  eax, eax
            //   0f94c1               | sete                cl
            //   09c8                 | or                  eax, ecx
            //   6bc064               | imul                eax, eax, 0x64
            //   09c0                 | or                  eax, eax

        $sequence_3 = { 31d2 f7f7 92 31d2 }
            // n = 4, score = 1700
            //   31d2                 | xor                 edx, edx
            //   f7f7                 | div                 edi
            //   92                   | xchg                eax, edx
            //   31d2                 | xor                 edx, edx

        $sequence_4 = { c1eb13 331d???????? 31c3 c1e808 }
            // n = 4, score = 1600
            //   c1eb13               | shr                 ebx, 0x13
            //   331d????????         |                     
            //   31c3                 | xor                 ebx, eax
            //   c1e808               | shr                 eax, 8

        $sequence_5 = { c1e105 01c8 c1c307 30c3 }
            // n = 4, score = 1600
            //   c1e105               | shl                 ecx, 5
            //   01c8                 | add                 eax, ecx
            //   c1c307               | rol                 ebx, 7
            //   30c3                 | xor                 bl, al

        $sequence_6 = { 31c9 38f0 83d100 38d0 83d900 c1e105 01c8 }
            // n = 7, score = 1600
            //   31c9                 | xor                 ecx, ecx
            //   38f0                 | cmp                 al, dh
            //   83d100               | adc                 ecx, 0
            //   38d0                 | cmp                 al, dl
            //   83d900               | sbb                 ecx, 0
            //   c1e105               | shl                 ecx, 5
            //   01c8                 | add                 eax, ecx

        $sequence_7 = { 00d3 8a16 301e 46 01fb }
            // n = 5, score = 1300
            //   00d3                 | add                 bl, dl
            //   8a16                 | mov                 dl, byte ptr [esi]
            //   301e                 | xor                 byte ptr [esi], bl
            //   46                   | inc                 esi
            //   01fb                 | add                 ebx, edi

        $sequence_8 = { c1e808 31c3 895e0c 89d8 }
            // n = 4, score = 1100
            //   c1e808               | shr                 eax, 8
            //   31c3                 | xor                 ebx, eax
            //   895e0c               | mov                 dword ptr [esi + 0xc], ebx
            //   89d8                 | mov                 eax, ebx

        $sequence_9 = { 8b5514 8b12 8b4d0c 8b5d18 }
            // n = 4, score = 1100
            //   8b5514               | mov                 edx, dword ptr [ebp + 0x14]
            //   8b12                 | mov                 edx, dword ptr [edx]
            //   8b4d0c               | mov                 ecx, dword ptr [ebp + 0xc]
            //   8b5d18               | mov                 ebx, dword ptr [ebp + 0x18]

        $sequence_10 = { f7e0 0fc8 01d0 894704 }
            // n = 4, score = 1100
            //   f7e0                 | mul                 eax
            //   0fc8                 | bswap               eax
            //   01d0                 | add                 eax, edx
            //   894704               | mov                 dword ptr [edi + 4], eax

        $sequence_11 = { 8b5604 0116 8b4e08 014e04 }
            // n = 4, score = 1100
            //   8b5604               | mov                 edx, dword ptr [esi + 4]
            //   0116                 | add                 dword ptr [esi], edx
            //   8b4e08               | mov                 ecx, dword ptr [esi + 8]
            //   014e04               | add                 dword ptr [esi + 4], ecx

        $sequence_12 = { 8b5d18 8b1b 4f 31c0 fec2 }
            // n = 5, score = 1100
            //   8b5d18               | mov                 ebx, dword ptr [ebp + 0x18]
            //   8b1b                 | mov                 ebx, dword ptr [ebx]
            //   4f                   | dec                 edi
            //   31c0                 | xor                 eax, eax
            //   fec2                 | inc                 dl

        $sequence_13 = { 0f854fe70000 448835???????? 015308 395320 0f845a13fdff f6461c20 c705????????8a50d8e8 }
            // n = 7, score = 100
            //   0f854fe70000         | lea                 ecx, [ebp - 0x10]
            //   448835????????       |                     
            //   015308               | dec                 eax
            //   395320               | mov                 edx, dword ptr [ebp + 0x500]
            //   0f845a13fdff         | inc                 esp
            //   f6461c20             | mov                 edx, dword ptr [ebp + 0x4e0]
            //   c705????????8a50d8e8     |     

        $sequence_14 = { 55 89e5 83ec10 8b4508 8d0d3430d201 }
            // n = 5, score = 100
            //   55                   | push                ebp
            //   89e5                 | mov                 ebp, esp
            //   83ec10               | sub                 esp, 0x10
            //   8b4508               | mov                 eax, dword ptr [ebp + 8]
            //   8d0d3430d201         | lea                 ecx, [0x1d23034]

        $sequence_15 = { 890424 894c2404 e8???????? 8d0d3430d201 }
            // n = 4, score = 100
            //   890424               | mov                 dword ptr [esp], eax
            //   894c2404             | mov                 dword ptr [esp + 4], ecx
            //   e8????????           |                     
            //   8d0d3430d201         | lea                 ecx, [0x1d23034]

        $sequence_16 = { 4189c6 892d???????? 4189f9 4189d8 4489f1 8b8424c8000000 89ea }
            // n = 7, score = 100
            //   4189c6               | mov                 ecx, edi
            //   892d????????         |                     
            //   4189f9               | mov                 edx, esi
            //   4189d8               | mov                 ecx, ebp
            //   4489f1               | inc                 ecx
            //   8b8424c8000000       | mov                 esi, eax
            //   89ea                 | inc                 ecx

        $sequence_17 = { 5b 5d c3 8b45f0 8b0c850440d201 }
            // n = 5, score = 100
            //   5b                   | pop                 ebx
            //   5d                   | pop                 ebp
            //   c3                   | ret                 
            //   8b45f0               | mov                 eax, dword ptr [ebp - 0x10]
            //   8b0c850440d201       | mov                 ecx, dword ptr [eax*4 + 0x1d24004]

        $sequence_18 = { 448b4d30 4189c3 4531d3 66813d????????65cb 0f8484920200 41f7d1 4531c8 }
            // n = 7, score = 100
            //   448b4d30             | lea                 ecx, [esp + 0x40]
            //   4189c3               | dec                 ecx
            //   4531d3               | mov                 ebx, esp
            //   66813d????????65cb     |     
            //   0f8484920200         | push                ebx
            //   41f7d1               | je                  0x19
            //   4531c8               | dec                 eax

        $sequence_19 = { 48833d????????00 7417 488d4df0 e8???????? 488b9500050000 448b95e0040000 31db }
            // n = 7, score = 100
            //   48833d????????00     |                     
            //   7417                 | mov                 ecx, esi
            //   488d4df0             | mov                 eax, dword ptr [esp + 0xc8]
            //   e8????????           |                     
            //   488b9500050000       | mov                 edx, ebp
            //   448b95e0040000       | ja                  0xfffe5975
            //   31db                 | dec                 eax

        $sequence_20 = { 48813d????????00000050 0f84b243ffff 48c705????????00000000 31ff 4883bba800000000 742b ba20000000 }
            // n = 7, score = 100
            //   48813d????????00000050     |     
            //   0f84b243ffff         | je                  0xffff43b8
            //   48c705????????00000000     |     
            //   31ff                 | xor                 edi, edi
            //   4883bba800000000     | dec                 eax
            //   742b                 | cmp                 dword ptr [ebx + 0xa8], 0
            //   ba20000000           | je                  0x2d

        $sequence_21 = { 56 83ec28 8b450c 8b4d08 8d154e30d201 }
            // n = 5, score = 100
            //   56                   | push                esi
            //   83ec28               | sub                 esp, 0x28
            //   8b450c               | mov                 eax, dword ptr [ebp + 0xc]
            //   8b4d08               | mov                 ecx, dword ptr [ebp + 8]
            //   8d154e30d201         | lea                 edx, [0x1d2304e]

        $sequence_22 = { 31c9 8b55f4 8b75ec 89723c c7424003000000 }
            // n = 5, score = 100
            //   31c9                 | xor                 ecx, ecx
            //   8b55f4               | mov                 edx, dword ptr [ebp - 0xc]
            //   8b75ec               | mov                 esi, dword ptr [ebp - 0x14]
            //   89723c               | mov                 dword ptr [edx + 0x3c], esi
            //   c7424003000000       | mov                 dword ptr [edx + 0x40], 3

        $sequence_23 = { 4421db 89c2 4409d2 4431ca 4c8d4d40 48ff05???????? 89d1 }
            // n = 7, score = 100
            //   4421db               | xor                 ebx, ebx
            //   89c2                 | inc                 esp
            //   4409d2               | mov                 ecx, dword ptr [ebp + 0x30]
            //   4431ca               | inc                 ecx
            //   4c8d4d40             | mov                 ebx, eax
            //   48ff05????????       |                     
            //   89d1                 | inc                 ebp

        $sequence_24 = { 31d2 890c24 c744240400000000 8945f4 8955f0 e8???????? 8d0d8630d201 }
            // n = 7, score = 100
            //   31d2                 | xor                 edx, edx
            //   890c24               | mov                 dword ptr [esp], ecx
            //   c744240400000000     | mov                 dword ptr [esp + 4], 0
            //   8945f4               | mov                 dword ptr [ebp - 0xc], eax
            //   8955f0               | mov                 dword ptr [ebp - 0x10], edx
            //   e8????????           |                     
            //   8d0d8630d201         | lea                 ecx, [0x1d23086]

        $sequence_25 = { 83ec44 8b4508 8d0d2030d201 31d2 890c24 c744240400000000 }
            // n = 6, score = 100
            //   83ec44               | sub                 esp, 0x44
            //   8b4508               | mov                 eax, dword ptr [ebp + 8]
            //   8d0d2030d201         | lea                 ecx, [0x1d23020]
            //   31d2                 | xor                 edx, edx
            //   890c24               | mov                 dword ptr [esp], ecx
            //   c744240400000000     | mov                 dword ptr [esp + 4], 0

        $sequence_26 = { 53 56 57 83ec44 8b4508 8d0d2030d201 }
            // n = 6, score = 100
            //   53                   | push                ebx
            //   56                   | push                esi
            //   57                   | push                edi
            //   83ec44               | sub                 esp, 0x44
            //   8b4508               | mov                 eax, dword ptr [ebp + 8]
            //   8d0d2030d201         | lea                 ecx, [0x1d23020]

        $sequence_27 = { 0f876f59feff 488d4c2440 e8???????? e9???????? 4989e3 53 ff0d???????? }
            // n = 7, score = 100
            //   0f876f59feff         | mov                 ecx, edi
            //   488d4c2440           | inc                 ecx
            //   e8????????           |                     
            //   e9????????           |                     
            //   4989e3               | mov                 eax, ebx
            //   53                   | inc                 esp
            //   ff0d????????         |                     

        $sequence_28 = { 4189c0 895c2420 4189f9 48890d???????? 89f2 89e9 e8???????? }
            // n = 7, score = 100
            //   4189c0               | mov                 edx, 0x20
            //   895c2420             | inc                 ecx
            //   4189f9               | mov                 eax, eax
            //   48890d????????       |                     
            //   89f2                 | mov                 dword ptr [esp + 0x20], ebx
            //   89e9                 | inc                 ecx
            //   e8????????           |                     

    condition:
        1 of them and filesize < 2375680
}