Мій третій крок в InfoSec: як я вчуся аналізувати малварь в 11 років
Перші кроки в Ghidra та x64dbg: як я в 11 років вчуся читати код малварі «всліпу»
Привіт, IT-спільното DOU! На зв’язку знову blade. У минулому дописі я обіцяв, що моя Malware-лабораторія переходить на новий рівень — від спостереження за поведінкою вірусів до реверс-інжинірингу. Слова треба підтверджувати ділом. Сьогодні я хочу розповісти про свій перший реальний досвід статичного аналізу, біль від асемблера, перші успішні брейкпоінти та велике оновлення моєї бази знань.
🧑💻 Трохи про мене
Оскільки це вже мій третій матеріал тут, думаю, настав час познайомитися ближче. Мене звати Тимофій, я з України. Мені 11 років, навчаюся у школі й майже весь свій вільний час присвячую InfoSec, дослідженню Windows Internals та кібербезпеці. Для мене це не просто хобі, а свідомий вибір майбутньої професії, до якої я готуюся вже зараз.
🧱 Еволюція Malware-Encyclopedia: глибше занурення в Windows Internals
Мій головний open-source проєкт Malware-Encyclopedia продовжує активно розвиватися. Цього разу я сфокусувався на детальному розборі взаємодії шкідливого ПЗ із підсистемами ОС:
- Аналіз маніпуляцій з Реєстром (Registry Malware Analysis): Додав у репозиторій окремий розбір гілок реєстру, які малварь використовує не лише для закріплення (Persistence), а й для вимикання захисту — наприклад, спроби деактивації Windows Defender або блокування системних утиліт через
Image File Execution Options(IFEO). - Анатомія WinAPI: Тепер у кожному розборі сімейства вірусів я фіксую конкретні системні виклики. Якщо це стілер — розбираю, як він використовує
CryptUnprotectDataдля крадіжки паролів із браузерів; якщо це лоадер — аналізую ланцюжок відCreateProcessдо маніпуляцій із дескрипторами.
Це вже не просто конспект, а детальна інженерна база знань, де кожен маркер компрометації (IoC) прив’язаний до конкретної архітектурної особливості Windows.
🔍 Кінець «комфортного» динамічного аналізу
Раніше мій алгоритм аналізу був простий: запустив вірус в ізольованій віртуалці VirtualBox, подивився логи моніторингу в blade_Trace чи Process Hacker і зібрав IoC. Але сучасні стілери та шифрувальники майже одразу засинають, детектують середовище або шифрують свої API-виклики (API Hashing).
Динамічний аналіз «збоку» став схожим на гадання. З’явилася потреба навчитися читати нутрощі файлу .exe ще до його кліку.
🛠️ Ghidra та x64dbg: перші враження
Я обрав Ghidra як свій перший основний інструмент для статики. Граф функцій спочатку злякав і здався величезним лабіринтом. Читати чистий лістинг асемблера дуже важко, тому вікно декомпілятора Ghidra у local_1c. Перший успіх — мені вдалося знайти захардкоджені рядки (strings) та розібрати логіку перевірки умов у простому CrackMe софті.
Коли статика безсила через обфускацію, я підключаю відладчик x64dbg. Моє головне завдання зараз — навчитися перехоплювати розпакування малварі в оперативній пам’яті. Я вчуся ставити брейкпоінти (Breakpoints) на критичні API-функції виділення пам’яті: VirtualAlloc та VirtualAllocEx. Це дозволяє зупинити вірус точно в момент, коли він розпакував свій чистий шкідливий код у пам’ять, і зняти дамп (Payload) до того, як спрацює маскування.
🎯 Що далі?
Реверс-інжиніринг виявився набагато складнішим, ніж здавалося за підручниками. Тому мені дуже потрібна порада досвідчених фахівців із спільноти DOU (Blue/Purple Team, Reverse Engineers):
- З яких простіших сімейств реальної малварі краще починати практикувати статику, щоб не зламати мозок об важкі комерційні протектори?
- Які плагіни для Ghidra є маст-хевом для аналітика-початківця?
Буду дуже радй вашій критиці та підказкам у коментарях! Мій проєкт відкритий для контрибуцій:
👉 Репозиторій на GitHub: blade391off/Malware-Encyclopedia
Дякую за увагу, підтримуйте український InfoSec зірочками й бережіть свої системи! 🇺🇦
5 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівПривіт, друже!
Малварь не використовує важкі комерційні протектори.
Почитани краще з ШІ. Запрашуй згенерувати crackme, і тренуєшся аналізувати.
Із плюсів: можна підгладати в сорсник і можна задавати рівень складністі.
Тут не погоджуюсь з Дмитром. Припинялася хвиля, бо були введені обов’язкові ціфрові підписи на Windows, були розроблені потужні евристичні аналізатори і емулятори. Але зараз ера ШІ. І все, що було розроблене як захист за декілька десятиріч стало неактуальним.
У мережі вже є моделі на базі QWEN, які не мають cybersecurity обмежень.
Не плагін. Зараз 2026 рік. Тобі потрібна інтеграція Ghidra до ШІ.
Коли буде інтеграція, реалізацію потрібних тобі плагинів ти вже в декілька промтів зробиш. Потрібен GhidraMCP.
Далі розгортаеш сам, або ШІ запропонує у процессі розгорнути:
PyGhidra + ghidra-stubs, capa, BinExport + BinDiff, ret-sync, Gx64Sync, Kaiju.
У нас в EDR/XDR девелопменті перехоплюють Nt-функції. Дивись у бік ntdll.dll NtAllocateVirtualMemory.
Майже увесь репо на ШІ. Краще пиши меньш, але самостійно.
Ну і май на увазі, що і в cybersecurity будеш зтикатися з непорозумінням і приоритетом грошей над здравим глуздом. Часто AV-вендори або cybersecurity-провайдери будуть ставити у приоритет ресерчити якусь дічь, рекламу чи ще щось, бо можно з цього заробити, у той час, як аналіз реальної малварі буде йти лише фоном. Але то мабудь усюди так. В ігровому напрямку, кажуть, не краще.
Привіт, дякую за фідбек!
Так, я використовую ШІ, але сам все розумію і аналізую, що він мені написав.
Ще раз дякую за фідбек, дуже приємно!)
Привет от экс-коллеги )2000-х. Тема клёвая — но сейчас в реальном мире ты их практически не встретишь.
Когда-то, 23 года назад, я с этого начинал, хороший выбор ))
Так.
1. Попробуй FileMon и RegMon от Sysinternals + их же Process Explorer. Для того, чтоб обойти защиту по обнаружению мониторинга, переименуй процессы мониторов в 1.exe, 2.exe, 3.exe. Трюк тупой, как валенок — но работает :) На функциональности мониторов не сказывается никак вообще.
2. Поставь анпакеры + анализатор упаковщиков (смотрят в заголовки сегментов, потом сам научишься их видеть не хуже анпакера )) ). Всякие штуки типа UPX лучше распаковывать, если ты хочешь получить статический анализ строк.
3. Часть червей могут самокриптоваться (простейший пример: XOR на какой-нить байт). Это делается, чтоб усложнить добавление малвари в базу. Криптованные малвари легко видно даже глазом: выравнивание сегментов не 0h, а какая-нить дичь, при этом заголовков упаковщика нет). Для того, чтоб декриптовать, надо проанализировать код, идущий от entry point (ты ж знаешь про MZ и PE заголовки, да?), найти декриптовку, которая обычно идёт примерно сразу и скопировать её в отдельный код, который декриптует тебе пациента.
4. Статический анализ — это неплохо, но дебаггинг не заменит ничто )) Раньше был Hiew + SoftIce, потом по-моему Driver Studio, что там есть ща — я уже не знаю, глянь. Научись breakpoint on execution / breakpoint on memory access. Крайне полезные опции.
5. Файловые вирусы — смотри в основном только ради интереса. Их время закончилось ещё в начале
Если есть вопросы — спрашивай. Что вспомню — отвечу.
(видалено. не туди відповів)
Привет! Огромное спасибо за крутые советы и за то, что поделились опытом, очень приятно! )
Про переименование процессоров, это очень гениально и просто, обязательно попробую.
Про файловые вирусы понял, еще спасибо большое за хорошие советы и поддержку!)