Як пишеться сучасний malware: розбираємо книгу Packt на реальних кейсах

від TrickBot та Emotet до атак Lazarus Group — техніки, якими користуються APT, в коді на C та Assembly

Теги: #security #malware #windows #reverse-engineering #redteam #packt

 

Як я на це натрапив

У 2023 році придбав книгу Packt TinyML Cookbook і з тих пір регулярно заходжу в репозиторій подивитись що там нового. Якось скролю список репозиторіїв PacktPublishing на GitHub, оп бачу свіжий реп: «Malware Development for Ethical Hackers — 2nd Edition», 2026 рік, ліцензія MIT.

Карамбда це ж якраз одна з моїх тем. Вже кілька років розробляю власний навчальний стенд для аналізу malware лабораторію з C2 сервером, ELK Stack, Docker-ізоляцією, YARA правилами і модулями під Windows та Linux. Так що репозиторій одразу в роботу, справи зачекають.

Склонував, пройшовся по всіх чотирьох розділах, зіставив кожну техніку з реальними атаками і ось розбір.Спойлер: те, що виглядає як «навчальний код», це буквально те, що використовували TrickBot, Lazarus Group і Emotet.

Репозиторій: github.com/PacktPublishing/Malware-Development-for-Ethical-Hackers-Second-Edition

Масштаб проблеми у 2026 році

Щодня у світі з’являється близько 560 000 нових зразків malware. У 2024 році зафіксовано 6,2 мільярда заражень — на 7% більше ніж роком раніше. Кіберзлочинність коштує глобальній економіці понад $10.5 трильйонів на рік і це більше ніж прибутки від наркоторгівлі.

📎 Джерело: deepstrike.io, Malware Statistics 2024-2025 — deepstrike.io/…​tacks-and-Infections-2025

⚠️ Всі приклади виключно в освітніх цілях. Запускайте тільки у власному ізольованому середовищі (VM/Docker). Автор @cocomelonc, видавництво Packt, 2026.

Розділ 1: Фундамент — shellcode, reverse shell, dropper

1.1 Shellcode Execution: VirtualAlloc → RtlMoveMemory → CreateThread

Перший приклад у книзі це canonical патерн запуску shellcode на Windows. Якщо ви аналізували хоч один Windows malware то ви точно це вже бачили:

 

Ключовий момент: спочатку RW, потім RX — бо виділення одразу PAGE_EXECUTE_READWRITE (RWX) — відомий behavioral IOC, який детектять практично всі сучасні EDR. Це класика операційної безпеки в malware-розробці.

🔴 РЕАЛЬНИЙ КЕЙС: TrickBot — DLL injection в svchost.exe

TrickBot (банківський троян, активний з 2016) завантажував модулі як DLL з C2-серверів

і рефлективно ін’єктував їх прямо в легітимний процес svchost.exe.

Використовував класичний ланцюжок VirtualAllocEx → WriteProcessMemory →

CreateRemoteThread — саме те, що показує книга.

За даними Huntress 2025 Cyber Threat Report: TrickBot все ще становив 6.7%

від усіх методів remote access, задокументованих у 2024 році.

📎 Джерело: Cybereason: Triple Threat — Emotet, TrickBot, Ryuk — www.cybereason.com/…​ta-spread-ryuk-ransomware

📎 Джерело: Huntress 2025 Cyber Threat Report — www.huntress.com/…​01/topic/what-is-trickbot

1.2 Linux Reverse Shell лише 20 рядків чистого C

Один з найелегантніших прикладів книги і це повноцінний Linux reverse shell без жодних залежностей:

 

Принцип простий: після dup2() файловий дескриптор 0 (stdin), 1 (stdout), 2 (stderr) вказують на сокет. Коли execve() запускає /bin/sh — шелл «думає», що він локальний, але насправді читає і пише в мережу.

🔴 РЕАЛЬНИЙ КЕЙС: Emotet — persistence через HKCU Run key + reverse shell

Emotet (перша фіксація 2014, реінкарнації у 2022-2023) використовував той самий підхід:

персиститься через HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run з випадковим іменем ключа. Після цього завантажував TrickBot як dropper.

В 2023 Emotet додав нову техніку evasion: бінарний padding який роздував документи-дропери до 500+ MB (включаючи уривки з «Мобі Дік»!), щоб bypass’ити антивіруси, які ігнорують великі файли.

