Ransomware.
rule win_crytox_auto { meta: author = "Felix Bilstein - yara-signator at cocacoding dot com" date = "2026-09-17" version = "1" description = "Detects win.crytox." 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.crytox" 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 = { f30f6f3a 0f297c2440 0f29bc2490000000 f30f6f7a10 0f293c24 f30f6f6220 0f29642450 } // n = 7, score = 100 // f30f6f3a | movdqu xmm0, xmmword ptr [eax] // 0f297c2440 | movdqu xmm1, xmmword ptr [eax + ecx] // 0f29bc2490000000 | movdqu xmm2, xmmword ptr [eax + ecx*2] // f30f6f7a10 | movdqu xmm3, xmmword ptr [eax + edi] // 0f293c24 | lea eax, [eax + ecx*4] // f30f6f6220 | movdqa xmmword ptr [edx], xmm0 // 0f29642450 | movdqa xmmword ptr [edx + ebx], xmm1 $sequence_1 = { e8???????? c745ec03000000 8d850efdffff 8945e8 8d85eefeffff 8945e4 8d85fefdffff } // n = 7, score = 100 // e8???????? | // c745ec03000000 | mov dword ptr [esp + 4], 0xfbc // 8d850efdffff | mov eax, dword ptr [ebp - 0x1a4] // 8945e8 | mov dword ptr [esp], eax // 8d85eefeffff | mov eax, dword ptr [ebp - 0x1ac] // 8945e4 | mov dword ptr [esp + 4], 0x70c2d0 // 8d85fefdffff | mov dword ptr [esp], 1 $sequence_2 = { eb0d ddd8 eb09 ddd8 8db42600000000 8b4508 8b9594feffff } // n = 7, score = 100 // eb0d | mov eax, dword ptr [ebp + 8] // ddd8 | mov eax, dword ptr [eax + 0x3340] // eb09 | add eax, eax // ddd8 | mov edx, dword ptr [ebp - 0x14] // 8db42600000000 | mov ecx, eax // 8b4508 | jmp 0x82c // 8b9594feffff | mov dword ptr [ebp - 0x14], 0xf $sequence_3 = { dec1 d905???????? d84abc dec1 d905???????? d84a1c dee9 } // n = 7, score = 100 // dec1 | jne 0xfffffff8 // d905???????? | // d84abc | lea esi, [esi] // dec1 | fld dword ptr [eax] // d905???????? | // d84a1c | add eax, 4 // dee9 | fmul st(1) $sequence_4 = { e8???????? e9???????? 53 31c9 81ecc8000000 8b9424d4000000 8b8424dc000000 } // n = 7, score = 100 // e8???????? | // e9???????? | // 53 | fld dword ptr [esp + 0x80] // 31c9 | fmul st(0) // 81ecc8000000 | fstp qword ptr [esp + 0xa0] // 8b9424d4000000 | fld qword ptr [esp + 0xa0] // 8b8424dc000000 | fstp dword ptr [esp + 0xac] $sequence_5 = { e8???????? eb0c 0fb7db 6bdb30 031d???????? 83c414 89d8 } // n = 7, score = 100 // e8???????? | // eb0c | add edx, dword ptr [esi + 0x23de4] // 0fb7db | cmp byte ptr [edx], 1 // 6bdb30 | jne 0x6fd // 031d???????? | // 83c414 | mov eax, dword ptr [esp + 0xb4] // 89d8 | mov edx, dword ptr [ebp - 0x6c] $sequence_6 = { c744240800000000 c744240417000000 89442410 892c24 ffd7 83ec14 85c0 } // n = 7, score = 100 // c744240800000000 | jmp 0x1af // c744240417000000 | dec dword ptr [ebp - 0x40] // 89442410 | sub eax, 4 // 892c24 | mov dword ptr [esp + 8], 0 // ffd7 | mov dword ptr [esp + 4], 0 // 83ec14 | mov dword ptr [esp], 0x21 // 85c0 | jmp 0x1ce $sequence_7 = { e8???????? b8c3150000 98 8b5508 8d4a02 8b551c 89542410 } // n = 7, score = 100 // e8???????? | // b8c3150000 | lea eax, [esp + 0x130] // 98 | mov dword ptr [esp], ebp // 8b5508 | mov dword ptr [esp + 4], eax // 8d4a02 | mov dword ptr [esp + 8], ebp // 8b551c | mov dword ptr [esp + 4], ebx // 89542410 | lea eax, [esp + 0x130] $sequence_8 = { f30f7e28 0f84c0000000 01c8 31ff 0f29742420 6690 660f6ff5 } // n = 7, score = 100 // f30f7e28 | pmaddubsw xmm0, xmm7 // 0f84c0000000 | paddsw xmm0, xmm6 // 01c8 | psraw xmm0, 7 // 31ff | packuswb xmm0, xmm0 // 0f29742420 | movq xmm0, qword ptr [esi] // 6690 | movq xmm1, qword ptr [esi + eax] // 660f6ff5 | punpcklbw xmm0, xmm5 $sequence_9 = { e8???????? d8c0 db6c2440 dec9 db6c2420 dee1 d99c249c000000 } // n = 7, score = 100 // e8???????? | // d8c0 | mov dword ptr [esp + 4], eax // db6c2440 | mov dword ptr [esp + 8], edi // dec9 | mov dword ptr [esp + 0x10], 0 // db6c2420 | mov dword ptr [esp + 0xc], 2 // dee1 | mov eax, dword ptr [ebp + 0x10] // d99c249c000000 | mov dword ptr [esp + 8], eax condition: 7 of them and filesize < 6156288 }
import "pe" rule win_crytox_w0 { meta: description = "Detect variants of Crytox Ransomware" author = "Jake Goldi" date = "2022-09-29" packed_hash1 = "32eef267a1192a9a739ccaaae0266bc66707bb64768a764541ecb039a50cba67" hash2 = "11ea0d7e0ebe15b8147d39e72773221d11c2cf84e2d8d6164102c65e797eef6d" hash3 = "68fae79a2eca125090bd2a8badc46ed4324c38f2ff24db702d09c3d7687e0047" hash4 = "a0a6c2937b6a8b2bc1214ace8255adc6992b553b9e740c3fe1543e089e8437aa" source = "https://raw.githubusercontent.com/taogoldi/YARA/main/ransomware/crytox_ransom.yara" version="1.0" phase = "experimental" url = "https://www.zscaler.com/blogs/security-research/technical-analysis-crytox-ransomware" malware = "Win64.Ransom.Crytox" malpedia_reference = "https://malpedia.caad.fkie.fraunhofer.de/details/win.crytox" malpedia_rule_date = "20220930" malpedia_hash = "" malpedia_version = "20220930" malpedia_license = "CC BY-SA 4.0" malpedia_sharing = "TLP:WHITE" strings: $s1 = "utox" wide ascii nocase /* hash 2: 11ea0d7e0ebe15b8147d39e72773221d11c2cf84e2d8d6164102c65e797eef6d FF 15 C9 22 00 00 call cs:GlobalAlloc 48 89 85 58 FF FF FF mov [rbp+hMem], rax ; unk_5F2520 4C 8B E0 mov r12, rax 48 8B C8 mov rcx, rax E8 DD 13 00 00 call sub_1402E940E 48 C7 C1 C0 01 00 00 mov rcx, 448 49 8D 94 24 08 04 00 00 lea rdx, [r12+408h] 4C 8D 05 29 20 00 00 lea r8, unk_1402EA070 4C 8D 8D A4 FD FF FF lea r9, [rbp+var_25C] E8 A2 11 00 00 call sub_1402E91F5 48 8B 8D 58 FF FF FF mov rcx, [rbp+hMem] ; hMem FF 15 90 22 00 00 call cs:GlobalFree ------------- hash 3: 68fae79a2eca125090bd2a8badc46ed4324c38f2ff24db702d09c3d7687e0047 FF 15 C9 22 00 00 call cs:GlobalAlloc 48 89 85 58 FF FF FF mov [rbp+hMem], rax 4C 8B E0 mov r12, rax 90 nop 50 push rax 59 pop rcx E8 E2 13 00 00 call sub_1402E9413 48 C7 C1 C0 01 00 00 mov rcx, 1C0h 49 8D 94 24 08 04 00 00 lea rdx, [r12+408h] 4C 8D 05 29 20 00 00 lea r8, unk_1402EA070 4C 8D 8D A4 FD FF FF lea r9, [rbp+var_25C] E8 A7 11 00 00 call sub_1402E91FA 48 8B 8D 58 FF FF FF mov rcx, [rbp+hMem] ; hMem FF 15 90 22 00 00 call cs:GlobalFree ------------- hash 4: a0a6c2937b6a8b2bc1214ace8255adc6992b553b9e740c3fe1543e089e8437aa FF 15 C9 22 00 00 call cs:GlobalAlloc 48 89 85 58 FF FF FF mov [rbp+hMem], rax 4C 8B E0 mov r12, rax 48 8B C8 mov rcx, rax E8 61 12 00 00 call sub_1402E9292 48 C7 C1 C0 01 00 00 mov rcx, 1C0h 49 8D 94 24 08 04 00 00 lea rdx, [r12+408h] 4C 8D 05 29 20 00 00 lea r8, unk_1402EA070 4C 8D 8D A4 FD FF FF lea r9, [rbp+var_25C] E8 26 10 00 00 call sub_1402E9079 48 8B 8D 58 FF FF FF mov rcx, [rbp+hMem] ; hMem FF 15 90 22 00 00 call cs:GlobalFre */ $op1 = { FF 15 C9 22 00 00 48 89 85 58 FF FF FF 4C 8B E0 } $op2 = { E8 ?? ?? 00 00 48 C7 C1 C0 01 00 00 49 8D 94 24 08 04 00 00 } $op3 = { 4C 8D 05 29 20 00 00 } $op4 = { 4C 8D 8D A4 FD FF FF E8 ?? 1? 00 00 48 8B 8D 58 FF FF FF FF 15 90 22 00 00 } condition: uint16(0) == 0x5a4d and filesize < 5000KB and ((all of ($s*)) and (all of ($op*))) }
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