SYMBOLCOMMON_NAMEaka. SYNONYMS
win.blackenergy (Back to overview)

BlackEnergy

Actor(s): Sandworm

VTCollection    

BlackEnergy, its first version shortened as BE1, started as a crimeware being sold in the Russian cyber underground as early as 2007. Initially, it was designed as a toolkit for creating botnets for conducting DDoS attacks. It supported a variety of flooding commands including protocols like ICMP, TCP SYN, UDP, HTTP and DNS. Among the high profile targets of cyber attacks utilising BE1 were a Norwegian bank and government websites in Georgia three weeks before Russo-Georgian War.

Version 2 of BlackEnergy, BE2, came in 2008 with a complete code rewrite that introduced a protective layer, a kernel-mode rootkit and a modular architecture. Plugins included mostly DDoS attacks, a spam plugin and two banking authentication plugins to steal from Russian nad Ukrainian banks. The banking plugin was paired with a module designed to destroy the filesystem. Moreover, BE2 was able to
- download and execute a remote file;
- execute a local file on the infected computer;
- update the bot and its plugins;

The Industrial Control Systems Cyber Emergency Response Team issued an alert warning that BE2 was leveraging the human-machine interfaces of industrial control systems like GE CIMPLICITY, Advantech/Broadwin WebAccess, and Siemens WinCC to gain access to critical infrastructure networks.

In 2014, the BlackEnergy toolkit, BE3, switched to a lighter footprint with no kernel-mode driver component. Its plugins included:
- operations with victim's filesystem
- spreading with a parasitic infector
- spying features like keylogging, screenshoots or a robust password stealer
- Team viewer and a simple pseudo “remote desktop”
- listing Windows accounts and scanning network
- destroying the system

Typical for distribution of BE3 was heavy use of spear-phishing emails containing Microsoft Word or Excel documents with a malicious VBA macro, Rich Text Format (RTF) documents embedding exploits or a PowerPoint presentation with zero-day exploit CVE-2014-4114.

On 23 December 2015, attackers behind the BlackEnergy malware successfully caused power outages for several hours in different regions of Ukraine. This cyber sabotage against three energy companies has been confirmed by the Ukrainian government. The power grid compromise has become known as the first-of-its-kind cyber warfare attack affecting civilians.

References
2024-04-16 ⋅ Mandiant ⋅ Alden Wahlstrom, Anton Prokopenkov, Dan Black, Dan Perez, Gabby Roncone, John Wolfram, Lexie Aytes, Nick Simonian, Ryan Hall, Tyler McLellan
APT44: Unearthing Sandworm
VPNFilter BlackEnergy CaddyWiper EternalPetya HermeticWiper Industroyer INDUSTROYER2 Olympic Destroyer PartyTicket RoarBAT Sandworm
2022-05-09 ⋅ cocomelonc ⋅ cocomelonc
Malware development: persistence - part 4. Windows services. Simple C++ example.
Anchor AppleJeus Attor BBSRAT BlackEnergy Carbanak Cobalt Strike DuQu
2022-04-20 ⋅ cocomelonc ⋅ cocomelonc
Malware development: persistence - part 1. Registry run keys. C++ example.
Agent Tesla Amadey BlackEnergy Cobian RAT COZYDUKE Emotet Empire Downloader Kimsuky
2022-04-20 ⋅ CISA ⋅ CISA
Alert (AA22-110A): Russian State-Sponsored and Criminal Cyber Threats to Critical Infrastructure
VPNFilter BlackEnergy DanaBot DoppelDridex Emotet EternalPetya GoldMax Industroyer Sality SmokeLoader TrickBot Triton Zloader Killnet
2022-04-20 ⋅ CISA ⋅ Australian Cyber Security Centre (ACSC), Canadian Centre for Cyber Security (CCCS), CISA, FBI, Government Communications Security Bureau, National Crime Agency (NCA), NCSC UK, NSA
AA22-110A Joint CSA: Russian State-Sponsored and Criminal Cyber Threats to Critical Infrastructure
VPNFilter BlackEnergy DanaBot DoppelDridex Emotet EternalPetya GoldMax Industroyer Sality SmokeLoader TrickBot Triton Zloader
2022-02-24 ⋅ Tesorion ⋅ TESORION
Report OSINT: Russia/ Ukraine Conflict Cyberaspect
Mirai VPNFilter BlackEnergy EternalPetya HermeticWiper Industroyer WhisperGate
2021-09-09 ⋅ Recorded Future ⋅ Insikt Group
Dark Covenant: Connections Between the Russian State and Criminal Actors
BlackEnergy EternalPetya Gameover P2P Zeus
2021-08-05 ⋅ Symantec ⋅ Threat Hunter Team
Attacks Against Critical Infrastructure: A Global Concern
BlackEnergy DarkSide DistTrack Stuxnet
2020-12-21 ⋅ IronNet ⋅ Adam Hlavek, Kimberly Ortiz
Russian cyber attack campaigns and actors
WellMail elf.wellmess Agent.BTZ BlackEnergy EternalPetya Havex RAT Industroyer Ryuk Triton WellMess
2020-10-19 ⋅ Riskint Blog ⋅ Curtis
Revisited: Fancy Bear's New Faces...and Sandworms' too
BlackEnergy EternalPetya Industroyer Olympic Destroyer
2020-10-19 ⋅ UK Government ⋅ Dominic Raab, ForeignCommonwealth & Development Office
UK exposes series of Russian cyber attacks against Olympic and Paralympic Games
VPNFilter BlackEnergy EternalPetya Industroyer
2020-05-21 ⋅ PICUS Security ⋅ Süleyman Özarslan
T1055 Process Injection
BlackEnergy Cardinal RAT Downdelph Emotet Kazuar RokRAT SOUNDBITE
2020-01-01 ⋅ Secureworks ⋅ SecureWorks
IRON VIKING
BlackEnergy EternalPetya GreyEnergy Industroyer KillDisk TeleBot TeleDoor
2019-05-08 ⋅ Verizon Communications Inc. ⋅ Verizon Communications Inc.
2019 Data Breach Investigations Report
BlackEnergy Cobalt Strike DanaBot Gandcrab GreyEnergy Mirai Olympic Destroyer SamSam
2019-01-18 ⋅ Mark Edmondson
BLACK ENERGY – Analysis
BlackEnergy
2017-09-18 ⋅ ThreatConnect ⋅ Paul Vann
Casting a Light on BlackEnergy
BlackEnergy
2017-07-03 ⋅ ESET Research ⋅ Anton Cherepanov, Robert Lipovsky
BlackEnergy – what we really know about the notorious cyber attacks
BlackEnergy
2017-05-31 ⋅ MITRE ⋅ MITRE ATT&CK
Sandworm Team
CyclopsBlink Exaramel BlackEnergy EternalPetya Exaramel GreyEnergy KillDisk MimiKatz Olympic Destroyer Sandworm
2016-01-28 ⋅ Kaspersky Labs ⋅ GReAT
BlackEnergy APT Attacks in Ukraine employ spearphishing with Word documents
BlackEnergy
2015-02-17 ⋅ Kaspersky Labs ⋅ Kurt Baumgartner, Maria Garnaeva
BE2 extraordinary plugins, Siemens targeting, dev fails
BlackEnergy
2014-11-03 ⋅ Kaspersky Labs ⋅ Kurt Baumgartner, Maria Garnaeva
BE2 custom plugins, router abuse, and target profiles
BlackEnergy
2014-10-14 ⋅ ESET Research ⋅ Robert Lipovsky
CVE‑2014‑4114: Details on August BlackEnergy PowerPoint Campaigns
BlackEnergy
2010-07-15 ⋅ Kaspersky Labs ⋅ Dmitry Tarakanov
Black DDoS
BlackEnergy
2010-03-03 ⋅ FireEye ⋅ Julia Wolf
Black Energy Crypto
BlackEnergy
2010-03-03 ⋅ Secureworks ⋅ Joe Stewart
BlackEnergy Version 2 Threat Analysis
BlackEnergy
2007-10-01 ⋅ Arbor Networks ⋅ Jose Nazario
BlackEnergy DDoS Bot Analysis
BlackEnergy
Yara Rules
[TLP:WHITE] win_blackenergy_auto (20260917 | Detects win.blackenergy.)
rule win_blackenergy_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-09-17"
        version = "1"
        description = "Detects win.blackenergy."
        info = "autogenerated rule brought to you by yara-signator"
        tool = "yara-signator v0.6.0"
        signator_config = "callsandjumps;datarefs;binvalue"
        malpedia_reference = "https://malpedia.caad.fkie.fraunhofer.de/details/win.blackenergy"
        malpedia_rule_date = "20260916"
        malpedia_hash = "53a643781c18e08f4a50949af60172d837a0b6f6"
        malpedia_version = "20260917"
        malpedia_license = "CC BY-SA 4.0"
        malpedia_sharing = "TLP:WHITE"

    /* DISCLAIMER
     * The strings used in this rule have been automatically selected from the
     * disassembly of memory dumps and unpacked files, using YARA-Signator.
     * The code and documentation is published here:
     * https://github.com/fxb-cocacoding/yara-signator
     * As Malpedia is used as data source, please note that for a given
     * number of families, only single samples are documented.
     * This likely impacts the degree of generalization these rules will offer.
     * Take the described generation method also into consideration when you
     * apply the rules in your use cases and assign them confidence levels.
     */


    strings:
        $sequence_0 = { 6a02 895de8 8975e4 e8???????? 8d4de4 51 8d4de8 }
            // n = 7, score = 200
            //   6a02                 | push                2
            //   895de8               | mov                 dword ptr [ebp - 0x18], ebx
            //   8975e4               | mov                 dword ptr [ebp - 0x1c], esi
            //   e8????????           |                     
            //   8d4de4               | lea                 ecx, [ebp - 0x1c]
            //   51                   | push                ecx
            //   8d4de8               | lea                 ecx, [ebp - 0x18]

        $sequence_1 = { 8b7628 3bf3 75e5 ff75f8 ffd7 }
            // n = 5, score = 200
            //   8b7628               | mov                 esi, dword ptr [esi + 0x28]
            //   3bf3                 | cmp                 esi, ebx
            //   75e5                 | jne                 0xffffffe7
            //   ff75f8               | push                dword ptr [ebp - 8]
            //   ffd7                 | call                edi

        $sequence_2 = { b800000000 b99c000000 f3aa 8d855cffffff }
            // n = 4, score = 200
            //   b800000000           | mov                 eax, 0
            //   b99c000000           | mov                 ecx, 0x9c
            //   f3aa                 | rep stosb           byte ptr es:[edi], al
            //   8d855cffffff         | lea                 eax, [ebp - 0xa4]

        $sequence_3 = { 81ec7c0a0000 56 be14050000 56 8d8598faffff 50 ff7508 }
            // n = 7, score = 200
            //   81ec7c0a0000         | sub                 esp, 0xa7c
            //   56                   | push                esi
            //   be14050000           | mov                 esi, 0x514
            //   56                   | push                esi
            //   8d8598faffff         | lea                 eax, [ebp - 0x568]
            //   50                   | push                eax
            //   ff7508               | push                dword ptr [ebp + 8]

        $sequence_4 = { 58 49 d1e1 014df4 }
            // n = 4, score = 200
            //   58                   | pop                 eax
            //   49                   | dec                 ecx
            //   d1e1                 | shl                 ecx, 1
            //   014df4               | add                 dword ptr [ebp - 0xc], ecx

        $sequence_5 = { 8b75d4 8b4de0 f3a4 8bc8 e8???????? 0345f4 }
            // n = 6, score = 200
            //   8b75d4               | mov                 esi, dword ptr [ebp - 0x2c]
            //   8b4de0               | mov                 ecx, dword ptr [ebp - 0x20]
            //   f3a4                 | rep movsb           byte ptr es:[edi], byte ptr [esi]
            //   8bc8                 | mov                 ecx, eax
            //   e8????????           |                     
            //   0345f4               | add                 eax, dword ptr [ebp - 0xc]

        $sequence_6 = { e8???????? 6639bdcaf7ffff 740d 8d85c8f7ffff 50 ff15???????? 8d45f4 }
            // n = 7, score = 200
            //   e8????????           |                     
            //   6639bdcaf7ffff       | cmp                 word ptr [ebp - 0x836], di
            //   740d                 | je                  0xf
            //   8d85c8f7ffff         | lea                 eax, [ebp - 0x838]
            //   50                   | push                eax
            //   ff15????????         |                     
            //   8d45f4               | lea                 eax, [ebp - 0xc]

        $sequence_7 = { 8365f800 53 56 57 ff750c 8bf8 e8???????? }
            // n = 7, score = 200
            //   8365f800             | and                 dword ptr [ebp - 8], 0
            //   53                   | push                ebx
            //   56                   | push                esi
            //   57                   | push                edi
            //   ff750c               | push                dword ptr [ebp + 0xc]
            //   8bf8                 | mov                 edi, eax
            //   e8????????           |                     

        $sequence_8 = { 85f6 7423 0fb74624 8b4e28 d1e8 8d4c41e8 }
            // n = 6, score = 200
            //   85f6                 | test                esi, esi
            //   7423                 | je                  0x25
            //   0fb74624             | movzx               eax, word ptr [esi + 0x24]
            //   8b4e28               | mov                 ecx, dword ptr [esi + 0x28]
            //   d1e8                 | shr                 eax, 1
            //   8d4c41e8             | lea                 ecx, [ecx + eax*2 - 0x18]

        $sequence_9 = { c745ec01000000 8b45ec 5e eb02 33c0 5f 5b }
            // n = 7, score = 200
            //   c745ec01000000       | mov                 dword ptr [ebp - 0x14], 1
            //   8b45ec               | mov                 eax, dword ptr [ebp - 0x14]
            //   5e                   | pop                 esi
            //   eb02                 | jmp                 4
            //   33c0                 | xor                 eax, eax
            //   5f                   | pop                 edi
            //   5b                   | pop                 ebx

    condition:
        7 of them and filesize < 98304
}
Download all Yara Rules