YARA · SEKOIA.IO Community
SEKOIA_Apt_Mustangpanda_Tonedrop
TONEDROP strings
- Author
- Sekoia.io
- Date
- 2023-06-19
- Modified
- 2024-12-19
- Score / Quality
- 75 / 78
What this rule detects
TONEDROP strings
Targets: Windows PE, Linux ELF.
It defines 25 patterns (20 text, 5 hex, 0 regex).
Summary generated from the rule's metadata and condition.
Rule source
apt-mustangpanda-tonedrop.yarDetection Rule License 1.1
rule SEKOIA_Apt_Mustangpanda_Tonedrop : FILE
{
meta:
= "TONEDROP strings"
= "Sekoia.io"
= "39df631c-5766-4804-838f-6c9b800c0cc9"
= "2023-06-19"
= "2024-12-19"
= "https://github.com/SEKOIA-IO/Community"
= "https://github.com/SEKOIA-IO/Community/blob/a438a5901a211c2abdf75da9c93921ef187473d1/yara_rules/apt_mustangpanda_tonedrop.yar#L1-L43"
= "https://github.com/SEKOIA-IO/Community/blob/a438a5901a211c2abdf75da9c93921ef187473d1/LICENSE.md"
= "97f9138810fbc56fa1cab671865b3234f63fcd0f9a15ba012dfe76e86c6dbd48"
= 75
= 78
= "FILE"
= "1.0"
= "TLP:CLEAR"
strings:
$window1 = "PROCMON_WINDOW_CLASS" ascii wide
$window2 = "OLLYDBG" ascii wide
$window3 = "WinDbgFrameClass" ascii wide
$window4 = "OllyDbg - [CPU]" ascii wide
$window5 = "Immunity Debugger - [CPU]" ascii wide
$errormsg1 = "Unable to open file %s for writing" ascii wide
$proc_01 = "cheatengine-x86_64.exe" ascii wide
$proc_02 = "ollydbg.exe" ascii wide
$proc_03 = "ida.exe" ascii wide
$proc_04 = "ida64.exe" ascii wide
$proc_05 = "radare2.exe" ascii wide
$proc_06 = "x64dbg.exe" ascii wide
$proc_07 = "procmon.exe" ascii wide
$proc_08 = "procmon64.exe" ascii wide
$proc_09 = "procexp.exe" ascii wide
$proc_10 = "processhacker.exe" ascii wide
$proc_11 = "pestudio.exe" ascii wide
$proc_12 = "systracerx32.exe" ascii wide
$proc_13 = "fiddler.exe" ascii wide
$proc_14 = "tcpview.exe" ascii wide
$opcodes_check_PEsize = {C7 85 94 FD FF FF 2C 02}
$opcodes_ShellExecute_1 = {C7 45 BC 53 68 65 6C}
$opcodes_ShellExecute_2 = {C7 45 C0 6C 45 78 65}
$opcodes_ShellExecute_3 = {C7 45 C4 63 75 74 65}
$opcodes_ShellExecute_4 = {66 C7 45 C8 41 00}
condition:
( uint32be( 0 ) == 0x7f454c46 or uint16be( 0 ) == 0x4d5a ) and filesize < 8MB and 3 of ( $window* ) and $errormsg1 and 10 of ( $proc_* ) and 3 of ( $opcodes* )
}
Strings (25 patterns)
| Identifier | Type | Value | Modifiers |
|---|---|---|---|
| $window1 | text | "PROCMON_WINDOW_CLASS" | ascii wide |
| $window2 | text | "OLLYDBG" | ascii wide |
| $window3 | text | "WinDbgFrameClass" | ascii wide |
| $window4 | text | "OllyDbg - [CPU]" | ascii wide |
| $window5 | text | "Immunity Debugger - [CPU]" | ascii wide |
| $errormsg1 | text | "Unable to open file %s for writing" | ascii wide |
| $proc_01 | text | "cheatengine-x86_64.exe" | ascii wide |
| $proc_02 | text | "ollydbg.exe" | ascii wide |
| $proc_03 | text | "ida.exe" | ascii wide |
| $proc_04 | text | "ida64.exe" | ascii wide |
| $proc_05 | text | "radare2.exe" | ascii wide |
| $proc_06 | text | "x64dbg.exe" | ascii wide |
| $proc_07 | text | "procmon.exe" | ascii wide |
| $proc_08 | text | "procmon64.exe" | ascii wide |
| $proc_09 | text | "procexp.exe" | ascii wide |
| $proc_10 | text | "processhacker.exe" | ascii wide |
| $proc_11 | text | "pestudio.exe" | ascii wide |
| $proc_12 | text | "systracerx32.exe" | ascii wide |
| $proc_13 | text | "fiddler.exe" | ascii wide |
| $proc_14 | text | "tcpview.exe" | ascii wide |
| $opcodes_check_PEsize | hex | {C7 85 94 FD FF FF 2C 02} | |
| $opcodes_ShellExecute_1 | hex | {C7 45 BC 53 68 65 6C} | |
| $opcodes_ShellExecute_2 | hex | {C7 45 C0 6C 45 78 65} | |
| $opcodes_ShellExecute_3 | hex | {C7 45 C4 63 75 74 65} | |
| $opcodes_ShellExecute_4 | hex | {66 C7 45 C8 41 00} |
Condition
( uint32be( 0 ) == 0x7f454c46 or uint16be( 0 ) == 0x4d5a ) and filesize < 8MB and 3 of ( $window* ) and $errormsg1 and 10 of ( $proc_* ) and 3 of ( $opcodes* )In plain words (Heuristic)
- The file must start with “MZ” — a Windows executable (PE).
- The file must start with the ELF header — a Linux/Unix executable.
- The file must be smaller than 8MB (a cheap guard that skips large files).
- At least 3 patterns in ( $window* ) must match.
- At least 10 patterns in ( $proc_* ) must match.
- At least 3 patterns in ( $opcodes* ) must match.
- Pattern $errormsg1 must be present.
Test this rule in your browser
Drop a file to scan it with this rule using YARA-X compiled to WebAssembly. Nothing is uploaded.
Drop a file here or click to chooseScanned locally with YARA-X. Files up to 200 MB.
References
Licence & attribution
Author: Sekoia.io
Source repository: SEKOIA.IO Community @ a438a5901a
Licence: Detection Rule License 1.1 (repository licence)
Mirrored via YARA Forge 20260927, which prefixes rule names with the source and adds normalised meta fields.
Rule id: 39df631c-5766-4804-838f-6c9b800c0cc9
Metadata
| version | 1.0 |
|---|---|
| classification | TLP:CLEAR |
Tags:FILE
Related rules
- APT / threat actorSEKOIA.IO Community· Sekoia.io· 2024-09-10
- APT / threat actorSEKOIA.IO Community· Sekoia.io· 2024-10-21
- APT / threat actorSEKOIA.IO Community· Sekoia.io· 2024-10-21
- APT / threat actorSEKOIA.IO Community· Sekoia.io· 2024-09-27
- APT / threat actorSEKOIA.IO Community· Sekoia.io· 2024-09-27
- APT / threat actorSEKOIA.IO Community· Sekoia.io· 2024-09-23
- APT / threat actorSEKOIA.IO Community· Sekoia.io· 2024-06-11
- APT / threat actorSEKOIA.IO Community· Sekoia.io· 2024-03-06