YARA · ditekSHen detection
DITEKSHEN_MALWARE_Multi_Exaramel
Exaramel Windows/Linux backdoor payload
- 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
rule DITEKSHEN_MALWARE_Multi_Exaramel : FILE
{
meta:
= "Exaramel Windows/Linux backdoor payload"
= "ditekSHen"
= "014f10f3-4502-5719-93f6-4b2940f53876"
= "2020-11-06"
= "2024-11-01"
= "https://github.com/ditekshen/detection"
= "https://github.com/ditekshen/detection/blob/e76c93dcdedff04076380ffc60ea54e45b313635/yara/malware.yar#L420-L459"
= "https://github.com/ditekshen/detection/blob/e76c93dcdedff04076380ffc60ea54e45b313635/LICENSE.txt"
= "e64383304bc913b07a2e63d61c81354b996c01171357005f4a28957d4d889599"
= 75
= 73
= "FILE"
= "MALWARE_Linux.Backdoor.Exaramel"
= "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)
| Identifiant | Type | Valeur | Modificateurs |
|---|---|---|---|
| $s1 | texte | "vendor/golang_org/x/crypto/" | ascii |
| $s2 | texte | "vendor/golang_org/x/net/http2" | ascii |
| $s3 | texte | "vendor/golang_org/x/text/unicode" | ascii |
| $s4 | texte | "vendor/golang_org/x/text/transform" | ascii |
| $s5 | texte | "config.json" | ascii |
| $cmd1 | texte | "App.Update" | ascii |
| $cmd2 | texte | "App.Delete" | ascii |
| $cmd3 | texte | "App.SetProxy" | ascii |
| $cmd4 | texte | "App.SetServer" | ascii |
| $cmd5 | texte | "App.SetTimeout" | ascii |
| $cmd6 | texte | "IO.WriteFile" | ascii |
| $cmd7 | texte | "IO.ReadFile" | ascii |
| $cmd8 | texte | "OS.ShellExecute" | ascii |
| $cmd9 | texte | "awk 'match($0, /(upstart|systemd|sysvinit)/){ print substr($0, RSTART, RLENGTH);exit;" | ascii |
| $ws1 | texte | "/commands/@slp" | wide |
| $ws2 | texte | "/commands/cmd" | wide |
| $ws3 | texte | "/settings/proxy/@password" | wide |
| $ws4 | texte | "/settings/servers/server[@current='true']" | wide |
| $ws5 | texte | "/settings/servers/server/@current[text()='true']" | wide |
| $ws6 | texte | "/settings/servers/server[text()='%s']/@current" | wide |
| $ws7 | texte | "/settings/servers/server[%d]" | wide |
| $ws8 | texte | "/settings/storage" | wide |
| $ws9 | texte | "/settings/check" | wide |
| $ws10 | texte | "/settings/interval" | wide |
| $ws11 | texte | "report.txt" | wide |
| $ws12 | texte | "stg%02d.cab" | ascii |
| $ws13 | texte | "urlmon.dll" | ascii |
| $ws14 | texte | "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é.
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).
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_sig1 | MALWARE_Linux.Backdoor.Exaramel |
|---|---|
| clamav_sig2 | MALWARE_Win.Backdoor.Exaramel |
Tags:FILE
Règles liées
- MalwareMalpedia signator rules· Felix Bilstein - yara-signator at cocacoding dot com· 2026-05-04
- APT / acteurSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO· 2021-02-15
- APT / acteurSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO· 2021-02-15
- APT / acteurSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO· 2021-02-15
- APT / acteurSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO· 2021-02-15
- APT / acteurSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO· 2021-02-15
- APT / acteurSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO (composed from 4 saparate rules by Florian R…· 2021-02-15
- APT / acteurSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO· 2021-02-15