YARA · Volexity threat-intel
VOLEXITY_Apt_Malware_Win_Lightspy_Orchestrator_Decoded_Core
Detects the decoded orchestrator for the Windows variant of the LightSpy malware family. This file is normally stored in an encoded state on the C2 server and is used as the core component of this malware family, loading additional plugins from the C2 whilst managing all the C2 communication etc.
- Author
- threatintel@volexity.com
- Date
- 2024-02-15
- Modified
- 2024-07-03
- Score / Quality
- 75 / 78
What this rule detects
Detects the decoded orchestrator for the Windows variant of the LightSpy malware family. This file is normally stored in an encoded state on the C2 server and is used as the core component of this malware family, loading additional plugins from the C2 whilst managing all the C2 communication etc.
It defines 21 patterns (21 text, 0 hex, 0 regex).
Summary generated from the rule's metadata and condition.
Rule source
rule VOLEXITY_Apt_Malware_Win_Lightspy_Orchestrator_Decoded_Core : BRAZENBAMBOO FILE MEMORY
{
meta:
= "Detects the decoded orchestrator for the Windows variant of the LightSpy malware family. This file is normally stored in an encoded state on the C2 server and is used as the core component of this malware family, loading additional plugins from the C2 whilst managing all the C2 communication etc."
= "threatintel@volexity.com"
= "44f8d7a4-7f48-5960-91a7-baf475f7d291"
= "2024-02-15"
= "2024-07-03"
= "https://github.com/volexity/threat-intel"
= "https://github.com/volexity/threat-intel/blob/3a9d0b52459877ee866a9a0ba06e60059b778c77/2024/2024-11-15 BrazenBamboo/rules.yar#L244-L287"
= "https://github.com/volexity/threat-intel/blob/3a9d0b52459877ee866a9a0ba06e60059b778c77/LICENSE.txt"
= "80c0cdb1db961c76de7e4efb6aced8a52cd0e34178660ef34c128be5f0d587df"
= "f0189c0a84c53e365130e9683f2f2b2f73c14412d8e4d0251a4780d0e80162d8"
= 75
= 78
= "BRAZENBAMBOO, FILE, MEMORY"
= "win"
= "all"
= "file,memory"
= "critical"
= "See license at https://github.com/volexity/threat-intel/blob/main/LICENSE.txt"
= 10246
= 2
strings:
$s1 = "Enter RunWork......."
$s2 = "it's running......."
$s3 = "select ret = socket_error."
$s4 = "%s\\\\account.bin"
$s5 = "[CtrlLink]: get machine sn err:%d"
$s6 = "wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution /format:list | findstr /v \\\"^$\\\""
$s7 = "wmic csproduct get vendor,version /format:list | findstr /v \\\"^$\\\""
$s8 = "local ip get sockname error=%d"
$s9 = "connect goole dns error=%d"
$s10 = "%s/api/terminal/upsert/"
$s11 = "/963852741/windows/plugin/manifest"
$s12 = "Hello deepdata."
$s13 = "Start Light."
$s14 = "InitialPluginManager Error."
$s15 = "InitialCommandExe Error."
$s16 = "ws open, and send logon info."
$s17 = "plugin_replay_handler"
$s18 = "light_x86.dll"
$pdb1 = "\\light\\bin\\light_x86.pdb"
$pdb2 = "\\light\\bin\\plugin"
$pdb3 = "D:\\tmpWork\\"
condition:
1 of ( $pdb* ) or 5 of ( $s* )
}
Strings (21 patterns)
| Identifier | Type | Value | Modifiers |
|---|---|---|---|
| $s1 | text | "Enter RunWork......." | |
| $s2 | text | "it's running......." | |
| $s3 | text | "select ret = socket_error." | |
| $s4 | text | "%s\\\\account.bin" | |
| $s5 | text | "[CtrlLink]: get machine sn err:%d" | |
| $s6 | text | "wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution /format:list | findstr /v \\\"^$\\\"" | |
| $s7 | text | "wmic csproduct get vendor,version /format:list | findstr /v \\\"^$\\\"" | |
| $s8 | text | "local ip get sockname error=%d" | |
| $s9 | text | "connect goole dns error=%d" | |
| $s10 | text | "%s/api/terminal/upsert/" | |
| $s11 | text | "/963852741/windows/plugin/manifest" | |
| $s12 | text | "Hello deepdata." | |
| $s13 | text | "Start Light." | |
| $s14 | text | "InitialPluginManager Error." | |
| $s15 | text | "InitialCommandExe Error." | |
| $s16 | text | "ws open, and send logon info." | |
| $s17 | text | "plugin_replay_handler" | |
| $s18 | text | "light_x86.dll" | |
| $pdb1 | text | "\\light\\bin\\light_x86.pdb" | |
| $pdb2 | text | "\\light\\bin\\plugin" | |
| $pdb3 | text | "D:\\tmpWork\\" |
Condition
1 of ( $pdb* ) or 5 of ( $s* )In plain words (Heuristic)
- At least 1 patterns in ( $pdb* ) must match.
- At least 5 patterns in ( $s* ) must match.
Test this rule in your browser
Drop a file to scan it with this rule using YARA-X compiled to WebAssembly. Nothing is uploaded.
References
Sample hashes
Hashes of samples the author lists in the rule's meta (look them up in your threat-intelligence platform).
- 80c0cdb1db961c76de7e4efb6aced8a52cd0e34178660ef34c128be5f0d587df
Licence & attribution
Author: threatintel@volexity.com
Source repository: Volexity threat-intel @ 3a9d0b5245
Licence: BSD 2-Clause License (stated in the rule's own meta)
“See license at https://github.com/volexity/threat-intel/blob/main/LICENSE.txt”
Copyright notice: Copyright 2022 by Volexity, Inc.
Mirrored via YARA Forge 20260927, which prefixes rule names with the source and adds normalised meta fields.
Rule id: 44f8d7a4-7f48-5960-91a7-baf475f7d291
Metadata
| os | win |
|---|---|
| os_arch | all |
| scan_context | file,memory |
| severity | critical |
| rule_id | 10246 |
| version | 2 |
Related rules
- APT / threat actorVolexity threat-intel· threatintel@volexity.com· 2024-07-30
- APT / threat actorVolexity threat-intel· threatintel@volexity.com· 2024-02-15
- APT / threat actorVolexity threat-intel· threatintel@volexity.com· 2023-07-21
- APT / threat actorVolexity threat-intel· threatintel@volexity.com· 2023-08-17
- APT / threat actorVolexity threat-intel· threatintel@volexity.com· 2023-03-30
- APT / threat actorVolexity threat-intel· threatintel@volexity.com· 2022-11-03
- APT / threat actorVolexity threat-intel· threatintel@volexity.com· 2022-11-02
- APT / threat actorVolexity threat-intel· threatintel@volexity.com· 2022-11-03