SYMBOLCOMMON_NAMEaka. SYNONYMS
win.crosswalk (Back to overview)

CROSSWALK

aka: ProxIP, Motnug, TOMMYGUN

Actor(s): APT41

VTCollection    

According to FireEye, CROSSWALK is a skeletal, modular backdoor capable of system survey and adding modules in response to C&C replies.

References
2024-09-24Virus BulletinAragorn Tseng, Chi-Yu You, Cristiana Brafman Kittner, Steve Su
Down the GRAYRABBIT HOle - Exposing UNC3569 and its Modus Operandi
KEYPLUG Cobalt Strike CROSSWALK GRAYRABBIT HelloBot HUI Loader PlugX SiestaGraph
2022-05-12TEAMT5Leon Chang, Silvia Yeh
The Next Gen PlugX/ShadowPad? A Dive into the Emerging China-Nexus Modular Trojan, Pangolin8RAT (slides)
KEYPLUG Cobalt Strike CROSSWALK FunnySwitch PlugX ShadowPad Winnti SLIME29 TianWu
2021-09-09SymantecThreat Hunter Team
Grayfly: Chinese Threat Actor Uses Newly-discovered Sidewalk Malware
CROSSWALK MimiKatz SideWalk
2021-08-24ESET ResearchMathieu Tartare, Thibaut Passilly
The SideWalk may be as dangerous as the CROSSWALK
Cobalt Strike CROSSWALK SideWalk SparklingGoblin
2021-08-24Trend MicroHara Hiroaki, Ted Lee
Earth Baku Returns
Cobalt Strike CROSSWALK DUSTPAN SideWalk
2021-01-15The Hacker NewsRavie Lakshmaman
Researchers Disclose Undocumented Chinese Malware Used in Recent Attacks
CROSSWALK
2021-01-14PTSecurityPT ESC Threat Intelligence
Higaisa or Winnti? APT41 backdoors, old and new
Cobalt Strike CROSSWALK FunnySwitch PlugX ShadowPad
2020-11-13Youtube (The Standoff)Alexey Zakharov, Positive Technologies
FF_202_Eng - From old Higaisa samples to new Winnti backdoors: The story of one research
CROSSWALK Unidentified 076 (Higaisa LNK to Shellcode)
2020-11-03Kaspersky LabsGReAT
APT trends report Q3 2020
WellMail EVILNUM Janicab Poet RAT AsyncRAT Ave Maria Cobalt Strike Crimson RAT CROSSWALK Dtrack LODEINFO MoriAgent Okrum PlugX POISONPLUG Rover ShadowPad SoreFang Winnti
2020-09-18SymantecThreat Hunter Team
APT41: Indictments Put Chinese Espionage Group in the Spotlight
CROSSWALK PlugX POISONPLUG ShadowPad Winnti
2020-07-29ESET Researchwelivesecurity
THREAT REPORT Q2 2020
DEFENSOR ID HiddenAd Bundlore Pirrit Agent.BTZ Cerber ClipBanker CROSSWALK Cryptowall CTB Locker DanaBot Dharma Formbook Gandcrab Grandoreiro Houdini ISFB LockBit Locky Mailto Maze Microcin Nemty NjRAT Phobos PlugX Pony REvil Socelars STOP Tinba TrickBot WannaCryptor
2020-07-21YouTube ( OPCDE with Matt Suiche)Mohamad Mokbel
vOPCDE #9 - A Journey into Malware HTTP Communication Channels Spectacles (Mohamad Mokbel)
Alureon Aytoke Cobra Carbon System CROSSWALK danbot ProtonBot Silence
2019-09-30vmwareScott Knight
CB Threat Analysis Unit: Technical Analysis of “Crosswalk”
CROSSWALK
2019-08-09FireEyeFireEye
Double Dragon APT41, a dual espionage and cyber crime operation
CLASSFON crackshot CROSSWALK GEARSHIFT HIGHNOON HIGHNOON.BIN JUMPALL POISONPLUG Winnti
2018-12-24Twitter (@MrDanPerez)Dan Perez
Tweet on hashes for CROSSWALK
CROSSWALK
Yara Rules
[TLP:WHITE] win_crosswalk_auto (20260504 | Detects win.crosswalk.)
rule win_crosswalk_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-05-04"
        version = "1"
        description = "Detects win.crosswalk."
        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.crosswalk"
        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 = { 4c8bc6 33d2 410fbe00 49ffc0 d3ca 03d0 4183ef01 }
            // n = 7, score = 1300
            //   4c8bc6               | dec                 esp
            //   33d2                 | mov                 eax, esi
            //   410fbe00             | xor                 edx, edx
            //   49ffc0               | inc                 ecx
            //   d3ca                 | movsx               eax, byte ptr [eax]
            //   03d0                 | dec                 ecx
            //   4183ef01             | inc                 eax

        $sequence_1 = { 33f6 8d6e20 8bcd e8???????? }
            // n = 4, score = 1300
            //   33f6                 | movsx               eax, byte ptr [eax]
            //   8d6e20               | dec                 ecx
            //   8bcd                 | inc                 eax
            //   e8????????           |                     

        $sequence_2 = { ff15???????? 448bf0 4533c9 4533c0 }
            // n = 4, score = 1300
            //   ff15????????         |                     
            //   448bf0               | inc                 ecx
            //   4533c9               | movsx               eax, byte ptr [eax]
            //   4533c0               | dec                 ecx

        $sequence_3 = { 458d7ee0 418bd7 ff15???????? 4821742420 }
            // n = 4, score = 1300
            //   458d7ee0             | dec                 esp
            //   418bd7               | mov                 eax, esi
            //   ff15????????         |                     
            //   4821742420           | xor                 edx, edx

        $sequence_4 = { 4883ec28 4885c9 7402 ffd1 }
            // n = 4, score = 1300
            //   4883ec28             | sar                 edx, 0xb
            //   4885c9               | mov                 eax, edx
            //   7402                 | shr                 eax, 0x1f
            //   ffd1                 | add                 edx, eax

        $sequence_5 = { 8bc2 c1e81f 03d0 69c2890e0000 }
            // n = 4, score = 1300
            //   8bc2                 | mov                 eax, edx
            //   c1e81f               | shr                 eax, 0x1f
            //   03d0                 | add                 edx, eax
            //   69c2890e0000         | imul                eax, edx, 0xe89

        $sequence_6 = { 458bc6 33d2 488bc8 e8???????? 4533c9 4533c0 33d2 }
            // n = 7, score = 1300
            //   458bc6               | inc                 ecx
            //   33d2                 | sub                 edi, 1
            //   488bc8               | jne                 0xfffffff7
            //   e8????????           |                     
            //   4533c9               | sar                 edx, 0xb
            //   4533c0               | mov                 eax, edx
            //   33d2                 | shr                 eax, 0x1f

        $sequence_7 = { 418bc0 f7e9 03d1 c1fa0b 8bc2 }
            // n = 5, score = 1300
            //   418bc0               | xor                 eax, eax
            //   f7e9                 | xor                 edx, edx
            //   03d1                 | add                 edx, ecx
            //   c1fa0b               | sar                 edx, 0xb
            //   8bc2                 | mov                 eax, edx

        $sequence_8 = { 83e13f 6bc930 53 56 8b0485808e4100 33db 8b7508 }
            // n = 7, score = 200
            //   83e13f               | and                 ecx, 0x3f
            //   6bc930               | imul                ecx, ecx, 0x30
            //   53                   | push                ebx
            //   56                   | push                esi
            //   8b0485808e4100       | mov                 eax, dword ptr [eax*4 + 0x418e80]
            //   33db                 | xor                 ebx, ebx
            //   8b7508               | mov                 esi, dword ptr [ebp + 8]

        $sequence_9 = { 660fd60f 8d7f08 8b048d34024100 ffe0 f7c703000000 7413 8a06 }
            // n = 7, score = 200
            //   660fd60f             | movq                qword ptr [edi], xmm1
            //   8d7f08               | lea                 edi, [edi + 8]
            //   8b048d34024100       | mov                 eax, dword ptr [ecx*4 + 0x410234]
            //   ffe0                 | jmp                 eax
            //   f7c703000000         | test                edi, 3
            //   7413                 | je                  0x15
            //   8a06                 | mov                 al, byte ptr [esi]

        $sequence_10 = { 898850030000 8b4508 59 c74048f0844100 }
            // n = 4, score = 200
            //   898850030000         | mov                 dword ptr [eax + 0x350], ecx
            //   8b4508               | mov                 eax, dword ptr [ebp + 8]
            //   59                   | pop                 ecx
            //   c74048f0844100       | mov                 dword ptr [eax + 0x48], 0x4184f0

        $sequence_11 = { 33c9 8b450c 0fb684c8981a4100 c1e804 }
            // n = 4, score = 200
            //   33c9                 | xor                 ecx, ecx
            //   8b450c               | mov                 eax, dword ptr [ebp + 0xc]
            //   0fb684c8981a4100     | movzx               eax, byte ptr [eax + ecx*8 + 0x411a98]
            //   c1e804               | shr                 eax, 4

        $sequence_12 = { 75be ddd8 db2d???????? b802000000 833d????????00 0f85a0110000 8d0dc0584100 }
            // n = 7, score = 200
            //   75be                 | jne                 0xffffffc0
            //   ddd8                 | fstp                st(0)
            //   db2d????????         |                     
            //   b802000000           | mov                 eax, 2
            //   833d????????00       |                     
            //   0f85a0110000         | jne                 0x11a6
            //   8d0dc0584100         | lea                 ecx, [0x4158c0]

        $sequence_13 = { 6bd030 895de4 8b049d808e4100 8945d4 8955e8 }
            // n = 5, score = 200
            //   6bd030               | imul                edx, eax, 0x30
            //   895de4               | mov                 dword ptr [ebp - 0x1c], ebx
            //   8b049d808e4100       | mov                 eax, dword ptr [ebx*4 + 0x418e80]
            //   8945d4               | mov                 dword ptr [ebp - 0x2c], eax
            //   8955e8               | mov                 dword ptr [ebp - 0x18], edx

        $sequence_14 = { 57 8bf9 0f1f440000 6a00 6a00 57 }
            // n = 6, score = 200
            //   57                   | push                edi
            //   8bf9                 | mov                 edi, ecx
            //   0f1f440000           | nop                 dword ptr [eax + eax]
            //   6a00                 | push                0
            //   6a00                 | push                0
            //   57                   | push                edi

        $sequence_15 = { 6a00 50 6a0c 53 56 ff15???????? }
            // n = 6, score = 200
            //   6a00                 | push                0
            //   50                   | push                eax
            //   6a0c                 | push                0xc
            //   53                   | push                ebx
            //   56                   | push                esi
            //   ff15????????         |                     

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