Как использовать tcpdump для захвата всех пакетов в локальной сети?

0

У меня дома используется беспроводной маршрутизатор, один ноутбук с Linux и подключенный к нему Android. Допустим, у linux есть ip 10.5.5.1, mac AA: AA: AA: AA: AA: AA: AA, а у Android 10.5.5.2, mac AA: AA: AA: AA: AA: AA: AB.

Пакеты, отправляемые на мой андроид, тоже должны доходить до Linux, tcpdump просто игнорирует их, я думаю.

Есть ли способ, которым я могу использовать tcpdump на моем Linux, чтобы получить пакеты, отправленные на мой Android? Tcpdump просто захватывает пакеты, которые проходят через канальный и сетевой уровень?

Благодарю.

dspjm
источник

Ответы:

1

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

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

чтобы достичь своей цели, вам нужно перевести коммутатор в беспорядочный режим на порт, подключенный к вашей машине Linux, чтобы весь трафик на коммутаторе был виден вашему процессу tcpdump.

В большинстве случаев лучший способ сделать это - купить коммутатор, поддерживающий зеркалирование портов, и настроить его на отправку всего трафика на второй сервер в вашей Linux-системе.

если вы хотите воспользоваться этой возможностью, ознакомьтесь с этими инструкциями по подготовке сети к SNORT. http://www.symantec.com/connect/articles/complete-snort-based-ids-architecture-part-one

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

не уверен насчет последней части вашего вопроса. все пакеты используют сетевой и канальный уровень, и TCPdump может регистрировать протоколы l2, такие как ARP, и протоколы не-IP на уровне l3 (ICMP), так что да и нет, я полагаю?

Frank Thomas
источник
Спасибо за ответ, что если я поменяю mac-адрес моего linux-бокса на тот же, что и у моего андроида, он получит пакеты, по крайней мере, частично примет пакет, отправленный на мой андроид? Нужно ли мне тоже менять свой ip на linux?
dspjm
нет, это может привести к тому, что ваша сеть вообще не будет работать (будет работать только первое устройство, которое подключилось после перезагрузки коммутатора). вы никогда не можете иметь дубликаты Mac в вашей локальной сети. Вы рассматривали возможность отладки на устройстве Android? kandroid.org/online-pdk/guide/tcpdump.html , вам может понадобиться рутованное устройство для его запуска.
Frank Thomas
0

Если вы подключаете (или можете подключить) ваш ноутбук и устройство Android без проводов на точку доступа Wi-Fi, и если вы используете только WEP или не используете защиту на точке доступа Wi-Fi, то ваш ноутбук, вероятно, сможет видеть и декодировать весь трафик на ваше устройство Android и обратно.

Возможно, вам придется ограничить вашу точку доступа более старыми схемами модуляции 802.11, которые легче получить надежно (например, отключив 802.11n, чтобы он просто выполнял 802.11g), и / или поместите свой ноутбук так, чтобы он находился «между» точкой доступа и точкой доступа. Android-устройство.

Технически возможно отслеживать трафик Wi-Fi устройства Android, даже если вы используете шифрование WPA-PSK или WPA2-PSK, но это сложнее, потому что вам нужно захватить первые несколько пакетов, когда устройство Android подключается или присоединяется к сети. Отключение шифрования решает эту проблему, как и переключение на старый добрый WEP, потому что каждый в данной сети WEP постоянно использует один и тот же ключ.

И да, tcpdump увидит эти пакеты, потому что по умолчанию он работает в случайном режиме, если вы не добавите -p аргумент, чтобы отключить его. tcpdump не способен расшифровать WEP (или WPA или WPA2), поэтому вам придется использовать Wireshark (или "tshark" Wireshark, если вам действительно нравятся инструменты командной строки), чтобы сделать это.

Spiff
источник