YARA · SEKOIA.IO Community
SEKOIA_Wiper_Win_Isaacwiper
Detect the IsaacWiper using multiple methods + ReversingLab rule's condition
- Author
- Sekoia.io
- Date
- 2022-03-15
- Modified
- 2024-12-19
- Score / Quality
- 75 / 80
What this rule detects
Detect the IsaacWiper using multiple methods + ReversingLab rule's condition
Associated malware family: Isaacwiper.
Targets: Windows PE.
It defines 13 patterns (13 text, 0 hex, 0 regex). YARA modules used: pe, hash.
YARA-X says: warning[deprecated_field]: field `number_of_sections` is deprecated
Summary generated from the rule's metadata and condition.
Rule source
Includes the imports needed to compile it on its own.
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* )
}
Strings (13 patterns)
| Identifier | Type | Value | Modifiers |
|---|---|---|---|
| $s1 | text | "getting drives..." | wide |
| $s2 | text | "physical drives:" | wide |
| $s3 | text | "-- system physical drive" | wide |
| $s4 | text | "-- physical drive" | wide |
| $s5 | text | "logical drives:" | wide |
| $s6 | text | "-- system logical drive:" | wide |
| $s7 | text | "-- logical drive:" | wide |
| $s8 | text | "start erasing physical drives..." | wide |
| $s9 | text | "-- FAILED" | wide |
| $s10 | text | "-- start erasing logical drive" | wide |
| $s11 | text | "start erasing system physical drive..." | wide |
| $s12 | text | "system physical drive -- FAILED" | wide |
| $s13 | text | "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* )In plain words (Heuristic)
- All patterns in ( $s* ) must match.
- A for-loop checks a property over several matches or items.
- Uses the pe module.
- Uses the hash module.
- Compares a hash of the file or a part of it.
- Checks the PE import hash (imphash).
- Checks PE sections (names, count or properties).
Test this rule in your browser
Drop a file to scan it with this rule using YARA-X compiled to WebAssembly. Nothing is uploaded.
References
Licence & attribution
Author: Sekoia.io
Source repository: SEKOIA.IO Community @ a438a5901a
Licence: Detection Rule License 1.1 (repository licence)
Mirrored via YARA Forge 20260927, which prefixes rule names with the source and adds normalised meta fields.
Rule id: b081e3a3-612e-46ae-93af-82e7ee98fcf7
Metadata
| version | 1.0 |
|---|---|
| classification | TLP:CLEAR |
Related rules
- 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