Логи Windows брешуть: Як ловити атаки на Kerberos у сирому трафіку

12.03.2026 2 хвилин Автор: Cyber Witcher

У цій статті ми розберемося, чому звичні методи захисту мережі часто дають хибне відчуття безпеки. Ви дізнаєтесь, як справжні зловмисники непомітно проникають у систему, отримують доступ до найціннішого та залишають адмінів ні з чим. Ми покажемо зовсім інший підхід до моніторингу, який дозволяє бачити кожен крок атакуючого наскрізь. Жодної сухої теорії – тільки реальна практика та розбір польотів на рівні мережевого трафіку.

Як ловити атаки на Kerberos у дротах (і чому логи Windows вас зрадять)

Салют, ком’юніті HackYourMom! Сьогодні ми ліземо в самі нетрі безпеки Active Directory. Будемо відверті: серце будь-якої корпоративної мережі на базі Windows – це протокол аутентификації Kerberos. Ви логінитесь на свій робочий комп’ютер, лізете на мережеву файлову помийку, стукаєтесь у базу даних MS SQL чи відкриваєте внутрішній корпоративний портал – усе це генерує безперервний, щільний потік Kerberos-трафіку.

Саме тому для будь-якого адекватного пентестера (або реального хакера-практика) цей протокол – мета номер один. Ламаєш Kerberos – забираєш ключі від усього домену і стаєш богом у цій інфраструктурі.

Звично Blue Team будує свій захист навколо логів Windows та дорогих EDR-рішень. Побачили Event ID 4768 (запит квитка) чи 4771 (помилка аутентификації) у своїй SIEM-системі – і побігли розбиратися. Але чи не здається вам, що цей підхід трохи застарів і має купу сліпих зон?

У цій статті ми розберемо, чому справжня магія Threat Hunting ховається не в журналах подій на кінцевих точках, а безпосередньо у мережевому трафіку. Ми покажемо, як за допомогою аналізу сирих байтів та відкритих систем виявлення вторгнень, таких як Suricata IDS, ловити атакуючих за руку ще до того, як вони встигнуть закріпитися у вашій мережі.

Чому логи Windows – це ілюзія безпеки

Давайте чесно відповімо на питання: чому довіряти виключно Event Logs та агентам на серверах – це шлях в нікуди? Здавалося б, Microsoft дає нам непогані інструменти аудиту. Але на практиці все працює інакше:

  1. Їх дуже легко почистити. Якщо зловмисник отримав права локального адміна (Local Admin) або вище, перше, що він зробить – пропише в консолі Clear-EventLog -LogName Security. І все, кінці в воду. Ви навіть не дізнаєтесь, що саме він робив перед цим.

  2. Малвар вміє їх “осліплювати”. Сучасні руткіти та просунуті імпланти (навіть базові штуки з Cobalt Strike) просто перехоплюють виклики ETW (Event Tracing for Windows) або роблять unhooking API-функцій вашого EDR. Система логування працює, дашборди в SOC світяться заспокійливим зеленим кольором, а хакер тим часом спокійно дампить хеші з пам’яті процесу LSASS.

  3. Постійні затримки (Latency). Лог має записатися локально на диску, потім агент має відправити його по мережі в Splunk чи ELK, потім іде індексація, потім спрацювання правила кореляції, і тільки потім вилазить алерт. Цей лаг може складати хвилини, а іноді й години. Для вивантаження критичних даних цього часу більш ніж достатньо.

  4. Брак контексту. Лог Windows показує лише сухий факт: “Хтось спробував залогінитись”. Але він не показує, як саме був сформований мережевий пакет, які специфічні прапорці були виставлені, і яка утиліта використовувалась.

А от мережевий трафік не бреше. Його не можна стерти заднім числом, якщо він вже пройшов через ваш комутатор і потрапив на TAP-інтерфейс або SPAN-порт. Пакет або був у дроті, або його там не було.

Анатомія протоколу: як виглядає Kerberos під мікроскопом

Щоб бачити аномалії, треба спочатку розуміти, як виглядає нормальний процес. Kerberos працює як класична система VIP-перепусток на закриту вечірку.

Вся ця кухня крутиться навколо служби KDC (Key Distribution Center), яка зазвичай висить на контролерах домену. Процес ділиться на два етапи:

  • Authentication Service (AS) – це ніби головна каса на вході. Ви показуєте свій логін і пароль, а каса видає вам загальний браслет TGT (Ticket Granting Ticket). Обмін відбувається через пакети AS-REQ (запит від клієнта) та AS-REP (відповідь від сервера).

  • Ticket Granting Service (TGS) – це охоронці біля барів чи закритого бекстейджу. Ви показуєте їм свій TGT-браслет, просите доступ до конкретного сервера (наприклад, до файлового сховища), і вони видають вам вузькоспрямований сервісний квиток. Це пакети TGS-REQ та TGS-REP.

