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
Yara Rules
[TLP:WHITE] win_gootkit_auto (20230808 | Detects win.gootkit.)
rule win_gootkit_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2023-12-06"
        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 = "20231130"
        malpedia_hash = "fc8a0e9f343f6d6ded9e7df1a64dac0cc68d7351"
        malpedia_version = "20230808"
        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 = { 6a04 6800300000 57 6a00 897df8 }
            // n = 5, score = 1700
            //   6a04                 | push                4
            //   6800300000           | push                0x3000
            //   57                   | push                edi
            //   6a00                 | push                0
            //   897df8               | mov                 dword ptr [ebp - 8], edi

        $sequence_1 = { 50 ff75fc ffd7 33c9 c745f804000000 41 33f6 }
            // n = 7, score = 1700
            //   50                   | push                eax
            //   ff75fc               | push                dword ptr [ebp - 4]
            //   ffd7                 | call                edi
            //   33c9                 | xor                 ecx, ecx
            //   c745f804000000       | mov                 dword ptr [ebp - 8], 4
            //   41                   | inc                 ecx
            //   33f6                 | xor                 esi, esi

        $sequence_2 = { 8945f0 85c0 7435 8b01 ff75f4 03c3 }
            // n = 6, score = 1700
            //   8945f0               | mov                 dword ptr [ebp - 0x10], eax
            //   85c0                 | test                eax, eax
            //   7435                 | je                  0x37
            //   8b01                 | mov                 eax, dword ptr [ecx]
            //   ff75f4               | push                dword ptr [ebp - 0xc]
            //   03c3                 | add                 eax, ebx

        $sequence_3 = { e8???????? 8bd8 85db 0f45f3 33c0 50 }
            // n = 6, score = 1700
            //   e8????????           |                     
            //   8bd8                 | mov                 ebx, eax
            //   85db                 | test                ebx, ebx
            //   0f45f3               | cmovne              esi, ebx
            //   33c0                 | xor                 eax, eax
            //   50                   | push                eax

        $sequence_4 = { 83feff 7509 57 ff15???????? 8bf0 53 }
            // n = 6, score = 1700
            //   83feff               | cmp                 esi, -1
            //   7509                 | jne                 0xb
            //   57                   | push                edi
            //   ff15????????         |                     
            //   8bf0                 | mov                 esi, eax
            //   53                   | push                ebx

        $sequence_5 = { 895de8 2bf1 75d5 8b5df0 8b5508 51 }
            // n = 6, score = 1700
            //   895de8               | mov                 dword ptr [ebp - 0x18], ebx
            //   2bf1                 | sub                 esi, ecx
            //   75d5                 | jne                 0xffffffd7
            //   8b5df0               | mov                 ebx, dword ptr [ebp - 0x10]
            //   8b5508               | mov                 edx, dword ptr [ebp + 8]
            //   51                   | push                ecx

        $sequence_6 = { 6a00 53 ff15???????? eb06 8b7dd8 }
            // n = 5, score = 1700
            //   6a00                 | push                0
            //   53                   | push                ebx
            //   ff15????????         |                     
            //   eb06                 | jmp                 8
            //   8b7dd8               | mov                 edi, dword ptr [ebp - 0x28]

        $sequence_7 = { 8bd6 e8???????? 8b7dfc 59 59 85c0 }
            // n = 6, score = 1700
            //   8bd6                 | mov                 edx, esi
            //   e8????????           |                     
            //   8b7dfc               | mov                 edi, dword ptr [ebp - 4]
            //   59                   | pop                 ecx
            //   59                   | pop                 ecx
            //   85c0                 | test                eax, eax

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

        $sequence_13 = { c705????????01000000 c705????????02000000 8be5 5d c3 }
            // n = 5, score = 900
            //   c705????????01000000     |     
            //   c705????????02000000     |     
            //   8be5                 | mov                 esp, ebp
            //   5d                   | pop                 ebp
            //   c3                   | ret                 

        $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 ff15???????? }
            // n = 6, score = 800
            //   e8????????           |                     
            //   6a0c                 | push                0xc
            //   6a08                 | push                8
            //   ff15????????         |                     
            //   50                   | push                eax
            //   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 }
            // n = 5, score = 600
            //   e8????????           |                     
            //   8d45fc               | lea                 eax, [ebp - 4]
            //   50                   | push                eax
            //   6a01                 | push                1
            //   6a01                 | push                1

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

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

        $sequence_21 = { 68???????? 51 51 ff15???????? 50 }
            // n = 5, score = 300
            //   68????????           |                     
            //   51                   | push                ecx
            //   51                   | push                ecx
            //   ff15????????         |                     
            //   50                   | push                eax

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

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

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

        $sequence_25 = { 6a40 6a00 8bf7 57 81e60000ffff e8???????? 8b4608 }
            // n = 7, score = 200
            //   6a40                 | push                0x40
            //   6a00                 | push                0
            //   8bf7                 | mov                 esi, edi
            //   57                   | push                edi
            //   81e60000ffff         | and                 esi, 0xffff0000
            //   e8????????           |                     
            //   8b4608               | mov                 eax, dword ptr [esi + 8]

        $sequence_26 = { ff15???????? a3???????? 391d???????? 7428 85c0 }
            // n = 5, score = 200
            //   ff15????????         |                     
            //   a3????????           |                     
            //   391d????????         |                     
            //   7428                 | je                  0x2a
            //   85c0                 | test                eax, eax

        $sequence_27 = { 8d4204 3bc8 7344 2bca 898de4fdffff 034e0c }
            // n = 6, score = 200
            //   8d4204               | lea                 eax, [edx + 4]
            //   3bc8                 | cmp                 ecx, eax
            //   7344                 | jae                 0x46
            //   2bca                 | sub                 ecx, edx
            //   898de4fdffff         | mov                 dword ptr [ebp - 0x21c], ecx
            //   034e0c               | add                 ecx, dword ptr [esi + 0xc]

        $sequence_28 = { ff15???????? 85c0 7510 8d4864 }
            // n = 4, score = 200
            //   ff15????????         |                     
            //   85c0                 | test                eax, eax
            //   7510                 | jne                 0x12
            //   8d4864               | lea                 ecx, [eax + 0x64]

        $sequence_29 = { 0f114710 0f104030 0f114f20 0f104840 0f114730 0f104050 }
            // n = 6, 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
            //   0f104050             | movups              xmm0, xmmword ptr [eax + 0x50]

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

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

        $sequence_32 = { 0f104010 0f110f 0f104820 0f114710 }
            // n = 4, score = 200
            //   0f104010             | movups              xmm0, xmmword ptr [eax + 0x10]
            //   0f110f               | movups              xmmword ptr [edi], xmm1
            //   0f104820             | movups              xmm1, xmmword ptr [eax + 0x20]
            //   0f114710             | movups              xmmword ptr [edi + 0x10], xmm0

        $sequence_33 = { 0f114f50 0f104060 0f114760 8b4070 894770 be01000000 }
            // n = 6, score = 200
            //   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]
            //   894770               | mov                 dword ptr [edi + 0x70], eax
            //   be01000000           | mov                 esi, 1

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

        $sequence_35 = { 0f104050 0f114f40 0f104860 0f114750 0f114f60 b801000000 }
            // n = 6, score = 200
            //   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
            //   0f114f60             | movups              xmmword ptr [edi + 0x60], xmm1
            //   b801000000           | mov                 eax, 1

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