Skip to content

YARA · Volexity threat-intel

VOLEXITY_Apt_Malware_Ps1_Powerless_B

Detects POWERLESS malware.

APT / threat actorVolexity threat-intelBSD 2-Clause LicenseCompiles with YARA-X
Author
threatintel@volexity.com
Date
2023-10-25
Modified
2024-01-29
Score / Quality
75 / 78

What this rule detects

Detects POWERLESS malware.

It defines 34 patterns (34 text, 0 hex, 0 regex).

Summary generated from the rule's metadata and condition.

Rule source

apt-malware-ps1-powerless-b.yarBSD 2-Clause License
rule VOLEXITY_Apt_Malware_Ps1_Powerless_B : CHARMINGCYPRESS FILE MEMORY
{
	meta:
		description = "Detects POWERLESS malware."
		author = "threatintel@volexity.com"
		id = "e62703b5-32fb-5ceb-9f21-f52a4871f3d9"
		date = "2023-10-25"
		modified = "2024-01-29"
		reference = "TIB-20231027"
		source_url = "https://github.com/volexity/threat-intel/blob/3a9d0b52459877ee866a9a0ba06e60059b778c77/2024/2024-02-13 CharmingCypress/rules.yar#L100-L157"
		license_url = "https://github.com/volexity/threat-intel/blob/3a9d0b52459877ee866a9a0ba06e60059b778c77/LICENSE.txt"
		hash = "62de7abb39cf4c47ff120c7d765749696a03f4fa4e3e84c08712bb0484306ae1"
		logic_hash = "eb9d199c1f7c2a42d711c1a44ab13526787169c18a77ce988568525baca043ef"
		score = 75
		quality = 78
		tags = "CHARMINGCYPRESS, FILE, MEMORY"
		os = "win"
		os_arch = "all"
		scan_context = "file,memory"
		severity = "critical"
		license = "See license at https://github.com/volexity/threat-intel/blob/main/LICENSE.txt"
		rule_id = 9794
		version = 5

	strings:
		$fun_1 = "function verifyClickStorke"
		$fun_2 = "function ConvertTo-SHA256"
		$fun_3 = "function Convert-Tobase" fullword
		$fun_4 = "function Convert-Frombase" fullword
		$fun_5 = "function Send-Httppacket"
		$fun_6 = "function Generat-FetchCommand"
		$fun_7 = "function Create-Fetchkey"
		$fun_8 = "function Run-Uploader"
		$fun_9 = "function Run-Shot" fullword
		$fun_10 = "function ShotThis("
		$fun_11 = "function File-Manager"
		$fun_12 = "function zip-files"
		$fun_13 = "function Run-Stealer"
		$fun_14 = "function Run-Downloader"
		$fun_15 = "function Run-Stro" fullword
		$fun_16 = "function Run-Tele" fullword
		$fun_17 = "function Run-Voice"
		$s_1 = "if($commandtype -eq \"klg\")"
		$s_2 = "$desrilizedrecievedcommand"
		$s_3 = "$getAsyncKeyProto = @"
		$s_4 = "$Global:BotId ="
		$s_5 = "$targetCLSID = (Get-ScheduledTask | Where-Object TaskName -eq"
		$s_6 = "$burl = \"$Global:HostAddress/"
		$s_7 = "$hashString = [System.BitConverter]::ToString($hash).Replace('-','').ToLower()"
		$s_8 = "$Global:UID = ((gwmi win32_computersystemproduct).uuid -replace '[^0-9a-z]').substring("
		$s_9 = "$rawpacket = \"{`\"MId`\":`\"$Global:MachineID`\",`\"BotId`\":`\"$basebotid`\"}\""
		$s_12 = "Runned Without any Error"
		$s_13 = "$commandresponse = (Invoke-Expression $instruction -ErrorAction Stop) | Out-String"
		$s_14 = "Operation started successfuly"
		$s_15 = "$t_path = (Get-WmiObject Win32_Process -Filter \"name = '$process'\" | Select-Object CommandLine).CommandLine"
		$s_16 = "?{ $_.DisplayName -match \"Telegram Desktop\" } | %{$app_path += $_.InstallLocation }"
		$s_17 = "$chlids = get-ChildItem $t -Recurse -Exclude \"$t\\tdata\\user_data\""
		$s_18 = "if($FirsttimeFlag -eq $True)"
		$s_19 = "Update-Conf -interval $inter -url $url -next_url $next -conf_path $conf_path -key $config_key"

	condition:
		3 of ( $fun_* ) or any of ( $s_* )
}

