Aller au contenu

YARA · ditekSHen detection

DITEKSHEN_MALWARE_Multi_Exaramel

Exaramel Windows/Linux backdoor payload

MalwareExaramelditekSHen detectionBSD 2-Clause LicenseCompile avec YARA-X
Auteur
ditekSHen
Date
2020-11-06
Modifiée
2024-11-01
Score / Qualité
75 / 73

Ce que détecte cette règle

Exaramel Windows/Linux backdoor payload

Famille de malware associée : Exaramel.

Cibles : PE Windows.

Elle définit 28 motifs (28 texte, 0 hex, 0 regex).

Résumé généré à partir des métadonnées et de la condition de la règle.

Source de la règle

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* ) )
}

Chaînes (28 motifs)

IdentifiantTypeValeurModificateurs
$s1texte"vendor/golang_org/x/crypto/"ascii
$s2texte"vendor/golang_org/x/net/http2"ascii
$s3texte"vendor/golang_org/x/text/unicode"ascii
$s4texte"vendor/golang_org/x/text/transform"ascii
$s5texte"config.json"ascii
$cmd1texte"App.Update"ascii
$cmd2texte"App.Delete"ascii
$cmd3texte"App.SetProxy"ascii
$cmd4texte"App.SetServer"ascii
$cmd5texte"App.SetTimeout"ascii
$cmd6texte"IO.WriteFile"ascii
$cmd7texte"IO.ReadFile"ascii
$cmd8texte"OS.ShellExecute"ascii
$cmd9texte"awk 'match($0, /(upstart|systemd|sysvinit)/){ print substr($0, RSTART, RLENGTH);exit;"ascii
$ws1texte"/commands/@slp"wide
$ws2texte"/commands/cmd"wide
$ws3texte"/settings/proxy/@password"wide
$ws4texte"/settings/servers/server[@current='true']"wide
$ws5texte"/settings/servers/server/@current[text()='true']"wide
$ws6texte"/settings/servers/server[text()='%s']/@current"wide
$ws7texte"/settings/servers/server[%d]"wide
$ws8texte"/settings/storage"wide
$ws9texte"/settings/check"wide
$ws10texte"/settings/interval"wide
$ws11texte"report.txt"wide
$ws12texte"stg%02d.cab"ascii
$ws13texte"urlmon.dll"ascii
$ws14texte"ReportDir"ascii

Condition

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

En clair (Heuristique)

  • Le fichier doit commencer par « MZ » — un exécutable Windows (PE).
  • Tous les motifs de ( $s* ) doivent être trouvés.
  • Au moins 6 motifs de ( $cmd* ) doivent être trouvés.
  • Au moins 12 motifs de ( $ws* ) doivent être trouvés.

Tester cette règle dans votre navigateur

Déposez un fichier pour le scanner avec cette règle grâce à YARA-X compilé en WebAssembly. Rien n’est envoyé.

Déposez un fichier ici ou cliquez pour choisirScanné localement avec YARA-X. Fichiers jusqu’à 200 Mo.

Ouvrir dans l’éditeur

Références

Licence et attribution

Auteur : ditekSHen

Dépôt source : ditekSHen detection @ e76c93dcde

Licence : BSD 2-Clause License (licence du dépôt)

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

Règle d’origine

Reprise via YARA Forge 20260927, qui préfixe les noms de règles par la source et ajoute des champs meta normalisés.

Identifiant de règle: 014f10f3-4502-5719-93f6-4b2940f53876

Métadonnées

clamav_sig1MALWARE_Linux.Backdoor.Exaramel
clamav_sig2MALWARE_Win.Backdoor.Exaramel

Tags:FILE

Plus de règles Exaramel