Усе це бігає по портах TCP/88 та UDP/88 і упаковується у специфічний бінарний формат стандарту ASN.1. Звучить нудно, але саме розуміння структури ASN.1 дозволяє нам розбирати пакети на молекули.

А тепер подивимося, як цей “ідеальний” процес ламають на практиці.

Атака перша: тихий перебір користувачів (enumeration)

Коли хакер тільки-но потрапив у мережу (наприклад, через фішинг чи вразливість у веб-додатку), він майже завжди сліпий. Йому потрібні валідні логіни для подальшої роботи. Замість ручного тикання навмання він запускає утиліти типу Kerbrute.

Ця штука масово плює в контролер домену запитами AS-REQ, але робить це хитро – взагалі без блоку попередньої аутентификації (PA-DATA). Тобто пароль навіть не відправляється!

  • Якщо юзера в природі не існує, KDC лається помилкою PRINCIPAL UNKNOWN.

  • Якщо такий логін є, KDC відповідає PREAUTH_REQUIRED (мовляв, “ок, я тебе знаю, тепер давай пароль”).

Фішка в тому, що така атака ніколи не заблокує акаунт цільового користувача (Account Lockout), бо неправильний пароль просто не вводився. Ідеально для стелс-режиму.

Як це спалити у Wireshark? У HEX-дампі запиту від Kerbrute завжди світяться специфічні байти, які легко закинути в ASN.1 Decoder:

a1 03 02 01 05 a2 03 02 01 0a ... 6b 72 62 74 67 74
  • a1 03 02 01 05 – це мітка протоколу Kerberos v5.

  • a2 03 02 01 0a – це вказівка, що тип повідомлення дорівнює 10 (тобто AS-REQ).

  • 6b 72 62 74 67 74 – це тупо рядок krbtgt у ASCII-кодуванні.

Оскільки утиліта відправляє десятки запитів за секунду, ми можемо написати правило для Suricata, яке буде реагувати виключно на ненормальну швидкість таких пакетів з однієї айпішки.

Сигнатура:

alert udp any any -> any 88 (
    msg:"[UDP] High Rate of Kerberos AS-REQ, Possible Enumeration"; 
    content:"|a1 03 02 01 05 a2 03 02 01 0a|"; 
    content:"|6b 72 62 74 67 74|"; fast_pattern; 
    threshold:type limit, track by_src, count 5, seconds 10; 
    sid:100000; rev:1;
)

Якщо з однієї IP-адреси за 10 секунд прилітає 5 таких пакетів – це гарантовано не людина. Здіймаємо тривогу.

Атака друга: брутфорс та password spraying

Знайшли валідні логіни? Погнали підбирати до них паролі. Тут теж використовується AS-REQ, але з’являється одна критична деталь – блок пре-аутентификації PA-DATA (зашифрована мітка часу). Хакер бере пароль зі свого словника, шифрує ним поточний час і відправляє на KDC. Якщо пароль невірний, KDC поверне помилку.

Відрізнити брутфорс від попередньої атаки (Enumeration) дуже легко на рівні байтів. У HEX-дампі з’явиться новий індикатор PA-ENC-TIMESTAMP (тип 2):

a1 03 02 01 02

Але тут є нюанс. Класичний брутфорс (багато паролів до одного логіна) швидко блокує акаунт. Тому розумні хакери роблять Password Spraying: вони беруть один популярний пароль (наприклад, Winter2026!) і пробують його по черзі до тисячі різних користувачів.

Оновлюємо правило для брутфорсу/спреїнгу:

alert tcp any any -> any 88 (
    msg:"[TCP] Intensive Kerberos Bruteforce Attack Detected"; 
    content:"|a1 03 02 01 05 a2 03 02 01 0a|"; 
    content:"|6b 72 62 74 67 74|"; fast_pattern; 
    content:"|a1 03 02 01 02|"; distance:0;
    threshold:type threshold, track by_src, count 20, seconds 5; 
    sid:100002; rev:1;
)

Ми додали перевірку на наявність PA-DATA і задрали поріг спрацьовування (count 20 за seconds 5). Брутфорс створює дуже багато шуму. Якщо хтось так часто помиляється з паролем – це точно не бухгалтерка, яка випадково ввімкнула CapsLock.

Атака третя: Kerberoasting та полювання на сервіси

Це вже вищий пілотаж. Ціль цієї атаки – не звичайні користувачі, а так звані сервісні акаунти (Service Accounts), до яких прив’язані SPN (Service Principal Names). Наприклад, це може бути акаунт, під яким крутиться сервер MS SQL. Зазвичай у таких акаунтів дуже складні, але старі паролі, які роками ніхто не змінює.

Хакер (маючи на руках валідний TGT звичайного юзера) просить у контролера домену сервісний квиток для цього MS SQL сервера. Сервер радо видає йому пакет TGS-REP. А далі починається магія: частина цього квитка зашифрована хешем пароля того самого сервісного акаунта! Зловмисник зберігає цей пакет на диск і забирає до себе на Kali Linux, щоб спокійно брутфорсити його офлайн. Для цього часто використовують утиліту Rubeus.

