Actor(s): UNC2452
Mandiant characterizes this malware as a downloader and shellcode stager.
rule win_ceeloader_auto { meta: author = "Felix Bilstein - yara-signator at cocacoding dot com" date = "2026-09-17" version = "1" description = "Detects win.ceeloader." 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.ceeloader" 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 = { 898424380b0000 8b8424e40a0000 0b8424080a0000 8984243c0a0000 8b8424f0050000 0b842470080000 89842430070000 } // n = 7, score = 100 // 898424380b0000 | or edx, ebx // 8b8424e40a0000 | cmp ecx, esi // 0b8424080a0000 | and esi, ebx // 8984243c0a0000 | jp 0x3df // 8b8424f0050000 | or ebx, edx // 0b842470080000 | or ebx, edx // 89842430070000 | mov ebx, esi $sequence_1 = { 0fbe05???????? 83f042 88c1 888c241d010000 0fbe05???????? 83f069 88c1 } // n = 7, score = 100 // 0fbe05???????? | // 83f042 | mov dword ptr [esp + 0x740], edx // 88c1 | dec esp // 888c241d010000 | mov edx, ecx // 0fbe05???????? | // 83f069 | inc ebp // 88c1 | xor eax, eax $sequence_2 = { 33f5 0bda 8bde 0bd3 3bce 8bf5 } // n = 6, score = 100 // 33f5 | dec eax // 0bda | ror edx, cl // 8bde | dec ecx // 0bd3 | xor edx, eax // 3bce | dec ebx // 8bf5 | xchg dword ptr [edi + esi*8 + 0x10e080], edx $sequence_3 = { c784249002000075380000 c784248c020000c5360000 c78424880200005a380000 c7842484020000ff6f0000 c7842480020000123e0000 c784247c02000043360000 c78424780200001f220000 } // n = 7, score = 100 // c784249002000075380000 | inc esp // c784248c020000c5360000 | mov dword ptr [esp + 0x5a4], edx // c78424880200005a380000 | inc esp // c7842484020000ff6f0000 | add ecx, dword ptr [esp + 0x5a4] // c7842480020000123e0000 | inc esp // c784247c02000043360000 | mov dword ptr [esp + 0x5a0], ecx // c78424780200001f220000 | inc esp $sequence_4 = { 668b9c2406120000 6681f3ffff 66899c2404120000 6623bc2404120000 6689bc2402120000 668bbc2402120000 6689d3 } // n = 7, score = 100 // 668b9c2406120000 | dec eax // 6681f3ffff | mov dword ptr [esp + 0x920], 0 // 66899c2404120000 | dec eax // 6623bc2404120000 | mov ecx, dword ptr [esp + 0x928] // 6689bc2402120000 | inc ecx // 668bbc2402120000 | mov eax, eax // 6689d3 | mov dword ptr [esp + 0x10f0], 0x8a0ac41f $sequence_5 = { 2500feffff 898424b80b0000 8b8424b80b0000 05ffffffff 898424b40b0000 8b8424b40b0000 83e000 } // n = 7, score = 100 // 2500feffff | dec eax // 898424b80b0000 | mov dword ptr [esp + 0x50], ecx // 8b8424b80b0000 | dec eax // 05ffffffff | mov ecx, eax // 898424b40b0000 | dec eax // 8b8424b40b0000 | lea eax, [0xb644f] // 83e000 | mov dword ptr [esp + 0x4c], edx $sequence_6 = { 6b94242801000005 89942424010000 8b942424010000 83e280 89942420010000 8b942420010000 3b15???????? } // n = 7, score = 100 // 6b94242801000005 | dec esp // 89942424010000 | mov eax, dword ptr [esp + 0x128] // 8b942424010000 | mov dword ptr [esp + 0x930], 0x2a5b // 83e280 | dec eax // 89942420010000 | lea ecx, [esp + 0x15e0] // 8b942420010000 | dec eax // 3b15???????? | $sequence_7 = { 48c784242802000000000000 4c8b842428020000 668b942430020000 668b8c2432020000 ff15???????? 89842424020000 8b8424600c0000 } // n = 7, score = 100 // 48c784242802000000000000 | xor edx, edx // 4c8b842428020000 | mov ecx, edx // 668b942430020000 | mov dword ptr [esp + 0x28], 0x80 // 668b8c2432020000 | dec eax // ff15???????? | // 89842424020000 | mov dword ptr [esp + 0x30], 0 // 8b8424600c0000 | mov dword ptr [esp + 0x438], eax $sequence_8 = { 488981f0000000 488b05???????? 488b80f0000000 4c8b442448 8b542444 488b4c2438 ffd0 } // n = 7, score = 100 // 488981f0000000 | mov dword ptr [esp + 0x2b4], esi // 488b05???????? | // 488b80f0000000 | mov esi, edx // 4c8b442448 | and esi, 0x23d9135 // 8b542444 | mov dword ptr [esp + 0x2c4], esi // 488b4c2438 | mov esi, dword ptr [esp + 0x2c4] // ffd0 | shl esi, 4 $sequence_9 = { 8b8424c00c0000 c1e808 898424bc0c0000 8b8424bc0c0000 c1e002 898424b80c0000 8b8424b80c0000 } // n = 7, score = 100 // 8b8424c00c0000 | cmp ecx, esi // c1e808 | mov esi, ebp // 898424bc0c0000 | mov eax, esi // 8b8424bc0c0000 | xor esi, ebp // c1e002 | or ebx, edx // 898424b80c0000 | mov ebx, esi // 8b8424b80c0000 | or edx, ebx condition: 7 of them and filesize < 2321408 }
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