APT_Backdoor_Win_DShell_1

YARA-2025-1032 High general Active

This rule is looking for sections of an integer array which contains the encoded payload along with a selection of Windows functions that are present within a DShell payload

APT_Backdoor_Win_DShell_1.yar Valid Syntax
// Copyright 2020 by FireEye, Inc.
// You may not use this file except in compliance with the license. The license should have been received with this file. You may obtain a copy of the license at:
// https://github.com/fireeye/red_team_tool_countermeasures/blob/master/LICENSE.txt
rule APT_Backdoor_Win_DShell_1
{
    meta:
        description = "This rule is looking for sections of an integer array which contains the encoded payload along with a selection of Windows functions that are present within a DShell payload"
        md5 = "152fc2320790aa16ef9b6126f47c3cca"
        rev = 4
        author = "FireEye"
    strings:
        $e0 = ",0,"
        $e1 = ",1,"
        $e2 = ",2,"
        $e3 = ",3,"
        $e4 = ",4,"
        $e5 = ",5,"
        $e6 = ",6,"
        $e7 = ",7,"
        $e8 = ",8,"
        $e9 = ",9,"
        $e10 = ",10,"
        $e11 = ",11,"
        $e12 = ",12,"
        $e13 = ",13,"
        $e14 = ",14,"
        $e15 = ",15,"
        $e16 = ",16,"
        $e17 = ",17,"
        $e18 = ",18,"
        $e19 = ",19,"
        $e20 = ",20,"
        $e21 = ",21,"
        $e22 = ",22,"
        $e23 = ",23,"
        $e24 = ",24,"
        $e25 = ",25,"
        $e26 = ",26,"
        $e27 = ",27,"
        $e28 = ",28,"
        $e29 = ",29,"
        $e30 = ",30,"
        $e31 = ",31,"
        $e32 = ",32,"
        $e33 = ",33,"
        $e34 = ",34,"
        $e35 = ",35,"
        $e36 = ",36,"
        $e37 = ",37,"
        $e38 = ",38,"
        $e39 = ",39,"
        $e40 = ",40,"
        $e41 = ",41,"
        $e42 = ",42,"
        $e43 = ",43,"
        $e44 = ",44,"
        $e45 = ",45,"
        $e46 = ",46,"
        $e47 = ",47,"
        $e48 = ",48,"
        $e49 = ",49,"
        $e50 = ",50,"
        $e51 = ",51,"
        $e52 = ",52,"
        $e53 = ",53,"
        $e54 = ",54,"
        $e55 = ",55,"
        $e56 = ",56,"
        $e57 = ",57,"
        $e58 = ",58,"
        $e59 = ",59,"
        $e60 = ",60,"
        $e61 = ",61,"
        $e62 = ",62,"
        $e63 = ",63,"
        $e64 = ",64,"
        $s1 = "GetACP"
        $s2 = "GetOEMCP"
        $s3 = "GetCPInfo"
        $s4 = "WriteConsoleA"
        $s5 = "FindFirstFileA"
        $s6 = "FileTimeToDosDateTime"
        $s7 = "FindNextFileA"
        $s8 = "GetStringTypeA"
        $s9 = "GetFileType"
        $s10 = "CreateFileA"
        $s11 = "GlobalAlloc"
        $s12 = "GlobalFree"
        $s13 = "GetTickCount"
        $s14 = "GetProcessHeap"
        $s15 = "UnhandledExceptionFilter"
        $s16 = "ExitProcess"
        $s17 = "GetModuleFileNameA"
        $s18 = "LCMapStringA"
        $s19 = "GetLocalTime"
        $s20 = "CreateThread"
        $s21 = "ExitThread"
        $s22 = "SetConsoleCtrlHandler"
        $s23 = "FreeEnvironmentStringsA"
        $s24 = "GetVersion"
        $s25 = "GetEnvironmentStrings"
        $s26 = "SetHandleCount"
        $s27 = "SetFilePointer"
        $s28 = "DeleteFileA"
        $s29 = "HeapAlloc"
        $s30 = "HeapReAlloc"
        $s31 = "HeapFree"
        $s32 = "GetCommandLineA"
        $s33 = "GetThreadContext"
        $s34 = "SuspendThread"
        $s35 = "FindFirstFileW"
        $s36 = "FindNextFileW"
        $s37 = "FindClose"
        $s38 = "CreateSemaphoreA"
        $s39 = "ReleaseSemaphore"
        $s40 = "ExpandEnvironmentStringsW"
        $s41 = "lstrlenW"
        $s42 = "GetModuleHandleA"
        $s43 = "GetEnvironmentVariableA"
        $s44 = "RtlCaptureContext"
        $s45 = "GlobalMemoryStatus"
        $s46 = "VirtualAlloc"
        $s47 = "Sleep"
        $s48 = "SystemTimeToTzSpecificLocalTime"
        $s49 = "TzSpecificLocalTimeToSystemTime"
        $s50 = "GetTimeZoneInformation"
        $s51 = "TryEnterCriticalSection"
        $s52 = "LoadLibraryA"
        $s53 = "VirtualFree"
        $s54 = "GetExitCodeThread"
        $s55 = "WaitForSingleObject"
        $s56 = "ResumeThread"
        $s57 = "DuplicateHandle"
        $s58 = "GetCurrentProcess"
        $s59 = "GetCurrentThread"
        $s60 = "GetCurrentThreadId"
        $s61 = "InitializeCriticalSection"
        $s62 = "DeleteCriticalSection"
        $s63 = "SwitchToThread"
        $s64 = "LeaveCriticalSection"
        $s65 = "EnterCriticalSection"
        $s66 = "FormatMessageW"
        $s67 = "SetLastError"
        $s68 = "GetEnvironmentVariableW"
        $s69 = "FreeEnvironmentStringsW"
        $s70 = "GetEnvironmentStringsW"
        $s71 = "SetEnvironmentVariableW"
        $s72 = "GetSystemInfo"
        $s73 = "QueryPerformanceFrequency"
        $s74 = "QueryPerformanceCounter"
        $s75 = "CreateProcessW"
        $s76 = "GetStdHandle"
        $s77 = "GetHandleInformation"
        $s78 = "SetHandleInformation"
        $s79 = "WriteFile"
        $s80 = "GetConsoleOutputCP"
        $s81 = "FreeLibrary"
        $s82 = "GetConsoleScreenBufferInfo"
        $s83 = "MultiByteToWideChar"
        $s84 = "RaiseException"
        $s85 = "RtlUnwind"
        $s86 = "GetCurrentDirectoryW"
        $s87 = "IsDebuggerPresent"
        $s88 = "LocalFree"
        $s89 = "WideCharToMultiByte"
        $s90 = "GetCommandLineW"
        $s91 = "ReadFile"
        $s92 = "GetFileSize"
        $s93 = "CloseHandle"
        $s94 = "CreateFileW"
        $s95 = "LoadLibraryW"
        $s96 = "GetProcAddress"
        $s97 = "GetFileAttributesW"
        $s98 = "GetLastError"
        $s99 = "CommandLineToArgvW"
        $s100 = "MessageBoxA"
        $s101 = "RegEnumValueW"
        $s102 = "RegEnumKeyExW"
        $s103 = "RegDeleteValueW"
        $s104 = "RegFlushKey"
        $s105 = "RegQueryInfoKeyW"
        $s106 = "RegDeleteKeyW"
        $s107 = "RegQueryValueExW"
        $s108 = "RegSetValueExW"
        $s109 = "RegOpenKeyW"
        $s110 = "RegOpenKeyExW"
        $s111 = "RegCreateKeyExW"
        $s112 = "RegCloseKey"
    condition:
        (uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550) and filesize > 500KB and 105 of ($s*) and $s112 in (3000..4000) and 40 of ($e*)
}

