_ SEARCH_ARCHIVE [/]
[ CLOSE_SESSION ]
:(

SYSTEM_HALTED

Your device ran into a critical error due to an unauthorized shell command. The system was halted to prevent data leakage and kernel corruption.

SYS_SEARCH v1.0.4 // CORE_INDEX ⚠️ [!] NEVER TYPE "EXIT" OR "SHUTDOWN" [ESC] TO ABORT
>>
>> LOC: ARCHIVE_ROOT/web/burp_suite_for_pentester_turbo_intruder // SEC_LEVEL: 01 // STATUS: CONFIDENTIAL

>

#BURP SUITE#TOOLS#FUZZING#BRUTEFORCE
FILE_INFO_DECRYPTED
AUTHOR: Geet Madan
TRANSLATE: @exploit.com.ua

Чи є фаззинг вашим улюбленим типом атак, але ви не отримували від нього задоволення через низьку швидкість та високе споживання пам’яті під час роботи з великими словниками?

Тож у цій статті ми вивчимо один із найшвидших та найнадійніших фаззерів — Turbo Intruder. Це розширення для Burp Suite, яке здатне видавати результати за лічені хвилини, незалежно від кількості корисних навантажень (payloads) у словнику. Крім того, він спроектований для оптимізації використання пам’яті, що робить його надзвичайно ефективним.

Зміст

  • Вступ до Turbo Intruder
  • Що таке Turbo Intruder
  • Burp Intruder проти Turbo Intruder
  • Встановлення Turbo Intruder
  • Брутфорс паролів додатка
  • Через Burp Intruder
  • Через Turbo Intruder
  • Налаштування Python-скриптів
  • Фаззинг декількох параметрів одночасно

Вступ до Turbo Intruder

Що таке Turbo Intruder

Turbo Intruder — це одне з найпотужніших розширень для Burp Suite, розроблене Джеймсом Кеттлом (James Kettle) для відправки величезної кількості HTTP-запитів та аналізу результатів. За своїм функціоналом це розширення схоже на стандартний Burp Intruder. Так, це фаззер. Проте завдяки використанню власного HTTP-стека, певні особливості роблять його значно відмінним та швидшим:

  • Висока швидкість із мінімальною затримкою під час фаззингу
  • Низьке споживання пам’яті навіть при роботі з мільйонами корисних навантажень
  • Налаштовувані Python-скрипти для різних сценаріїв атак
  • Надійність під час атак, що тривають кілька днів

Burp Intruder проти Turbo Intruder

Без сумніву, вкладка Intruder — це найпотужніша частина Burp Suite. Незалежно від того, чи потрібно профаззити одну точку ін’єкції, чи декілька, вона справляється зі своєю роботою бездоганно. Цей інструмент надає все необхідне: від гнучких налаштувань корисного навантаження до виявлення помилок. Проте, коли справа доходить до швидкості фаззингу або споживання пам’яті, з’являються проблеми. Якщо словник перевищує сто тисяч записів, затримки та використання ресурсів досягають свого піку. Але чому так відбувається?

Щоб розібратися в цьому, нам потрібно зрозуміти механізм, який використовується під час фаззингу.

Більшість популярних інструментів для брутфорсу встановлюють TCP-з’єднання (handshake) для кожного окремого запиту, після чого відправляють його на сервер. Сервер обробляє запит і надсилає відповідь. Щойно інструмент отримує цю відповідь, він зчитує її та повторює весь процес заново. Однак процедура встановлення з’єднання займає чимало часу, а фази відправки та зчитування створюють значні затримки. Як наслідок, такий підхід дає високе навантаження на процесор і споживає багато пам’яті, що зрештою суттєво знижує швидкість фаззингу.

Натомість Turbo Intruder працює інакше, що й зумовлює його швидкість. Він використовує перевірену технологію — HTTP pipelining. Спочатку встановлюється з’єднання, а потім через нього відправляється максимально можлива кількість запитів за один раз, не чекаючи на отримання кожної відповіді. Це дозволяє мінімізувати затримки та час обробки на стороні сервера.

Встановлення Turbo Intruder

Знайти та встановити цей плагін зовсім не складно. Просто перейдіть на вкладку Extensions (раніше Extender) у Burp Suite, а потім оберіть розділ BApp Store. Прокрутивши список донизу, ви знайдете цей плагін — його рейтинг становить майже 5 зірок.

Тепер просто натисніть кнопку Install у вікні з описом — і все готово до роботи.

Burp Suite Turbo Intruder

Але де ж він? Він не з’явився у списку вкладок?

Давайте перевіримо в меню Action — звичайний правий клік миші відкриє нам опцію «Send to Turbo Intruder».

Брутфорс паролів додатка

Можливо, ви запитаєте: «Хіба всі ці концепції вже не описані на сторінці PortSwigger або в репозиторії розширення на GitHub? Що ж тут нового? А як щодо практичного досвіду? Як ми можемо переконатися, що Turbo Intruder справді фаззить додаток набагато швидше, ніж стандартний Burp Intruder?»

Щоб підтвердити це та побачити інструмент у дії, скористаємося нашим вразливим додатком — bWAPP. Перехопимо HTTP-запит з порталу логіну, вказавши ім’я користувача bee та пароль 12345.

Burp Suite Turbo Intruder

Через Burp Intruder

Після натискання кнопки Login ми перехопили запит у Burp Suite, тож спершу відправимо його в Intruder.

Кроки роботи з Intruder нам уже добре знайомі, тож давайте ще раз їх пригадаємо. Щойно Intruder отримає запит, наше перше завдання — очистити автоматичні виділення та встановити точки ін’єкції (injection points) на вкладці Positions.

Burp Suite Turbo Intruder

Тепер час завантажити наші списки для фаззингу. Перейдіть на вкладку Payloads, що розташована поруч із вкладкою Positions, і натисніть кнопку Load, щоб вибрати потрібний словник. Для цього розділу ми модифікували список 10-million-password-list із репозиторію Daniel Miessler SecLists на GitHub, додавши туди облікові дані bee та bug.

На зображенні нижче видно, що кількість запитів перевищує 100 000. Це небагато, проте цілком достатньо, щоб ми могли визначити швидкість роботи сканера.

Щойно ми натиснули кнопку Start Attack, фаззер розпочав роботу. Йому знадобилося близько 60 секунд, щоб опрацювати лише 1700 запитів. Це дає нам швидкість приблизно 23 запити на секунду (RPS).

Burp Suite Turbo Intruder

Через Turbo Intruder

Спершу призупинимо роботу звичайного Intruder і перевіримо, яку швидкість продемонструє Turbo Intruder.

Повернемося на вкладку Intercept, виділимо позицію для корисного навантаження (пароль), а потім натиснемо праву кнопку миші, щоб відправити запит у Turbo Intruder.

Щойно ми вибрали опцію «Send to Turbo Intruder», перед нами з’явилося нове вікно. Давайте розберемося, що воно містить.

Система розділила це вікно на дві частини: у верхній відображається наш перехоплений запит, а в нижній — фрагмент Python-коду для керування атакою.

Розбір скрипта Turbo Intruder

У верхній секції із запитом (Request) ми бачимо, що обрана точка ін’єкції була замінена на символ %s — він позначає місце, куди підставлятиметься корисне навантаження.

У нижній секції знаходиться випадаючий список (Drop-down list) із готовими шаблонами Python-коду. Цей код можна модифікувати залежно від конкретного сценарію вашої атаки.

Burp Suite Turbo Intruder

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

Наразі скористаємося найбільш універсальним та поширеним скриптом у Turbo Intruder — examples/basic.py.

Щойно ми обрали цей шаблон, на екрані з’явився відповідний Python-код. Давайте розберемося, за що відповідає кожна його частина:

  • Скрипт у першому виділеному блоці відповідає за швидкість фаззингу та кількість з’єднань, які встановлює Turbo Intruder. Також він визначає кількість запитів на одне з’єднання.
  • У другому блоці нам потрібно вручну додати шлях до словника, вказавши його розташування у файловій системі.
  • Третій фрагмент коду є найважливішим розділом, оскільки він визначає, які саме результати будуть відображатися в підсумковій таблиці. Наприклад, рядок if req.status != 404: означає, що до таблиці потраплять усі запити, окрім тих, що повернули HTTP-статус 404.

Burp Suite Turbo Intruder

Модифікація конфігурації та запуск атаки

Тепер давайте підключимо наш словник, вказавши шлях до нього безпосередньо в коді скрипта.

Далі ми натискаємо кнопку Attack, щоб запустити наш фаззер. Як ми бачимо, за 73 секунди було відправлено лише 1029 запитів, що дає нам показник RPS (Requests per Second) на рівні 14.

Burp Suite Turbo Intruder

Можливо, ви зараз думаєте: «Він мав би бути швидшим за стандартний Intruder, проте швидкість Burp Intruder була 23 RPS, а тут — лише 14».

Таке сповільнення зумовлене стандартною конфігурацією в Python-скрипті, де параметр concurrentConnections (кількість одночасних з’єднань) був встановлений лише на 5, а requestsPerConnection (кількість запитів на одне з’єднання) — на 100. Щоб виправити це, давайте змінимо ці налаштування та перезапустимо атаку. Для цього натисніть кнопку Halt і встановіть відповідні значення.

concurrentConnections=20,
requestperConnetction=200,

І як тільки атака запускається з новими налаштуваннями, показник RPS миттєво злітає до 94, а всього за 3 секунди фаззер встигає відправити близько 280 запитів.

Аналіз результатів

Таким чином, для цієї атаки ми можемо констатувати, що швидкість приблизно в 4 рази вища, ніж у стандартного Intruder.

Проте під час атаки ви могли помітити, що з початком роботи фаззера значення retries (повторні спроби) починає зростати. Чи означає це, що запити не доходять до цілі?

Ні, це ознака того, що значення кількості запитів на одне з’єднання (requestsPerConnection) занадто високе для цього сервера. Це робить атаку менш оптимальною, тому нам варто втрутитися і зменшити цей показник удвічі.

Burp Suite Turbo Intruder

Пам’ятаєте, ми призупинили фаззинг в Intruder? Давайте відновимо його, а також перезапустимо нашу атаку в Turbo Intruder. Після цього зачекаємо кілька хвилин, щоб проаналізувати результати.

На зображенні нижче ми бачимо, що Turbo Intruder вже попереду з показником у 3000+ запитів, наочно демонструючи свою перевагу у швидкості.

Кастомізація Python-скриптів

У попередньому розділі ми згадували, що можемо маніпулювати Python-скриптом за власним бажанням. При цьому внесення змін не потребує глибоких навичок програмування — достатньо розуміти логіку того, що робить код.

Наприклад: ми хочемо, щоб у таблиці відображалися лише відповіді з кодом 302 Redirection (перенаправлення), ігноруючи 200 OK або 404 Error. Щоб досягти цього, нам потрібно лише відповідним чином змінити третій фрагмент коду:

Burp Suite Turbo Intruder

Тепер ми замінимо оператор «не дорівнює» (!=) на «дорівнює» (==) і зміним код 404 на 302. Таким чином, у підсумковій таблиці будуть відображатися лише запити з перенаправленням.

На зображенні нижче ми бачимо, що всього за 3 секунди ми отримали результат, відфільтрований і виведений у відповідні розділи таблиці.

Burp Suite Turbo Intruder

Фаззинг декількох параметрів

Можливо, ви вже використовували тип атаки Cluster Bomb у стандартному Intruder, який дозволяє фаззити додаток за кількома параметрами одночасно. У Turbo Intruder є аналогічна можливість завдяки спеціальному Python-скрипту у випадаючому списку. Цей скрипт дозволяє проводити атаку за принципом, схожим на Cluster Bomb. Давайте розглянемо це на практиці.

Повернемося на вкладку Proxy, виберемо потрібні параметри в запиті та натиснемо праву кнопку миші, щоб відправити його в Turbo Intruder.

There, over in the request portion, let’s set “%s” in order to select the injection points.

Burp Suite Turbo Intruder

Тепер у секції запиту (Request) встановіть символ %s у кожному місці, де ви хочете визначити точку ін’єкції.

Щойно ми обрали цей шаблон, перед нами з’явився готовий скрипт, який ми можемо редагувати під свої потреби.

Burp Suite Turbo Intruder

Давайте збільшимо швидкість, встановивши значення concurrentConnections на 20, а requestsPerConnection — на 200. Після цього ми пропишемо шляхи до словників для першого та другого параметрів.

І ось результат: щойно ми натиснули кнопку Attack, перед нами з’явилася таблиця з результатами. За кілька хвилин, відсортувавши список подвійним кліком по колонці Length, ми виявили відповідь із кодом 302 Redirection для комбінації bee/bug.

Burp Suite Turbo Intruder

[!] SYSTEM_INCOMPATIBILITY_REPORT

FATAL_ERROR: MOBILE_DISPLAY_NOT_SUPPORTED

The requested resource "exploit.com.ua" is optimized for desktop terminal environments only.

Mobile UI decoding is currently in progress...