SYMBOLCOMMON_NAMEaka. SYNONYMS
win.privateloader (Back to overview)

PrivateLoader

VTCollection    

According to sekoia, PrivateLoader is a modular malware whose main capability is to download and execute one or several payloads. The loader implements anti-analysis techniques, fingerprints the compromised host and reports statistics to its C2 server.

References
2024-12-30 ⋅ Intrinsec ⋅ CTI Intrinsec
CryptBot: Hunting for initial access vectors
CryptBot Lumma Stealer PrivateLoader
2024-06-13 ⋅ Github (LambdaMamba) ⋅ Lena Yu
Implementation of C2 decryption
PrivateLoader
2024-02-27 ⋅ BitSight ⋅ André Tavares
Hunting PrivateLoader: The malware behind InstallsKey PPI service
PrivateLoader RisePro
2024-01-30 ⋅ ANY.RUN ⋅ Lena (LambdaMamba)
CrackedCantil: A Malware Symphony Breakdown - PrivateLoader, Smoke, Lumma, RedLine, RisePro, Amadey, Stealc, Socks5Systemz, STOP
Amadey CrackedCantil Lumma Stealer PrivateLoader RedLine Stealer RisePro SmokeLoader Socks5Systemz Stealc STOP
2023-11-26 ⋅ Twitter (@embee_research) ⋅ Embee_research
Identifying Suspected PrivateLoader Servers with Censys
PrivateLoader
2023-11-02 ⋅ BitSight ⋅ BitSight
Unveiling Socks5Systemz: The Rise of a New Proxy Service via PrivateLoader and Amadey
Amadey PrivateLoader Socks5Systemz
2023-11-02 ⋅ BitSight ⋅ BitSight
Unveiling Socks5Systemz: The Rise of a New Proxy Service via PrivateLoader and Amadey
Amadey PrivateLoader Socks5Systemz
2023-04-18 ⋅ ANY.RUN ⋅ ANY.RUN
PrivateLoader: Analyzing the Encryption and Decryption of a Modern Loader
PrivateLoader
2022-11-30 ⋅ BitSight ⋅ André Tavares
Unpacking Colibri Loader: A Russian APT linked Campaign
Colibri Loader PrivateLoader
2022-10-05 ⋅ BitSight ⋅ João Godinho, Stanislas Arnoud
Sinkholing PseudoManuscrypt: From Zero To 50k Infections - Part 1
PrivateLoader PseudoManuscrypt
2022-09-26 ⋅ Kaspersky ⋅ Artem Ushkov, Haim Zigel, Oleg Kupreev
NullMixer: oodles of Trojans in a single dropper
ColdStealer DanaBot GCleaner Nullmixer PrivateLoader PseudoManuscrypt RedLine Stealer SmokeLoader Vidar
2022-09-15 ⋅ Sekoia ⋅ Threat & Detection Research Team
PrivateLoader: the loader of the prevalent ruzki PPI service
Agent Tesla Coinminer DanaBot DCRat Eternity Stealer Glupteba Mars Stealer NetSupportManager RAT Nymaim Nymaim2 Phoenix Keylogger PrivateLoader Raccoon RedLine Stealer SmokeLoader Socelars STOP Vidar YTStealer
2022-08-31 ⋅ BitSight ⋅ André Tavares
Tracking PrivateLoader: Malware Distribution Service
PrivateLoader RedLine Stealer SmokeLoader
2022-08-29 ⋅ Sekoia ⋅ Livia Tibirna, Quentin Bourgue, Threat & Detection Research Team
Traffers: a deep dive into the information stealer ecosystem
MetaStealer PrivateLoader Raccoon RedLine Stealer Vidar
2022-08-04 ⋅ Medium walmartglobaltech ⋅ Jason Reaves, Joshua Platt
IcedID leverages PrivateLoader
IcedID PrivateLoader
2022-07-27 ⋅ Darktrace ⋅ Sam Lister, Shuh Chin Goh
PrivateLoader: Network-Based Indicators of Compromise
PrivateLoader SmokeLoader
2022-06-06 ⋅ André Tavares
Hunting PrivateLoader: Pay-Per-Install Service
PrivateLoader
2022-05-05 ⋅ Trend Micro ⋅ Aliakbar Zahravi, Leandro Froes, Trend Micro Research
NetDooka Framework Distributed via PrivateLoader Malware as Part of Pay-Per-Install Service
NetDooka PrivateLoader
2022-04-29 ⋅ Intel 471 ⋅ Souhail Hammou
Privateloader – The Malware Behind A Havoc-Wreaking Pay-Per-Install Service
PrivateLoader
2022-04-28 ⋅ Zscaler ⋅ Brett Stone-Gross, Dennis Schwarz
Peeking into PrivateLoader
PrivateLoader
2022-02-14 ⋅ Medium walmartglobaltech ⋅ Jason Reaves, Joshua Platt
PrivateLoader to Anubis Loader
Anubis Loader PrivateLoader
2022-02-08 ⋅ Intel 471 ⋅ Intel 471
PrivateLoader: The first step in many malware schemes
Dridex Kronos LockBit Nanocore RAT NjRAT PrivateLoader Quasar RAT RedLine Stealer Remcos SmokeLoader STOP Tofsee TrickBot Vidar
Yara Rules
[TLP:WHITE] win_privateloader_auto (20260917 | Detects win.privateloader.)
rule win_privateloader_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-09-17"
        version = "1"
        description = "Detects win.privateloader."
        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.privateloader"
        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 = { 55 8bec 83ec28 894dd8 8b4508 8945e4 8b4de4 }
            // n = 7, score = 600
            //   55                   | push                ebp
            //   8bec                 | mov                 ebp, esp
            //   83ec28               | sub                 esp, 0x28
            //   894dd8               | mov                 dword ptr [ebp - 0x28], ecx
            //   8b4508               | mov                 eax, dword ptr [ebp + 8]
            //   8945e4               | mov                 dword ptr [ebp - 0x1c], eax
            //   8b4de4               | mov                 ecx, dword ptr [ebp - 0x1c]

        $sequence_1 = { 8b4d10 51 8b55e8 03550c 52 8b4dd8 e8???????? }
            // n = 7, score = 600
            //   8b4d10               | mov                 ecx, dword ptr [ebp + 0x10]
            //   51                   | push                ecx
            //   8b55e8               | mov                 edx, dword ptr [ebp - 0x18]
            //   03550c               | add                 edx, dword ptr [ebp + 0xc]
            //   52                   | push                edx
            //   8b4dd8               | mov                 ecx, dword ptr [ebp - 0x28]
            //   e8????????           |                     

        $sequence_2 = { 83ec1c 894df8 8b45f8 8b4810 894df4 }
            // n = 5, score = 600
            //   83ec1c               | sub                 esp, 0x1c
            //   894df8               | mov                 dword ptr [ebp - 8], ecx
            //   8b45f8               | mov                 eax, dword ptr [ebp - 8]
            //   8b4810               | mov                 ecx, dword ptr [eax + 0x10]
            //   894df4               | mov                 dword ptr [ebp - 0xc], ecx

        $sequence_3 = { 8b45d8 8b4ddc 8b55d0 8b75d4 }
            // n = 4, score = 600
            //   8b45d8               | mov                 eax, dword ptr [ebp - 0x28]
            //   8b4ddc               | mov                 ecx, dword ptr [ebp - 0x24]
            //   8b55d0               | mov                 edx, dword ptr [ebp - 0x30]
            //   8b75d4               | mov                 esi, dword ptr [ebp - 0x2c]

        $sequence_4 = { 8945fc 8b4dfc 894df4 8b55fc 837a1408 7209 }
            // n = 6, score = 600
            //   8945fc               | mov                 dword ptr [ebp - 4], eax
            //   8b4dfc               | mov                 ecx, dword ptr [ebp - 4]
            //   894df4               | mov                 dword ptr [ebp - 0xc], ecx
            //   8b55fc               | mov                 edx, dword ptr [ebp - 4]
            //   837a1408             | cmp                 dword ptr [edx + 0x14], 8
            //   7209                 | jb                  0xb

        $sequence_5 = { 8b02 894510 8b4d08 894dfc 8b55fc 8955e8 8b45fc }
            // n = 7, score = 600
            //   8b02                 | mov                 eax, dword ptr [edx]
            //   894510               | mov                 dword ptr [ebp + 0x10], eax
            //   8b4d08               | mov                 ecx, dword ptr [ebp + 8]
            //   894dfc               | mov                 dword ptr [ebp - 4], ecx
            //   8b55fc               | mov                 edx, dword ptr [ebp - 4]
            //   8955e8               | mov                 dword ptr [ebp - 0x18], edx
            //   8b45fc               | mov                 eax, dword ptr [ebp - 4]

        $sequence_6 = { 8b0d???????? 83f100 6a00 6a00 51 }
            // n = 5, score = 600
            //   8b0d????????         |                     
            //   83f100               | xor                 ecx, 0
            //   6a00                 | push                0
            //   6a00                 | push                0
            //   51                   | push                ecx

        $sequence_7 = { 8b4214 2b45f4 394508 7777 8b4df4 }
            // n = 5, score = 600
            //   8b4214               | mov                 eax, dword ptr [edx + 0x14]
            //   2b45f4               | sub                 eax, dword ptr [ebp - 0xc]
            //   394508               | cmp                 dword ptr [ebp + 8], eax
            //   7777                 | ja                  0x79
            //   8b4df4               | mov                 ecx, dword ptr [ebp - 0xc]

        $sequence_8 = { e8???????? 33d2 b93f000000 f7f1 }
            // n = 4, score = 500
            //   e8????????           |                     
            //   33d2                 | xor                 edx, edx
            //   b93f000000           | mov                 ecx, 0x3f
            //   f7f1                 | div                 ecx

        $sequence_9 = { 8bec 81ec68010000 a1???????? 33c5 8945fc 56 57 }
            // n = 7, score = 400
            //   8bec                 | mov                 ebp, esp
            //   81ec68010000         | sub                 esp, 0x168
            //   a1????????           |                     
            //   33c5                 | xor                 eax, ebp
            //   8945fc               | mov                 dword ptr [ebp - 4], eax
            //   56                   | push                esi
            //   57                   | push                edi

        $sequence_10 = { 56 ff15???????? a3???????? 33c0 5e c3 3b0d???????? }
            // n = 7, score = 400
            //   56                   | push                esi
            //   ff15????????         |                     
            //   a3????????           |                     
            //   33c0                 | xor                 eax, eax
            //   5e                   | pop                 esi
            //   c3                   | ret                 
            //   3b0d????????         |                     

        $sequence_11 = { e8???????? 6bc007 33c9 41 6bc903 }
            // n = 5, score = 400
            //   e8????????           |                     
            //   6bc007               | imul                eax, eax, 7
            //   33c9                 | xor                 ecx, ecx
            //   41                   | inc                 ecx
            //   6bc903               | imul                ecx, ecx, 3

        $sequence_12 = { e8???????? 83c610 83c002 83ef08 a907000000 0f853effffff }
            // n = 6, score = 400
            //   e8????????           |                     
            //   83c610               | add                 esi, 0x10
            //   83c002               | add                 eax, 2
            //   83ef08               | sub                 edi, 8
            //   a907000000           | test                eax, 7
            //   0f853effffff         | jne                 0xffffff44

        $sequence_13 = { 8b4590 8b4d94 8b5588 8b758c }
            // n = 4, score = 400
            //   8b4590               | mov                 eax, dword ptr [ebp - 0x70]
            //   8b4d94               | mov                 ecx, dword ptr [ebp - 0x6c]
            //   8b5588               | mov                 edx, dword ptr [ebp - 0x78]
            //   8b758c               | mov                 esi, dword ptr [ebp - 0x74]

        $sequence_14 = { 0bc8 56 57 7529 }
            // n = 4, score = 300
            //   0bc8                 | or                  ecx, eax
            //   56                   | push                esi
            //   57                   | push                edi
            //   7529                 | jne                 0x2b

        $sequence_15 = { 83c201 8955e0 83d600 8975e4 }
            // n = 4, score = 300
            //   83c201               | add                 edx, 1
            //   8955e0               | mov                 dword ptr [ebp - 0x20], edx
            //   83d600               | adc                 esi, 0
            //   8975e4               | mov                 dword ptr [ebp - 0x1c], esi

        $sequence_16 = { 8b45e4 50 51 52 56 }
            // n = 5, score = 300
            //   8b45e4               | mov                 eax, dword ptr [ebp - 0x1c]
            //   50                   | push                eax
            //   51                   | push                ecx
            //   52                   | push                edx
            //   56                   | push                esi

        $sequence_17 = { 6a04 8d4310 50 6a06 }
            // n = 4, score = 300
            //   6a04                 | push                4
            //   8d4310               | lea                 eax, [ebx + 0x10]
            //   50                   | push                eax
            //   6a06                 | push                6

        $sequence_18 = { 660fef4de0 0f294dc0 0f284dd0 50 }
            // n = 4, score = 300
            //   660fef4de0           | pxor                xmm1, xmmword ptr [ebp - 0x20]
            //   0f294dc0             | movaps              xmmword ptr [ebp - 0x40], xmm1
            //   0f284dd0             | movaps              xmm1, xmmword ptr [ebp - 0x30]
            //   50                   | push                eax

        $sequence_19 = { 8b4598 03d0 8b4d9c 13f1 83c201 }
            // n = 5, score = 300
            //   8b4598               | mov                 eax, dword ptr [ebp - 0x68]
            //   03d0                 | add                 edx, eax
            //   8b4d9c               | mov                 ecx, dword ptr [ebp - 0x64]
            //   13f1                 | adc                 esi, ecx
            //   83c201               | add                 edx, 1

    condition:
        7 of them and filesize < 3670016
}
[TLP:WHITE] win_privateloader_w0   (20220824 | No description)
rule win_privateloader_w0 {
  meta:
    author =    "andretavare5"
    org =       "BitSight"
    date =      "2022-06-06"
    md5 =       "8f70a0f45532261cb4df2800b141551d"
    reference = "https://tavares.re/blog/2022/06/06/hunting-privateloader-pay-per-install-service"
    license =   "CC BY-NC-SA 4.0"
    
    malpedia_reference = "https://malpedia.caad.fkie.fraunhofer.de/details/win.privateloader"
    malpedia_version = "20220824"
    malpedia_license = "CC BY-NC-SA 4.0"
    malpedia_sharing = "TLP:WHITE"
  strings:
    $code = { 66 0F EF (4?|8?) } // pxor xmm(1/0) - str chunk decryption
    $str =  "Content-Type: application/x-www-form-urlencoded" wide ascii
    $ua1 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" wide ascii
    $ua2 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36" wide ascii
                              
  condition:
    uint16(0) == 0x5A4D and // MZ
    $str and
    any of ($ua*) and
    #code > 100
}
Download all Yara Rules