rule win_stealc_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-09-17"
        version = "1"
        description = "Detects win.stealc."
        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.stealc"
        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 = { e8???????? e8???????? 81c480000000 e9???????? }
            // n = 4, score = 600
            //   e8????????           |                     
            //   e8????????           |                     
            //   81c480000000         | add                 esp, 0x80
            //   e9????????           |                     

        $sequence_1 = { e8???????? 83c460 e8???????? 83c40c }
            // n = 4, score = 600
            //   e8????????           |                     
            //   83c460               | add                 esp, 0x60
            //   e8????????           |                     
            //   83c40c               | add                 esp, 0xc

        $sequence_2 = { 50 e8???????? e8???????? 81c484000000 }
            // n = 4, score = 600
            //   50                   | push                eax
            //   e8????????           |                     
            //   e8????????           |                     
            //   81c484000000         | add                 esp, 0x84

        $sequence_3 = { ff15???????? 85c0 7507 c685e0feffff43 }
            // n = 4, score = 600
            //   ff15????????         |                     
            //   85c0                 | test                eax, eax
            //   7507                 | jne                 9
            //   c685e0feffff43       | mov                 byte ptr [ebp - 0x120], 0x43

        $sequence_4 = { 68???????? e8???????? e8???????? 83c474 }
            // n = 4, score = 600
            //   68????????           |                     
            //   e8????????           |                     
            //   e8????????           |                     
            //   83c474               | add                 esp, 0x74

        $sequence_5 = { e8???????? e8???????? 83c418 6a3c }
            // n = 4, score = 600
            //   e8????????           |                     
            //   e8????????           |                     
            //   83c418               | add                 esp, 0x18
            //   6a3c                 | push                0x3c

        $sequence_6 = { 8d85dcf7ffff 50 ff15???????? 85c0 0f84a1000000 }
            // n = 5, score = 400
            //   8d85dcf7ffff         | lea                 eax, [ebp - 0x824]
            //   50                   | push                eax
            //   ff15????????         |                     
            //   85c0                 | test                eax, eax
            //   0f84a1000000         | je                  0xa7

        $sequence_7 = { 69c90ba31400 2bca 884c0588 48ffc0 }
            // n = 4, score = 400
            //   69c90ba31400         | mov                 dword ptr [esp + 0x70], ecx
            //   2bca                 | dec                 ecx
            //   884c0588             | mov                 ecx, esp
            //   48ffc0               | inc                 esp

        $sequence_8 = { 8d85dcf7ffff 50 8b450c 53 ff30 895df0 }
            // n = 6, score = 400
            //   8d85dcf7ffff         | lea                 eax, [ebp - 0x824]
            //   50                   | push                eax
            //   8b450c               | mov                 eax, dword ptr [ebp + 0xc]
            //   53                   | push                ebx
            //   ff30                 | push                dword ptr [eax]
            //   895df0               | mov                 dword ptr [ebp - 0x10], ebx

        $sequence_9 = { 69c10ba31400 894d80 2bc2 66894584 69c187fd701e }
            // n = 5, score = 400
            //   69c10ba31400         | movzx               ecx, byte ptr [ebp - 0x73]
            //   894d80               | inc                 esp
            //   2bc2                 | movzx               edx, byte ptr [ebp - 0x74]
            //   66894584             | inc                 esp
            //   69c187fd701e         | movzx               ebx, byte ptr [ebp - 0x75]

        $sequence_10 = { 4c8be0 440fb6458e 440fb64d8d 440fb6558c 440fb65d8b }
            // n = 5, score = 400
            //   4c8be0               | dec                 esp
            //   440fb6458e           | mov                 esp, eax
            //   440fb64d8d           | inc                 esp
            //   440fb6558c           | movzx               eax, byte ptr [ebp - 0x72]
            //   440fb65d8b           | inc                 esp

        $sequence_11 = { 66894584 69c187fd701e b934eddb95 2bc8 }
            // n = 4, score = 400
            //   66894584             | dec                 eax
            //   69c187fd701e         | cmp                 eax, 8
            //   b934eddb95           | movzx               ecx, byte ptr [ebp - 0x71]
            //   2bc8                 | dec                 esp

        $sequence_12 = { 440fb77586 440fb77d84 894c2470 498bcc 4489442468 }
            // n = 5, score = 400
            //   440fb77586           | imul                eax, ecx, 0x1e70fd87
            //   440fb77d84           | mov                 ecx, 0x95dbed34
            //   894c2470             | mov                 word ptr [ebp - 0x7a], cx
            //   498bcc               | imul                ecx, ecx, 0x14a30b
            //   4489442468           | sub                 ecx, edx

        $sequence_13 = { 0fb67d89 0fb67588 440fb77586 440fb77d84 }
            // n = 4, score = 400
            //   0fb67d89             | mov                 dword ptr [ebp - 0x80], ecx
            //   0fb67588             | sub                 eax, edx
            //   440fb77586           | mov                 word ptr [ebp - 0x7c], ax
            //   440fb77d84           | imul                eax, ecx, 0x1e70fd87

        $sequence_14 = { e8???????? 0fb64d8f 4c8be0 440fb6458e }
            // n = 4, score = 400
            //   e8????????           |                     
            //   0fb64d8f             | mov                 byte ptr [ebp + eax - 0x78], cl
            //   4c8be0               | dec                 eax
            //   440fb6458e           | inc                 eax

        $sequence_15 = { ff15???????? 85c0 750a b043 }
            // n = 4, score = 400
            //   ff15????????         |                     
            //   85c0                 | mov                 esp, eax
            //   750a                 | inc                 esp
            //   b043                 | movzx               eax, byte ptr [ebp - 0x72]

        $sequence_16 = { e8???????? e8???????? 83c47c e9???????? }
            // n = 4, score = 300
            //   e8????????           |                     
            //   e8????????           |                     
            //   83c47c               | add                 esp, 0x7c
            //   e9????????           |                     

        $sequence_17 = { 8bcc 8d95a0f5ffff 52 e8???????? e8???????? 83c414 }
            // n = 6, score = 200
            //   8bcc                 | mov                 ecx, esp
            //   8d95a0f5ffff         | lea                 edx, [ebp - 0xa60]
            //   52                   | push                edx
            //   e8????????           |                     
            //   e8????????           |                     
            //   83c414               | add                 esp, 0x14

    condition:
        7 of them and filesize < 4891648
}