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-09 ⋅ Trendmicro ⋅ Fe Cureg, Hitomi Kimura, Ryan Maglaque, Trent Bessell
Gootkit Loader Actively Targets Australian Healthcare Industry
GootLoader GootKit
2022-09-22 ⋅ deepwatch ⋅ Ben Nichols, Eric Ford
Is Gootloader Working with a Foreign Intelligence Service?
GootKit
2022-07-27 ⋅ Trend Micro ⋅ Buddy Tancio, Jed Valderama
Gootkit Loader’s Updated Tactics and Fileless Delivery of Cobalt Strike
Cobalt Strike GootKit Kronos REvil SunCrypt
2022-05-09 ⋅ The DFIR Report ⋅ The DFIR Report
SEO Poisoning – A Gootloader Story
GootLoader LaZagne Cobalt Strike GootKit
2022-03-22 ⋅ Red Canary ⋅ Red Canary
2022 Threat Detection Report
FAKEUPDATES Silver Sparrow BazarBackdoor Cobalt Strike GootKit Yellow Cockatoo RAT
2021-11-26 ⋅ Twitter (@jhencinski) ⋅ Jon Hencinski
Twitter Thread on weelky MDR recap from expel.io
GootKit Squirrelwaffle
2021-11-10 ⋅ Blackberry ⋅ Codi Starks, Ryan Chapman
REvil Under the Microscope
GootKit REvil
2021-09-03 ⋅ Trend Micro ⋅ Mohamad 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-07 ⋅ Kaspersky ⋅ Anton Kuzmenko
Gootkit: the cautious Trojan
GootKit
2021-03-02 ⋅ Github (microsoft) ⋅ Microsoft
Microsoft-365-Defender-Hunting-Queries for hunting Gootkit malware delivery and C2
GootKit
2021-03-02 ⋅ Twitter (@MsftSecIntel) ⋅ Microsoft Security Intelligence
Tweet on Gootkit malware campaign
GootKit
2021-03-01 ⋅ Sophos Labs ⋅ Andrew Brandt, Gabor Szappanos
“Gootloader” expands its payload delivery options
GootKit
2021-02-02 ⋅ ⋅ CRONUP ⋅ Germá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-19 ⋅ Palo Alto Networks Unit 42 ⋅ Brad Duncan
Wireshark Tutorial: Examining Emotet Infection Traffic
Emotet GootKit IcedID QakBot TrickBot
2020-12-11 ⋅ Trend Micro ⋅ Marc Lanzendorfer
Investigating the Gootkit Loader
GootKit
2020-11-30 ⋅ Malwarebytes ⋅ hasherezade, Jérôme Segura
German users targeted with Gootkit banker or REvil ransomware
GootKit REvil
2020-04-13 ⋅ Blackberry ⋅ Masaki Kasuya, Tatsuya Hasegawa
Threat Spotlight: Gootkit Banking Trojan
Azorult GootKit
2019-10-02 ⋅ Dissecting Malware ⋅ Marius Genheimer
Nicht so goot - Breaking down Gootkit and Jasper (+ FTCODE)
FTCODE JasperLoader GootKit
2019-08-29 ⋅ SentinelOne ⋅ Daniel Bunce
Gootkit Banking Trojan | Part 2: Persistence & Other Capabilities
GootKit
2019-08-15 ⋅ SentinelOne ⋅ Daniel Bunce
Gootkit Banking Trojan | Deep Dive into Anti-Analysis Features
GootKit
2019-08-15 ⋅ Sentinel LABS ⋅ Daniel Bunce
Gootkit Banking Trojan | Deep Dive into Anti-Analysis Features
GootKit
2019-03-23 ⋅ Open Malware ⋅ Danny Quist
Reverse Engineering Gootkit with Ghidra Part I
GootKit
2019-02-14 ⋅ Certego ⋅ Matteo Lodi
Malware Tales: Gootkit
GootKit
2018-11-01 ⋅ ⋅ CERT La Poste ⋅ Christophe Rieunier, Thomas Dubier
Analyse du malware bancaire Gootkit et de ses mécanismes de protection
GootKit
2018-05-20 ⋅ Youtube (OALabs) ⋅ Sergei Frankoff
Unpacking Gootkit Part 2 - Debugging Anti-Analysis Tricks With IDA Pro and x64dbg
GootKit
2018-03-04 ⋅ Youtube (OALabs) ⋅ Sergei Frankoff
Unpacking Gootkit Malware With IDA Pro and X64dbg - Subscriber Request
Cold$eal GootKit
2018-02-13 ⋅ Juniper ⋅ Paul Kimayong
New Gootkit Banking Trojan variant pushes the limits on evasive behavior
GootKit
2017-03-01 ⋅ SecurityIntelligence ⋅ Gadi Ostrovsky, Limor Kessem
GootKit Developers Dress It Up With Web Traffic Proxy
GootKit
2016-12-01 ⋅ US-CERT ⋅ US-CERT
Alert (TA16-336A): Avalanche (crimeware-as-a-service infrastructure)
GootKit
2016-10-27 ⋅ Kaspersky Labs ⋅ Alexey Shulmin, Sergey Yunakovsky
Inside the Gootkit C&C server
GootKit
2016-07-08 ⋅ SecurityIntelligence ⋅ Limor Kessem
GootKit: Bobbing and Weaving to Avoid Prying Eyes
GootKit
2015-04-13 ⋅ CERT Societe Generale ⋅ CERT Societe Generale
Analyzing Gootkit's persistence mechanism (new ASEP inside!)
GootKit
2015-03-30 ⋅ Trend Micro ⋅ Cedric Pernet, Dark Luo
Fake Judicial Spam Leads to Backdoor with Fake Certificate Authority
GootKit
2014-04-09 ⋅ Dr.Web ⋅ Dr.Web
BackDoor.Gootkit.112—a new multi-purpose backdoor
GootKit
2012-08-01 ⋅ Kaspersky ⋅ Marta Janus
“RunForestRun”, “gootkit” and random domain name generation
RunForestRun GootKit
Yara Rules
[TLP:WHITE] win_gootkit_auto (20260917 | Detects win.gootkit.)
rule win_gootkit_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-09-17"
        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 = "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 = { 8bec 83ec30 53 8bc1 0f57c0 }
            // n = 5, score = 1700
            //   8bec                 | mov                 ebp, esp
            //   83ec30               | sub                 esp, 0x30
            //   53                   | push                ebx
            //   8bc1                 | mov                 eax, ecx
            //   0f57c0               | xorps               xmm0, xmm0

        $sequence_1 = { 8b470c 894104 8b4d0c 85c9 740a 8b4710 }
            // n = 6, score = 1700
            //   8b470c               | mov                 eax, dword ptr [edi + 0xc]
            //   894104               | mov                 dword ptr [ecx + 4], eax
            //   8b4d0c               | mov                 ecx, dword ptr [ebp + 0xc]
            //   85c9                 | test                ecx, ecx
            //   740a                 | je                  0xc
            //   8b4710               | mov                 eax, dword ptr [edi + 0x10]

        $sequence_2 = { 8b35???????? 81c704010000 6a00 ffd6 50 ff15???????? 8d043f }
            // n = 7, score = 1700
            //   8b35????????         |                     
            //   81c704010000         | add                 edi, 0x104
            //   6a00                 | push                0
            //   ffd6                 | call                esi
            //   50                   | push                eax
            //   ff15????????         |                     
            //   8d043f               | lea                 eax, [edi + edi]

        $sequence_3 = { c1cf0d 03f8 41 3bca }
            // n = 4, score = 1700
            //   c1cf0d               | ror                 edi, 0xd
            //   03f8                 | add                 edi, eax
            //   41                   | inc                 ecx
            //   3bca                 | cmp                 ecx, edx

        $sequence_4 = { 6a01 6800000080 ff75f4 ff15???????? 8bf8 83ffff 743f }
            // n = 7, score = 1700
            //   6a01                 | push                1
            //   6800000080           | push                0x80000000
            //   ff75f4               | push                dword ptr [ebp - 0xc]
            //   ff15????????         |                     
            //   8bf8                 | mov                 edi, eax
            //   83ffff               | cmp                 edi, -1
            //   743f                 | je                  0x41

        $sequence_5 = { 83ffff 743f 6a00 6a00 ff75f8 }
            // n = 5, score = 1700
            //   83ffff               | cmp                 edi, -1
            //   743f                 | je                  0x41
            //   6a00                 | push                0
            //   6a00                 | push                0
            //   ff75f8               | push                dword ptr [ebp - 8]

        $sequence_6 = { 8945f8 3b45f0 72d6 eb09 0fb706 8b4dec 8d3c81 }
            // n = 7, score = 1700
            //   8945f8               | mov                 dword ptr [ebp - 8], eax
            //   3b45f0               | cmp                 eax, dword ptr [ebp - 0x10]
            //   72d6                 | jb                  0xffffffd8
            //   eb09                 | jmp                 0xb
            //   0fb706               | movzx               eax, word ptr [esi]
            //   8b4dec               | mov                 ecx, dword ptr [ebp - 0x14]
            //   8d3c81               | lea                 edi, [ecx + eax*4]

        $sequence_7 = { 895df8 0fb74314 8d7b18 0fb75b06 }
            // n = 4, score = 1700
            //   895df8               | mov                 dword ptr [ebp - 8], ebx
            //   0fb74314             | movzx               eax, word ptr [ebx + 0x14]
            //   8d7b18               | lea                 edi, [ebx + 0x18]
            //   0fb75b06             | movzx               ebx, word ptr [ebx + 6]

        $sequence_8 = { 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_9 = { f3aa 68???????? ff15???????? 50 }
            // n = 4, score = 1200
            //   f3aa                 | rep stosb           byte ptr es:[edi], al
            //   68????????           |                     
            //   ff15????????         |                     
            //   50                   | push                eax

        $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 }
            // n = 5, score = 1000
            //   50                   | push                eax
            //   8b4508               | mov                 eax, dword ptr [ebp + 8]
            //   8b00                 | mov                 eax, dword ptr [eax]
            //   99                   | cdq                 
            //   52                   | push                edx

        $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 = { 833d????????00 750a 6a32 ff15???????? }
            // n = 4, score = 800
            //   833d????????00       |                     
            //   750a                 | jne                 0xc
            //   6a32                 | push                0x32
            //   ff15????????         |                     

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

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

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

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

        $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 = { 0f110f 0f104820 0f114710 0f104030 0f114f20 0f104840 }
            // n = 6, score = 200
            //   0f110f               | movups              xmmword ptr [edi], xmm1
            //   0f104820             | movups              xmm1, xmmword ptr [eax + 0x20]
            //   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]

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

        $sequence_24 = { 6a1c 50 56 ff15???????? 8b4de8 b84d5a0000 }
            // n = 6, score = 200
            //   6a1c                 | push                0x1c
            //   50                   | push                eax
            //   56                   | push                esi
            //   ff15????????         |                     
            //   8b4de8               | mov                 ecx, dword ptr [ebp - 0x18]
            //   b84d5a0000           | mov                 eax, 0x5a4d

        $sequence_25 = { 7412 83ec0c ba???????? b9???????? e8???????? e8???????? }
            // n = 6, score = 200
            //   7412                 | je                  0x14
            //   83ec0c               | sub                 esp, 0xc
            //   ba????????           |                     
            //   b9????????           |                     
            //   e8????????           |                     
            //   e8????????           |                     

        $sequence_26 = { 0f104040 0f114740 0f104850 0f114f50 0f104060 0f114760 8b4070 }
            // n = 7, score = 200
            //   0f104040             | movups              xmm0, xmmword ptr [eax + 0x40]
            //   0f114740             | movups              xmmword ptr [edi + 0x40], xmm0
            //   0f104850             | movups              xmm1, xmmword ptr [eax + 0x50]
            //   0f114f50             | movups              xmmword ptr [edi + 0x50], xmm1
            //   0f104060             | movups              xmm0, xmmword ptr [eax + 0x60]
            //   0f114760             | movups              xmmword ptr [edi + 0x60], xmm0
            //   8b4070               | mov                 eax, dword ptr [eax + 0x70]

        $sequence_27 = { 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_28 = { 750c 807b01ff 7506 807b0225 }
            // n = 4, score = 200
            //   750c                 | jne                 0xe
            //   807b01ff             | cmp                 byte ptr [ebx + 1], 0xff
            //   7506                 | jne                 8
            //   807b0225             | cmp                 byte ptr [ebx + 2], 0x25

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

        $sequence_30 = { 0f114760 8b4070 894770 be01000000 }
            // n = 4, score = 200
            //   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_31 = { 85c0 7550 ff15???????? 8bf8 893d???????? }
            // n = 5, score = 200
            //   85c0                 | test                eax, eax
            //   7550                 | jne                 0x52
            //   ff15????????         |                     
            //   8bf8                 | mov                 edi, eax
            //   893d????????         |                     

        $sequence_32 = { 7235 8b82dc000000 0382d8000000 03c1 3bd8 }
            // n = 5, 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

        $sequence_33 = { 8bc8 e8???????? 3935???????? 7412 83ec0c ba???????? }
            // n = 6, score = 200
            //   8bc8                 | mov                 ecx, eax
            //   e8????????           |                     
            //   3935????????         |                     
            //   7412                 | je                  0x14
            //   83ec0c               | sub                 esp, 0xc
            //   ba????????           |                     

        $sequence_34 = { 85c0 7510 8d4864 ff15???????? ffc3 83fb0a 7cd5 }
            // n = 7, score = 200
            //   85c0                 | test                eax, eax
            //   7510                 | jne                 0x12
            //   8d4864               | lea                 ecx, [eax + 0x64]
            //   ff15????????         |                     
            //   ffc3                 | inc                 ebx
            //   83fb0a               | cmp                 ebx, 0xa
            //   7cd5                 | jl                  0xffffffd7

        $sequence_35 = { 8bf9 6a40 6a00 8bf7 57 81e60000ffff e8???????? }
            // n = 7, score = 200
            //   8bf9                 | mov                 edi, ecx
            //   6a40                 | push                0x40
            //   6a00                 | push                0
            //   8bf7                 | mov                 esi, edi
            //   57                   | push                edi
            //   81e60000ffff         | and                 esi, 0xffff0000
            //   e8????????           |                     

        $sequence_36 = { 0f114f20 0f104840 0f114730 0f104050 0f114f40 0f104860 0f114750 }
            // n = 7, score = 200
            //   0f114f20             | movups              xmmword ptr [edi + 0x20], xmm1
            //   0f104840             | movups              xmm1, xmmword ptr [eax + 0x40]
            //   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

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