OS X Scapy Promiscuous Mode

Я использую scapy, чтобы попытаться перечислить все заголовки http-хоста, отправленные в мою сеть. Код, который у меня сейчас есть, такой:

#!/usr/bin/env python
import sys
sys.path.append("/usr/local/lib/python2.7/site-packages")
import re
from scapy.all import *
import os
import urllib


conf.sniff_promisc=True

HOST_REGEX = "(?<=\r\nHost\: )([A-Za-z\.]){4,40}(?=\r\n)"

def print_host_header(pckt):
  if pckt:
    raw = pckt.getlayer(Raw)
    if raw:
      raw_pckt_data = raw.load
      host_results = re.search(HOST_REGEX, raw_pckt_data)
      if host_results:
        print "[*] Request to: "+str(host_results.group(0))
if __name__ == "__main__":
  if os.getuid()!=0:
    print "[!] Not running as root."
    exit(1)
  sniff(filter='tcp', prn=print_host_header, store=0)

Это работает очень хорошо (очевидно, что он не может читать трафик, зашифрованный с помощью ssl/tls), но я, похоже, не собираю пакеты не с моего ноутбука (который является компьютером, на котором выполняется скрипт). Я поставил conf.promisc в true и согласно ifconfig я нахожусь в беспорядочном режиме:

735Tesla # ifconfig en1
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    ether 60:c5[...]
    inet6 fe80::62c5:47ff:fe8b:3768%en1 prefixlen 64 scopeid 0x5 
    inet 192.168.1.8 netmask 0xffffff00 broadcast 192.168.1.255
    nd6 options=1<PERFORMNUD>
    media: autoselect
    status: active
735Tesla # 

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

Я использую OS X 10.9.1 (мне действительно нужно обновить или исправить ошибку, я полагаю:P)

2 ответа

Решение

Если en1 такое адаптер Ethernet, какие еще машины в сети подключены к нему? Является en1 подключен к выключателю? Если это так, обратитесь к странице Wireshark Wiki о захвате в сетях Ethernet.

Если en1 это адаптер Wi-Fi, вам нужно будет снимать в режиме монитора; Я не знаю, что поддерживает Scapy для включения режима монитора, но вам может потребоваться установить тип заголовка канального уровня на "802.11 с заголовками радиоленты", чтобы перейти в режим мониторинга. В режиме мониторинга, если сеть является "защищенной" сетью (с использованием шифрования WEP или WPA/WPA2), вам также придется расшифровывать пакеты на канальном уровне - Scapy может не иметь никакой поддержки для этого.

Вот очень глубокое объяснение Wireshark по этой теме: http://www.wireshark.org/faq.html

В 7.1: Когда я использую Wireshark для захвата пакетов, почему я вижу только пакеты на мою машину и с нее, или не вижу весь трафик, который я ожидаю увидеть с или на машину, которую я пытаюсь отслеживать?

