Skip to content

YARA · Signature Base (Florian Roth / Nextron)

SIGNATURE_BASE_WEBSHELL_JAVA_Versamem_JAR_Aug24_1

Detects VersaMem Java webshell samples (as used by Volt Typhoon)

WebshellSignature Base (Florian Roth / Nextron)Detection Rule License 1.1Compiles with YARA-X
Author
blacklotuslabs (modified by Florian Roth and X__Junior)
Date
2024-08-27
Modified
2024-08-29
Score / Quality
75 / 85

What this rule detects

Detects VersaMem Java webshell samples (as used by Volt Typhoon)

It defines 9 patterns (8 text, 1 hex, 0 regex).

Summary generated from the rule's metadata and condition.

Rule source

webshell-java-versamem-jar-aug24-1.yarDetection Rule License 1.1
rule SIGNATURE_BASE_WEBSHELL_JAVA_Versamem_JAR_Aug24_1 : FILE
{
	meta:
		description = "Detects VersaMem Java webshell samples (as used by Volt Typhoon)"
		author = "blacklotuslabs (modified by Florian Roth and X__Junior)"
		id = "9b666e61-cfa8-58b3-a362-772cd907c57c"
		date = "2024-08-27"
		modified = "2024-08-29"
		reference = "https://x.com/ryanaraine/status/1828440883315999117"
		source_url = "https://github.com/Neo23x0/signature-base/blob/94a1c48d7ab499879287ff611dfe7f9c56376030/yara/apt_volttyphoon_versamem.yar#L2-L24"
		license_url = "https://github.com/Neo23x0/signature-base/blob/94a1c48d7ab499879287ff611dfe7f9c56376030/LICENSE"
		logic_hash = "d21558eb6c8e700b8a4cb86fdaa5487179828152af68828e878397859d6d3952"
		score = 75
		quality = 85
		tags = "FILE"

	strings:
		$sa1 = "com.versa.vnms.ui.TestMain"
		$sa2 = "captureLoginPasswordCode"
		$sa3 = "com/versa/vnms/ui/services/impl/VersaAuthenticationServiceImpl"
		$sa4 = "/tmp/.temp.data"
		$sa5 = "getInsertCode"
		$sa6 = "VersaMem"
		$sa7 = "Versa-Auth"
		$sb1 = "/tmp/.java_pid"
		$sb2 = {2f 75 73 72 2f 62 69 6e 2f 70 67 72 65 70 01 00 02 2d 66 01 00 25 6f 72 67 2e 61 70 61 63 68 65 2e 63 61 74 61 6c 69 6e 61 2e 73 74 61 72 74 75 70 2e 42 6f 6f 74 73 74 72 61 70 07}

	condition:
		filesize < 5MB and ( 3 of them or all of ( $sb* ) )
}

Strings (9 patterns)

IdentifierTypeValueModifiers
$sa1text"com.versa.vnms.ui.TestMain"
$sa2text"captureLoginPasswordCode"
$sa3text"com/versa/vnms/ui/services/impl/VersaAuthenticationServiceImpl"
$sa4text"/tmp/.temp.data"
$sa5text"getInsertCode"
$sa6text"VersaMem"
$sa7text"Versa-Auth"
$sb1text"/tmp/.java_pid"
$sb2hex{2f 75 73 72 2f 62 69 6e 2f 70 67 72 65 70 01 00 02 2d 66 01 00 25 6f 72 67 2e 61 70 61 63 68 65 2e 63 61 74 61 6c 69 6e 61 2e 73 74 61 72 74 75 70 2e 42 6f 6f …

Condition

filesize < 5MB and ( 3 of them or all of ( $sb* ) )

In plain words (Heuristic)

  • The file must be smaller than 5MB (a cheap guard that skips large files).
  • All patterns in ( $sb* ) must match.
  • At least 3 patterns in the rule 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

References

Licence & attribution

Author: blacklotuslabs (modified by Florian Roth and X__Junior)

Source repository: Signature Base (Florian Roth / Nextron) @ 94a1c48d7a

Licence: Detection Rule License 1.1 (repository licence)

Original rule

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

Rule id: 9b666e61-cfa8-58b3-a362-772cd907c57c

Tags:FILE