SYMBOLCOMMON_NAMEaka. SYNONYMS
win.spaceship (Back to overview)

SPACESHIP

Actor(s): APT 30

VTCollection    

SPACESHIP searches for files with a specified set of file extensions and copies them to
a removable drive. FireEye believes that SHIPSHAPE is used to copy SPACESHIP to a removable drive,
which could be used to infect another victim computer, including an air-gapped computer. SPACESHIP is
then used to steal documents from the air-gapped system, copying them to a removable drive inserted
into the SPACESHIP-infected system

References
2015-04-15FireEyeFireEye
APT30 and the Mechanics of a Long-Running Cyber Espionage Campaign
backspace FLASHFLOOD NETEAGLE SHIPSHAPE SPACESHIP APT30
2015-04-01FireEyeFireEye
APT30 AND THE MECHANICS OF A LONG-RUNNING CYBER ESPIONAGE OPERATION
BACKBEND backspace CREAMSICLE FLASHFLOOD GEMCUTTER MILKMAID Naikon NETEAGLE ORANGEADE SHIPSHAPE SPACESHIP SslMM Sys10 WinMM xsPlus APT30
Yara Rules
[TLP:WHITE] win_spaceship_auto (20260504 | Detects win.spaceship.)
rule win_spaceship_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-05-04"
        version = "1"
        description = "Detects win.spaceship."
        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.spaceship"
        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 = { 46 eb0f 0fb6d2 f682c1da410004 7403 40 ff01 }
            // n = 7, score = 100
            //   46                   | inc                 esi
            //   eb0f                 | jmp                 0x11
            //   0fb6d2               | movzx               edx, dl
            //   f682c1da410004       | test                byte ptr [edx + 0x41dac1], 4
            //   7403                 | je                  5
            //   40                   | inc                 eax
            //   ff01                 | inc                 dword ptr [ecx]

        $sequence_1 = { 895dfc c1e604 aa 8d9e68764100 803b00 8bcb }
            // n = 6, score = 100
            //   895dfc               | mov                 dword ptr [ebp - 4], ebx
            //   c1e604               | shl                 esi, 4
            //   aa                   | stosb               byte ptr es:[edi], al
            //   8d9e68764100         | lea                 ebx, [esi + 0x417668]
            //   803b00               | cmp                 byte ptr [ebx], 0
            //   8bcb                 | mov                 ecx, ebx

        $sequence_2 = { 51 47 e8???????? 83c404 83f843 7c16 }
            // n = 6, score = 100
            //   51                   | push                ecx
            //   47                   | inc                 edi
            //   e8????????           |                     
            //   83c404               | add                 esp, 4
            //   83f843               | cmp                 eax, 0x43
            //   7c16                 | jl                  0x18

        $sequence_3 = { 85c0 7576 8bfd 83c9ff f2ae f7d1 2bf9 }
            // n = 7, score = 100
            //   85c0                 | test                eax, eax
            //   7576                 | jne                 0x78
            //   8bfd                 | mov                 edi, ebp
            //   83c9ff               | or                  ecx, 0xffffffff
            //   f2ae                 | repne scasb         al, byte ptr es:[edi]
            //   f7d1                 | not                 ecx
            //   2bf9                 | sub                 edi, ecx

        $sequence_4 = { 8d6c241c c1e902 f3a5 8bc8 }
            // n = 4, score = 100
            //   8d6c241c             | lea                 ebp, [esp + 0x1c]
            //   c1e902               | shr                 ecx, 2
            //   f3a5                 | rep movsd           dword ptr es:[edi], dword ptr [esi]
            //   8bc8                 | mov                 ecx, eax

        $sequence_5 = { 807c24602e 0f8473010000 8d7c2460 83c9ff }
            // n = 4, score = 100
            //   807c24602e           | cmp                 byte ptr [esp + 0x60], 0x2e
            //   0f8473010000         | je                  0x179
            //   8d7c2460             | lea                 edi, [esp + 0x60]
            //   83c9ff               | or                  ecx, 0xffffffff

        $sequence_6 = { 6a19 68???????? e8???????? 6a10 68???????? }
            // n = 5, score = 100
            //   6a19                 | push                0x19
            //   68????????           |                     
            //   e8????????           |                     
            //   6a10                 | push                0x10
            //   68????????           |                     

        $sequence_7 = { c7842488010000786b4100 66c784248c0100000700 668984248e010000 c7842490010000686b4100 66c78424940100000800 6689842496010000 c78424980100005c6b4100 }
            // n = 7, score = 100
            //   c7842488010000786b4100     | mov    dword ptr [esp + 0x188], 0x416b78
            //   66c784248c0100000700     | mov    word ptr [esp + 0x18c], 7
            //   668984248e010000     | mov                 word ptr [esp + 0x18e], ax
            //   c7842490010000686b4100     | mov    dword ptr [esp + 0x190], 0x416b68
            //   66c78424940100000800     | mov    word ptr [esp + 0x194], 8
            //   6689842496010000     | mov                 word ptr [esp + 0x196], ax
            //   c78424980100005c6b4100     | mov    dword ptr [esp + 0x198], 0x416b5c

        $sequence_8 = { 8d442404 57 50 68???????? c744241000010000 ff15???????? }
            // n = 6, score = 100
            //   8d442404             | lea                 eax, [esp + 4]
            //   57                   | push                edi
            //   50                   | push                eax
            //   68????????           |                     
            //   c744241000010000     | mov                 dword ptr [esp + 0x10], 0x100
            //   ff15????????         |                     

        $sequence_9 = { 8bcb 83e103 f3a4 8dbc24ec000000 83c9ff f2ae }
            // n = 6, score = 100
            //   8bcb                 | mov                 ecx, ebx
            //   83e103               | and                 ecx, 3
            //   f3a4                 | rep movsb           byte ptr es:[edi], byte ptr [esi]
            //   8dbc24ec000000       | lea                 edi, [esp + 0xec]
            //   83c9ff               | or                  ecx, 0xffffffff
            //   f2ae                 | repne scasb         al, byte ptr es:[edi]

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