A: Это может быть связано с тем, что интерфейс, на котором вы снимаете, подключен к коммутатору Ethernet или Token Ring; в коммутируемой сети одноадресный трафик между двумя портами не обязательно будет отображаться на других портах - только широковещательный и многоадресный трафик будут отправляться на все порты. Обратите внимание, что даже если ваша машина подключена к концентратору, "концентратор" может быть коммутируемым концентратором, и в этом случае вы все еще находитесь в коммутируемой сети. Также обратите внимание, что на веб-сайте Linksys говорится, что их концентраторы с автоматическим определением "транслируют пакеты 10 МБ на порт, который работает только на 10 МБ, и транслируют пакеты 100 МБ на порты, которые работают только на 100 МБ", что указывает на то, что если вы нюхаете порт 10 МБ, вы не увидите трафика, отправляемого на порт 100 МБ, и наоборот. Об этой проблеме также сообщалось для двухскоростных концентраторов Netgear, и она может существовать для других концентраторов с автоматическим определением или с двумя скоростями. Некоторые коммутаторы имеют возможность реплицировать весь трафик на всех портах на один порт, так что вы можете подключить свой анализатор к этому единственному порту, чтобы прослушивать весь трафик. Вам нужно будет проверить документацию на коммутатор, чтобы увидеть, возможно ли это, и, если да, узнать, как это сделать. Обратитесь к справочной странице по коммутаторам на Wireshark Wiki для получения информации о некоторых коммутаторах. (Обратите внимание, что это Wiki, так что вы можете самостоятельно обновить или исправить эту информацию, или добавить дополнительную информацию об этих коммутаторах или информацию о новых коммутаторах.) Обратите также внимание, что во многих брандмауэрах /NAT-боксах встроен коммутатор; это включает много коробок "Cable/DSL router". Если у вас есть коробка такого типа, в которой есть коммутатор с некоторым количеством портов Ethernet, к которому вы подключаете компьютеры в сети, и другой порт Ethernet, используемый для подключения к кабельному или DSL-модему, вы можете, по крайней мере, прослушивать трафик. между компьютерами в сети и Интернетом, подключив порт Ethernet к маршрутизатору, идущему к модему, порт Ethernet модема и компьютер, на котором вы запускаете Wireshark, в концентратор (убедитесь, что это не коммутатор и что, если это двухскоростной концентратор, все три из этих портов работают с одинаковой скоростью., Если ваша машина не подключена к коммутируемой сети или двухскоростному концентратору, или она подключена к коммутируемой сети, но порт настроен на репликацию всего трафика, проблема может заключаться в том, что сетевой интерфейс, который вы захватываете, не поддерживает "случайный" режим, или из-за того, что ваша ОС не может перевести интерфейс в случайный режим. Обычно сетевые интерфейсы предоставляют только хосту:

  • пакеты, отправленные на один из адресов канального уровня этого хоста;
  • широковещательные пакеты;
  • многоадресные пакеты отправляются на многоадресный адрес, который хост настроил для приема интерфейса.

Большинство сетевых интерфейсов также могут быть переведены в "беспорядочный" режим, в котором они предоставляют хосту все сетевые пакеты, которые они видят. Wireshark будет пытаться перевести интерфейс, на котором он захватывает, в случайный режим, если в диалоговом окне "Параметры захвата" не отключена опция "Захватывать пакеты в случайном режиме", а TShark попытается перевести интерфейс, на котором он захватывает, в случайный режим. режим, если не была указана опция -p. Однако некоторые сетевые интерфейсы не поддерживают беспорядочный режим, а некоторые операционные системы могут не позволять переводить интерфейсы в беспорядочный режим. Если интерфейс не работает в случайном режиме, он не увидит трафика, который не предназначен для просмотра вашей машиной. Он увидит широковещательные пакеты и многоадресные пакеты, отправленные на многоадресный MAC-адрес, для которого настроен интерфейс. Вы должны спросить поставщика вашего сетевого интерфейса, поддерживает ли он случайный режим. Если это произойдет, вы должны спросить, кто бы ни предоставил драйвер для интерфейса (поставщик или поставщик ОС, на которой вы работаете на вашем компьютере), поддерживает ли он случайный режим с этим сетевым интерфейсом. В случае интерфейсов Token Ring, драйверы для некоторых из них в Windows могут потребовать включения случайного режима для захвата в случайном режиме. Для получения дополнительной информации см. Вики-материал Wireshark на Захвате Token Ring. В случае интерфейсов беспроводной локальной сети, кажется, что, когда эти интерфейсы беспорядочно сниффинг, они работают в режиме, существенно отличном от режима, в котором они работают, когда они просто действуют как сетевые интерфейсы (в той степени, в которой это это будет значительным усилием для тех драйверов, которые будут поддерживать разборчивый анализ и действовать как обычные сетевые интерфейсы одновременно), поэтому может оказаться, что драйверы Windows для этих интерфейсов не поддерживают разнородный режим.

Другие вопросы по тегам