YARA · ditekSHen detection
DITEKSHEN_MALWARE_Multi_Exaramel
Exaramel Windows/Linux backdoor payload
- 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
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* ) )
}
Cadenas (28 patrones)
| Identificador | Tipo | Valor | Modificadores |
|---|---|---|---|
| $s1 | texto | "vendor/golang_org/x/crypto/" | ascii |
| $s2 | texto | "vendor/golang_org/x/net/http2" | ascii |
| $s3 | texto | "vendor/golang_org/x/text/unicode" | ascii |
| $s4 | texto | "vendor/golang_org/x/text/transform" | ascii |
| $s5 | texto | "config.json" | ascii |
| $cmd1 | texto | "App.Update" | ascii |
| $cmd2 | texto | "App.Delete" | ascii |
| $cmd3 | texto | "App.SetProxy" | ascii |
| $cmd4 | texto | "App.SetServer" | ascii |
| $cmd5 | texto | "App.SetTimeout" | ascii |
| $cmd6 | texto | "IO.WriteFile" | ascii |
| $cmd7 | texto | "IO.ReadFile" | ascii |
| $cmd8 | texto | "OS.ShellExecute" | ascii |
| $cmd9 | texto | "awk 'match($0, /(upstart|systemd|sysvinit)/){ print substr($0, RSTART, RLENGTH);exit;" | ascii |
| $ws1 | texto | "/commands/@slp" | wide |
| $ws2 | texto | "/commands/cmd" | wide |
| $ws3 | texto | "/settings/proxy/@password" | wide |
| $ws4 | texto | "/settings/servers/server[@current='true']" | wide |
| $ws5 | texto | "/settings/servers/server/@current[text()='true']" | wide |
| $ws6 | texto | "/settings/servers/server[text()='%s']/@current" | wide |
| $ws7 | texto | "/settings/servers/server[%d]" | wide |
| $ws8 | texto | "/settings/storage" | wide |
| $ws9 | texto | "/settings/check" | wide |
| $ws10 | texto | "/settings/interval" | wide |
| $ws11 | texto | "report.txt" | wide |
| $ws12 | texto | "stg%02d.cab" | ascii |
| $ws13 | texto | "urlmon.dll" | ascii |
| $ws14 | texto | "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.
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).
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_sig1 | MALWARE_Linux.Backdoor.Exaramel |
|---|---|
| clamav_sig2 | MALWARE_Win.Backdoor.Exaramel |
Etiquetas:FILE
Reglas relacionadas
- MalwareMalpedia signator rules· Felix Bilstein - yara-signator at cocacoding dot com· 2026-05-04
- APT / actorSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO· 2021-02-15
- APT / actorSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO· 2021-02-15
- APT / actorSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO· 2021-02-15
- APT / actorSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO· 2021-02-15
- APT / actorSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO· 2021-02-15
- APT / actorSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO (composed from 4 saparate rules by Florian R…· 2021-02-15
- APT / actorSignature Base (Florian Roth / Nextron)· FR/ANSSI/SDO· 2021-02-15