Як організувати mitm, використовуючи icmp redirect

Отже, нагадаю. MITM (man-in-the-middle) - загальна назва для типу атак, коли хакер отримує можливість маніпулювати трафіком, переданим між двома хостами. Сама класика - це ARP poisoning і DNS spoofing. Хоча ясна річ: і різних протоколів багато, і технологій, а тому методів є ще цілий пучок. З парочкою з них ми зараз і познайомимося.
Перший метод - ICMP redirect. Ця техніка заснована не на якийсь баг, а на цілком декларованої фиче протоколу. Але давай про все по порядку - спочатку загальна теорія.
Давай уявимо ситуацію. У нас є хост А і B, а також роутери R1 і R2 (див. Рис. 1).

Навіщо потрібен ICMP redirect

З хоста A дані треба послати на хост B, а на хості А в таблиці маршрутизації прописаний дефолтний шлях - через R1. Таким чином, коли хост А пошле пакет даних хосту B, він пошле їх через R1. R1, в свою чергу, отримавши цей пакет даних, подивиться таблицю маршрутизації і побачить, що для того, щоб переслати дані на хост B, він повинен відправити їх на роутер R2. І надішле їх на R2.
Але якщо на R1 включена нотифікація ICMP redirect, то R1 помітить, що R2 і хост A знаходяться в одному сегменті. А з цього, в свою чергу, випливає, що шлях безпосередньо від A до R2 і далі,
тобто без участі R1, буде раціональніше. Якщо все «сходиться», то R1 посилає на хост А повідомлення ICMP redirect. Якщо ОС хоста А підтримує такого виду повідомлення, то вона сама додасть новий маршрут в свою таблицю. Взагалі, за стандартом тільки мережеві девайси мають право відправляти такі повідомлення, але, як ти розумієш, для нас це прямий шлях для наших маніпуляцій :).
Тепер давай ближче до практики. Все, що нам потрібно в якості інструменту, - це відправляти ICMP redirect запити. Формат пакета - на рис. 2.

Формат пакета ICMP redirect

1. Ми повинні перебувати в тій же підмережі, що і хост нашої жертви (хост А).
2. Хост, роут до якого ми хочемо змінити (хост B), повинен перебувати в іншій підмережі.

Досить просто, але куди ж подівся той «слизький шматок»? За теорією, для того, щоб додати новий роут на хост, ми повинні в тіло ICMP redirect'а додати IP-заголовок і частина тіла пакета від хоста (рис. 3). Але звідки нам його взяти для атаки, якщо ми не бачимо даних між роутером і хостом? У теорії це стало б для нас нерешабельной проблемою, але на практиці все набагато простіше, так як винда не дивиться, «а посилала вона цей пакет». Головне, щоб було якесь «тіло». Крім того, відсутність цієї перевірки дозволяє додати нам в таблицю маршрутизації Рауса навіть до хостів, до яких наша жертва ніколи і не підключалася.

Як організувати mitm, використовуючи icmp redirect

рис 3. Пакет ICMP redirect «вживу»

Тепер практичний приклад. Загальний опис ситуації:
• 192.168.79.130 - жертва на Win XP;
• 192.168.79.137 - хост атакуючих, тобто нас;
• 192.168.79.2 - основний роутер жертви, він же «gateway»;
• 8.8.8.8 - DNS-сервер жертви (від Гугла).

Таким чином, ми знаходимося в одному сегменті з жертвою, а другий хост (8.8.8.8), роут до якого ми хочемо змінити і пустити дані через нас, знаходиться десь поза сегмента. Тобто спочатку дані від жертви йдуть через роутер до DNS-сервера, а після атаки будуть йти через нас.

Провести атаку можна різними ТУЛЗ - це і класичний Ettercap, і віндовий Intercepter-NG. Але мені сподобався Responder від SpiderLabs. Це набір тулзенок на Python'е, спеціально зроблений для різних атак в Windows-мережах. Атака проводиться всього
однією командою:

Схожі статті