SYMBOLCOMMON_NAMEaka. SYNONYMS
win.darkvision_rat (Back to overview)

DarkVision RAT

VTCollection    

DarkVision_RAT is a highly customizable Remote Access Trojan (RAT) first identified in 2020. Written in C/C++ and assembler, it has gained popularity due to its low cost and broad range of functionalities, including keylogging, screenshot capture, file manipulation, process injection, remote code execution, and password theft. In July 2024, a malware campaign was observed distributing DarkVision_RAT using PureCrypter as a loader. This RAT communicates with its command and control server through a custom network protocol via sockets. It also employs evasion and privilege escalation techniques such as DLL hijacking, self-elevation, and process injection. DarkVision_RAT supports a wide array of commands and plugins, enabling additional capabilities like keylogging, remote access, password theft, audio recording, and screenshot capture.

References
2024-10-10ZscalerMuhammed Irfan V A
Technical Analysis of DarkVision RAT
DarkVision RAT
Yara Rules
[TLP:WHITE] win_darkvision_rat_auto (20260504 | Detects win.darkvision_rat.)
rule win_darkvision_rat_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-05-04"
        version = "1"
        description = "Detects win.darkvision_rat."
        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.darkvision_rat"
        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 = { 89842408040000 83bc240804000004 7d1f 4863842408040000 488b94c4e8030000 488b8c24e0030000 e8???????? }
            // n = 7, score = 100
            //   89842408040000       | mov                 word ptr [ecx + 2], ax
            //   83bc240804000004     | dec                 eax
            //   7d1f                 | mov                 eax, dword ptr [esp + 0x40]
            //   4863842408040000     | mov                 ecx, dword ptr [esp + 0x4c]
            //   488b94c4e8030000     | mov                 dword ptr [eax + 4], ecx
            //   488b8c24e0030000     | dec                 eax
            //   e8????????           |                     

        $sequence_1 = { 837c242000 7426 448b442420 33d2 b901001000 ff15???????? 4889442428 }
            // n = 7, score = 100
            //   837c242000           | dec                 eax
            //   7426                 | cmp                 dword ptr [eax], 0
            //   448b442420           | je                  0x1558
            //   33d2                 | dec                 eax
            //   b901001000           | mov                 eax, dword ptr [esp + 0x50]
            //   ff15????????         |                     
            //   4889442428           | dec                 eax

        $sequence_2 = { 48638c2420010000 486bc91c 48837c081800 7464 4863842408010000 4869c0040b0000 }
            // n = 6, score = 100
            //   48638c2420010000     | xor                 edx, edx
            //   486bc91c             | cmp                 eax, 1
            //   48837c081800         | je                  0x113a
            //   7464                 | dec                 eax
            //   4863842408010000     | mov                 dword ptr [esp + 0xb8], 0
            //   4869c0040b0000       | dec                 esp

        $sequence_3 = { 4889442460 c784249801000000000000 eb10 8b842498010000 ffc0 89842498010000 }
            // n = 6, score = 100
            //   4889442460           | mov                 dword ptr [esp + 0x80], eax
            //   c784249801000000000000     | mov    eax, dword ptr [esp + 0x80]
            //   eb10                 | inc                 ecx
            //   8b842498010000       | mov                 ecx, 0x40
            //   ffc0                 | inc                 ecx
            //   89842498010000       | mov                 eax, 0x3000

        $sequence_4 = { 488d840108010000 4889842498020000 c78424f402000000000000 eb10 8b8424f4020000 ffc0 898424f4020000 }
            // n = 7, score = 100
            //   488d840108010000     | mov                 dword ptr [esp + 0x110], eax
            //   4889842498020000     | mov                 eax, dword ptr [esp + 0x1a4]
            //   c78424f402000000000000     | bts    eax, 7
            //   eb10                 | mov                 dword ptr [esp + 0x1a4], eax
            //   8b8424f4020000       | jmp                 0xbeb
            //   ffc0                 | mov                 eax, dword ptr [esp + 0x1a4]
            //   898424f4020000       | or                  eax, 0x10

        $sequence_5 = { 8b8c24ac000000 03c8 8bc1 898424ac000000 48638424a8000000 488b8c2430010000 4803c8 }
            // n = 7, score = 100
            //   8b8c24ac000000       | dec                 esp
            //   03c8                 | lea                 eax, [0x2685]
            //   8bc1                 | xor                 edx, edx
            //   898424ac000000       | xor                 ecx, ecx
            //   48638424a8000000     | je                  0x89d
            //   488b8c2430010000     | dec                 eax
            //   4803c8               | lea                 edx, [esp + 0x318]

        $sequence_6 = { 488d9424f0000000 48c7c101000080 ff15???????? bafeff0000 b940000000 ff15???????? 48898424e8000000 }
            // n = 7, score = 100
            //   488d9424f0000000     | cmp                 eax, 4
            //   48c7c101000080       | jne                 0x23a0
            //   ff15????????         |                     
            //   bafeff0000           | mov                 eax, dword ptr [esp + 0xe4]
            //   b940000000           | inc                 eax
            //   ff15????????         |                     
            //   48898424e8000000     | mov                 eax, eax

        $sequence_7 = { 48c784246002000000000000 b9e8030000 ff15???????? 833d????????01 0f85ba000000 4883bc247802000000 0f85ab000000 }
            // n = 7, score = 100
            //   48c784246002000000000000     | dec    eax
            //   b9e8030000           | mov                 ecx, dword ptr [esp + 0xa8]
            //   ff15????????         |                     
            //   833d????????01       |                     
            //   0f85ba000000         | mov                 eax, 1
            //   4883bc247802000000     | dec    eax
            //   0f85ab000000         | lea                 eax, [0x2125f]

        $sequence_8 = { 8b440124 8984249c010000 c78424a401000000000000 8b84249c010000 2500000004 85c0 7412 }
            // n = 7, score = 100
            //   8b440124             | test                eax, eax
            //   8984249c010000       | jle                 0x809
            //   c78424a401000000000000     | dec    eax
            //   8b84249c010000       | mov                 dword ptr [esp + 0x40], eax
            //   2500000004           | dec                 eax
            //   85c0                 | cmp                 dword ptr [esp + 0x40], 0
            //   7412                 | test                eax, eax

        $sequence_9 = { 4889442460 488b442460 4863403c 488b4c2460 4803c8 488bc1 4889442420 }
            // n = 7, score = 100
            //   4889442460           | mov                 dword ptr [esp + 0x298], eax
            //   488b442460           | dec                 eax
            //   4863403c             | cmp                 dword ptr [esp + 0x298], 0
            //   488b4c2460           | je                  0x1b1f
            //   4803c8               | dec                 eax
            //   488bc1               | mov                 dword ptr [esp + 0x2a0], 0xffffffff
            //   4889442420           | dec                 eax

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