📎 Джерело: Wikipedia: Emotet — en.wikipedia.org/wiki/Emotet

📎 Джерело: Cynet: New Emotet Wave Analysis — www.cynet.com/…​t-wave-observed-by-cynet

1.3 Dropper та Keylogger

Розділ також покриває базові keylogger через Windows Hook API (SetWindowsHookEx з WH_KEYBOARD_LL), XOR-шифрування файлів для «ransomware-lite», і dropper-патерни — завантаження payload із ресурсів EXE або з мережі. Ці техніки — буквально фундамент більшості real-world APT-ланцюжків.

Розділ 2: Process Injection від класики до APC та API Hooking

2.1 APC Injection — ін’єкція у suspended процес

APC (Asynchronous Procedure Call) injection — один з найрозумніших прийомів у книзі. Замість підозрілого CreateRemoteThread — використовуємо нативний механізм Windows для планування асинхронних завдань:

 

Чому це краще за CreateRemoteThread? Бо QueueUserAPC — звичайний Windows API, який використовується для планування I/O операцій. Виклик QueueUserAPC сам по собі не підозрілий. EDR детектить патерн лише коли бачить комбінацію: VirtualAllocEx + WriteProcessMemory + QueueUserAPC на той самий процес.

🔴 РЕАЛЬНИЙ КЕЙС: PythonRatLoader → XWorm через APC injection (2024)

У 2024 році Picus Security задокументувала кампанію PythonRatLoader,

яка розгортала XWorm саме через APC injection.

Атакуючі використовували обфускований Python-код, який:

1. Створював notepad.exe в suspended стані

2. Ін’єктував payload в нього через QueueUserAPC

3. Відновлював процес — XWorm виконувався в контексті notepad

Це дозволяло обійти більшість EDR рішень, що моніторять CreateRemoteThread.

📎 Джерело: MITRE ATT&CK T1055.004 — Picus Security, March 2025 — www.picussecurity.com/…​ynchronous-procedure-call

Цікаво, що згідно з дослідженням ACM Asia CCS 2025, APC injection пережила ренесанс у malware після відносного затишшя у 2019-2022. «Early Bird» варіант — де APC ставиться ще до того, як процес встигає ініціалізуватися — особливо складний для детектування.

📎 Джерело: ACM AsiaCCS 2025: Process Injection in Windows Malware — dl.acm.org/…​i/10.1145/3708821.3736206

🔴 РЕАЛЬНИЙ КЕЙС: TrickBot, Dridex, Emotet — APC як основний інструмент

TrickBot та Dridex (банківські трояни) активно використовували APC injection для виконання своїх модулів у контексті svchost.exe та explorer.exe.

Cobalt Strike (легітимний red team фреймворк, який масово юзають APT-групи) має вбудовану підтримку APC injection для своїх beacon-ів.

Zeus banking trojan — один з піонерів використання APC для credential theft.

📎 Джерело: Malware Methods: APC Injection Analysis — medium.com/…​pc-injection-9f0b643f95f7

2.2 Classic DLL Injection через NtAllocateVirtualMemory

Книга показує еволюцію класичної DLL injection: замість VirtualAllocEx (Win32 API) — пряме використання NtAllocateVirtualMemory з ntdll.dll:

 

2.3 DLL Hijacking — сайдлоадинг замість ін’єкції

DLL Hijacking використовує специфіку Windows DLL search order: якщо малварь кладе свій evil.dll у папку додатку і Windows завантажить його ЗАМІСТЬ системного. Книга показує як згенерувати forwarding DLL (всі функції проксуються до оригіналу, крім однієї шкідливої).

🔴 РЕАЛЬНИЙ КЕЙС: 3CX Supply Chain Attack (2023) — Lazarus Group

Один з найгучніших кейсів DLL sideloading: атака Lazarus Group на 3CX,

VoIP-платформу з 12 мільйонами щоденних користувачів.

Ланцюжок атаки:

1. Зловмисники скомпрометували build pipeline 3CX

2. Підмінили легітимний ffmpeg.dll на бекдорований через DLL search order

3. Малварний ffmpeg.dll завантажував зашифрований shellcode з d3dcompiler_47.dll

4. Shellcode декриптував RC4-ключем і завантажував бекдор VEILEDSIGNAL

