Saltar al contenido

YARA · ditekSHen detection

DITEKSHEN_MALWARE_Multi_Exaramel

Exaramel Windows/Linux backdoor payload

MalwareExaramelditekSHen detectionBSD 2-Clause LicenseCompila con YARA-X
Autor
ditekSHen
Fecha
2020-11-06
Modificada
2024-11-01
Puntuación / Calidad
75 / 73

Qué detecta esta regla

Exaramel Windows/Linux backdoor payload

Familia de malware asociada: Exaramel.

Objetivos: PE de Windows.

Define 28 patrones (28 de texto, 0 hex, 0 regex).

Resumen generado a partir de los metadatos y la condición de la regla.

Código de la regla

malware-multi-exaramel.yarBSD 2-Clause License
rule DITEKSHEN_MALWARE_Multi_Exaramel : FILE
{
	meta:
		description = "Exaramel Windows/Linux backdoor payload"
		author = "ditekSHen"
		id = "014f10f3-4502-5719-93f6-4b2940f53876"
		date = "2020-11-06"
		modified = "2024-11-01"
		reference = "https://github.com/ditekshen/detection"
		source_url = "https://github.com/ditekshen/detection/blob/e76c93dcdedff04076380ffc60ea54e45b313635/yara/malware.yar#L420-L459"
		license_url = "https://github.com/ditekshen/detection/blob/e76c93dcdedff04076380ffc60ea54e45b313635/LICENSE.txt"
		logic_hash = "e64383304bc913b07a2e63d61c81354b996c01171357005f4a28957d4d889599"
		score = 75
		quality = 73
		tags = "FILE"
		clamav_sig1 = "MALWARE_Linux.Backdoor.Exaramel"
		clamav_sig2 = "MALWARE_Win.Backdoor.Exaramel"

	strings:
		$s1 = "vendor/golang_org/x/crypto/" ascii
		$s2 = "vendor/golang_org/x/net/http2" ascii
		$s3 = "vendor/golang_org/x/text/unicode" ascii
		$s4 = "vendor/golang_org/x/text/transform" ascii
		$s5 = "config.json" ascii
		$cmd1 = "App.Update" ascii
		$cmd2 = "App.Delete" ascii
		$cmd3 = "App.SetProxy" ascii
		$cmd4 = "App.SetServer" ascii
		$cmd5 = "App.SetTimeout" ascii
		$cmd6 = "IO.WriteFile" ascii
		$cmd7 = "IO.ReadFile" ascii
		$cmd8 = "OS.ShellExecute" ascii
		$cmd9 = "awk 'match($0, /(upstart|systemd|sysvinit)/){ print substr($0, RSTART, RLENGTH);exit;" ascii
		$ws1 = "/commands/@slp" wide
		$ws2 = "/commands/cmd" wide
		$ws3 = "/settings/proxy/@password" wide
		$ws4 = "/settings/servers/server[@current='true']" wide
		$ws5 = "/settings/servers/server/@current[text()='true']" wide
		$ws6 = "/settings/servers/server[text()='%s']/@current" wide
		$ws7 = "/settings/servers/server[%d]" wide
		$ws8 = "/settings/storage" wide
		$ws9 = "/settings/check" wide
		$ws10 = "/settings/interval" wide
		$ws11 = "report.txt" wide
		$ws12 = "stg%02d.cab" ascii
		$ws13 = "urlmon.dll" ascii
		$ws14 = "ReportDir" ascii

	condition:
		( uint16( 0 ) == 0x457f and ( all of ( $s* ) and 6 of ( $cmd* ) ) ) or ( uint16( 0 ) == 0x5a4d and 12 of ( $ws* ) )
}

Cadenas (28 patrones)

IdentificadorTipoValorModificadores
$s1texto"vendor/golang_org/x/crypto/"ascii
$s2texto"vendor/golang_org/x/net/http2"ascii
$s3texto"vendor/golang_org/x/text/unicode"ascii
$s4texto"vendor/golang_org/x/text/transform"ascii
$s5texto"config.json"ascii
$cmd1texto"App.Update"ascii
$cmd2texto"App.Delete"ascii
$cmd3texto"App.SetProxy"ascii
$cmd4texto"App.SetServer"ascii
$cmd5texto"App.SetTimeout"ascii
$cmd6texto"IO.WriteFile"ascii
$cmd7texto"IO.ReadFile"ascii
$cmd8texto"OS.ShellExecute"ascii
$cmd9texto"awk 'match($0, /(upstart|systemd|sysvinit)/){ print substr($0, RSTART, RLENGTH);exit;"ascii
$ws1texto"/commands/@slp"wide
$ws2texto"/commands/cmd"wide
$ws3texto"/settings/proxy/@password"wide
$ws4texto"/settings/servers/server[@current='true']"wide
$ws5texto"/settings/servers/server/@current[text()='true']"wide
$ws6texto"/settings/servers/server[text()='%s']/@current"wide
$ws7texto"/settings/servers/server[%d]"wide
$ws8texto"/settings/storage"wide
$ws9texto"/settings/check"wide
$ws10texto"/settings/interval"wide
$ws11texto"report.txt"wide
$ws12texto"stg%02d.cab"ascii
$ws13texto"urlmon.dll"ascii
$ws14texto"ReportDir"ascii

Condición

( uint16( 0 ) == 0x457f and ( all of ( $s* ) and 6 of ( $cmd* ) ) ) or ( uint16( 0 ) == 0x5a4d and 12 of ( $ws* ) )

En palabras sencillas (Heurística)

  • El archivo debe empezar por «MZ»: un ejecutable de Windows (PE).
  • Deben coincidir todos los patrones de ( $s* ).
  • Deben coincidir al menos 6 patrones de ( $cmd* ).
  • Deben coincidir al menos 12 patrones de ( $ws* ).

Prueba esta regla en tu navegador

Arrastra un archivo para escanearlo con esta regla usando YARA-X compilado a WebAssembly. No se sube nada.

Arrastra un archivo aquí o haz clic para elegirSe escanea en local con YARA-X. Archivos de hasta 200 MB.

Abrir en el editor

Referencias

Licencia y atribución

Autor: ditekSHen

Repositorio de origen: ditekSHen detection @ e76c93dcde

Licencia: BSD 2-Clause License (licencia del repositorio)

Aviso de copyright: Copyright 2021 by ditekSHen (https://github.com/ditekshen/detection).

Regla original

Obtenida a través de YARA Forge 20260927, que añade a los nombres el prefijo de la fuente y campos meta normalizados.

Id de la regla: 014f10f3-4502-5719-93f6-4b2940f53876

Metadatos

clamav_sig1MALWARE_Linux.Backdoor.Exaramel
clamav_sig2MALWARE_Win.Backdoor.Exaramel

Etiquetas:FILE

Más reglas de Exaramel