Как перехватить все входящие пакеты на NIC, даже если эти пакеты не принадлежат мне

13

AFAIK, NIC получает все пакеты от проводной сети в локальной сети, но отклоняет те пакеты, чей адрес назначения не равен его ip.

Я хочу разработать приложение, которое отслеживает использование Интернета пользователями. У каждого пользователя есть фиксированный IP-адрес.

Я и некоторые другие люди подключены к неуправляемому настольному коммутатору Fast Ethernet DES-108 с 8 портами

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

Как заставить мой сетевой адаптер или другие компоненты получать все пакеты?

m.r226
источник
1
Купите дешевый управляемый коммутатор примерно за 30 € и включите зеркалирование портов по ссылке на шлюз.
Макс

Ответы:

27

AFAIK, NIC получает все пакеты от проводной сети в локальной сети, но отклоняет те пакеты, чей адрес назначения не равен его ip.

Исправление: он отклоняет те пакеты, у которых их MAC- адрес назначения не равен его MAC-адресу (или групповой адресации или любых дополнительных адресов в его фильтре.

Утилиты захвата пакетов могут легко перевести сетевое устройство в беспорядочный режим, то есть обойти вышеупомянутую проверку, и устройство принимает все, что получает. Фактически это обычно значение по умолчанию: с tcpdump, вы должны указать -pопцию, чтобы не делать этого.

Более важная проблема заключается в том, переносятся ли пакеты, которые вас интересуют, даже по проводам на ваш снифф-порт. Поскольку вы используете неуправляемый коммутатор Ethernet, это почти наверняка не так. Коммутатор решает удалить пакеты, которые не принадлежат вам, с вашего порта, прежде чем ваше сетевое устройство сможет надеяться увидеть их.

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

Celada
источник
1
Или Ethernet-концентратор ... если вы можете найти один ржавый на чердаке :) Я сомневаюсь, что есть какие-либо для 1000Base-T, однако, Википедия говорит, что гигабитные концентраторы поддерживают только полудуплексные соединения, и сейчас они устарели.
chx
1
@chx, все настоящие хабы поддерживают только полудуплекс. Лично я никогда не видел 1000Base-T.
Celada
Я считаю, что это было связано с медленным внедрением Gigabit Ethernet - хотя стандарт 802.3ab вышел в 1999 году, внедрение было очень медленным до 2003/2004 года, когда Intel впервые выпустила чипсет 875P с выделенной шиной CSA для Gigabit Ethernet, а затем в 2004 году PCI Express приобрел достаточную пропускную способность для Gigabit Ethernet. И к тому времени коммутаторы были достаточно дешевы.
chx
Ethernet-коммутатор не всегда транслирует кадры. Он имеет свою собственную таблицу коммутации (содержит карту порта коммутатора и MAC-адрес) для одноадресной передачи кадра. Если в таблице нет записи для MAC в кадре, то она передает / заливает кадр. Ваш рабочий стол никогда не получит другие фреймы. Как и в ответе, вы должны использовать специальный переключатель для захвата всех кадров, которые поступают на ваш переключатель.
Валарпирай,
8

В ранних версиях о концентраторах Ethernet (не коммутаторах) отправленные пакеты доступны всем хостам в подсети, но хосты, которые не являются предполагаемым получателем, должны игнорироваться.

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

Это усложняет мониторинг / анализ сети, поскольку вы можете прослушивать только пакеты, предназначенные для вашего хоста. С точки зрения безопасности это считалось хорошим, но с точки зрения мониторинга сети - не очень хорошим. Для обеспечения мониторинга сети поставщики реализуют функцию, называемую зеркалированием портов. Это должно быть настроено на сетевом коммутаторе, и ссылка ниже должна указывать правильное направление для продуктов 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 - это 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

Вы изобретаете колесо.

Предполагая, что у вас есть простая сеть с клиентами, подключающимися к коммутаторам, со шлюзом по умолчанию в Интернет, тогда вам нужно только отслеживать на этом шлюзе по умолчанию. Это будет задвижка, чтобы показать весь трафик между клиентом локальной сети и интернетом.

Я предполагаю, что трафик между клиентом локальной сети и клиентом локальной сети не представляет интереса, поскольку при наличии всех IP-адресов в одной подсети IP локальный трафик не затрагивает шлюз по умолчанию.

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

Ваш средний домашний маршрутизатор не справится с большой частью этого, вам нужно будет изучить специальный брандмауэрный дистрибутив. Лично pfsense была бы моей идеей, но вариантов много.

Criggie
источник