Найцікавіше, що хакери навмисно просять KDC видати квиток із застарілим алгоритмом шифрування RC4-HMAC (тип 23), тому що його зламати на відеокартах значно легше, ніж сучасний AES-256. У трафіку це виглядає як аномальний запит пониження криптографії (encryption downgrade).

Якщо ви бачите у своєму трафіку TGS-REQ, який жорстко вимагає etype 23 – це жирний червоний прапор.

Атака четверта: AS-REP roasting та ігри з шифруванням

Ще одна класика сучасного пентесту. Її ціль – специфічні акаунти, у яких колись давно (можливо, через легасі-системи) зняли вимогу попередньої аутентификації (галочка DONT_REQ_PREAUTH в налаштуваннях Active Directory).

Тут хакеру навіть не потрібен первинний доступ. Він просто відправляє пустий запит і просить сервер видати AS-REP. Оскільки пре-аутентификація відключена, KDC слухняно відповідає. А частина цієї відповіді, знов-таки, зашифрована хешем пароля користувача! Згодовуємо цей смітник у Hashcat і чекаємо результату.

Найчастіше для цього юзають швейцарський ніж хакера – скрипти з набору Impacket (конкретно GetNPUsers.py).

Як виглядає почерк Impacket у трафіку? Він має свої унікальні “відбитки пальців”. Скрипт завжди виставляє специфічний набір прапорців FORWARDABLE | PROXIABLE | RENEWABLE та просить слабке RC4-шифрування. У HEX це виглядає як стабільна комбінація: a0 07 03 05 00 50 80 00 00 a1.

Пишемо сигнатуру для вилову:

alert tcp any any -> any 88 (
    msg:"Suspicious AS-REQ Packet, Possible AS-REP Roasting (Impacket)"; 
    flow:to_server, stateless; 
    content:"|a0 07 03 05 00 50 80 00 00 a1|"; 
    content:"|6b 72 62 74 67 74|"; fast_pattern; 
    content:!"|a1 03 02 01 02|"; 
    sid:100009; rev:1;
)

Зверніть увагу на хитрий трюк: знак оклику !"|a1 03 02 01 02|" перед контентом. Це означає, що ми шукаємо пакети, де блоку пре-аутентификації (PA-DATA) тупо НЕМАЄ. Адже AS-REP Roasting працює виключно на акаунтах без пре-аутентификації.

Як правильно розгорнути моніторинг трафіку

Окей, ми написали круті правила. Але куди їх пхати? Якщо ви поставите IDS просто на свій ноут у Wi-Fi мережі, ви нічого не побачите. Вам потрібна правильна архітектура захоплення пакетів:

  1. SPAN-порти (Port Mirroring): Налаштуйте ваші ядерні комутатори (Core Switches) так, щоб вони дублювали весь трафік, який іде до портів контролерів домену, на окремий порт моніторингу, до якого підключений сервер із Suricata.

  2. Network TAPs: Це апаратні “жучки”, які фізично врізаються в оптику або мідь між комутатором і сервером. Вони гарантують 100% захоплення трафіку без навантаження на свіч. Це ідеальний варіант для параноїків.

Що з усім цим робити прямо зараз

Мережевий аналіз – це буквально рентген для вашого домену. Ви бачите структуру протоколів, алгоритми шифрування і реальну поведінку запитів, яку хакер фізично не може приховати чи видалити.

Мінімум дій для Blue Team на завтрашній ранок:

  • Впровадьте IDS: Розгорніть Suricata або Zeek хоча б перед контролерами домену. Без цього ви просто граєте в рулетку наосліп.

  • Вбийте RC4: Знайдіть у налаштуваннях вашого домену всі згадки про застаріле шифрування RC4 і вимкніть його через GPO (Групові політики). Залиште тільки AES-128 та AES-256.

  • Аудит Pre-Auth: Прошерстіть Active Directory на наявність користувачів з відключеною пре-аутентификацією (Do not require Kerberos preauthentication). Знайшли таких? Знімайте галочку негайно (попередньо перевіривши, чи не покладете ви цим якийсь стародавній сканер штрих-кодів на складі).

  • Створіть пісочницю: Не копіпастіть правила не дивлячись. Підніміть тестову віртуалку з AD, натравіть на неї Kerbrute, зніміть дамп трафіку і відкалібруйте сигнатури під свої реалії, щоб не тонути у False Positives (хибних спрацьовуваннях).

Хакери стають розумнішими кожного дня, вони чудово обходять антивіруси і чистять за собою сліди на серверах. Але є одна фундаментальна річ: вони фізично не можуть зламати мережу, не генеруючи мережевих пакетів.

Будьте розумнішими. Аналізуйте трафік!

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.