SYMBOLCOMMON_NAMEaka. SYNONYMS
win.gootkit (Back to overview)

GootKit

aka: Waldek, Xswkit, talalpek
VTCollection     URLhaus      

Gootkit is a banking trojan consisting of an x86 loader and a payload embedding nodejs as well as a set of js scripts. The loader downloads the payload, stores it in registry and injects it in a copy of the loader process. The loader also contains two encrypted DLLs intended to be injected into each browser process launched in order to place the payload in man in the browser and allow it to apply the webinjects received from the command and control server on HTTPx exchanges. This allows Gootkit to intercept HTTPx requests and responses, steal their content or modify it according to the webinjects.

References
2023-01-09TrendmicroFe Cureg, Hitomi Kimura, Ryan Maglaque, Trent Bessell
Gootkit Loader Actively Targets Australian Healthcare Industry
GootLoader GootKit
2022-09-22deepwatchBen Nichols, Eric Ford
Is Gootloader Working with a Foreign Intelligence Service?
GootKit
2022-07-27Trend MicroBuddy Tancio, Jed Valderama
Gootkit Loader’s Updated Tactics and Fileless Delivery of Cobalt Strike
Cobalt Strike GootKit Kronos REvil SunCrypt
2022-05-09The DFIR ReportThe DFIR Report
SEO Poisoning – A Gootloader Story
GootLoader LaZagne Cobalt Strike GootKit
2022-03-22Red CanaryRed Canary
2022 Threat Detection Report
FAKEUPDATES Silver Sparrow BazarBackdoor Cobalt Strike GootKit Yellow Cockatoo RAT
2021-11-26Twitter (@jhencinski)Jon Hencinski
Twitter Thread on weelky MDR recap from expel.io
GootKit Squirrelwaffle
2021-11-10BlackberryCodi Starks, Ryan Chapman
REvil Under the Microscope
GootKit REvil
2021-09-03Trend MicroMohamad Mokbel
The State of SSL/TLS Certificate Usage in Malware C&C Communications
AdWind ostap AsyncRAT BazarBackdoor BitRAT Buer Chthonic CloudEyE Cobalt Strike DCRat Dridex FindPOS GootKit Gozi IcedID ISFB Nanocore RAT Orcus RAT PandaBanker Qadars QakBot Quasar RAT Rockloader ServHelper Shifu SManager TorrentLocker TrickBot Vawtrak Zeus Zloader
2021-06-07KasperskyAnton Kuzmenko
Gootkit: the cautious Trojan
GootKit
2021-03-02Github (microsoft)Microsoft
Microsoft-365-Defender-Hunting-Queries for hunting Gootkit malware delivery and C2
GootKit
2021-03-02Twitter (@MsftSecIntel)Microsoft Security Intelligence
Tweet on Gootkit malware campaign
GootKit
2021-03-01Sophos LabsAndrew Brandt, Gabor Szappanos
“Gootloader” expands its payload delivery options
GootKit
2021-02-02CRONUPGermán Fernández
De ataque con Malware a incidente de Ransomware
Avaddon BazarBackdoor Buer Clop Cobalt Strike Conti DanaBot Dharma Dridex Egregor Emotet Empire Downloader FriedEx GootKit IcedID MegaCortex Nemty Phorpiex PwndLocker PyXie QakBot RansomEXX REvil Ryuk SDBbot SmokeLoader TrickBot Zloader
2021-01-19Palo Alto Networks Unit 42Brad Duncan
Wireshark Tutorial: Examining Emotet Infection Traffic
Emotet GootKit IcedID QakBot TrickBot
2020-12-11Trend MicroMarc Lanzendorfer
Investigating the Gootkit Loader
GootKit
2020-11-30Malwarebyteshasherezade, Jérôme Segura
German users targeted with Gootkit banker or REvil ransomware
GootKit REvil
2020-04-13BlackberryMasaki Kasuya, Tatsuya Hasegawa
Threat Spotlight: Gootkit Banking Trojan
Azorult GootKit
2019-10-02Dissecting MalwareMarius Genheimer
Nicht so goot - Breaking down Gootkit and Jasper (+ FTCODE)
FTCODE JasperLoader GootKit
2019-08-29SentinelOneDaniel Bunce
Gootkit Banking Trojan | Part 2: Persistence & Other Capabilities
GootKit
2019-08-15SentinelOneDaniel Bunce
Gootkit Banking Trojan | Deep Dive into Anti-Analysis Features
GootKit
2019-08-15Sentinel LABSDaniel Bunce
Gootkit Banking Trojan | Deep Dive into Anti-Analysis Features
GootKit
2019-03-23Open MalwareDanny Quist
Reverse Engineering Gootkit with Ghidra Part I
GootKit
2019-02-14CertegoMatteo Lodi
Malware Tales: Gootkit
GootKit
2018-11-01CERT La PosteChristophe Rieunier, Thomas Dubier
Analyse du malware bancaire Gootkit et de ses mécanismes de protection
GootKit
2018-05-20Youtube (OALabs)Sergei Frankoff
Unpacking Gootkit Part 2 - Debugging Anti-Analysis Tricks With IDA Pro and x64dbg
GootKit
2018-03-04Youtube (OALabs)Sergei Frankoff
Unpacking Gootkit Malware With IDA Pro and X64dbg - Subscriber Request
Cold$eal GootKit
2018-02-13JuniperPaul Kimayong
New Gootkit Banking Trojan variant pushes the limits on evasive behavior
GootKit
2017-03-01SecurityIntelligenceGadi Ostrovsky, Limor Kessem
GootKit Developers Dress It Up With Web Traffic Proxy
GootKit
2016-12-01US-CERTUS-CERT
Alert (TA16-336A): Avalanche (crimeware-as-a-service infrastructure)
GootKit
2016-10-27Kaspersky LabsAlexey Shulmin, Sergey Yunakovsky
Inside the Gootkit C&C server
GootKit
2016-07-08SecurityIntelligenceLimor Kessem
GootKit: Bobbing and Weaving to Avoid Prying Eyes
GootKit
2015-04-13CERT Societe GeneraleCERT Societe Generale
Analyzing Gootkit's persistence mechanism (new ASEP inside!)
GootKit
2015-03-30Trend MicroCedric Pernet, Dark Luo
Fake Judicial Spam Leads to Backdoor with Fake Certificate Authority
GootKit
2014-04-09Dr.WebDr.Web
BackDoor.Gootkit.112—a new multi-purpose backdoor
GootKit
2012-08-01KasperskyMarta Janus
“RunForestRun”, “gootkit” and random domain name generation
RunForestRun GootKit
Yara Rules
[TLP:WHITE] win_gootkit_auto (20260504 | Detects win.gootkit.)
rule win_gootkit_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-05-04"
        version = "1"
        description = "Detects win.gootkit."
        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.gootkit"
        malpedia_rule_date = "20260422"
        malpedia_hash = "a182e35da64e6d71cb55f125c4d4225196523f14"
        malpedia_version = "20260504"
        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 = { 8bd0 33db 33c9 85d2 740e 0fbe0431 c1cb0d }
            // n = 7, score = 1700
            //   8bd0                 | mov                 edx, eax
            //   33db                 | xor                 ebx, ebx
            //   33c9                 | xor                 ecx, ecx
            //   85d2                 | test                edx, edx
            //   740e                 | je                  0x10
            //   0fbe0431             | movsx               eax, byte ptr [ecx + esi]
            //   c1cb0d               | ror                 ebx, 0xd

        $sequence_1 = { 8945f4 51 8d4ddc 660f1345d4 51 8bc8 }
            // n = 6, score = 1700
            //   8945f4               | mov                 dword ptr [ebp - 0xc], eax
            //   51                   | push                ecx
            //   8d4ddc               | lea                 ecx, [ebp - 0x24]
            //   660f1345d4           | movlpd              qword ptr [ebp - 0x2c], xmm0
            //   51                   | push                ecx
            //   8bc8                 | mov                 ecx, eax

        $sequence_2 = { 0fbe39 4a 6a08 41 }
            // n = 4, score = 1700
            //   0fbe39               | movsx               edi, byte ptr [ecx]
            //   4a                   | dec                 edx
            //   6a08                 | push                8
            //   41                   | inc                 ecx

        $sequence_3 = { 53 6a00 6a00 8d45c4 8975f8 50 ff75fc }
            // n = 7, score = 1700
            //   53                   | push                ebx
            //   6a00                 | push                0
            //   6a00                 | push                0
            //   8d45c4               | lea                 eax, [ebp - 0x3c]
            //   8975f8               | mov                 dword ptr [ebp - 8], esi
            //   50                   | push                eax
            //   ff75fc               | push                dword ptr [ebp - 4]

        $sequence_4 = { e8???????? 85c0 0f85d4000000 51 }
            // n = 4, score = 1700
            //   e8????????           |                     
            //   85c0                 | test                eax, eax
            //   0f85d4000000         | jne                 0xda
            //   51                   | push                ecx

        $sequence_5 = { 33c9 c745f804000000 41 33f6 85c0 }
            // n = 5, score = 1700
            //   33c9                 | xor                 ecx, ecx
            //   c745f804000000       | mov                 dword ptr [ebp - 8], 4
            //   41                   | inc                 ecx
            //   33f6                 | xor                 esi, esi
            //   85c0                 | test                eax, eax

        $sequence_6 = { 85c0 740e 837df004 7508 8b45ec 03c6 }
            // n = 6, score = 1700
            //   85c0                 | test                eax, eax
            //   740e                 | je                  0x10
            //   837df004             | cmp                 dword ptr [ebp - 0x10], 4
            //   7508                 | jne                 0xa
            //   8b45ec               | mov                 eax, dword ptr [ebp - 0x14]
            //   03c6                 | add                 eax, esi

        $sequence_7 = { 895dec f3aa 8b3d???????? 8d45f8 50 53 }
            // n = 6, score = 1700
            //   895dec               | mov                 dword ptr [ebp - 0x14], ebx
            //   f3aa                 | rep stosb           byte ptr es:[edi], al
            //   8b3d????????         |                     
            //   8d45f8               | lea                 eax, [ebp - 8]
            //   50                   | push                eax
            //   53                   | push                ebx

        $sequence_8 = { f3aa 68???????? ff15???????? 50 }
            // n = 4, score = 1200
            //   f3aa                 | rep stosb           byte ptr es:[edi], al
            //   68????????           |                     
            //   ff15????????         |                     
            //   50                   | push                eax

        $sequence_9 = { 8b7df4 32c0 8b4de4 f3aa }
            // n = 4, score = 1200
            //   8b7df4               | mov                 edi, dword ptr [ebp - 0xc]
            //   32c0                 | xor                 al, al
            //   8b4de4               | mov                 ecx, dword ptr [ebp - 0x1c]
            //   f3aa                 | rep stosb           byte ptr es:[edi], al

        $sequence_10 = { 50 e8???????? 83c40c 68fd000000 }
            // n = 4, score = 1100
            //   50                   | push                eax
            //   e8????????           |                     
            //   83c40c               | add                 esp, 0xc
            //   68fd000000           | push                0xfd

        $sequence_11 = { 50 68???????? ff15???????? 85c0 7505 e8???????? }
            // n = 6, score = 1100
            //   50                   | push                eax
            //   68????????           |                     
            //   ff15????????         |                     
            //   85c0                 | test                eax, eax
            //   7505                 | jne                 7
            //   e8????????           |                     

        $sequence_12 = { 50 8b4508 8b00 99 52 50 }
            // n = 6, score = 1000
            //   50                   | push                eax
            //   8b4508               | mov                 eax, dword ptr [ebp + 8]
            //   8b00                 | mov                 eax, dword ptr [eax]
            //   99                   | cdq                 
            //   52                   | push                edx
            //   50                   | push                eax

        $sequence_13 = { 7514 c705????????01000000 c705????????02000000 8be5 5d }
            // n = 5, score = 900
            //   7514                 | jne                 0x16
            //   c705????????01000000     |     
            //   c705????????02000000     |     
            //   8be5                 | mov                 esp, ebp
            //   5d                   | pop                 ebp

        $sequence_14 = { e8???????? 6a0c 6a08 ff15???????? 50 ff15???????? }
            // n = 6, score = 800
            //   e8????????           |                     
            //   6a0c                 | push                0xc
            //   6a08                 | push                8
            //   ff15????????         |                     
            //   50                   | push                eax
            //   ff15????????         |                     

        $sequence_15 = { 6808020000 6a00 ff15???????? 50 }
            // n = 4, score = 800
            //   6808020000           | push                0x208
            //   6a00                 | push                0
            //   ff15????????         |                     
            //   50                   | push                eax

        $sequence_16 = { 833d????????00 750a 6a32 ff15???????? }
            // n = 4, score = 800
            //   833d????????00       |                     
            //   750a                 | jne                 0xc
            //   6a32                 | push                0x32
            //   ff15????????         |                     

        $sequence_17 = { 50 6a02 ff15???????? 6888130000 }
            // n = 4, score = 700
            //   50                   | push                eax
            //   6a02                 | push                2
            //   ff15????????         |                     
            //   6888130000           | push                0x1388

        $sequence_18 = { e8???????? 8d45fc 50 6a01 6a01 6a00 6800000002 }
            // n = 7, score = 600
            //   e8????????           |                     
            //   8d45fc               | lea                 eax, [ebp - 4]
            //   50                   | push                eax
            //   6a01                 | push                1
            //   6a01                 | push                1
            //   6a00                 | push                0
            //   6800000002           | push                0x2000000

        $sequence_19 = { e8???????? 85c0 750c c705????????03000000 }
            // n = 4, score = 500
            //   e8????????           |                     
            //   85c0                 | test                eax, eax
            //   750c                 | jne                 0xe
            //   c705????????03000000     |     

        $sequence_20 = { e8???????? 85c0 740d 6810270000 ff15???????? }
            // n = 5, score = 400
            //   e8????????           |                     
            //   85c0                 | test                eax, eax
            //   740d                 | je                  0xf
            //   6810270000           | push                0x2710
            //   ff15????????         |                     

        $sequence_21 = { 53 53 53 8901 }
            // n = 4, score = 300
            //   53                   | push                ebx
            //   53                   | push                ebx
            //   53                   | push                ebx
            //   8901                 | mov                 dword ptr [ecx], eax

        $sequence_22 = { 83faff 7508 ff15???????? 8bd0 }
            // n = 4, score = 200
            //   83faff               | cmp                 edx, -1
            //   7508                 | jne                 0xa
            //   ff15????????         |                     
            //   8bd0                 | mov                 edx, eax

        $sequence_23 = { 663901 754e 8b513c 03d1 813a50450000 }
            // n = 5, score = 200
            //   663901               | cmp                 word ptr [ecx], ax
            //   754e                 | jne                 0x50
            //   8b513c               | mov                 edx, dword ptr [ecx + 0x3c]
            //   03d1                 | add                 edx, ecx
            //   813a50450000         | cmp                 dword ptr [edx], 0x4550

        $sequence_24 = { 03d1 813a50450000 7541 8b82d8000000 }
            // n = 4, score = 200
            //   03d1                 | add                 edx, ecx
            //   813a50450000         | cmp                 dword ptr [edx], 0x4550
            //   7541                 | jne                 0x43
            //   8b82d8000000         | mov                 eax, dword ptr [edx + 0xd8]

        $sequence_25 = { 0f114710 0f104030 0f114f20 0f104840 0f114730 }
            // n = 5, score = 200
            //   0f114710             | movups              xmmword ptr [edi + 0x10], xmm0
            //   0f104030             | movups              xmm0, xmmword ptr [eax + 0x30]
            //   0f114f20             | movups              xmmword ptr [edi + 0x20], xmm1
            //   0f104840             | movups              xmm1, xmmword ptr [eax + 0x40]
            //   0f114730             | movups              xmmword ptr [edi + 0x30], xmm0

        $sequence_26 = { 7235 8b82dc000000 0382d8000000 03c1 3bd8 7323 }
            // n = 6, score = 200
            //   7235                 | jb                  0x37
            //   8b82dc000000         | mov                 eax, dword ptr [edx + 0xdc]
            //   0382d8000000         | add                 eax, dword ptr [edx + 0xd8]
            //   03c1                 | add                 eax, ecx
            //   3bd8                 | cmp                 ebx, eax
            //   7323                 | jae                 0x25

        $sequence_27 = { 0f114730 0f104050 0f114f40 0f104860 0f114750 }
            // n = 5, score = 200
            //   0f114730             | movups              xmmword ptr [edi + 0x30], xmm0
            //   0f104050             | movups              xmm0, xmmword ptr [eax + 0x50]
            //   0f114f40             | movups              xmmword ptr [edi + 0x40], xmm1
            //   0f104860             | movups              xmm1, xmmword ptr [eax + 0x60]
            //   0f114750             | movups              xmmword ptr [edi + 0x50], xmm0

        $sequence_28 = { ff15???????? ffc3 83fb0a 7cd5 33c0 }
            // n = 5, score = 200
            //   ff15????????         |                     
            //   ffc3                 | inc                 ebx
            //   83fb0a               | cmp                 ebx, 0xa
            //   7cd5                 | jl                  0xffffffd7
            //   33c0                 | xor                 eax, eax

        $sequence_29 = { 83faff 7509 56 ff15???????? 8bd0 }
            // n = 5, score = 200
            //   83faff               | cmp                 edx, -1
            //   7509                 | jne                 0xb
            //   56                   | push                esi
            //   ff15????????         |                     
            //   8bd0                 | mov                 edx, eax

        $sequence_30 = { 8b5610 3bca 724b 8d4204 3bc8 }
            // n = 5, score = 200
            //   8b5610               | mov                 edx, dword ptr [esi + 0x10]
            //   3bca                 | cmp                 ecx, edx
            //   724b                 | jb                  0x4d
            //   8d4204               | lea                 eax, [edx + 4]
            //   3bc8                 | cmp                 ecx, eax

        $sequence_31 = { 50 6a10 8d45e8 50 68060000c8 56 }
            // n = 6, score = 200
            //   50                   | push                eax
            //   6a10                 | push                0x10
            //   8d45e8               | lea                 eax, [ebp - 0x18]
            //   50                   | push                eax
            //   68060000c8           | push                0xc8000006
            //   56                   | push                esi

        $sequence_32 = { 0f104860 0f114750 0f114f60 b801000000 }
            // n = 4, score = 200
            //   0f104860             | movups              xmm1, xmmword ptr [eax + 0x60]
            //   0f114750             | movups              xmmword ptr [edi + 0x50], xmm0
            //   0f114f60             | movups              xmmword ptr [edi + 0x60], xmm1
            //   b801000000           | mov                 eax, 1

        $sequence_33 = { 85c0 7550 ff15???????? 8bf8 893d???????? }
            // n = 5, score = 200
            //   85c0                 | test                eax, eax
            //   7550                 | jne                 0x52
            //   ff15????????         |                     
            //   8bf8                 | mov                 edi, eax
            //   893d????????         |                     

        $sequence_34 = { 0f104060 0f114760 8b4070 894770 be01000000 }
            // n = 5, score = 200
            //   0f104060             | movups              xmm0, xmmword ptr [eax + 0x60]
            //   0f114760             | movups              xmmword ptr [edi + 0x60], xmm0
            //   8b4070               | mov                 eax, dword ptr [eax + 0x70]
            //   894770               | mov                 dword ptr [edi + 0x70], eax
            //   be01000000           | mov                 esi, 1

        $sequence_35 = { 7510 8d4864 ff15???????? ffc3 }
            // n = 4, score = 200
            //   7510                 | jne                 0x12
            //   8d4864               | lea                 ecx, [eax + 0x64]
            //   ff15????????         |                     
            //   ffc3                 | inc                 ebx

        $sequence_36 = { e8???????? 83ec0c ba???????? b9???????? }
            // n = 4, score = 200
            //   e8????????           |                     
            //   83ec0c               | sub                 esp, 0xc
            //   ba????????           |                     
            //   b9????????           |                     

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