Strings (34 patterns)

IdentifierTypeValueModifiers
$fun_1text"function verifyClickStorke"
$fun_2text"function ConvertTo-SHA256"
$fun_3text"function Convert-Tobase"fullword
$fun_4text"function Convert-Frombase"fullword
$fun_5text"function Send-Httppacket"
$fun_6text"function Generat-FetchCommand"
$fun_7text"function Create-Fetchkey"
$fun_8text"function Run-Uploader"
$fun_9text"function Run-Shot"fullword
$fun_10text"function ShotThis("
$fun_11text"function File-Manager"
$fun_12text"function zip-files"
$fun_13text"function Run-Stealer"
$fun_14text"function Run-Downloader"
$fun_15text"function Run-Stro"fullword
$fun_16text"function Run-Tele"fullword
$fun_17text"function Run-Voice"
$s_1text"if($commandtype -eq \"klg\")"
$s_2text"$desrilizedrecievedcommand"
$s_3text"$getAsyncKeyProto = @"
$s_4text"$Global:BotId ="
$s_5text"$targetCLSID = (Get-ScheduledTask | Where-Object TaskName -eq"
$s_6text"$burl = \"$Global:HostAddress/"
$s_7text"$hashString = [System.BitConverter]::ToString($hash).Replace('-','').ToLower()"
$s_8text"$Global:UID = ((gwmi win32_computersystemproduct).uuid -replace '[^0-9a-z]').substring("
$s_9text"$rawpacket = \"{`\"MId`\":`\"$Global:MachineID`\",`\"BotId`\":`\"$basebotid`\"}\""
$s_12text"Runned Without any Error"
$s_13text"$commandresponse = (Invoke-Expression $instruction -ErrorAction Stop) | Out-String"
$s_14text"Operation started successfuly"
$s_15text"$t_path = (Get-WmiObject Win32_Process -Filter \"name = '$process'\" | Select-Object CommandLine).CommandLine"
$s_16text"?{ $_.DisplayName -match \"Telegram Desktop\" } | %{$app_path += $_.InstallLocation }"
$s_17text"$chlids = get-ChildItem $t -Recurse -Exclude \"$t\\tdata\\user_data\""
$s_18text"if($FirsttimeFlag -eq $True)"
$s_19text"Update-Conf -interval $inter -url $url -next_url $next -conf_path $conf_path -key $config_key"

Condition

3 of ( $fun_* ) or any of ( $s_* )

In plain words (Heuristic)

  • At least one pattern in ( $s_* ) must match.
  • At least 3 patterns in ( $fun_* ) 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.

Drop a file here or click to chooseScanned locally with YARA-X. Files up to 200 MB.

Open in editor

Sample hashes

Hashes of samples the author lists in the rule's meta (look them up in your threat-intelligence platform).

  • 62de7abb39cf4c47ff120c7d765749696a03f4fa4e3e84c08712bb0484306ae1

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.

Original rule

Mirrored via YARA Forge 20260927, which prefixes rule names with the source and adds normalised meta fields.

Rule id: e62703b5-32fb-5ceb-9f21-f52a4871f3d9

Metadata

oswin
os_archall
scan_contextfile,memory
severitycritical
rule_id9794
version5

Tags:CHARMINGCYPRESSFILEMEMORY