Як захопити всі вхідні пакети до NIC, навіть ці пакети не належать мені


13

AFAIK, NIC отримує всі пакети з дроту в локальній мережі, але відхиляє ті пакети, адреса призначення яких не дорівнює їх ip.

Я хочу розробити додаток, який відстежує користування Інтернетом користувачів. Кожен користувач має фіксовану IP-адресу.

Я та деякі інші люди підключені до 8-портового 8-портового швидкого Ethernet-комутатора на робочому столі

Як було сказано раніше, я хочу зафіксувати всі трафіки від усіх користувачів не лише тих пакетів, які належать мені.

Як мені змусити мій NIC або інші компоненти отримати всі пакети?


1
Купіть дешевий і керований комутатор приблизно за 30 € і включіть дзеркальне відображення порту за посиланням на шлюз.
Макс Рійд

Відповіді:


27

AFAIK, NIC отримує всі пакети з дроту в локальній мережі, але відхиляє ті пакети, адреса призначення яких не дорівнює їх ip.

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

Утиліти захоплення пакетів можуть тривіально перевести мережевий пристрій у безладний режим, тобто сказати, що вищевказана перевірка обходить і пристрій приймає все, що отримує. Насправді це зазвичай за замовчуванням: з tcpdump, ви повинні вказати -pпараметр, щоб цього не зробити.

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

Для цього вам потрібно підключитися до спеціально налаштованого дзеркального або моніторингового порту на керованому Ethernet-комутаторі.


1
Або центр Ethernet ... якщо ви можете знайти одне іржавення на горищі :) Я сумніваюся, що такі є для 1000Base-T, хоча Вікіпедія каже, що гігабітні хаби підтримують лише половину дуплексних посилань, і вони тепер застарілі.
chx

1
@chx, усі справжні хаби підтримували лише напівдуплекс. Особисто я ніколи не бачив 1000Base-T.
Целада

Я вважаю, що це стосувалося повільного поглинання Gigabit Ethernet - хоча стандарт 802.3ab з'явився в 1999 році, процес поглинання був дуже повільним до 2003/2004 р., Коли Intel вперше випустила чіпсет 875P із спеціалізованою шиною CSA для Gigabit Ethernet, а потім У 2004 р. PCI Express взяв на себе остаточну пропускну здатність для Gigabit Ethernet. І до того часу вимикачі були досить дешевими.
chx

Перемикач Ethernet не завжди транслюватиме Рамки. У нього є власна таблиця комутації (містить карту порту комутатора та MAC-адресу) для видачі кадру. Якщо таблиця не містить записи для MAC у кадрі, вона транслює / заливає кадр. Ваш робочий стіл ніколи не отримає інших кадрів. Як і у відповіді, вам потрібно використовувати спеціальний комутатор для захоплення всіх кадрів, що надходять на ваш комутатор.
Валарпірай

8

На початку повідомляється про концентратори Ethernet (не комутатори), надіслані пакети доступні для всіх хостів у підмережі, але хости, які не є призначеним одержувачем, повинні ігнорувати.

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

Це ускладнює моніторинг / нюхання мережі, оскільки ви можете нюхати лише пакети, призначені для вашого хоста. Це вважалося гарною справою з точки зору безпеки, але з точки зору моніторингу мережі не дуже добре. Щоб зробити моніторинг роботи мережі, виробники реалізують функцію, яку називають дзеркальним відображенням портів. Це потрібно налаштувати на мережевому комутаторі, і наведене нижче посилання повинно вказувати вам у правильному напрямку для продуктів D-link. Ви знайдете його десь у вашому програмному забезпеченні для управління комутаторами або в інтерфейсі веб-адміністратора. Якщо ви не знайдете цих функцій, функціональність може не надаватися на цьому конкретному пристрої.

http://www.dlink.com/uk/en/support/faq/switches/layer-2-gigabit/dgs-series/es_dgs_1210_como_monitorear_trafico_de_un_puerto_port_mirroring


2

Спочатку потрібно перемкнути свій NIC в розрядний режим. Припустимо, що ваш інтерфейс NIC - eth0.

root@linux#ifconfig eth0 promesc

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

root@linux#macof -i eth0

Тоді ви можете використовувати wiresharkабо tcpdumpзахоплювати весь трафік.

root@linux#tcpdump -i eth0 -w outputfile

Якщо ви не перебуваєте в комутованій мережі, просто ввімкніть розмитий режим і користуйтеся tcpdump.


1
tcpdumpувімкне для вас розбещений режим. Вам не потрібно робити це (і не забудьте скасувати його, коли закінчите) вручну.
Селада

0

Ви винаходите колесо.

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

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

Якщо ви дійсно хочете бачити весь трафік, кожному користувачеві потрібно мати власну IP-мережу, а трафік до інших мереж здійснюється через шлюз за замовчуванням. Ви можете призначити / 28 для кожної людини, і вони можуть мати 14 IP-адрес для себе.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.