Самі Камкар (відомий дослідник безпеки, відомий створенням різних складних пристроїв для атаки, таких як кейлоггер на зарядному пристрої USB) представив нову техніку атаки під назвою "NAT slipstreaming".
Напад дозволяє, відкриваючи сторінку в браузері, встановити з'єднання із сервером зловмисника на будь-який порт UDP або TCP в системі користувача, що знаходиться за перекладачем адрес. Набір інструментів Attack опублікований на GitHub.
Метод спирається на обман механізму відстеження з’єднання ALG (Шлюзи рівня додатків) у перекладачах адрес або брандмауерах, що використовується для організації переадресації NAT протоколів, що використовують кілька мережевих портів (один для даних та один для управління), наприклад SIP. H323, IRC DCC та FTP.
Атака застосовується до користувачів, які підключаються до мережі використовуючи внутрішні адреси з діапазону інтрамережі (192.168.xx, 10.xxx) і дозволяє передавати будь-які дані на будь-який порт (без заголовків HTTP).
Щоб здійснити напад, жертві достатньо виконати код JavaScript, підготовлений зловмисникомНаприклад, відкривши сторінку на веб-сайті зловмисника або переглянувши шкідливу рекламу на законному веб-сайті.
На першому етапі зловмисник отримує інформацію про внутрішню адресу користувача, Це може бути визначено WebRTC або, якщо WebRTC вимкнено, атаками грубої сили з вимірюванням часу відгуку при запиті прихованого зображення (для існуючих хостів спроба запитувати зображення швидше, ніж для неіснуючих через час очікування перед поверненням відповіді TCP RST).
На другому етапі код JavaScript виконується в браузері жертви генерує великий запит HTTP POST (який не поміщається в пакет) до сервера зловмисника за допомогою нестандартного номера мережевого порту для ініціювання налаштування параметрів фрагментації TCP та розміру MTU на стеці TCP жертви.
У відповідь: сервер зловмисника повертає TCP-пакет із опцією MSS (Максимальний розмір сегмента), який визначає максимальний розмір отриманого пакета. У випадку з UDP маніпуляції подібні, але покладаються на надсилання великого запиту WebRTC TURN для запуску фрагментації на рівні IP.
«NAT Slipstreaming використовує браузер користувача у поєднанні з механізмом відстеження з’єднання Application Level Gateway (ALG), вбудованим у NAT, маршрутизатори та брандмауери, прив’язуючи внутрішнє вилучення IP за допомогою часової атаки або WebRTC, виявлення фрагментації автоматизованого віддаленого IP та MTU, масажування розміру пакета TCP, неправильного використання автентифікації TURN, точного контролю меж пакетів та плутанини протоколів від зловживання браузером ", - сказав Камкар в аналізі.
Головна ідея така що, знаючи параметри фрагментації, може відправити великий HTTP-запит, черга якого потраплятиме на другий пакет. У той же час черга, яка надходить у другий пакет, вибирається таким чином, щоб вона не містила заголовки HTTP і обрізалася на дані, які повністю відповідають іншому протоколу, для якого підтримується обхід NAT.
На третьому етапі, використовуючи вищезазначені маніпуляції, код JavaScript генерує та надсилає спеціально вибраний HTTP-запит (або TURN для UDP) на TCP-порт 5060 сервера зловмисника, який після фрагментації буде розділений на два пакети: пакет із заголовками HTTP та частиною даних та дійсним SIP-пакетом із внутрішнім IP-адресою жертви.
Система відстеження з'єднань на мережевому стеку вважатиме цей пакет початком сеансу SIP і це дозволить переадресацію пакетів для будь-якого порту, обраного зловмисником, за умови, що цей порт використовується для передачі даних.
Атаку можна здійснити незалежно від використовуваного браузера. Щоб вирішити проблему, розробники Mozilla запропонували заблокувати можливість надсилання HTTP-запитів на мережеві порти 5060 та 5061, пов'язані з протоколом SIP.
Розробники двигунів Chromium, Blink та WebKit також планують застосувати подібний захід захисту.
Фуенте: https://samy.pl