Ransomware.
rule win_xiaoba_auto { meta: author = "Felix Bilstein - yara-signator at cocacoding dot com" date = "2026-09-17" version = "1" description = "Detects win.xiaoba." 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.xiaoba" 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 = { 897e38 897e3c 66c746402a00 897e44 897e48 897e4c c7465064000000 } // n = 7, score = 100 // 897e38 | mov dword ptr [esi + 0x38], edi // 897e3c | mov dword ptr [esi + 0x3c], edi // 66c746402a00 | mov word ptr [esi + 0x40], 0x2a // 897e44 | mov dword ptr [esi + 0x44], edi // 897e48 | mov dword ptr [esi + 0x48], edi // 897e4c | mov dword ptr [esi + 0x4c], edi // c7465064000000 | mov dword ptr [esi + 0x50], 0x64 $sequence_1 = { 0f8408000000 8b45f4 e9???????? 6802000080 6a00 6800000000 6a00 } // n = 7, score = 100 // 0f8408000000 | je 0xe // 8b45f4 | mov eax, dword ptr [ebp - 0xc] // e9???????? | // 6802000080 | push 0x80000002 // 6a00 | push 0 // 6800000000 | push 0 // 6a00 | push 0 $sequence_2 = { 8b16 6a11 57 6aff 50 8bce ff5268 } // n = 7, score = 100 // 8b16 | mov edx, dword ptr [esi] // 6a11 | push 0x11 // 57 | push edi // 6aff | push -1 // 50 | push eax // 8bce | mov ecx, esi // ff5268 | call dword ptr [edx + 0x68] $sequence_3 = { 8bf9 56 ff15???????? 8b476c 83e800 0f8498000000 } // n = 6, score = 100 // 8bf9 | mov edi, ecx // 56 | push esi // ff15???????? | // 8b476c | mov eax, dword ptr [edi + 0x6c] // 83e800 | sub eax, 0 // 0f8498000000 | je 0x9e $sequence_4 = { e9???????? 8a5101 88542440 8b4c2440 81e1ff000000 668b144d00a55f00 8b4c2414 } // n = 7, score = 100 // e9???????? | // 8a5101 | mov dl, byte ptr [ecx + 1] // 88542440 | mov byte ptr [esp + 0x40], dl // 8b4c2440 | mov ecx, dword ptr [esp + 0x40] // 81e1ff000000 | and ecx, 0xff // 668b144d00a55f00 | mov dx, word ptr [ecx*2 + 0x5fa500] // 8b4c2414 | mov ecx, dword ptr [esp + 0x14] $sequence_5 = { 741e 8bce 57 33c0 8d7a08 c1e902 c70201000000 } // n = 7, score = 100 // 741e | je 0x20 // 8bce | mov ecx, esi // 57 | push edi // 33c0 | xor eax, eax // 8d7a08 | lea edi, [edx + 8] // c1e902 | shr ecx, 2 // c70201000000 | mov dword ptr [edx], 1 $sequence_6 = { 3bc8 0f8f85010000 6a01 6803000000 6a01 6801000000 e8???????? } // n = 7, score = 100 // 3bc8 | cmp ecx, eax // 0f8f85010000 | jg 0x18b // 6a01 | push 1 // 6803000000 | push 3 // 6a01 | push 1 // 6801000000 | push 1 // e8???????? | $sequence_7 = { 68???????? 56 e8???????? 83c408 8b4e7c 81e1???????? 81f900002000 } // n = 7, score = 100 // 68???????? | // 56 | push esi // e8???????? | // 83c408 | add esp, 8 // 8b4e7c | mov ecx, dword ptr [esi + 0x7c] // 81e1???????? | // 81f900002000 | cmp ecx, 0x200000 $sequence_8 = { db45f8 dd5dc4 dd45cc dc65c4 dc1d???????? dfe0 f6c401 } // n = 7, score = 100 // db45f8 | fild dword ptr [ebp - 8] // dd5dc4 | fstp qword ptr [ebp - 0x3c] // dd45cc | fld qword ptr [ebp - 0x34] // dc65c4 | fsub qword ptr [ebp - 0x3c] // dc1d???????? | // dfe0 | fnstsw ax // f6c401 | test ah, 1 $sequence_9 = { 51 68d8070000 c744241c06000000 c744243800000000 c744243c00000000 c744242002000000 89542424 } // n = 7, score = 100 // 51 | push ecx // 68d8070000 | push 0x7d8 // c744241c06000000 | mov dword ptr [esp + 0x1c], 6 // c744243800000000 | mov dword ptr [esp + 0x38], 0 // c744243c00000000 | mov dword ptr [esp + 0x3c], 0 // c744242002000000 | mov dword ptr [esp + 0x20], 2 // 89542424 | mov dword ptr [esp + 0x24], edx condition: 7 of them and filesize < 5177344 }
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