5. Stage-2 DLL підключалась до GitHub репозиторію з .ico файлами (стеганографія!)

6. В .ico файлах XOR-зашифровані C2 URLs

Весь VirusTotal спочатку не визначав malware бо DLL була підписана легітимним сертифікатом 3CX. Atakuvalys: клієнти Mercedes-Benz, NHS, Air France.

📎 Джерело: The Hacker News: 3CX Supply Chain Attack Analysis — thehackernews.com/…​attack-heres-what-we.html

📎 Джерело: Zscaler ThreatLabz: 3CX Attack Chain — www.zscaler.com/…​ply-chain-attack-campaign

🔴 РЕАЛЬНИЙ КЕЙС: SolarWinds (SUNBURST backdoor, NOBELIUM, 2020)

Класичний DLL hijack в масштабах держав: атакуючі (Russian APT NOBELIUM) впровадили бекдор у SolarWinds Orion Update DLL (SolarWinds.Orion.Core.BusinessLayer.dll).

Декілька рядків коду в легітимній бібліотеці → backdoor на ~4000 рядків.

DLL була підписана цифровим підписом SolarWinds → обійшла всі перевірки.

Жертви: US Treasury, CISA, FireEye, ~18 000 організацій отримали заражений update.

Технічна деталь: малварь чекала 12-14 днів після зараження перед активацією, перевіряла що хост ’api.solarwinds.com’ резолвиться коректно (anti-sandbox), і використовувала кастомний XOR-алгоритм для payload декодування.

📎 Джерело: Microsoft Security Blog: Analyzing Solorigate — www.microsoft.com/…​t-defender-helps-protect

2.4 API Hooking — перехоплення функцій через JMP patch

Розділ показує inline hooking: замінюємо перші байти цільової функції на JMP до нашого коду. Це двосічний меч — malware використовує для крадіжки даних, а EDR/AV — для моніторингу API викликів:

 

Детальніше: EDR продукти (CrowdStrike, SentinelOne, Microsoft Defender) хукають функції ntdll.dll саме так через JMP patch на початку кожної NT функції. Коли malware викликає NtAllocateVirtualMemory — потрапляє спочатку до EDR, який логує виклик і перевіряє параметри. Саме тому наступний розділ так важливий.

Розділ 3: Persistence — як залишитись після перезавантаження

3.1 Registry Run Keys — найпоширеніший метод

 

🔴 РЕАЛЬНИЙ КЕЙС: Emotet: persistence через HKCU\Run + Rundll32

Emotet використовував саме HKCU\CurrentVersion\Run без прав адміністратора.

Значення ключа: Rundll32.exe [path_to_emotet_dll],Control_RunDLL

Ім’я ключа генерувалось рандомно при кожному зараженні (поліморфізм).

Після кожного перезавантаження Emotet запускався, підключався до C2 і кожні кілька хвилин відправляв POST-запити для оновлення модулів.

📎 Джерело: Cynet: Emotet persistence mechanism — www.cynet.com/…​t-wave-observed-by-cynet

3.2 Windows Service Persistence — найнадійніший

Книга показує реєстрацію Windows Service — найнадійніший метод persistence, бо виконується ще до логіну користувача:

 

🔴 РЕАЛЬНИЙ КЕЙС: TrickBot: Windows Service + scheduled task комбо

TrickBot реєструвався як Windows Service з рандомним display name.

Паралельно — scheduled task для додаткового запасного механізму.

Сервіс запускав malware.exe → spawned svchost.exe → ін’єктував код.

Також disable/delete Windows Defender через sc stop та net stop команди.

Саме комбінація Service + scheduled task робить TrickBot таким persistent:

навіть якщо Security видаляє один механізм — другий продовжує працювати.

📎 Джерело: CISA Advisory AA21-076A: TrickBot Malware — www.cisa.gov/…​rity-advisories/aa21-076a

3.3 Winlogon Registry Keys та інші loopholes

Розділ також покриває: Winlogon keys (виконуються при логіні — HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon ключ Userinit), COM object hijacking, DLL search order hijacking у директорії програми. Кожна з цих технік відображена на MITRE ATT&CK T1547.

Розділ 4: Evasion — як невидимо жити в системі

4.1 Anti-Debugging: від IsDebuggerPresent до PEB tricks

Перший рівень захисту malware — перевірка чи не запущений debugger:

 

