Actor(s): APT31
According to PTSecurity, this stealer harvests system information which is then RC4 encrypted and Base64 encoded before sending it to the C2 server.
rule win_stealer_0x3401_auto { meta: author = "Felix Bilstein - yara-signator at cocacoding dot com" date = "2026-05-04" version = "1" description = "Detects win.stealer_0x3401." 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.stealer_0x3401" 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 = { e8???????? c745fcffffffff 8b45bc 83f810 7242 8b4da8 40 } // n = 7, score = 100 // e8???????? | // c745fcffffffff | mov dword ptr [ebp - 4], 0xffffffff // 8b45bc | mov eax, dword ptr [ebp - 0x44] // 83f810 | cmp eax, 0x10 // 7242 | jb 0x44 // 8b4da8 | mov ecx, dword ptr [ebp - 0x58] // 40 | inc eax $sequence_1 = { 8b8510ffffff 85c0 7473 50 8d4dbc e8???????? 8bd0 } // n = 7, score = 100 // 8b8510ffffff | mov eax, dword ptr [ebp - 0xf0] // 85c0 | test eax, eax // 7473 | je 0x75 // 50 | push eax // 8d4dbc | lea ecx, [ebp - 0x44] // e8???????? | // 8bd0 | mov edx, eax $sequence_2 = { 8bc8 51 e8???????? 83c404 6a54 68???????? } // n = 6, score = 100 // 8bc8 | mov ecx, eax // 51 | push ecx // e8???????? | // 83c404 | add esp, 4 // 6a54 | push 0x54 // 68???????? | $sequence_3 = { 68???????? b9???????? e8???????? e9???????? 83fe03 0f87e3000000 ff24b55c3e0010 } // n = 7, score = 100 // 68???????? | // b9???????? | // e8???????? | // e9???????? | // 83fe03 | cmp esi, 3 // 0f87e3000000 | ja 0xe9 // ff24b55c3e0010 | jmp dword ptr [esi*4 + 0x10003e5c] $sequence_4 = { 8b06 894714 c70607000000 833e08 c746fc00000000 7205 8b46ec } // n = 7, score = 100 // 8b06 | mov eax, dword ptr [esi] // 894714 | mov dword ptr [edi + 0x14], eax // c70607000000 | mov dword ptr [esi], 7 // 833e08 | cmp dword ptr [esi], 8 // c746fc00000000 | mov dword ptr [esi - 4], 0 // 7205 | jb 7 // 8b46ec | mov eax, dword ptr [esi - 0x14] $sequence_5 = { 731f 8bc1 83e13f c1f806 6bc930 8b0485c8710210 f644082801 } // n = 7, score = 100 // 731f | jae 0x21 // 8bc1 | mov eax, ecx // 83e13f | and ecx, 0x3f // c1f806 | sar eax, 6 // 6bc930 | imul ecx, ecx, 0x30 // 8b0485c8710210 | mov eax, dword ptr [eax*4 + 0x100271c8] // f644082801 | test byte ptr [eax + ecx + 0x28], 1 $sequence_6 = { c745e800000000 668945d8 663902 741d 8bc2 8d7802 } // n = 6, score = 100 // c745e800000000 | mov dword ptr [ebp - 0x18], 0 // 668945d8 | mov word ptr [ebp - 0x28], ax // 663902 | cmp word ptr [edx], ax // 741d | je 0x1f // 8bc2 | mov eax, edx // 8d7802 | lea edi, [eax + 2] $sequence_7 = { c745fc04000000 e8???????? 8b45a4 83f810 7242 8b4d90 } // n = 6, score = 100 // c745fc04000000 | mov dword ptr [ebp - 4], 4 // e8???????? | // 8b45a4 | mov eax, dword ptr [ebp - 0x5c] // 83f810 | cmp eax, 0x10 // 7242 | jb 0x44 // 8b4d90 | mov ecx, dword ptr [ebp - 0x70] $sequence_8 = { 50 8d45f4 64a300000000 8d8580fdffff c7857cfdffff00000000 50 ff15???????? } // n = 7, score = 100 // 50 | push eax // 8d45f4 | lea eax, [ebp - 0xc] // 64a300000000 | mov dword ptr fs:[0], eax // 8d8580fdffff | lea eax, [ebp - 0x280] // c7857cfdffff00000000 | mov dword ptr [ebp - 0x284], 0 // 50 | push eax // ff15???????? | $sequence_9 = { c70300000000 8b4310 894610 8b4314 894614 c7431407000000 837b1408 } // n = 7, score = 100 // c70300000000 | mov dword ptr [ebx], 0 // 8b4310 | mov eax, dword ptr [ebx + 0x10] // 894610 | mov dword ptr [esi + 0x10], eax // 8b4314 | mov eax, dword ptr [ebx + 0x14] // 894614 | mov dword ptr [esi + 0x14], eax // c7431407000000 | mov dword ptr [ebx + 0x14], 7 // 837b1408 | cmp dword ptr [ebx + 0x14], 8 condition: 7 of them and filesize < 357376 }
If your designated proposal does not fit in any other category, feel free to write a free-text in the comment field below. Changes regarding references should be proposed on the Malpedia library page.
Your suggestion will be reviewed before being published. Thank you for contributing!
YYYY-MM-DD
YYYY-MM
YYYY