SYMBOLCOMMON_NAMEaka. SYNONYMS
win.komprogo (Back to overview)

KOMPROGO

aka: Splinter RAT

Actor(s): APT32

VTCollection    

KOMPROGO is a signature backdoor used by APT32 that is capable of process, file, and registry management, Creating a reverse shell, running WMI queries, retrieving information about the infected system.

References
2018-11-02 ⋅ Cylance ⋅ Cylance
The SpyRATs of OceanLotus
KOMPROGO PHOREAL
2017-05-14 ⋅ FireEye ⋅ Nick Carr
Cyber Espionage is Alive and Well: APT32 and the Threat to Global Corporations
OceanLotus Cuegoe KOMPROGO SOUNDBITE APT32
2017-01-01 ⋅ FireEye ⋅ Bart Inglot, Byrne Ghavalas
ATTACKER ANTICS: Illustrations of Ingenuity
KOMPROGO SOUNDBITE
2015-12-08 ⋅ Symantec ⋅ Symantec
Backdoor.Komprogo
KOMPROGO
Yara Rules
[TLP:WHITE] win_komprogo_auto (20260917 | Detects win.komprogo.)
rule win_komprogo_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-09-17"
        version = "1"
        description = "Detects win.komprogo."
        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.komprogo"
        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 = { 8d8684710300 89868ab90200 8d9664960300 89963f9e0000 8d86e05e0000 8986db5e0000 8d86182c0400 }
            // n = 7, score = 100
            //   8d8684710300         | lea                 eax, [esi + 0x37184]
            //   89868ab90200         | mov                 dword ptr [esi + 0x2b98a], eax
            //   8d9664960300         | lea                 edx, [esi + 0x39664]
            //   89963f9e0000         | mov                 dword ptr [esi + 0x9e3f], edx
            //   8d86e05e0000         | lea                 eax, [esi + 0x5ee0]
            //   8986db5e0000         | mov                 dword ptr [esi + 0x5edb], eax
            //   8d86182c0400         | lea                 eax, [esi + 0x42c18]

        $sequence_1 = { 8d8661620300 8986dcb20300 8d8668700300 89865f5a0000 8d863c710300 8986150f0100 }
            // n = 6, score = 100
            //   8d8661620300         | lea                 eax, [esi + 0x36261]
            //   8986dcb20300         | mov                 dword ptr [esi + 0x3b2dc], eax
            //   8d8668700300         | lea                 eax, [esi + 0x37068]
            //   89865f5a0000         | mov                 dword ptr [esi + 0x5a5f], eax
            //   8d863c710300         | lea                 eax, [esi + 0x3713c]
            //   8986150f0100         | mov                 dword ptr [esi + 0x10f15], eax

        $sequence_2 = { 8d861ce00300 8986f4a50300 8d8e042c0400 898e6e6f0300 8d96882d0400 8996438a0200 8d8e187a0300 }
            // n = 7, score = 100
            //   8d861ce00300         | lea                 eax, [esi + 0x3e01c]
            //   8986f4a50300         | mov                 dword ptr [esi + 0x3a5f4], eax
            //   8d8e042c0400         | lea                 ecx, [esi + 0x42c04]
            //   898e6e6f0300         | mov                 dword ptr [esi + 0x36f6e], ecx
            //   8d96882d0400         | lea                 edx, [esi + 0x42d88]
            //   8996438a0200         | mov                 dword ptr [esi + 0x28a43], edx
            //   8d8e187a0300         | lea                 ecx, [esi + 0x37a18]

        $sequence_3 = { 0500010000 50 e8???????? 8bd8 33c0 83c404 85db }
            // n = 7, score = 100
            //   0500010000           | add                 eax, 0x100
            //   50                   | push                eax
            //   e8????????           |                     
            //   8bd8                 | mov                 ebx, eax
            //   33c0                 | xor                 eax, eax
            //   83c404               | add                 esp, 4
            //   85db                 | test                ebx, ebx

        $sequence_4 = { 898efbcc0200 8d8ecc710300 898e996d0100 8d8e58710300 898e0fcd0200 89be38cd0200 8986494d0000 }
            // n = 7, score = 100
            //   898efbcc0200         | mov                 dword ptr [esi + 0x2ccfb], ecx
            //   8d8ecc710300         | lea                 ecx, [esi + 0x371cc]
            //   898e996d0100         | mov                 dword ptr [esi + 0x16d99], ecx
            //   8d8e58710300         | lea                 ecx, [esi + 0x37158]
            //   898e0fcd0200         | mov                 dword ptr [esi + 0x2cd0f], ecx
            //   89be38cd0200         | mov                 dword ptr [esi + 0x2cd38], edi
            //   8986494d0000         | mov                 dword ptr [esi + 0x4d49], eax

        $sequence_5 = { 8d8698840300 8986b8e20200 8d96f0760300 899688e80300 8d8698a90300 8986e8470300 8d869c700300 }
            // n = 7, score = 100
            //   8d8698840300         | lea                 eax, [esi + 0x38498]
            //   8986b8e20200         | mov                 dword ptr [esi + 0x2e2b8], eax
            //   8d96f0760300         | lea                 edx, [esi + 0x376f0]
            //   899688e80300         | mov                 dword ptr [esi + 0x3e888], edx
            //   8d8698a90300         | lea                 eax, [esi + 0x3a998]
            //   8986e8470300         | mov                 dword ptr [esi + 0x347e8], eax
            //   8d869c700300         | lea                 eax, [esi + 0x3709c]

        $sequence_6 = { 898e47bd0200 8d8e20e20300 898e4f7e0200 8d9694a30300 899674750300 8d8ea82f0400 898e897e0200 }
            // n = 7, score = 100
            //   898e47bd0200         | mov                 dword ptr [esi + 0x2bd47], ecx
            //   8d8e20e20300         | lea                 ecx, [esi + 0x3e220]
            //   898e4f7e0200         | mov                 dword ptr [esi + 0x27e4f], ecx
            //   8d9694a30300         | lea                 edx, [esi + 0x3a394]
            //   899674750300         | mov                 dword ptr [esi + 0x37574], edx
            //   8d8ea82f0400         | lea                 ecx, [esi + 0x42fa8]
            //   898e897e0200         | mov                 dword ptr [esi + 0x27e89], ecx

        $sequence_7 = { 6804010000 8d85f4fdffff 50 c785e8fbffff00000000 ff15???????? ff15???????? }
            // n = 6, score = 100
            //   6804010000           | push                0x104
            //   8d85f4fdffff         | lea                 eax, [ebp - 0x20c]
            //   50                   | push                eax
            //   c785e8fbffff00000000     | mov    dword ptr [ebp - 0x418], 0
            //   ff15????????         |                     
            //   ff15????????         |                     

        $sequence_8 = { 8d8e0c710300 8986a5530200 51 8b4dfc 8d867ac90300 e8???????? 83c404 }
            // n = 7, score = 100
            //   8d8e0c710300         | lea                 ecx, [esi + 0x3710c]
            //   8986a5530200         | mov                 dword ptr [esi + 0x253a5], eax
            //   51                   | push                ecx
            //   8b4dfc               | mov                 ecx, dword ptr [ebp - 4]
            //   8d867ac90300         | lea                 eax, [esi + 0x3c97a]
            //   e8????????           |                     
            //   83c404               | add                 esp, 4

        $sequence_9 = { 8996b7800200 8d8650780200 8986b4a60300 8d8e64780200 898eb8a60300 8d8e44710300 8d96467e0200 }
            // n = 7, score = 100
            //   8996b7800200         | mov                 dword ptr [esi + 0x280b7], edx
            //   8d8650780200         | lea                 eax, [esi + 0x27850]
            //   8986b4a60300         | mov                 dword ptr [esi + 0x3a6b4], eax
            //   8d8e64780200         | lea                 ecx, [esi + 0x27864]
            //   898eb8a60300         | mov                 dword ptr [esi + 0x3a6b8], ecx
            //   8d8e44710300         | lea                 ecx, [esi + 0x37144]
            //   8d96467e0200         | lea                 edx, [esi + 0x27e46]

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