YARA · SEKOIA.IO Community
SEKOIA_Wiper_Win_Isaacwiper
Detect the IsaacWiper using multiple methods + ReversingLab rule's condition
- Auteur
- Sekoia.io
- Date
- 2022-03-15
- Modifiée
- 2024-12-19
- Score / Qualité
- 75 / 80
Ce que détecte cette règle
Detect the IsaacWiper using multiple methods + ReversingLab rule's condition
Famille de malware associée : Isaacwiper.
Cibles : PE Windows.
Elle définit 13 motifs (13 texte, 0 hex, 0 regex). Modules YARA utilisés : pe, hash.
YARA-X indique : warning[deprecated_field]: field `number_of_sections` is deprecated
Résumé généré à partir des métadonnées et de la condition de la règle.
Source de la règle
Inclut les imports nécessaires pour la compiler seule.
import "pe"
import "hash"
rule SEKOIA_Wiper_Win_Isaacwiper
{
meta:
= "Detect the IsaacWiper using multiple methods + ReversingLab rule's condition"
= "Sekoia.io"
= "b081e3a3-612e-46ae-93af-82e7ee98fcf7"
= "2022-03-15"
= "2024-12-19"
= "https://github.com/SEKOIA-IO/Community"
= "https://github.com/SEKOIA-IO/Community/blob/a438a5901a211c2abdf75da9c93921ef187473d1/yara_rules/wiper_win_isaacwiper.yar#L4-L45"
= "https://github.com/SEKOIA-IO/Community/blob/a438a5901a211c2abdf75da9c93921ef187473d1/LICENSE.md"
= "0338e11ece112b6f7d88db49cfc703a4431d7ee54f4b9ff0b9e2ea50d39cab4f"
= 75
= 80
= ""
= "1.0"
= "TLP:CLEAR"
strings:
$s1 = "getting drives..." wide
$s2 = "physical drives:" wide
$s3 = "-- system physical drive" wide
$s4 = "-- physical drive" wide
$s5 = "logical drives:" wide
$s6 = "-- system logical drive:" wide
$s7 = "-- logical drive:" wide
$s8 = "start erasing physical drives..." wide
$s9 = "-- FAILED" wide
$s10 = "-- start erasing logical drive" wide
$s11 = "start erasing system physical drive..." wide
$s12 = "system physical drive -- FAILED" wide
$s13 = "start erasing system logical drive" wide
condition:
pe.imphash( ) == "a4b162717c197e11b76a4d9bc58ea25d" or for any i in ( 0 .. pe.number_of_sections -1 ) : ( hash.md5 ( pe.sections [ i ] . raw_data_offset , pe.sections [ i ] . raw_data_size ) == "06d63fddf89fae3948764028712c36d6" or hash.md5 ( pe.sections [ i ] . raw_data_offset , pe.sections [ i ] . raw_data_size ) == "48f101db632bb445c21a10fd5501e343" or hash.md5 ( pe.sections [ i ] . raw_data_offset , pe.sections [ i ] . raw_data_size ) == "5efc98798d0979e69e2a667fc20e3f24" or hash.md5 ( pe.sections [ i ] . raw_data_offset , pe.sections [ i ] . raw_data_size ) == "9676f7c827fb9388358aaba3e4bd0cc6" ) or hash.md5 ( pe.rich_signature.clear_data ) == "ec862d3013903478c2ff8dce2792815f" or all of ( $s* )
}
Chaînes (13 motifs)
| Identifiant | Type | Valeur | Modificateurs |
|---|---|---|---|
| $s1 | texte | "getting drives..." | wide |
| $s2 | texte | "physical drives:" | wide |
| $s3 | texte | "-- system physical drive" | wide |
| $s4 | texte | "-- physical drive" | wide |
| $s5 | texte | "logical drives:" | wide |
| $s6 | texte | "-- system logical drive:" | wide |
| $s7 | texte | "-- logical drive:" | wide |
| $s8 | texte | "start erasing physical drives..." | wide |
| $s9 | texte | "-- FAILED" | wide |
| $s10 | texte | "-- start erasing logical drive" | wide |
| $s11 | texte | "start erasing system physical drive..." | wide |
| $s12 | texte | "system physical drive -- FAILED" | wide |
| $s13 | texte | "start erasing system logical drive" | wide |
Condition
pe.imphash( ) == "a4b162717c197e11b76a4d9bc58ea25d" or for any i in ( 0 .. pe.number_of_sections -1 ) : ( hash.md5 ( pe.sections [ i ] . raw_data_offset , pe.sections [ i ] . raw_data_size ) == "06d63fddf89fae3948764028712c36d6" or hash.md5 ( pe.sections [ i ] . raw_data_offset , pe.sections [ i ] . raw_data_size ) == "48f101db632bb445c21a10fd5501e343" or hash.md5 ( pe.sections [ i ] . raw_data_offset , pe.sections [ i ] . raw_data_size ) == "5efc98798d0979e69e2a667fc20e3f24" or hash.md5 ( pe.sections [ i ] . raw_data_offset , pe.sections [ i ] . raw_data_size ) == "9676f7c827fb9388358aaba3e4bd0cc6" ) or hash.md5 ( pe.rich_signature.clear_data ) == "ec862d3013903478c2ff8dce2792815f" or all of ( $s* )En clair (Heuristique)
- Tous les motifs de ( $s* ) doivent être trouvés.
- Une boucle for vérifie une propriété sur plusieurs occurrences ou éléments.
- Utilise le module pe.
- Utilise le module hash.
- Compare un hash du fichier ou d’une partie du fichier.
- Vérifie le hash des imports PE (imphash).
- Vérifie les sections PE (noms, nombre ou propriété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 : Sekoia.io
Dépôt source : SEKOIA.IO Community @ a438a5901a
Licence : Detection Rule License 1.1 (licence du dépôt)
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: b081e3a3-612e-46ae-93af-82e7ee98fcf7
Métadonnées
| version | 1.0 |
|---|---|
| classification | TLP:CLEAR |
Règles liées
- MalwareSignature Base (Florian Roth / Nextron)· Florian Roth (Nextron Systems)· 2022-03-03
- MalwareMalpedia signator rules· Felix Bilstein - yara-signator at cocacoding dot com· 2026-05-04
- MalwareSEKOIA.IO Community· Sekoia.io· 2024-07-16
- MalwareSEKOIA.IO Community· Sekoia.io· 2024-08-23
- MalwareSEKOIA.IO Community· Sekoia.io· 2024-04-22
- MalwareSEKOIA.IO Community· Sekoia.io· 2024-07-23
- MalwareSEKOIA.IO Community· Sekoia.io· 2024-10-20
- MalwareSEKOIA.IO Community· Sekoia.io· 2024-03-20