Skip to content

YARA · Volexity threat-intel

VOLEXITY_Apt_Malware_Py_Upstyle

Detect the UPSTYLE webshell.

APT / threat actorVolexity threat-intelBSD 2-Clause LicenseCompiles with YARA-X (with warnings)
Author
threatintel@volexity.com
Date
2024-04-11
Modified
2024-04-12
Score / Quality
75 / 80

What this rule detects

Detect the UPSTYLE webshell.

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

YARA-X says: warning[duplicate_pattern_value]: duplicate pattern value

Summary generated from the rule's metadata and condition.

Rule source

apt-malware-py-upstyle.yarBSD 2-Clause License
rule VOLEXITY_Apt_Malware_Py_Upstyle : UTA0218 FILE MEMORY
{
	meta:
		description = "Detect the UPSTYLE webshell."
		author = "threatintel@volexity.com"
		id = "45726f35-8b3e-5095-b145-9e7f6da6838b"
		date = "2024-04-11"
		modified = "2024-04-12"
		reference = "TIB-20240412"
		source_url = "https://github.com/volexity/threat-intel/blob/3a9d0b52459877ee866a9a0ba06e60059b778c77/2024/2024-04-12 Palo Alto Networks GlobalProtect/indicators/rules.yar#L1-L34"
		license_url = "https://github.com/volexity/threat-intel/blob/3a9d0b52459877ee866a9a0ba06e60059b778c77/LICENSE.txt"
		hash = "3de2a4392b8715bad070b2ae12243f166ead37830f7c6d24e778985927f9caac"
		hash = "0d59d7bddac6c22230187ef6cf7fa22bca93759edc6f9127c41dc28a2cea19d8"
		hash = "4dd4bd027f060f325bf6a90d01bfcf4e7751a3775ad0246beacc6eb2bad5ec6f"
		logic_hash = "51923600b23d23f4ce29eac7f5ab9f7e1ddb45bed5f6727ddec4dcb75872e473"
		score = 75
		quality = 80
		tags = "UTA0218, FILE, MEMORY"
		os = "linux"
		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 = 10429
		version = 2

	strings:
		$stage1_str1 = "/opt/pancfg/mgmt/licenses/PA_VM"
		$stage1_str2 = "exec(base64."
		$stage2_str1 = "signal.signal(signal.SIGTERM,stop)"
		$stage2_str2 = "exec(base64."
		$stage3_str1 = "write(\"/*\"+output+\"*/\")"
		$stage3_str2 = "SHELL_PATTERN"

	condition:
		all of ( $stage1* ) or all of ( $stage2* ) or all of ( $stage3* )
}

Strings (6 patterns)

IdentifierTypeValueModifiers
$stage1_str1text"/opt/pancfg/mgmt/licenses/PA_VM"
$stage1_str2text"exec(base64."
$stage2_str1text"signal.signal(signal.SIGTERM,stop)"
$stage2_str2text"exec(base64."
$stage3_str1text"write(\"/*\"+output+\"*/\")"
$stage3_str2text"SHELL_PATTERN"

Condition

all of ( $stage1* ) or all of ( $stage2* ) or all of ( $stage3* )

In plain words (Heuristic)

  • All patterns in ( $stage1* ) must match.
  • All patterns in ( $stage2* ) must match.
  • All patterns in ( $stage3* ) 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).

  • 3de2a4392b8715bad070b2ae12243f166ead37830f7c6d24e778985927f9caac
  • 0d59d7bddac6c22230187ef6cf7fa22bca93759edc6f9127c41dc28a2cea19d8
  • 4dd4bd027f060f325bf6a90d01bfcf4e7751a3775ad0246beacc6eb2bad5ec6f

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: 45726f35-8b3e-5095-b145-9e7f6da6838b

Metadata

oslinux
os_archall
scan_contextfile,memory
severitycritical
rule_id10429
version2

Tags:UTA0218FILEMEMORY