Учебники

Сетевой анализатор пакетов

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

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

Другими словами, Sniffing позволяет видеть все виды трафика, как защищенного, так и незащищенного. В правильных условиях и с правильными протоколами на месте атакующая сторона может собирать информацию, которая может быть использована для дальнейших атак или вызвать другие проблемы для владельца сети или системы.

Что можно понюхать?

Можно прослушать следующую конфиденциальную информацию из сети —

  • Почтовый трафик
  • FTP пароли
  • Веб-трафик
  • Пароли Telnet
  • Конфигурация маршрутизатора
  • Сеансы чата
  • Трафик DNS

Как работает нюхание?

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

Случайный режим относится к уникальному способу оборудования Ethernet, в частности к сетевым интерфейсным платам (NIC), который позволяет NIC получать весь трафик в сети, даже если он не адресован этому NIC. По умолчанию сетевой адаптер игнорирует весь трафик, который ему не адресован, что делается путем сравнения адреса назначения пакета Ethernet с аппаратным адресом (MAC) устройства. Несмотря на то, что это имеет смысл для работы в сети, режим без случайных ошибок затрудняет использование программного обеспечения для мониторинга и анализа сети для диагностики проблем с подключением или учета трафика.

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

Типы нюхают

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

Пассивный нюхает

При пассивном сниффинге трафик блокируется, но никак не изменяется. Пассивное прослушивание позволяет только слушать. Работает с устройствами Hub. На устройстве-концентраторе трафик отправляется на все порты. В сети, которая использует концентраторы для подключения систем, все узлы в сети могут видеть трафик. Таким образом, злоумышленник может легко захватить проходящий трафик.

Хорошей новостью является то, что в последнее время хабы почти устарели. В большинстве современных сетей используются коммутаторы. Следовательно, пассивное нюхание более не эффективно.

Активный нюхающий

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

Ниже приведены методы активного нюхания —

  • MAC Flooding
  • Атаки DHCP
  • Отравление DNS
  • Поддельные атаки
  • ARP Отравление

Влияние обнюхивания на протоколы

Протоколы, такие как проверенный и действительный TCP / IP, никогда не разрабатывались с учетом требований безопасности. Такие протоколы не оказывают большого сопротивления потенциальным злоумышленникам. Ниже приведены различные протоколы, которые легко поддаются анализу.

HTTP

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

SMTP (простой протокол передачи почты)

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

NNTP (сетевой протокол передачи новостей)

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

POP (протокол почтового отделения)

POP строго используется для получения писем с серверов. Этот протокол не включает защиту от перехвата, потому что он может быть захвачен.

FTP (протокол передачи файлов)

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

IMAP (протокол доступа к сообщениям в Интернете)

IMAP по своим функциям аналогичен SMTP, но он очень уязвим для сниффинга.

Telnet

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

Снифферы — это не тупые утилиты, которые позволяют просматривать только живой трафик. Если вы действительно хотите проанализировать каждый пакет, сохраните перехват и просмотрите его всякий раз, когда позволяет время.

Реализация с использованием Python

Перед реализацией необработанного анализатора сокетов давайте разберемся с методом struct, описанным ниже:

struct.pack (fmt, a1, a2,…)

Как следует из названия, этот метод используется для возврата строки, которая упакована в соответствии с заданным форматом. Строка содержит значения a1, a2 и т. Д.

struct.unpack (fmt, string)

Как следует из названия, этот метод распаковывает строку в соответствии с заданным форматом.

В следующем примере необработанного IP-заголовка анализатора сокета, который представляет собой следующие 20 байтов в пакете, и среди этих 20 байтов нас интересуют последние 8 байтов. Последние байты показывают, анализируют ли IP-адрес источника и назначения —

Теперь нам нужно импортировать некоторые основные модули следующим образом:

import socket
import struct
import binascii

Теперь мы создадим сокет, который будет иметь три параметра. Первый параметр говорит нам об интерфейсе пакета — PF_PACKET для Linux и AF_INET для Windows; второй параметр говорит нам, что это необработанный сокет, а третий параметр сообщает нам о протоколе, который нас интересует, — 0x0800, используемом для протокола IP.

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket. htons(0x0800))

Теперь нам нужно вызвать метод recvfrom () для получения пакета.

while True:
   packet = s.recvfrom(2048)

В следующей строке кода мы разрываем заголовок Ethernet —

ethernet_header = packet[0][0:14]

В следующей строке кода мы анализируем и распаковываем заголовок с помощью метода struct

eth_header = struct.unpack("!6s6s2s", ethernet_header)

Следующая строка кода вернет кортеж с тремя шестнадцатеричными значениями, преобразованными в hexify в модуле binascii

print "Destination MAC:" + binascii.hexlify(eth_header[0]) + " Source MAC:" + binascii.hexlify(eth_header[1]) + " Type:" + binascii.hexlify(eth_header[2])

Теперь мы можем получить IP-заголовок, выполнив следующую строку кода:

ipheader = pkt[0][14:34]
ip_header = struct.unpack("!12s4s4s", ipheader)
print "Source IP:" + socket.inet_ntoa(ip_header[1]) + " Destination IP:" + socket.inet_ntoa(ip_header[2])

Точно так же мы можем также проанализировать заголовок TCP.