Rule Metadata

description
This rule is looking for sections of an integer array which contains the encoded payload along with a selection of Windows functions that are present within a DShell payload
md5
152fc2320790aa16ef9b6126f47c3cca
author
FireEye

String Definitions

{"name":"$e0","value":"\",0,\""}
{"name":"$e1","value":"\",1,\""}
{"name":"$e2","value":"\",2,\""}
{"name":"$e3","value":"\",3,\""}
{"name":"$e4","value":"\",4,\""}
{"name":"$e5","value":"\",5,\""}
{"name":"$e6","value":"\",6,\""}
{"name":"$e7","value":"\",7,\""}
{"name":"$e8","value":"\",8,\""}
{"name":"$e9","value":"\",9,\""}
{"name":"$e10","value":"\",10,\""}
{"name":"$e11","value":"\",11,\""}
{"name":"$e12","value":"\",12,\""}
{"name":"$e13","value":"\",13,\""}
{"name":"$e14","value":"\",14,\""}
{"name":"$e15","value":"\",15,\""}
{"name":"$e16","value":"\",16,\""}
{"name":"$e17","value":"\",17,\""}
{"name":"$e18","value":"\",18,\""}
{"name":"$e19","value":"\",19,\""}
{"name":"$e20","value":"\",20,\""}
{"name":"$e21","value":"\",21,\""}
{"name":"$e22","value":"\",22,\""}
{"name":"$e23","value":"\",23,\""}
{"name":"$e24","value":"\",24,\""}
{"name":"$e25","value":"\",25,\""}
{"name":"$e26","value":"\",26,\""}
{"name":"$e27","value":"\",27,\""}
{"name":"$e28","value":"\",28,\""}
{"name":"$e29","value":"\",29,\""}
{"name":"$e30","value":"\",30,\""}
{"name":"$e31","value":"\",31,\""}
{"name":"$e32","value":"\",32,\""}
{"name":"$e33","value":"\",33,\""}
{"name":"$e34","value":"\",34,\""}
{"name":"$e35","value":"\",35,\""}
{"name":"$e36","value":"\",36,\""}
{"name":"$e37","value":"\",37,\""}
{"name":"$e38","value":"\",38,\""}
{"name":"$e39","value":"\",39,\""}
{"name":"$e40","value":"\",40,\""}
{"name":"$e41","value":"\",41,\""}
{"name":"$e42","value":"\",42,\""}
{"name":"$e43","value":"\",43,\""}
{"name":"$e44","value":"\",44,\""}
{"name":"$e45","value":"\",45,\""}
{"name":"$e46","value":"\",46,\""}
{"name":"$e47","value":"\",47,\""}
{"name":"$e48","value":"\",48,\""}
{"name":"$e49","value":"\",49,\""}
{"name":"$e50","value":"\",50,\""}
{"name":"$e51","value":"\",51,\""}
{"name":"$e52","value":"\",52,\""}
{"name":"$e53","value":"\",53,\""}
{"name":"$e54","value":"\",54,\""}
{"name":"$e55","value":"\",55,\""}
{"name":"$e56","value":"\",56,\""}
{"name":"$e57","value":"\",57,\""}
{"name":"$e58","value":"\",58,\""}
{"name":"$e59","value":"\",59,\""}
{"name":"$e60","value":"\",60,\""}
{"name":"$e61","value":"\",61,\""}
{"name":"$e62","value":"\",62,\""}
{"name":"$e63","value":"\",63,\""}
{"name":"$e64","value":"\",64,\""}
{"name":"$s1","value":"\"GetACP\""}
{"name":"$s2","value":"\"GetOEMCP\""}
{"name":"$s3","value":"\"GetCPInfo\""}
{"name":"$s4","value":"\"WriteConsoleA\""}
{"name":"$s5","value":"\"FindFirstFileA\""}
{"name":"$s6","value":"\"FileTimeToDosDateTime\""}
{"name":"$s7","value":"\"FindNextFileA\""}
{"name":"$s8","value":"\"GetStringTypeA\""}
{"name":"$s9","value":"\"GetFileType\""}
{"name":"$s10","value":"\"CreateFileA\""}
{"name":"$s11","value":"\"GlobalAlloc\""}
{"name":"$s12","value":"\"GlobalFree\""}
{"name":"$s13","value":"\"GetTickCount\""}
{"name":"$s14","value":"\"GetProcessHeap\""}
{"name":"$s15","value":"\"UnhandledExceptionFilter\""}
{"name":"$s16","value":"\"ExitProcess\""}
{"name":"$s17","value":"\"GetModuleFileNameA\""}
{"name":"$s18","value":"\"LCMapStringA\""}
{"name":"$s19","value":"\"GetLocalTime\""}
{"name":"$s20","value":"\"CreateThread\""}
{"name":"$s21","value":"\"ExitThread\""}
{"name":"$s22","value":"\"SetConsoleCtrlHandler\""}
{"name":"$s23","value":"\"FreeEnvironmentStringsA\""}
{"name":"$s24","value":"\"GetVersion\""}
{"name":"$s25","value":"\"GetEnvironmentStrings\""}
{"name":"$s26","value":"\"SetHandleCount\""}
{"name":"$s27","value":"\"SetFilePointer\""}
{"name":"$s28","value":"\"DeleteFileA\""}
{"name":"$s29","value":"\"HeapAlloc\""}
{"name":"$s30","value":"\"HeapReAlloc\""}
{"name":"$s31","value":"\"HeapFree\""}
{"name":"$s32","value":"\"GetCommandLineA\""}
{"name":"$s33","value":"\"GetThreadContext\""}
{"name":"$s34","value":"\"SuspendThread\""}
{"name":"$s35","value":"\"FindFirstFileW\""}
{"name":"$s36","value":"\"FindNextFileW\""}
{"name":"$s37","value":"\"FindClose\""}
{"name":"$s38","value":"\"CreateSemaphoreA\""}
{"name":"$s39","value":"\"ReleaseSemaphore\""}
{"name":"$s40","value":"\"ExpandEnvironmentStringsW\""}
{"name":"$s41","value":"\"lstrlenW\""}
{"name":"$s42","value":"\"GetModuleHandleA\""}
{"name":"$s43","value":"\"GetEnvironmentVariableA\""}
{"name":"$s44","value":"\"RtlCaptureContext\""}
{"name":"$s45","value":"\"GlobalMemoryStatus\""}
{"name":"$s46","value":"\"VirtualAlloc\""}
{"name":"$s47","value":"\"Sleep\""}
{"name":"$s48","value":"\"SystemTimeToTzSpecificLocalTime\""}
{"name":"$s49","value":"\"TzSpecificLocalTimeToSystemTime\""}
{"name":"$s50","value":"\"GetTimeZoneInformation\""}
{"name":"$s51","value":"\"TryEnterCriticalSection\""}
{"name":"$s52","value":"\"LoadLibraryA\""}
{"name":"$s53","value":"\"VirtualFree\""}
{"name":"$s54","value":"\"GetExitCodeThread\""}
{"name":"$s55","value":"\"WaitForSingleObject\""}
{"name":"$s56","value":"\"ResumeThread\""}
{"name":"$s57","value":"\"DuplicateHandle\""}
{"name":"$s58","value":"\"GetCurrentProcess\""}
{"name":"$s59","value":"\"GetCurrentThread\""}
{"name":"$s60","value":"\"GetCurrentThreadId\""}
{"name":"$s61","value":"\"InitializeCriticalSection\""}
{"name":"$s62","value":"\"DeleteCriticalSection\""}
{"name":"$s63","value":"\"SwitchToThread\""}
{"name":"$s64","value":"\"LeaveCriticalSection\""}
{"name":"$s65","value":"\"EnterCriticalSection\""}
{"name":"$s66","value":"\"FormatMessageW\""}
{"name":"$s67","value":"\"SetLastError\""}
{"name":"$s68","value":"\"GetEnvironmentVariableW\""}
{"name":"$s69","value":"\"FreeEnvironmentStringsW\""}
{"name":"$s70","value":"\"GetEnvironmentStringsW\""}
{"name":"$s71","value":"\"SetEnvironmentVariableW\""}
{"name":"$s72","value":"\"GetSystemInfo\""}
{"name":"$s73","value":"\"QueryPerformanceFrequency\""}
{"name":"$s74","value":"\"QueryPerformanceCounter\""}
{"name":"$s75","value":"\"CreateProcessW\""}
{"name":"$s76","value":"\"GetStdHandle\""}
{"name":"$s77","value":"\"GetHandleInformation\""}
{"name":"$s78","value":"\"SetHandleInformation\""}
{"name":"$s79","value":"\"WriteFile\""}
{"name":"$s80","value":"\"GetConsoleOutputCP\""}
{"name":"$s81","value":"\"FreeLibrary\""}
{"name":"$s82","value":"\"GetConsoleScreenBufferInfo\""}
{"name":"$s83","value":"\"MultiByteToWideChar\""}
{"name":"$s84","value":"\"RaiseException\""}
{"name":"$s85","value":"\"RtlUnwind\""}
{"name":"$s86","value":"\"GetCurrentDirectoryW\""}
{"name":"$s87","value":"\"IsDebuggerPresent\""}
{"name":"$s88","value":"\"LocalFree\""}
{"name":"$s89","value":"\"WideCharToMultiByte\""}
{"name":"$s90","value":"\"GetCommandLineW\""}
{"name":"$s91","value":"\"ReadFile\""}
{"name":"$s92","value":"\"GetFileSize\""}
{"name":"$s93","value":"\"CloseHandle\""}
{"name":"$s94","value":"\"CreateFileW\""}
{"name":"$s95","value":"\"LoadLibraryW\""}
{"name":"$s96","value":"\"GetProcAddress\""}
{"name":"$s97","value":"\"GetFileAttributesW\""}
{"name":"$s98","value":"\"GetLastError\""}
{"name":"$s99","value":"\"CommandLineToArgvW\""}
{"name":"$s100","value":"\"MessageBoxA\""}
{"name":"$s101","value":"\"RegEnumValueW\""}
{"name":"$s102","value":"\"RegEnumKeyExW\""}
{"name":"$s103","value":"\"RegDeleteValueW\""}
{"name":"$s104","value":"\"RegFlushKey\""}
{"name":"$s105","value":"\"RegQueryInfoKeyW\""}
{"name":"$s106","value":"\"RegDeleteKeyW\""}
{"name":"$s107","value":"\"RegQueryValueExW\""}
{"name":"$s108","value":"\"RegSetValueExW\""}
{"name":"$s109","value":"\"RegOpenKeyW\""}
{"name":"$s110","value":"\"RegOpenKeyExW\""}
{"name":"$s111","value":"\"RegCreateKeyExW\""}
{"name":"$s112","value":"\"RegCloseKey\""}

Threat Analysis

This YARA rule is designed to detect general threats.

Severity Level: High

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 APT_Backdoor_Win_DShell_1.yar /path/to/suspicious/file

# Scan a directory recursively
yara -r APT_Backdoor_Win_DShell_1.yar /path/to/directory/

# Scan with metadata output
yara -m APT_Backdoor_Win_DShell_1.yar target_file

# Scan process memory (Linux)
yara APT_Backdoor_Win_DShell_1.yar /proc/[pid]/exe

Integration Examples

Python (yara-python)

import yara
rules = yara.compile(filepath='APT_Backdoor_Win_DShell_1.yar')
matches = rules.match('/path/to/file')

ClamAV Integration

clamscan --yara-rules=APT_Backdoor_Win_DShell_1.yar /path/to/scan

Rule Information

YARA ID
YARA-2025-1032
Author
Created
August 19, 2025
Last Updated
August 19, 2025
Last Imported
Never

Threat Intelligence

Risk Level High
Category general
Detection Confidence Analysis Pending
False Positive Rate Not Available
Last Seen in Wild No Data

Export Options