There is no description at this point.
rule win_xfsadm_auto { meta: author = "Felix Bilstein - yara-signator at cocacoding dot com" date = "2023-03-28" version = "1" description = "Detects win.xfsadm." 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.xfsadm" malpedia_rule_date = "20230328" malpedia_hash = "9d2d75cef573c1c2d861f5197df8f563b05a305d" malpedia_version = "20230407" 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 = { 80fb5f 0f8515010000 8b45fc 8b4804 8b81b0000000 } // n = 5, score = 100 // 80fb5f | cmp bl, 0x5f // 0f8515010000 | jne 0x11b // 8b45fc | mov eax, dword ptr [ebp - 4] // 8b4804 | mov ecx, dword ptr [eax + 4] // 8b81b0000000 | mov eax, dword ptr [ecx + 0xb0] $sequence_1 = { 0f8427010000 68???????? ff35???????? ffd6 a3???????? 85c0 0f840d010000 } // n = 7, score = 100 // 0f8427010000 | je 0x12d // 68???????? | // ff35???????? | // ffd6 | call esi // a3???????? | // 85c0 | test eax, eax // 0f840d010000 | je 0x113 $sequence_2 = { 53 8bdf 3b7908 0f8306010000 8b01 a802 743c } // n = 7, score = 100 // 53 | push ebx // 8bdf | mov ebx, edi // 3b7908 | cmp edi, dword ptr [ecx + 8] // 0f8306010000 | jae 0x10c // 8b01 | mov eax, dword ptr [ecx] // a802 | test al, 2 // 743c | je 0x3e $sequence_3 = { 897824 8d8528feffff 897e28 894708 68???????? 8d8d28feffff } // n = 6, score = 100 // 897824 | mov dword ptr [eax + 0x24], edi // 8d8528feffff | lea eax, [ebp - 0x1d8] // 897e28 | mov dword ptr [esi + 0x28], edi // 894708 | mov dword ptr [edi + 8], eax // 68???????? | // 8d8d28feffff | lea ecx, [ebp - 0x1d8] $sequence_4 = { 8b4120 3bf0 7506 8b4024 894120 8b4e24 85c9 } // n = 7, score = 100 // 8b4120 | mov eax, dword ptr [ecx + 0x20] // 3bf0 | cmp esi, eax // 7506 | jne 8 // 8b4024 | mov eax, dword ptr [eax + 0x24] // 894120 | mov dword ptr [ecx + 0x20], eax // 8b4e24 | mov ecx, dword ptr [esi + 0x24] // 85c9 | test ecx, ecx $sequence_5 = { 660ffec1 660f7e81f8fdffff 660f73d804 660f7e812cfeffff 660f73d804 660f7e8160feffff 660f73d804 } // n = 7, score = 100 // 660ffec1 | paddd xmm0, xmm1 // 660f7e81f8fdffff | movd dword ptr [ecx - 0x208], xmm0 // 660f73d804 | psrldq xmm0, 4 // 660f7e812cfeffff | movd dword ptr [ecx - 0x1d4], xmm0 // 660f73d804 | psrldq xmm0, 4 // 660f7e8160feffff | movd dword ptr [ecx - 0x1a0], xmm0 // 660f73d804 | psrldq xmm0, 4 $sequence_6 = { 6a0f 50 c605????????01 ff15???????? 68???????? 6a03 } // n = 6, score = 100 // 6a0f | push 0xf // 50 | push eax // c605????????01 | // ff15???????? | // 68???????? | // 6a03 | push 3 $sequence_7 = { e8???????? 0f57c0 c78550feffff00000000 0f118530feffff 8d8594feffff 83c40c 0f118540feffff } // n = 7, score = 100 // e8???????? | // 0f57c0 | xorps xmm0, xmm0 // c78550feffff00000000 | mov dword ptr [ebp - 0x1b0], 0 // 0f118530feffff | movups xmmword ptr [ebp - 0x1d0], xmm0 // 8d8594feffff | lea eax, [ebp - 0x16c] // 83c40c | add esp, 0xc // 0f118540feffff | movups xmmword ptr [ebp - 0x1c0], xmm0 $sequence_8 = { c20400 8d4e0c e8???????? 50 8bcf e8???????? 8a4e34 } // n = 7, score = 100 // c20400 | ret 4 // 8d4e0c | lea ecx, [esi + 0xc] // e8???????? | // 50 | push eax // 8bcf | mov ecx, edi // e8???????? | // 8a4e34 | mov cl, byte ptr [esi + 0x34] $sequence_9 = { 66c746740101 c6868a00000001 c6868c00000001 c686b400000001 c686ca00000001 c686cc00000001 8b86ec000000 } // n = 7, score = 100 // 66c746740101 | mov word ptr [esi + 0x74], 0x101 // c6868a00000001 | mov byte ptr [esi + 0x8a], 1 // c6868c00000001 | mov byte ptr [esi + 0x8c], 1 // c686b400000001 | mov byte ptr [esi + 0xb4], 1 // c686ca00000001 | mov byte ptr [esi + 0xca], 1 // c686cc00000001 | mov byte ptr [esi + 0xcc], 1 // 8b86ec000000 | mov eax, dword ptr [esi + 0xec] condition: 7 of them and filesize < 566272 }
rule win_xfsadm_w0 { meta: description = "Detects ATM Malware XFSADM" author = "Frank Boldewin (@r3c0nst)" reference = "https://twitter.com/r3c0nst/status/1149043362244308992" date = "2019-06-21" hash1 = "2740bd2b7aa0eaa8de2135dd710eb669d4c4c91d29eefbf54f1b81165ad2da4d" malpedia_reference = "https://malpedia.caad.fkie.fraunhofer.de/details/win.xfsadm" malpedia_version = "20190712" malpedia_license = "CC BY-SA 4.0" malpedia_sharing = "TLP:WHITE" strings: $Code1 = {68 88 13 00 00 FF 35 ?? ?? ?? ?? 68 CF 00 00 00 50 FF 15} // Read Card Data $Code2 = {68 98 01 00 00 50 FF 15} // Get PIN Data $Mutex = "myXFSADM" nocase wide $MSXFSDIR = "C:\\Windows\\System32\\msxfs.dll" nocase ascii $XFSCommand1 = "WfsExecute" nocase ascii $XFSCommand2 = "WfsGetInfo" nocase ascii $PDB = "C:\\Work64\\ADM\\XFS\\Release\\XFS.pdb" nocase ascii $WindowName = "XFS ADM" nocase wide $FindWindow = "ADM rec" nocase wide $LogFile = "xfs.log" nocase ascii $TmpFile = "~pipe.tmp" nocase ascii condition: uint16(0) == 0x5A4D and filesize < 500KB and 4 of them }
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