win_nymaim_auto
YARA-2024-0180
Medium
general
Active
Detects win.nymaim.
win_nymaim_auto.yar
Valid Syntax
rule win_nymaim_auto {
meta:
author = "Felix Bilstein - yara-signator at cocacoding dot com"
date = "2024-10-31"
version = "1"
description = "Detects win.nymaim."
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.nymaim"
malpedia_rule_date = "20241030"
malpedia_hash = "26e26953c49c8efafbf72a38076855d578e0a2e4"
malpedia_version = "20241030"
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 = { 89d8 01c8 31d2 f7f7 }
// n = 4, score = 1800
// 89d8 | mov eax, ebx
// 01c8 | add eax, ecx
// 31d2 | xor edx, edx
// f7f7 | div edi
$sequence_1 = { 31d2 f7f7 92 31d2 bf64000000 }
// n = 5, score = 1700
// 31d2 | xor edx, edx
// f7f7 | div edi
// 92 | xchg eax, edx
// 31d2 | xor edx, edx
// bf64000000 | mov edi, 0x64
$sequence_2 = { 0f94c1 09c8 6bc064 09c0 }
// n = 4, score = 1700
// 0f94c1 | sete cl
// 09c8 | or eax, ecx
// 6bc064 | imul eax, eax, 0x64
// 09c0 | or eax, eax
$sequence_3 = { 38f0 83d100 38d0 83d900 c1e105 }
// n = 5, score = 1600
// 38f0 | cmp al, dh
// 83d100 | adc ecx, 0
// 38d0 | cmp al, dl
// 83d900 | sbb ecx, 0
// c1e105 | shl ecx, 5
$sequence_4 = { c1e105 01c8 c1c307 30c3 }
// n = 4, score = 1600
// c1e105 | shl ecx, 5
// 01c8 | add eax, ecx
// c1c307 | rol ebx, 7
// 30c3 | xor bl, al
$sequence_5 = { c1e902 83f900 7405 01d3 }
// n = 4, score = 1600
// c1e902 | shr ecx, 2
// 83f900 | cmp ecx, 0
// 7405 | je 7
// 01d3 | add ebx, edx
$sequence_6 = { c1e902 740d 8b06 8907 83c704 }
// n = 5, score = 1600
// c1e902 | shr ecx, 2
// 740d | je 0xf
// 8b06 | mov eax, dword ptr [esi]
// 8907 | mov dword ptr [edi], eax
// 83c704 | add edi, 4
$sequence_7 = { c1eb13 331d???????? 31c3 c1e808 }
// n = 4, score = 1600
// c1eb13 | shr ebx, 0x13
// 331d???????? |
// 31c3 | xor ebx, eax
// c1e808 | shr eax, 8
$sequence_8 = { 31d2 bf64000000 f7f7 5b }
// n = 4, score = 1600
// 31d2 | xor edx, edx
// bf64000000 | mov edi, 0x64
// f7f7 | div edi
// 5b | pop ebx
$sequence_9 = { 010d???????? 8b1d???????? 011d???????? c1eb13 }
// n = 4, score = 1600
// 010d???????? |
// 8b1d???????? |
// 011d???????? |
// c1eb13 | shr ebx, 0x13
$sequence_10 = { 00d3 8a16 301e 46 }
// n = 4, score = 1300
// 00d3 | add bl, dl
// 8a16 | mov dl, byte ptr [esi]
// 301e | xor byte ptr [esi], bl
// 46 | inc esi
$sequence_11 = { c1e808 31c3 895e0c 89d8 }
// n = 4, score = 1100
// c1e808 | shr eax, 8
// 31c3 | xor ebx, eax
// 895e0c | mov dword ptr [esi + 0xc], ebx
// 89d8 | mov eax, ebx
$sequence_12 = { 8b5604 0116 8b4e08 014e04 8b5e0c 015e08 }
// n = 6, score = 1100
// 8b5604 | mov edx, dword ptr [esi + 4]
// 0116 | add dword ptr [esi], edx
// 8b4e08 | mov ecx, dword ptr [esi + 8]
// 014e04 | add dword ptr [esi + 4], ecx
// 8b5e0c | mov ebx, dword ptr [esi + 0xc]
// 015e08 | add dword ptr [esi + 8], ebx
$sequence_13 = { 8b06 c1e00b 3306 8b5604 }
// n = 4, score = 1100
// 8b06 | mov eax, dword ptr [esi]
// c1e00b | shl eax, 0xb
// 3306 | xor eax, dword ptr [esi]
// 8b5604 | mov edx, dword ptr [esi + 4]
$sequence_14 = { 8b1b 4f 31c0 fec2 021c16 8a0416 }
// n = 6, score = 1100
// 8b1b | mov ebx, dword ptr [ebx]
// 4f | dec edi
// 31c0 | xor eax, eax
// fec2 | inc dl
// 021c16 | add bl, byte ptr [esi + edx]
// 8a0416 | mov al, byte ptr [esi + edx]
$sequence_15 = { 8b12 8b4d0c 8b5d18 8b1b 4f 31c0 }
// n = 6, score = 1100
// 8b12 | mov edx, dword ptr [edx]
// 8b4d0c | mov ecx, dword ptr [ebp + 0xc]
// 8b5d18 | mov ebx, dword ptr [ebp + 0x18]
// 8b1b | mov ebx, dword ptr [ebx]
// 4f | dec edi
// 31c0 | xor eax, eax
$sequence_16 = { 31d2 890c24 c744240400000000 8945f4 8955f0 e8???????? 8d0d8630d201 }
// n = 7, score = 100
// 31d2 | xor edx, edx
// 890c24 | mov dword ptr [esp], ecx
// c744240400000000 | mov dword ptr [esp + 4], 0
// 8945f4 | mov dword ptr [ebp - 0xc], eax
// 8955f0 | mov dword ptr [ebp - 0x10], edx
// e8???????? |
// 8d0d8630d201 | lea ecx, [0x1d23086]
$sequence_17 = { 5b 5d c3 8b45f0 8b0c850440d201 }
// n = 5, score = 100
// 5b | pop ebx
// 5d | pop ebp
// c3 | ret
// 8b45f0 | mov eax, dword ptr [ebp - 0x10]
// 8b0c850440d201 | mov ecx, dword ptr [eax*4 + 0x1d24004]
$sequence_18 = { 56 83ec28 8b450c 8b4d08 8d154e30d201 }
// n = 5, score = 100
// 56 | push esi
// 83ec28 | sub esp, 0x28
// 8b450c | mov eax, dword ptr [ebp + 0xc]
// 8b4d08 | mov ecx, dword ptr [ebp + 8]
// 8d154e30d201 | lea edx, [0x1d2304e]
$sequence_19 = { 31c9 8b55f4 8b75ec 89723c c7424003000000 }
// n = 5, score = 100
// 31c9 | xor ecx, ecx
// 8b55f4 | mov edx, dword ptr [ebp - 0xc]
// 8b75ec | mov esi, dword ptr [ebp - 0x14]
// 89723c | mov dword ptr [edx + 0x3c], esi
// c7424003000000 | mov dword ptr [edx + 0x40], 3
$sequence_20 = { 83ec44 8b4508 8d0d2030d201 31d2 890c24 c744240400000000 }
// n = 6, score = 100
// 83ec44 | sub esp, 0x44
// 8b4508 | mov eax, dword ptr [ebp + 8]
// 8d0d2030d201 | lea ecx, [0x1d23020]
// 31d2 | xor edx, edx
// 890c24 | mov dword ptr [esp], ecx
// c744240400000000 | mov dword ptr [esp + 4], 0
$sequence_21 = { 55 89e5 83ec10 8b4508 8d0d3430d201 }
// n = 5, score = 100
// 55 | push ebp
// 89e5 | mov ebp, esp
// 83ec10 | sub esp, 0x10
// 8b4508 | mov eax, dword ptr [ebp + 8]
// 8d0d3430d201 | lea ecx, [0x1d23034]
$sequence_22 = { 53 56 57 83ec44 8b4508 8d0d2030d201 }
// n = 6, score = 100
// 53 | push ebx
// 56 | push esi
// 57 | push edi
// 83ec44 | sub esp, 0x44
// 8b4508 | mov eax, dword ptr [ebp + 8]
// 8d0d2030d201 | lea ecx, [0x1d23020]
$sequence_23 = { 890424 894c2404 e8???????? 8d0d3430d201 }
// n = 4, score = 100
// 890424 | mov dword ptr [esp], eax
// 894c2404 | mov dword ptr [esp + 4], ecx
// e8???????? |
// 8d0d3430d201 | lea ecx, [0x1d23034]
condition:
1 of them and filesize < 2375680
}
Rule Metadata
author
Felix Bilstein - yara-signator at cocacoding dot com
date
2024-10-31
version
1
description
Detects win.nymaim.
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.nymaim
malpedia_rule_date
20241030
malpedia_hash
26e26953c49c8efafbf72a38076855d578e0a2e4
malpedia_version
20241030
malpedia_license
CC BY-SA 4.0
malpedia_sharing
TLP:WHITE
String Definitions
{"name":"$sequence_0","value":"{ 89d8 01c8 31d2 f7f7 }\n \/\/ n = 4, score = 1800\n \/\/ 89d8 | mov eax, ebx\n \/\/ 01c8 | add eax, ecx\n \/\/ 31d2 | xor edx, edx\n \/\/ f7f7 | div edi"}
{"name":"$sequence_1","value":"{ 31d2 f7f7 92 31d2 bf64000000 }\n \/\/ n = 5, score = 1700\n \/\/ 31d2 | xor edx, edx\n \/\/ f7f7 | div edi\n \/\/ 92 | xchg eax, edx\n \/\/ 31d2 | xor edx, edx\n \/\/ bf64000000 | mov edi, 0x64"}
{"name":"$sequence_2","value":"{ 0f94c1 09c8 6bc064 09c0 }\n \/\/ n = 4, score = 1700\n \/\/ 0f94c1 | sete cl\n \/\/ 09c8 | or eax, ecx\n \/\/ 6bc064 | imul eax, eax, 0x64\n \/\/ 09c0 | or eax, eax"}
{"name":"$sequence_3","value":"{ 38f0 83d100 38d0 83d900 c1e105 }\n \/\/ n = 5, score = 1600\n \/\/ 38f0 | cmp al, dh\n \/\/ 83d100 | adc ecx, 0\n \/\/ 38d0 | cmp al, dl\n \/\/ 83d900 | sbb ecx, 0\n \/\/ c1e105 | shl ecx, 5"}
{"name":"$sequence_4","value":"{ c1e105 01c8 c1c307 30c3 }\n \/\/ n = 4, score = 1600\n \/\/ c1e105 | shl ecx, 5\n \/\/ 01c8 | add eax, ecx\n \/\/ c1c307 | rol ebx, 7\n \/\/ 30c3 | xor bl, al"}
{"name":"$sequence_5","value":"{ c1e902 83f900 7405 01d3 }\n \/\/ n = 4, score = 1600\n \/\/ c1e902 | shr ecx, 2\n \/\/ 83f900 | cmp ecx, 0\n \/\/ 7405 | je 7\n \/\/ 01d3 | add ebx, edx"}
{"name":"$sequence_6","value":"{ c1e902 740d 8b06 8907 83c704 }\n \/\/ n = 5, score = 1600\n \/\/ c1e902 | shr ecx, 2\n \/\/ 740d | je 0xf\n \/\/ 8b06 | mov eax, dword ptr [esi]\n \/\/ 8907 | mov dword ptr [edi], eax\n \/\/ 83c704 | add edi, 4"}
{"name":"$sequence_7","value":"{ c1eb13 331d???????? 31c3 c1e808 }\n \/\/ n = 4, score = 1600\n \/\/ c1eb13 | shr ebx, 0x13\n \/\/ 331d???????? | \n \/\/ 31c3 | xor ebx, eax\n \/\/ c1e808 | shr eax, 8"}
{"name":"$sequence_8","value":"{ 31d2 bf64000000 f7f7 5b }\n \/\/ n = 4, score = 1600\n \/\/ 31d2 | xor edx, edx\n \/\/ bf64000000 | mov edi, 0x64\n \/\/ f7f7 | div edi\n \/\/ 5b | pop ebx"}
{"name":"$sequence_9","value":"{ 010d???????? 8b1d???????? 011d???????? c1eb13 }\n \/\/ n = 4, score = 1600\n \/\/ 010d???????? | \n \/\/ 8b1d???????? | \n \/\/ 011d???????? | \n \/\/ c1eb13 | shr ebx, 0x13"}
{"name":"$sequence_10","value":"{ 00d3 8a16 301e 46 }\n \/\/ n = 4, score = 1300\n \/\/ 00d3 | add bl, dl\n \/\/ 8a16 | mov dl, byte ptr [esi]\n \/\/ 301e | xor byte ptr [esi], bl\n \/\/ 46 | inc esi"}
{"name":"$sequence_11","value":"{ c1e808 31c3 895e0c 89d8 }\n \/\/ n = 4, score = 1100\n \/\/ c1e808 | shr eax, 8\n \/\/ 31c3 | xor ebx, eax\n \/\/ 895e0c | mov dword ptr [esi + 0xc], ebx\n \/\/ 89d8 | mov eax, ebx"}
{"name":"$sequence_12","value":"{ 8b5604 0116 8b4e08 014e04 8b5e0c 015e08 }\n \/\/ n = 6, score = 1100\n \/\/ 8b5604 | mov edx, dword ptr [esi + 4]\n \/\/ 0116 | add dword ptr [esi], edx\n \/\/ 8b4e08 | mov ecx, dword ptr [esi + 8]\n \/\/ 014e04 | add dword ptr [esi + 4], ecx\n \/\/ 8b5e0c | mov ebx, dword ptr [esi + 0xc]\n \/\/ 015e08 | add dword ptr [esi + 8], ebx"}
{"name":"$sequence_13","value":"{ 8b06 c1e00b 3306 8b5604 }\n \/\/ n = 4, score = 1100\n \/\/ 8b06 | mov eax, dword ptr [esi]\n \/\/ c1e00b | shl eax, 0xb\n \/\/ 3306 | xor eax, dword ptr [esi]\n \/\/ 8b5604 | mov edx, dword ptr [esi + 4]"}
{"name":"$sequence_14","value":"{ 8b1b 4f 31c0 fec2 021c16 8a0416 }\n \/\/ n = 6, score = 1100\n \/\/ 8b1b | mov ebx, dword ptr [ebx]\n \/\/ 4f | dec edi\n \/\/ 31c0 | xor eax, eax\n \/\/ fec2 | inc dl\n \/\/ 021c16 | add bl, byte ptr [esi + edx]\n \/\/ 8a0416 | mov al, byte ptr [esi + edx]"}
{"name":"$sequence_15","value":"{ 8b12 8b4d0c 8b5d18 8b1b 4f 31c0 }\n \/\/ n = 6, score = 1100\n \/\/ 8b12 | mov edx, dword ptr [edx]\n \/\/ 8b4d0c | mov ecx, dword ptr [ebp + 0xc]\n \/\/ 8b5d18 | mov ebx, dword ptr [ebp + 0x18]\n \/\/ 8b1b | mov ebx, dword ptr [ebx]\n \/\/ 4f | dec edi\n \/\/ 31c0 | xor eax, eax"}
{"name":"$sequence_16","value":"{ 31d2 890c24 c744240400000000 8945f4 8955f0 e8???????? 8d0d8630d201 }\n \/\/ n = 7, score = 100\n \/\/ 31d2 | xor edx, edx\n \/\/ 890c24 | mov dword ptr [esp], ecx\n \/\/ c744240400000000 | mov dword ptr [esp + 4], 0\n \/\/ 8945f4 | mov dword ptr [ebp - 0xc], eax\n \/\/ 8955f0 | mov dword ptr [ebp - 0x10], edx\n \/\/ e8???????? | \n \/\/ 8d0d8630d201 | lea ecx, [0x1d23086]"}
{"name":"$sequence_17","value":"{ 5b 5d c3 8b45f0 8b0c850440d201 }\n \/\/ n = 5, score = 100\n \/\/ 5b | pop ebx\n \/\/ 5d | pop ebp\n \/\/ c3 | ret \n \/\/ 8b45f0 | mov eax, dword ptr [ebp - 0x10]\n \/\/ 8b0c850440d201 | mov ecx, dword ptr [eax*4 + 0x1d24004]"}
{"name":"$sequence_18","value":"{ 56 83ec28 8b450c 8b4d08 8d154e30d201 }\n \/\/ n = 5, score = 100\n \/\/ 56 | push esi\n \/\/ 83ec28 | sub esp, 0x28\n \/\/ 8b450c | mov eax, dword ptr [ebp + 0xc]\n \/\/ 8b4d08 | mov ecx, dword ptr [ebp + 8]\n \/\/ 8d154e30d201 | lea edx, [0x1d2304e]"}
{"name":"$sequence_19","value":"{ 31c9 8b55f4 8b75ec 89723c c7424003000000 }\n \/\/ n = 5, score = 100\n \/\/ 31c9 | xor ecx, ecx\n \/\/ 8b55f4 | mov edx, dword ptr [ebp - 0xc]\n \/\/ 8b75ec | mov esi, dword ptr [ebp - 0x14]\n \/\/ 89723c | mov dword ptr [edx + 0x3c], esi\n \/\/ c7424003000000 | mov dword ptr [edx + 0x40], 3"}
{"name":"$sequence_20","value":"{ 83ec44 8b4508 8d0d2030d201 31d2 890c24 c744240400000000 }\n \/\/ n = 6, score = 100\n \/\/ 83ec44 | sub esp, 0x44\n \/\/ 8b4508 | mov eax, dword ptr [ebp + 8]\n \/\/ 8d0d2030d201 | lea ecx, [0x1d23020]\n \/\/ 31d2 | xor edx, edx\n \/\/ 890c24 | mov dword ptr [esp], ecx\n \/\/ c744240400000000 | mov dword ptr [esp + 4], 0"}
{"name":"$sequence_21","value":"{ 55 89e5 83ec10 8b4508 8d0d3430d201 }\n \/\/ n = 5, score = 100\n \/\/ 55 | push ebp\n \/\/ 89e5 | mov ebp, esp\n \/\/ 83ec10 | sub esp, 0x10\n \/\/ 8b4508 | mov eax, dword ptr [ebp + 8]\n \/\/ 8d0d3430d201 | lea ecx, [0x1d23034]"}
{"name":"$sequence_22","value":"{ 53 56 57 83ec44 8b4508 8d0d2030d201 }\n \/\/ n = 6, score = 100\n \/\/ 53 | push ebx\n \/\/ 56 | push esi\n \/\/ 57 | push edi\n \/\/ 83ec44 | sub esp, 0x44\n \/\/ 8b4508 | mov eax, dword ptr [ebp + 8]\n \/\/ 8d0d2030d201 | lea ecx, [0x1d23020]"}
{"name":"$sequence_23","value":"{ 890424 894c2404 e8???????? 8d0d3430d201 }\n \/\/ n = 4, score = 100\n \/\/ 890424 | mov dword ptr [esp], eax\n \/\/ 894c2404 | mov dword ptr [esp + 4], ecx\n \/\/ e8???????? | \n \/\/ 8d0d3430d201 | lea ecx, [0x1d23034]"}
Threat Analysis
This YARA rule is designed to detect general threats.
Severity Level: Medium
The rule uses pattern matching to identify specific byte sequences, strings, or behavioral patterns associated with malicious activity.
Detection Capabilities
- File-based detection for executables and documents
- Memory scanning for running processes
- Network traffic analysis support
Command Line Usage
# Scan a single file yara win_nymaim_auto.yar /path/to/suspicious/file # Scan a directory recursively yara -r win_nymaim_auto.yar /path/to/directory/ # Scan with metadata output yara -m win_nymaim_auto.yar target_file # Scan process memory (Linux) yara win_nymaim_auto.yar /proc/[pid]/exe
Integration Examples
Python (yara-python)
import yara
rules = yara.compile(filepath='win_nymaim_auto.yar')
matches = rules.match('/path/to/file')
ClamAV Integration
clamscan --yara-rules=win_nymaim_auto.yar /path/to/scan
Rule Information
YARA ID
YARA-2024-0180
Repository
Created
August 19, 2025
Last Updated
August 19, 2025
Last Imported
Never
Threat Intelligence
Risk Level
Medium
Category
general
Detection Confidence
Analysis Pending
False Positive Rate
Not Available
Last Seen in Wild
No Data
Related Rules
Export Options
Similar Rules in general
YARA-2023-0001
CRI
Detect_Mimic_Ransomware
Detect_Mimic_Ransomware
YARA-2023-0002
MED
SystemBC_malware
Detect_SystemBC
YARA-2023-0003
MED
detect_catB
detect_CatB_ransomware
YARA-2022-0001
MED
detect_Typhon_Stealer
detect_Typhon_Stealer
YARA-2023-0004
MED
Nosu_stealer
Detect_Nosu_stealer
YARA-2022-0002
MED
detect_Lumma_stealer
detect_Lumma_stealer
YARA-2022-0003
MED
detect_StrelaStealer
detect_StrelaStealer
YARA-2022-0004
MED
detect_silence_Downloader
detect_silence_Downloader