Розділ також показує перевірку timing (RDTSC інструкція — debugger сповільнює виконання) і OutputDebugString трик (GetLastError() повертає різні значення залежно від присутності debugger).

4.2 Sandbox/VM Detection через filesystem, hardware, registry

 

🔴 РЕАЛЬНИЙ КЕЙС: SolarWinds SUNBURST: anti-sandbox на рівні nation-state

SUNBURST backdoor містив дуже складну anti-sandbox логіку:

→ Перевіряв що хост ’api.solarwinds.com’ резолвиться до очікуваного IP

→ Перевіряв список запущених процесів (якщо є ’wireshark.exe’, ’procmon.exe’ — exit)

→ Після зараження чекав 12-14 ДНІВ перед першим контактом з C2

→ Перевіряв чи домен не в .local зоні (sandbox mid-point detection)

Завдяки цьому backdoor залишався невиявленим більше 9 місяців.

📎 Джерело: Microsoft Security Blog: Solorigate DLL Analysis — www.microsoft.com/…​t-defender-helps-protect

4.3 Static Evasion: XOR обфускація payload

Щоб обійти сигнатурний scan, payload шифрується XOR перед компіляцією і розшифровується лише в runtime:

 

4.4 Direct Syscalls найцікавіший інструмент у книзі

Це можливо найважливіший приклад всієї книги. EDR-рішення (CrowdStrike, SentinelOne, Microsoft Defender) хукають функції в ntdll.dll через JMP patch (саме як у розділі 2.4). Але є спосіб обійти їх повністю:

⚠️ Критична деталь: SSN (System Service Number) 0×18 справедливий для Windows 10/11 конкретних версій. При зміні OS build номери змінюються! Для стабільного коду потрібен динамічний пошук SSN (Hell’s Gate / SysWhispers).

Це не академічна вправа. Прямі syscalls фундаментальна техніка, яку активно використовують APT групи. CovertSwarm документує повну часову шкалу еволюції: Direct Syscalls (2019) → Hell’s Gate (2020) → Halo’s Gate (2021) → Tartarus’ Gate (2021) → Indirect Syscalls (2022+).

🔴 РЕАЛЬНИЙ КЕЙС: Hell’s Gate — динамічний пошук SSN (наступний рівень)

Hell’s Gate (am0nsec + smelly__vx, 2020) вирішує проблему хардкоду SSN:

замість захардкодженого 0×18 — динамічно читає ntdll.dll в пам’яті, знаходить потрібну функцію і витягує SSN прямо з opcodes.

Halo’s Gate (2021) покращує: якщо ntdll вже хукнута EDR і bytes змінені шукає SSN у сусідніх функціях (математична екстраполяція).

SysWhispers2/3 — інструмент для автогенерації ASM стабів з динамічним SSN.

Активно використовується APT групами, задокументовано CyCraft Research.

📎 Джерело: CovertSwarm: Evolution of EDR Bypass Techniques (Jan 2026) — www.covertswarm.com/…​-of-edr-bypass-techniques

📎 Джерело: HADESS: EDR Evasion via Syscalls — hadess.io/…​echniques-using-syscalls

У H1 2025 Recorded Future зафіксував зростання sophistication ransomware груп: JIT hooking та memory injection для обходу EDR стали стандартом, а не винятком серед топ-груп.

📎 Джерело: Recorded Future: H1 2025 Malware and Vulnerability Trends — www.recordedfuture.com/…​-and-vulnerability-trends

Давайте зодемо всі техніки в одну картину

І подивимось на chain Emotet → TrickBot → Ryuk через призму того, що я виклав вище:

Класичний APT kill chain на прикладі Emotet-TrickBot-Ryuk:

[T1566.001] Phishing спамлист → malicious Word doc з макросом

[T1059.001] Макрос запускає PowerShell → завантажує Emotet DLL

[T1547.001] Emotet → persistence через HKCU\Run key (розділ 3.1)

[T1055.002] Emotet → рефлективна DLL injection в svchost (розділ 2.2)

[T1574.001] TrickBot → DLL search order hijacking для модулів (розділ 2.3)

[T1543.003] TrickBot → Windows Service для persistence (розділ 3.2)

[T1497.001] Перевірка VM артефактів перед активацією (розділ 4.2)

[T1027.001] XOR обфускація payload (розділ 4.3)

