Actor(s): Turla Group
There is no description at this point.
rule win_agent_btz_auto { meta: author = "Felix Bilstein - yara-signator at cocacoding dot com" date = "2023-01-25" version = "1" description = "Detects win.agent_btz." 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.agent_btz" malpedia_rule_date = "20230124" malpedia_hash = "2ee0eebba83dce3d019a90519f2f972c0fcf9686" malpedia_version = "20230125" 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 = { 50 ffd3 85c0 75d8 5f 5e 5b } // n = 7, score = 2500 // 50 | push eax // ffd3 | call ebx // 85c0 | test eax, eax // 75d8 | jne 0xffffffda // 5f | pop edi // 5e | pop esi // 5b | pop ebx $sequence_1 = { c74608ffffffff f644240801 7409 56 e8???????? 83c404 } // n = 6, score = 2500 // c74608ffffffff | mov dword ptr [esi + 8], 0xffffffff // f644240801 | test byte ptr [esp + 8], 1 // 7409 | je 0xb // 56 | push esi // e8???????? | // 83c404 | add esp, 4 $sequence_2 = { 51 ffd6 8d54240c 52 ffd7 } // n = 5, score = 2500 // 51 | push ecx // ffd6 | call esi // 8d54240c | lea edx, [esp + 0xc] // 52 | push edx // ffd7 | call edi $sequence_3 = { ff15???????? b804000f00 8b4df4 64890d00000000 5f 5e } // n = 6, score = 2400 // ff15???????? | // b804000f00 | mov eax, 0xf0004 // 8b4df4 | mov ecx, dword ptr [ebp - 0xc] // 64890d00000000 | mov dword ptr fs:[0], ecx // 5f | pop edi // 5e | pop esi $sequence_4 = { c7460c00000000 895e08 895e04 c7461000000000 895e14 } // n = 5, score = 2400 // c7460c00000000 | mov dword ptr [esi + 0xc], 0 // 895e08 | mov dword ptr [esi + 8], ebx // 895e04 | mov dword ptr [esi + 4], ebx // c7461000000000 | mov dword ptr [esi + 0x10], 0 // 895e14 | mov dword ptr [esi + 0x14], ebx $sequence_5 = { 56 6a00 68???????? 8935???????? } // n = 4, score = 2300 // 56 | push esi // 6a00 | push 0 // 68???????? | // 8935???????? | $sequence_6 = { ff15???????? 894614 33c0 33db } // n = 4, score = 2300 // ff15???????? | // 894614 | mov dword ptr [esi + 0x14], eax // 33c0 | xor eax, eax // 33db | xor ebx, ebx $sequence_7 = { 83f8ff 740e 50 ff15???????? c74608ffffffff f644240801 7409 } // n = 7, score = 2200 // 83f8ff | cmp eax, -1 // 740e | je 0x10 // 50 | push eax // ff15???????? | // c74608ffffffff | mov dword ptr [esi + 8], 0xffffffff // f644240801 | test byte ptr [esp + 8], 1 // 7409 | je 0xb $sequence_8 = { c706???????? 85c0 7413 83f8ff 740e } // n = 5, score = 2200 // c706???????? | // 85c0 | test eax, eax // 7413 | je 0x15 // 83f8ff | cmp eax, -1 // 740e | je 0x10 $sequence_9 = { 8d542408 52 c744240c30000000 c744241003000000 } // n = 4, score = 2200 // 8d542408 | lea edx, [esp + 8] // 52 | push edx // c744240c30000000 | mov dword ptr [esp + 0xc], 0x30 // c744241003000000 | mov dword ptr [esp + 0x10], 3 $sequence_10 = { 6801010000 ff15???????? 85c0 7415 } // n = 4, score = 1900 // 6801010000 | push 0x101 // ff15???????? | // 85c0 | test eax, eax // 7415 | je 0x17 $sequence_11 = { 6a0a 68???????? 6a01 6a00 68???????? } // n = 5, score = 1400 // 6a0a | push 0xa // 68???????? | // 6a01 | push 1 // 6a00 | push 0 // 68???????? | $sequence_12 = { 51 6a00 6819000200 6a00 68???????? } // n = 5, score = 1400 // 51 | push ecx // 6a00 | push 0 // 6819000200 | push 0x20019 // 6a00 | push 0 // 68???????? | $sequence_13 = { 50 68???????? 6a01 68???????? e8???????? 83c410 } // n = 6, score = 1200 // 50 | push eax // 68???????? | // 6a01 | push 1 // 68???????? | // e8???????? | // 83c410 | add esp, 0x10 $sequence_14 = { 6a08 53 8d8dbcfeffff 51 ff75f8 } // n = 5, score = 1100 // 6a08 | push 8 // 53 | push ebx // 8d8dbcfeffff | lea ecx, [ebp - 0x144] // 51 | push ecx // ff75f8 | push dword ptr [ebp - 8] $sequence_15 = { 8b45f0 0145f4 83c40c 3bc3 } // n = 4, score = 1100 // 8b45f0 | mov eax, dword ptr [ebp - 0x10] // 0145f4 | add dword ptr [ebp - 0xc], eax // 83c40c | add esp, 0xc // 3bc3 | cmp eax, ebx $sequence_16 = { c684248900000072 c684248a00000065 c684248b00000061 c684248c00000074 c684248d00000065 c684248e00000050 } // n = 6, score = 1100 // c684248900000072 | mov byte ptr [esp + 0x89], 0x72 // c684248a00000065 | mov byte ptr [esp + 0x8a], 0x65 // c684248b00000061 | mov byte ptr [esp + 0x8b], 0x61 // c684248c00000074 | mov byte ptr [esp + 0x8c], 0x74 // c684248d00000065 | mov byte ptr [esp + 0x8d], 0x65 // c684248e00000050 | mov byte ptr [esp + 0x8e], 0x50 $sequence_17 = { 6a01 6a04 6a01 68???????? } // n = 4, score = 1100 // 6a01 | push 1 // 6a04 | push 4 // 6a01 | push 1 // 68???????? | $sequence_18 = { 53 53 8d4dd8 51 ff750c 8d4de4 51 } // n = 7, score = 1100 // 53 | push ebx // 53 | push ebx // 8d4dd8 | lea ecx, [ebp - 0x28] // 51 | push ecx // ff750c | push dword ptr [ebp + 0xc] // 8d4de4 | lea ecx, [ebp - 0x1c] // 51 | push ecx $sequence_19 = { c6458770 c6458861 c6458972 c6458a74 c6458b2f c6458c66 } // n = 6, score = 1100 // c6458770 | mov byte ptr [ebp - 0x79], 0x70 // c6458861 | mov byte ptr [ebp - 0x78], 0x61 // c6458972 | mov byte ptr [ebp - 0x77], 0x72 // c6458a74 | mov byte ptr [ebp - 0x76], 0x74 // c6458b2f | mov byte ptr [ebp - 0x75], 0x2f // c6458c66 | mov byte ptr [ebp - 0x74], 0x66 $sequence_20 = { ebd2 c78424a000000068000000 c78424dc00000001000000 33c0 66898424e0000000 } // n = 5, score = 1100 // ebd2 | jmp 0xffffffd4 // c78424a000000068000000 | mov dword ptr [esp + 0xa0], 0x68 // c78424dc00000001000000 | mov dword ptr [esp + 0xdc], 1 // 33c0 | xor eax, eax // 66898424e0000000 | mov word ptr [esp + 0xe0], ax $sequence_21 = { 8d85d8fdffff 50 66894dee c745fc04010000 } // n = 4, score = 1100 // 8d85d8fdffff | lea eax, [ebp - 0x228] // 50 | push eax // 66894dee | mov word ptr [ebp - 0x12], cx // c745fc04010000 | mov dword ptr [ebp - 4], 0x104 $sequence_22 = { c684249600000000 c684241001000047 c684241101000065 c684241201000074 c68424130100004c } // n = 5, score = 1100 // c684249600000000 | mov byte ptr [esp + 0x96], 0 // c684241001000047 | mov byte ptr [esp + 0x110], 0x47 // c684241101000065 | mov byte ptr [esp + 0x111], 0x65 // c684241201000074 | mov byte ptr [esp + 0x112], 0x74 // c68424130100004c | mov byte ptr [esp + 0x113], 0x4c $sequence_23 = { c684241601000074 c684241701000045 c684241801000072 c684241901000072 c684241a0100006f c684241b01000072 } // n = 6, score = 1100 // c684241601000074 | mov byte ptr [esp + 0x116], 0x74 // c684241701000045 | mov byte ptr [esp + 0x117], 0x45 // c684241801000072 | mov byte ptr [esp + 0x118], 0x72 // c684241901000072 | mov byte ptr [esp + 0x119], 0x72 // c684241a0100006f | mov byte ptr [esp + 0x11a], 0x6f // c684241b01000072 | mov byte ptr [esp + 0x11b], 0x72 $sequence_24 = { 53 ff7508 8d4f04 51 } // n = 4, score = 1100 // 53 | push ebx // ff7508 | push dword ptr [ebp + 8] // 8d4f04 | lea ecx, [edi + 4] // 51 | push ecx $sequence_25 = { c68424130100004c c684241401000061 c684241501000073 c684241601000074 c684241701000045 c684241801000072 } // n = 6, score = 1100 // c68424130100004c | mov byte ptr [esp + 0x113], 0x4c // c684241401000061 | mov byte ptr [esp + 0x114], 0x61 // c684241501000073 | mov byte ptr [esp + 0x115], 0x73 // c684241601000074 | mov byte ptr [esp + 0x116], 0x74 // c684241701000045 | mov byte ptr [esp + 0x117], 0x45 // c684241801000072 | mov byte ptr [esp + 0x118], 0x72 $sequence_26 = { c684249300000073 c684249400000073 c684249500000057 c684249600000000 c684241001000047 } // n = 5, score = 1100 // c684249300000073 | mov byte ptr [esp + 0x93], 0x73 // c684249400000073 | mov byte ptr [esp + 0x94], 0x73 // c684249500000057 | mov byte ptr [esp + 0x95], 0x57 // c684249600000000 | mov byte ptr [esp + 0x96], 0 // c684241001000047 | mov byte ptr [esp + 0x110], 0x47 $sequence_27 = { 8bd8 8d4304 8bf1 8b4e24 57 50 8945f8 } // n = 7, score = 1100 // 8bd8 | mov ebx, eax // 8d4304 | lea eax, [ebx + 4] // 8bf1 | mov esi, ecx // 8b4e24 | mov ecx, dword ptr [esi + 0x24] // 57 | push edi // 50 | push eax // 8945f8 | mov dword ptr [ebp - 8], eax $sequence_28 = { c684248f00000072 c68424900000006f c684249100000063 c684249200000065 c684249300000073 } // n = 5, score = 1100 // c684248f00000072 | mov byte ptr [esp + 0x8f], 0x72 // c68424900000006f | mov byte ptr [esp + 0x90], 0x6f // c684249100000063 | mov byte ptr [esp + 0x91], 0x63 // c684249200000065 | mov byte ptr [esp + 0x92], 0x65 // c684249300000073 | mov byte ptr [esp + 0x93], 0x73 $sequence_29 = { 885dcb c68574ffffff43 c68575ffffff6f c68576ffffff6e } // n = 4, score = 1100 // 885dcb | mov byte ptr [ebp - 0x35], bl // c68574ffffff43 | mov byte ptr [ebp - 0x8c], 0x43 // c68575ffffff6f | mov byte ptr [ebp - 0x8b], 0x6f // c68576ffffff6e | mov byte ptr [ebp - 0x8a], 0x6e $sequence_30 = { 68???????? 6a01 e8???????? 50 e8???????? 83c41c } // n = 6, score = 1000 // 68???????? | // 6a01 | mov byte ptr [esp + 0x114], 0x61 // e8???????? | // 50 | mov byte ptr [esp + 0x115], 0x73 // e8???????? | // 83c41c | mov byte ptr [esp + 0x111], 0x65 $sequence_31 = { 6a01 68???????? e8???????? 83c414 5f 5e 5b } // n = 7, score = 1000 // 6a01 | push 1 // 68???????? | // e8???????? | // 83c414 | add esp, 0x14 // 5f | pop edi // 5e | pop esi // 5b | pop ebx $sequence_32 = { 83c020 50 e8???????? 83c404 33c0 } // n = 5, score = 1000 // 83c020 | push 0xa // 50 | push 1 // e8???????? | // 83c404 | push 0 // 33c0 | push ecx $sequence_33 = { 50 e8???????? 83c408 6800010000 e8???????? } // n = 5, score = 1000 // 50 | push eax // e8???????? | // 83c408 | add esp, 8 // 6800010000 | push 0x100 // e8???????? | $sequence_34 = { 7511 e8???????? 83c020 50 } // n = 4, score = 1000 // 7511 | push 0 // e8???????? | // 83c020 | push 1 // 50 | push 4 $sequence_35 = { 6a00 6a27 6a02 6a00 6a01 } // n = 5, score = 800 // 6a00 | push 0 // 6a27 | push 0x27 // 6a02 | push 2 // 6a00 | push 0 // 6a01 | push 1 $sequence_36 = { 8d8505feffff 50 e8???????? 83c40c } // n = 4, score = 700 // 8d8505feffff | lea eax, [ebp - 0x1fb] // 50 | push eax // e8???????? | // 83c40c | add esp, 0xc $sequence_37 = { c645d316 c645d43a c645d53b c645d63b c645d730 } // n = 5, score = 700 // c645d316 | add esp, 0x10 // c645d43a | push ecx // c645d53b | push 1 // c645d63b | push eax // c645d730 | add esp, 0x14 $sequence_38 = { 488b4338 33d2 488bce 448d4220 } // n = 4, score = 600 // 488b4338 | dec eax // 33d2 | mov eax, dword ptr [ebx + 0x38] // 488bce | xor edx, edx // 448d4220 | dec eax $sequence_39 = { 57 4154 4155 4156 4883ec30 488b4138 } // n = 6, score = 500 // 57 | lea eax, [esp + 0x20] // 4154 | mov edx, 0x104 // 4155 | inc ecx // 4156 | add ecx, 2 // 4883ec30 | dec eax // 488b4138 | mov ecx, edi $sequence_40 = { 498d5310 6689442420 b830000000 488d4c2430 6689442422 b838000000 } // n = 6, score = 500 // 498d5310 | dec eax // 6689442420 | lea ecx, [esp + 0x30] // b830000000 | push edi // 488d4c2430 | dec eax // 6689442422 | sub esp, 0x240 // b838000000 | mov eax, 0x25 $sequence_41 = { 4881ec40020000 b825000000 488bf9 498d5310 6689442420 b830000000 } // n = 6, score = 500 // 4881ec40020000 | mov ecx, esi // b825000000 | inc esp // 488bf9 | lea eax, [edx + 0x20] // 498d5310 | dec eax // 6689442420 | sub esp, 0x240 // b830000000 | mov eax, 0x25 $sequence_42 = { 4c8d4c2450 448bc3 488bd7 4c89642420 } // n = 4, score = 500 // 4c8d4c2450 | sub esp, 0x240 // 448bc3 | mov eax, 0x25 // 488bd7 | dec eax // 4c89642420 | mov edi, ecx $sequence_43 = { 4c8d442420 ba04010000 4183c102 488bcf } // n = 4, score = 500 // 4c8d442420 | dec ecx // ba04010000 | lea edx, [ebx + 0x10] // 4183c102 | mov word ptr [esp + 0x20], ax // 488bcf | mov eax, 0x30 $sequence_44 = { 488d542430 41b8ffff0000 4c895b28 4889742420 } // n = 4, score = 500 // 488d542430 | dec eax // 41b8ffff0000 | lea ecx, [esp + 0x30] // 4c895b28 | mov word ptr [esp + 0x22], ax // 4889742420 | mov eax, 0x38 $sequence_45 = { 488b0e 4c8d442450 4533c9 498bd4 } // n = 4, score = 500 // 488b0e | sub esp, 0x240 // 4c8d442450 | mov eax, 0x25 // 4533c9 | dec eax // 498bd4 | mov edi, ecx $sequence_46 = { 8d8594faffff 50 68???????? ff15???????? } // n = 4, score = 200 // 8d8594faffff | lea eax, [ebp - 0x56c] // 50 | push eax // 68???????? | // ff15???????? | $sequence_47 = { 0304b5100b4200 59 5e eb05 } // n = 4, score = 100 // 0304b5100b4200 | add eax, dword ptr [esi*4 + 0x420b10] // 59 | pop ecx // 5e | pop esi // eb05 | jmp 7 $sequence_48 = { 0304b5100b4200 59 eb05 b8???????? } // n = 4, score = 100 // 0304b5100b4200 | add eax, dword ptr [esi*4 + 0x420b10] // 59 | pop ecx // eb05 | jmp 7 // b8???????? | $sequence_49 = { 030c85100b4200 eb02 8bcb f6412480 } // n = 4, score = 100 // 030c85100b4200 | add ecx, dword ptr [eax*4 + 0x420b10] // eb02 | jmp 4 // 8bcb | mov ecx, ebx // f6412480 | test byte ptr [ecx + 0x24], 0x80 $sequence_50 = { 013d???????? 8b04b5100b4200 0500080000 3bc8 } // n = 4, score = 100 // 013d???????? | // 8b04b5100b4200 | mov eax, dword ptr [esi*4 + 0x420b10] // 0500080000 | add eax, 0x800 // 3bc8 | cmp ecx, eax $sequence_51 = { 0304b5100b4200 beffff0000 59 59 } // n = 4, score = 100 // 0304b5100b4200 | add eax, dword ptr [esi*4 + 0x420b10] // beffff0000 | mov esi, 0xffff // 59 | pop ecx // 59 | pop ecx $sequence_52 = { 001cbe 40 0023 d18a0688078a 46 } // n = 5, score = 100 // 001cbe | add byte ptr [esi + edi*4], bl // 40 | inc eax // 0023 | add byte ptr [ebx], ah // d18a0688078a | ror dword ptr [edx - 0x75f877fa], 1 // 46 | inc esi $sequence_53 = { 0304b5100b4200 59 eb02 8bc3 } // n = 4, score = 100 // 0304b5100b4200 | add eax, dword ptr [esi*4 + 0x420b10] // 59 | pop ecx // eb02 | jmp 4 // 8bc3 | mov eax, ebx condition: 7 of them and filesize < 5577728 }
rule win_agent_btz_w0 { meta: author = "Symantec" source = "https://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/waterbug-attack-group.pdf" contribution = "pnx - removed FPs" malpedia_reference = "https://malpedia.caad.fkie.fraunhofer.de/details/win.agent_btz" malpedia_version = "20171113" malpedia_sharing = "TLP:WHITE" malpedia_license = "" strings: $b = {C645????} $c = {C685??FEFFFF??} $d = {FFA0??0?0000} $e = {89A8??00000068??00000056FFD78B} $f = {00004889????030000488B} $tmp_fn = "FA.tmp" condition: ((#c > 200 and #b > 200 ) or (#d > 40) and (#e > 15 or #f > 30)) and $tmp_fn }
If your designated proposal does not fit in any other category, feel free to write a free-text in the comment field below.
Please propose all changes regarding references on the Malpedia library page
Your suggestion will be reviewed before being published. Thank you for contributing!
YYYY-MM-DD
YYYY-MM
YYYY