SYMBOLCOMMON_NAMEaka. SYNONYMS
win.birdcall (Back to overview)

BirdCall

Actor(s): APT37

VTCollection    

According to ESET Research, BirdCall is a Windows backdoor written in C++ that provides a wide range of spying capabilities, including taking screenshots, logging keystrokes and clipboard content, stealing credentials and files, and executing shell commands. It is typically deployed in a multistage loading chain with a downloader that fetches and executes shellcode, at times loaded by a RokRAT payload, and then replaces a trojanized library with a clean version to hinder analysis. For C2, BirdCall uses legitimate cloud storage services or compromised websites to enable bidirectional communication and data exfiltration.

References
2026-05-28 ⋅ ESET Research ⋅ ESET Research
ESET APT Activity Report Q4 2025–Q1 2026
WAVESHAPER BirdCall BLINDINGCAN RokRAT Rook Tiger RAT
2026-05-05 ⋅ ESET Research ⋅ Filip Jurčacko
A rigged game: ScarCruft compromises gaming platform in a supply-chain attack
BirdCall
Yara Rules
[TLP:WHITE] win_birdcall_auto (20260917 | Detects win.birdcall.)
rule win_birdcall_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-09-17"
        version = "1"
        description = "Detects win.birdcall."
        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.birdcall"
        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 = { c645d800 488d4d68 e8???????? 488b4d78 4885c9 742c 488d59f8 }
            // n = 7, score = 100
            //   c645d800             | cmp                 eax, 0x10
            //   488d4d68             | jb                  0x470
            //   e8????????           |                     
            //   488b4d78             | dec                 eax
            //   4885c9               | mov                 eax, dword ptr [ebx]
            //   742c                 | mov                 byte ptr [eax + edx], 0x3d
            //   488d59f8             | mov                 byte ptr [edi + ebx], 0

        $sequence_1 = { e9???????? c6454801 8b5d48 0fbaf308 895d48 0f57c0 f30f7f4550 }
            // n = 7, score = 100
            //   e9????????           |                     
            //   c6454801             | je                  0xa7
            //   8b5d48               | mov                 dword ptr [esp + 8], ecx
            //   0fbaf308             | push                ebp
            //   895d48               | push                ebx
            //   0f57c0               | push                esi
            //   f30f7f4550           | push                edi

        $sequence_2 = { ff9380300000 48898398300000 4885c0 0f852c010000 488bd7 498bcc ff9380300000 }
            // n = 7, score = 100
            //   ff9380300000         | test                eax, eax
            //   48898398300000       | jne                 0x176b
            //   4885c0               | dec                 eax
            //   0f852c010000         | mov                 ecx, dword ptr [esp + 0x40]
            //   488bd7               | dec                 eax
            //   498bcc               | mov                 edx, edi
            //   ff9380300000         | call                dword ptr [ebx + 0x3080]

        $sequence_3 = { ff9380300000 48898358350000 4885c0 0f85d3000000 488b4c2420 488bd7 ff9380300000 }
            // n = 7, score = 100
            //   ff9380300000         | dec                 eax
            //   48898358350000       | mov                 edx, edi
            //   4885c0               | call                dword ptr [ebx + 0x3080]
            //   0f85d3000000         | call                dword ptr [ebx + 0x3080]
            //   488b4c2420           | dec                 eax
            //   488bd7               | mov                 dword ptr [ebx + 0x3400], eax
            //   ff9380300000         | dec                 eax

        $sequence_4 = { ff90b8310000 488b1d???????? be10000000 483b1d???????? c785700a000001000000 448d6670 0f84a3000000 }
            // n = 7, score = 100
            //   ff90b8310000         | inc                 dword ptr [ebx + 0x74]
            //   488b1d????????       |                     
            //   be10000000           | mov                 dword ptr [ebx + 0x70], ebp
            //   483b1d????????       |                     
            //   c785700a000001000000     | inc    esp
            //   448d6670             | mov                 eax, dword ptr [edi]
            //   0f84a3000000         | dec                 eax

        $sequence_5 = { ff9380300000 488983f0300000 4885c0 7513 488bd7 488bce ff9380300000 }
            // n = 7, score = 100
            //   ff9380300000         | call                dword ptr [ebx + 0x3080]
            //   488983f0300000       | dec                 eax
            //   4885c0               | mov                 dword ptr [ebx + 0x3260], eax
            //   7513                 | dec                 eax
            //   488bd7               | cmp                 dword ptr [ebx + 0x3260], 0
            //   488bce               | jne                 0x402
            //   ff9380300000         | dec                 eax

        $sequence_6 = { ffcb 4883c004 85db 7fd5 488b742438 488b4c2430 41ffc4 }
            // n = 7, score = 100
            //   ffcb                 | dec                 eax
            //   4883c004             | mov                 dword ptr [ebx + 0x3390], eax
            //   85db                 | dec                 eax
            //   7fd5                 | cmp                 dword ptr [ebx + 0x3390], 0
            //   488b742438           | jne                 0x194c
            //   488b4c2430           | dec                 eax
            //   41ffc4               | mov                 edx, edi

        $sequence_7 = { ff9380300000 488983f8360000 4885c0 0f85f4000000 488b8c24b8000000 488bd7 ff9380300000 }
            // n = 7, score = 100
            //   ff9380300000         | test                eax, eax
            //   488983f8360000       | jne                 0x15ad
            //   4885c0               | dec                 eax
            //   0f85f4000000         | mov                 edx, edi
            //   488b8c24b8000000     | dec                 ecx
            //   488bd7               | mov                 ecx, edi
            //   ff9380300000         | call                dword ptr [ebx + 0x3080]

        $sequence_8 = { ff15???????? 85c0 7513 4d8bc6 488d15dbfe1d00 498bce ff15???????? }
            // n = 7, score = 100
            //   ff15????????         |                     
            //   85c0                 | dec                 eax
            //   7513                 | mov                 eax, dword ptr [ecx - 8]
            //   4d8bc6               | dec                 eax
            //   488d15dbfe1d00       | cmp                 eax, ecx
            //   498bce               | jae                 0x1558
            //   ff15????????         |                     

        $sequence_9 = { ff5338 48896b28 488b6c2430 8bc6 488b742438 488b7c2440 4883c420 }
            // n = 7, score = 100
            //   ff5338               | mov                 ecx, esi
            //   48896b28             | inc                 ebp
            //   488b6c2430           | xor                 edx, edx
            //   8bc6                 | test                eax, eax
            //   488b742438           | je                  0x828
            //   488b7c2440           | dec                 eax
            //   4883c420             | test                ebx, ebx

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