[T1055.004] APC injection для запуску модулів у notepad/svchost (розділ 2.1)

[T1486] Ryuk ransomware → шифрування файлів (розділ 1.3)

Кожна з цих технік буквально розібрана в книзі з робочим кодом на C/C++/NASM і що дивує найбільше:

1. Наскільки просто виглядають деякі persistence техніки
2. Як активно використовується Windows API
3. Наскільки важливу роль відіграє інфраструктура C2

Висновки: кому і навіщо читати

Blue Team / SOC

  • Розумієш техніку → знаєш що детектити. VirtualAlloc + VirtualProtect + CreateThread в тому самому процесі за короткий час виявляєш підозрілий патерн
  • QueueUserAPC до suspended процесу з VirtualAllocEx це IOC для APC injection
  • Новий сервіс з нестандартним ім’ям з Winlogon ключ реєстру це persistence
  • MITRE ATT&CK mapping допомагає вибудовувати detection rules у SIEM

Malware Analysts / Reverse Engineers

  • Бачиш в IDA: FF 25 + 8 байт → inline JMP hook на функцію
  • Бачиш QueueUserAPC в трасі → думаєш про APC injection + suspended process
  • xor loop над массивом байт → static obfuscation payload
  • Прямий syscall instruction без виклику ntdll → direct syscall evasion

Pentesters / Red Team

  • XOR payload і direct syscalls і non-standard persistence це суттєво знижений detection rate
  • APC injection через suspended process менш помітний за CreateRemoteThread у більшості EDR
  • DLL sideloading в директорію продукту — persistence без registry modifications

Як запустити (мінімальне середовище)

  • Windows 10/11 VM (VMware/VirtualBox) — краще з тимчасово відключеним Defender
  • MinGW-w64 або Visual Studio Build Tools для C/C++ прикладів
  • NASM (nasm.us) для assembly розділу chapter04/08
  • x64dbg для налагодження Windows прикладів
  • msfvenom (Metasploit) для генерації тестових shellcodes

Компіляція:

 

Всі джерела

Репозиторій книги:

📎 Джерело: PacktPublishing/Malware-Development-for-Ethical-Hackers-Second-Edition (MIT) — github.com/…​al-Hackers-Second-Edition

Real-world кейси:

📎 Джерело: Microsoft Security Blog: Analyzing Solorigate (SUNBURST) — www.microsoft.com/…​t-defender-helps-protect

📎 Джерело: The Hacker News: 3CX Supply Chain Attack — thehackernews.com/…​attack-heres-what-we.html

📎 Джерело: Zscaler ThreatLabz: 3CX Supply Chain Attack Campaign — www.zscaler.com/…​ply-chain-attack-campaign

📎 Джерело: Cybereason: Triple Threat — Emotet, TrickBot, Ryuk — www.cybereason.com/…​ta-spread-ryuk-ransomware

📎 Джерело: CISA Advisory AA21-076A: TrickBot Malware — www.cisa.gov/…​rity-advisories/aa21-076a

📎 Джерело: Huntress 2025 Cyber Threat Report: TrickBot — www.huntress.com/…​01/topic/what-is-trickbot

📎 Джерело: Wikipedia: Emotet — en.wikipedia.org/wiki/Emotet

Техніки та дослідження:

📎 Джерело: Picus Security: MITRE T1055.004 APC Injection (March 2025) — www.picussecurity.com/…​ynchronous-procedure-call

📎 Джерело: ACM AsiaCCS 2025: Process Injection in Windows Malware — dl.acm.org/…​i/10.1145/3708821.3736206

📎 Джерело: CovertSwarm: Evolution of EDR Bypass Techniques (Jan 2026) — www.covertswarm.com/…​-of-edr-bypass-techniques

📎 Джерело: HADESS: EDR Evasion Techniques using Syscalls — hadess.io/…​echniques-using-syscalls

📎 Джерело: Recorded Future: H1 2025 Malware and Vulnerability Trends — www.recordedfuture.com/…​-and-vulnerability-trends

📎 Джерело: deepstrike.io: 50+ Malware Statistics 2025 — deepstrike.io/…​tacks-and-Infections-2025

⚠️ Нагадуємо: всі техніки описані виключно для освітніх цілей. Використовуйте тільки у власних тестових середовищах або за наявності письмового дозволу власника системи (penetration testing agreement).

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *