SYMBOLCOMMON_NAMEaka. SYNONYMS
win.fudmodule (Back to overview)

FudModule

aka: LIGHTSHOW

Actor(s): Lazarus Group

VTCollection    

FudModule is a user-mode DLL that gets the ability to read and write arbitrary kernel memory via the BYOVD technique. Its main goal is to turn off Windows system monitoring features, which is done by modifying kernel variables and removing kernel callbacks. Its actions may very likely affect various types of security products, e.g. EDRs, firewalls, antimalware and even digital forensics tools.

References
2026-08-11 ⋅ Check Point Research ⋅ Check Point Research
Shattering the Dream - When a Job Offer Becomes a Zero-Day Attack
ForestTiger FudModule MISTPEN
2026-02-01 ⋅ splintersfury ⋅ Ahmad Abdillah Bin Zaini
KernelSight: Windows Kernel Driver Exploitation Knowledge Base
BlackByte FudModule Nokoyawa Ransomware
2024-09-19 ⋅ Gen Digital ⋅ Luigino Camastra
Evolution of Lazarus ‘FudModule - no longer (stand)alone’
FudModule
2024-08-30 ⋅ Microsoft ⋅ Microsoft Threat Intelligence
North Korean threat actor Citrine Sleet exploiting Chromium zero-day
FudModule Lazarus Group
2024-04-18 ⋅ Avast ⋅ Luigino Camastra
From BYOVD to a 0-day: Unveiling Advanced Exploits in Cyber Recruiting Scams
FudModule Kaolin RAT
2024-02-28 ⋅ Avast Decoded ⋅ Jan Vojtěšek
Lazarus and the FudModule Rootkit: Beyond BYOVD with an Admin-to-Kernel Zero-Day
FudModule
2023-03-20 ⋅ SecurityIntelligence ⋅ John Dwyer
When the Absence of Noise Becomes Signal: Defensive Considerations for Lazarus FudModule
FudModule
2023-03-09 ⋅ Mandiant ⋅ Mandiant Intelligence
Stealing the LIGHTSHOW (Part Two) — LIGHTSHIFT and LIGHTSHOW
FudModule
2023-02-21 ⋅ SecurityIntelligence ⋅ Ruben Boonen
Direct Kernel Object Manipulation (DKOM) Attacks on ETW Providers
FudModule
2022-10-24 ⋅ ⋅ AhnLab ⋅ ASEC Analysis Team
Malware infection case of Lazarus attack group that neutralizes antivirus program with BYOVD technique
FudModule LazarDoor Racket Downloader
2022-09-30 ⋅ Virus Bulletin ⋅ Matěj Havránek, Peter Kálnai
Lazarus & BYOVD: evil to the Windows core
FudModule
2022-09-30 ⋅ ESET Research ⋅ Peter Kálnai
Amazon‑themed campaigns of Lazarus in the Netherlands and Belgium
BLINDINGCAN FudModule HTTP(S) uploader LambLoad TOUCHMOVE
2022-09-22 ⋅ AhnLab ⋅ AhnLab ASEC Analysis Team
Analysis Report on Lazarus Group's Rootkit Attack Using BYOVD
FudModule
Yara Rules
[TLP:WHITE] win_fudmodule_auto (20260917 | Detects win.fudmodule.)
rule win_fudmodule_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-09-17"
        version = "1"
        description = "Detects win.fudmodule."
        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.fudmodule"
        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 = { 11d8 48ffc9 4889d9 18c4 18d0 4883ec20 488d04a500900f7e }
            // n = 7, score = 100
            //   11d8                 | clc                 
            //   48ffc9               | repne scasb         al, byte ptr es:[edi]
            //   4889d9               | jae                 0xfffff208
            //   18c4                 | jne                 0xffff4bb9
            //   18d0                 | neg                 ch
            //   4883ec20             | mov                 ax, 0xbce4
            //   488d04a500900f7e     | sub                 ax, 0xbbbc

        $sequence_1 = { 4889542448 483bf2 0f84c3000000 90 }
            // n = 4, score = 100
            //   4889542448           | dec                 esp
            //   483bf2               | mov                 ecx, ecx
            //   0f84c3000000         | inc                 ebp
            //   90                   | movzx               eax, byte ptr [ecx]

        $sequence_2 = { 480fa3c5 f5 50 66c1c903 0f9dc0 4889d9 }
            // n = 6, score = 100
            //   480fa3c5             | test                esi, esi
            //   f5                   | je                  0x7a
            //   50                   | dec                 eax
            //   66c1c903             | lea                 edi, [esp + 0x60]
            //   0f9dc0               | dec                 eax
            //   4889d9               | lea                 ebx, [esp + 0x260]

        $sequence_3 = { 4889e5 01c2 d2fe 660fb6d3 }
            // n = 4, score = 100
            //   4889e5               | je                  0x25
            //   01c2                 | dec                 eax
            //   d2fe                 | arpl                di, ax
            //   660fb6d3             | dec                 eax

        $sequence_4 = { 66b8e4bc 662dbcbb c0f005 fec4 89d0 d2d0 }
            // n = 6, score = 100
            //   66b8e4bc             | inc                 ecx
            //   662dbcbb             | call                dword ptr [esp + 0xdd0]
            //   c0f005               | dec                 eax
            //   fec4                 | mov                 edx, dword ptr [esp + 0x68]
            //   89d0                 | dec                 eax
            //   d2d0                 | mov                 ecx, dword ptr [edi]

        $sequence_5 = { 488b542458 493bd4 0f85ecfdffff 49ffc5 4983c410 }
            // n = 5, score = 100
            //   488b542458           | dec                 ecx
            //   493bd4               | inc                 ecx
            //   0f85ecfdffff         | inc                 ecx
            //   49ffc5               | lea                 eax, [eax - 0x41]
            //   4983c410             | cmp                 eax, 0x19

        $sequence_6 = { 4889d9 f9 660fbcc3 f6dc }
            // n = 4, score = 100
            //   4889d9               | mov                 ebp, esi
            //   f9                   | dec                 eax
            //   660fbcc3             | mov                 esi, dword ptr [ebx]
            //   f6dc                 | dec                 eax

        $sequence_7 = { 41b964000000 488bc8 488d45bf 4c8bc7 }
            // n = 4, score = 100
            //   41b964000000         | inc                 ecx
            //   488bc8               | mov                 ecx, 0x64
            //   488d45bf             | dec                 eax
            //   4c8bc7               | mov                 ecx, eax

        $sequence_8 = { 4889b42480000000 c745e06e746f73 c745e46b726e6c 8945c8 c745e82e657865 }
            // n = 5, score = 100
            //   4889b42480000000     | mov                 dword ptr [esp + 0x48], 0x500065
            //   c745e06e746f73       | mov                 dword ptr [esp + 0x4c], 0x740061
            //   c745e46b726e6c       | mov                 dword ptr [esp + 0x50], 0x68
            //   8945c8               | mov                 dword ptr [esp + 0x58], 0x740053
            //   c745e82e657865       | dec                 eax

        $sequence_9 = { 5d c3 4c8bc9 450fb601 49ffc1 418d40bf 83f819 }
            // n = 7, score = 100
            //   5d                   | mov                 dword ptr [esp + 0x80], esi
            //   c3                   | mov                 dword ptr [ebp - 0x20], 0x736f746e
            //   4c8bc9               | mov                 dword ptr [ebp - 0x1c], 0x6c6e726b
            //   450fb601             | mov                 dword ptr [ebp - 0x38], eax
            //   49ffc1               | mov                 dword ptr [ebp - 0x18], 0x6578652e
            //   418d40bf             | pop                 ebp
            //   83f819               | ret                 

        $sequence_10 = { c744244865005000 c744244c61007400 c744245068000000 c744245853007400 }
            // n = 4, score = 100
            //   c744244865005000     | dec                 eax
            //   c744244c61007400     | lea                 eax, [ebp - 0x41]
            //   c744245068000000     | dec                 esp
            //   c744245853007400     | mov                 eax, edi

        $sequence_11 = { 4889442420 41ff9424d00d0000 488b542468 488b0f }
            // n = 4, score = 100
            //   4889442420           | nop                 
            //   41ff9424d00d0000     | dec                 eax
            //   488b542468           | mov                 edx, dword ptr [esp + 0x58]
            //   488b0f               | dec                 ecx

        $sequence_12 = { 69d20a000000 f5 0f892bd8fdff f9 6681fd8600 }
            // n = 5, score = 100
            //   69d20a000000         | mov                 ebp, esp
            //   f5                   | add                 edx, eax
            //   0f892bd8fdff         | sar                 dh, cl
            //   f9                   | movzx               dx, bl
            //   6681fd8600           | cmc                 

        $sequence_13 = { f5 f5 69d20a000000 660fa3fb }
            // n = 4, score = 100
            //   f5                   | bt                  ebp, eax
            //   f5                   | cmc                 
            //   69d20a000000         | push                eax
            //   660fa3fb             | ror                 cx, 3

        $sequence_14 = { f5 f8 f2ae 0f8300f2ffff 0f85ab4bffff f6dd }
            // n = 6, score = 100
            //   f5                   | lea                 ecx, [eax + eax*4]
            //   f8                   | dec                 eax
            //   f2ae                 | lea                 ecx, [ebp + ecx*2 - 0x30]
            //   0f8300f2ffff         | inc                 edi
            //   0f85ab4bffff         | dec                 eax
            //   f6dd                 | mov                 dword ptr [esp + 0x20], eax

        $sequence_15 = { 7423 4863c7 488d0c80 488d4c4dd0 e8???????? ffc7 }
            // n = 6, score = 100
            //   7423                 | dec                 eax
            //   4863c7               | mov                 dword ptr [esp + 0x48], edx
            //   488d0c80             | dec                 eax
            //   488d4c4dd0           | cmp                 esi, edx
            //   e8????????           |                     
            //   ffc7                 | je                  0xcc

    condition:
        7 of them and filesize < 795648
}
[TLP:WHITE] win_fudmodule_w0   (20241014 | Detects win.fudmodule.)
rule win_fudmodule_w0 {

    meta:
        author = "Jan Vojtesek - Avast Decoded"
        date = "2024-10-14"
        description = "Detects win.fudmodule."
        source = "https://github.com/avast/ioc/tree/master/FudModule#yara"
        reference = "https://decoded.avast.io/janvojtesek/lazarus-and-the-fudmodule-rootkit-beyond-byovd-with-an-admin-to-kernel-zero-day/"
        malpedia_reference = "https://malpedia.caad.fkie.fraunhofer.de/details/win.fudmodule"
        malpedia_rule_date = "20241014"
        malpedia_hash = ""
        malpedia_version = "20241014"
        malpedia_license = "CC BY-SA 4.0"
        malpedia_sharing = "TLP:WHITE"

    strings:
        $s00 = "overwrite pvmode failed. %X"
        $s01 = "%s\\temp\\tem1245.tmp"
        $s02 = "get NTKernelBase and some DriverBase failed."
        $s03 = "ClearVaccineNotifyRoutine failed."
        $s04 = "DisableUserEtwSource (%d/%d) passed."
        $s05 = "ClearVaccineNetworkFilterRoutine skipped."

        $h00 = {65 48 8B 04 25 30 00 00 00 48 8B CB 48 8B 50 60 48 89 13 80 7A 02 01 75 16 48 8D 15 ?? ?? ?? ?? E8 ?? ?? ?? ?? B8 01 00 00 F0 E9}
        $h01 = {48 C7 81 F0 00 00 00 20 01 00 00 48 C7 81 F8 00 00 00 A0 00 00 00 48 C7 81 08 01 00 00 A0 00 00 00 48 C7 81 18 01 00 00 68 00 00 00 48 C7 81 20 01 00 00 40 00 00 00}
        $h02 = {05 9F B5 FF FF 83 F8 04 0F 87 ?? ?? ?? ?? 48 C7 81 28 01 00 00 80 10 00 00}
        $h03 = {48 A3 08 00 00 80 00 00 00 00 48 8B 43 38 48 8B 4B 60}
        $h04 = {C7 45 ?? 65 72 53 69 C7 45 ?? 6C 6F 4E 61 66 C7 45 ?? 6D 65 C6 45 ?? 00 66 C7 45 ?? 48 8D}
        $h05 = {66 C7 45 ?? 4C 8B C6 45 ?? 3D 66 C7 45 ?? 48 8D C6 45 ?? 05 C7 45 ?? 46 6C 74 45 C7 45 ?? 6E 75 6D 65}
    condition:
        2 of them

}
[TLP:WHITE] win_fudmodule_w1   (20241014 | Detects win.fudmodule.)
rule win_fudmodule_w1 {

    meta:
        author = "Luigino Camastra, GenDigital"
        date = "2024-10-14"
        description = "Detects win.fudmodule."
        source = "https://github.com/avast/ioc/tree/master/FudModule#yara"
        reference = "https://www.gendigital.com/blog/preview/lazarus-fudmodule"
        malpedia_reference = "https://malpedia.caad.fkie.fraunhofer.de/details/win.fudmodule"
        malpedia_rule_date = "20241014"
        malpedia_hash = ""
        malpedia_version = "20241014"
        malpedia_license = "CC BY-SA 4.0"
        malpedia_sharing = "TLP:WHITE"

	strings:
		$s00 = "Success." // 0x14001acf0
		$s01 = "remote_exec failed." // 0x14001ad00
		$s02 = "init_env failed." // 0x14001ac90
		$s03 = "GetGodMode failed" // 0x14001acc0
		$s04 = "RemoteDllExecute passed." // 0x14001b268
		$s05 = "CreateRemoteProcess passed." // 0x14001b220
		$s06 = "GetSystemHandle passed." // 0x14001b208
		$s07 = "SuspendDefender skipped." // 0x14001b1b8
		$s08 = "DisableUserEtwSource (%d/%d) passed." // 0x14001b180
		$s09 = "EtwpHostSiloState is Null." // 0x14001b140
		$s10 = "Get EtwpHostSiloState failed." // 0x14001b160
		
		$h00 = { 8A 44 0E ?? 41 32 C4 88 01 B0 0D 48 FF C1 41 F6 }
		$h01 = { 4? 8B DF 4? 8D 47 D0 4? C1 E0 10 4? C1 E3 10 4? }
		$h02 = { B? 05 00 00 00 4? 81 E3 FF FF 0F 00 4? 33 D8 4C }
	condition:
		3 of them

}
Download all Yara Rules