вторник, 3 мая 2011 г.

Wireshark - практика перехвата




1. Введение

В статье рассмотрены некоторые небезопасные протоколы передачи данных, продемонстрированы способы перехвата конфиденциальной информации, передающейся по ним, предложены пути решения этих проблем.
Термин снифер происходит от английского «to sniff» – нюхать – и представляет собой программу или программно-аппаратное устройство, предназначенное для перехвата и последующего анализа, либо только анализа сетевого трафика, предназначенного для других узлов.
Перехват трафика может осуществляться:
  • обычным «прослушиванием» сетевого интерфейса (метод эффективен при использовании в сегменте концентраторов (хабов) вместо коммутаторов (свитчей), в противном случае метод малоэффективен, поскольку на снифер попадают лишь отдельные фреймы);
  • подключением снифера в разрыв канала;
  • ответвлением (программным или аппаратным) трафика и направлением его копии на снифер;
  • через анализ побочных электромагнитных излучений и восстановление таким образом прослушиваемого трафика;
  • через атаку на канальном (MAC-spoofing) или сетевом уровне (IP-spoofing), приводящую к перенаправлению трафика жертвы или всего трафика сегмента на снифер с последующим возвращением трафика в надлежащий адрес.
В начале 1990-х широко применялся хакерами для захвата пользовательских логинов и паролей, которые в ряде сетевых протоколов передаются в незашифрованном или зашифрованном слабыми алгоритмами виде. Широкое распространение концентраторов позволяло захватывать трафик без больших усилий в больших сегментах сети практически без риска быть обнаруженным.
Сниферы применяются как в благих, так и в деструктивных целях. Анализ прошедшего через снифер трафика позволяет:
  • обнаружить паразитный, вирусный и закольцованный трафик, наличие которого увеличивает загрузку сетевого оборудования и каналов связи (сниферы здесь малоэффективны; как правило, для этих целей используют сбор разнообразной статистики серверами и активным сетевым оборудованием и её последующий анализ);
  • выявить в сети вредоносное и несанкционированное ПО, например, сетевые сканеры, флудеры, троянские программы, клиенты пиринговых сетей и другие (это обычно делают при помощи специализированных сниферов — мониторов сетевой активности);
  • перехватить любой незашифрованный (а порой и зашифрованный) пользовательский трафик с целью получения паролей и другой информации;
  • локализовать неисправность сети или ошибку конфигурации сетевых агентов (для этой цели сниферы часто применяются системными администраторами).
Поскольку в «классическом» снифере анализ трафика происходит вручную, с применением лишь простейших средств автоматизации (анализ протоколов, восстановление TCP-потока), то он подходит для анализа лишь небольших его объёмов.
Как ни странно, в природе существует великое множество сниферов, поэтому их разделяют на категории:
  • HTTP сниферы (HTTP Analyzer, IEWatch Professional, EffeTech HTTP Sniffer), перехватывают HTTP заголовки;
  • принт сниферы (O&K Print Watch, PrintMonitor, Print Inspector), позволяют контролировать и управлять процессом печати в сети;
  • анализаторы протоколов (Wireshark, TracePlus32 Web Detective, CommView);
  • сниферы IM систем (MSN Shiffer, ICQ Sniffer, AIM Sniff, IM-Sniffer), предоставляют перехваченную переписку в удобно читаемом виде;
  • парольные сниферы (Cain & Abel, Ace Password Sniffer), перехватывают и контролируют разнообразные пароли;
  • сниферы беспроводных сетей (Kismet, airodump-ng, CommView for WiFi), перехватывают трафик беспроводных сетей даже без подключения к этим сетям;
  • пакетные сниферы (Network Probe, Etherscan Analyzer).
2. Wireshark: основы

Wireshark – это анализатор сетевого трафика. Его задача состоит в том, чтобы перехватывать сетевой трафик и отображать его в детальном виде. Анализатор сетевого трафика можно сравнить с измерительным устройством, которое используется для просмотра того, что происходит внутри сетевого кабеля, как например вольтметр используется электриками для того чтобы узнать что происходит внутри электропроводки (но, конечно, на более высоком уровне). В прошлом такие инструменты были очень дорогостоящими и проприетарными. Однако, с момента появления такого инструмента как Wireshark ситуация изменилась. Wireshark – это один из лучших анализаторов сетевого трафика, доступных на сегодняшний момент. Wireshark работает на основе библиотеки pcap. Библиотека Pcap (Packet Capture) позволяет создавать программы анализа сетевых данных, поступающих на сетевую карту компьютера. Разнообразные программы мониторинга и тестирования сети, сниферы используют эту библиотеку. Она написана для использования языка С/С++ так что другие языки, такие как Java, .NET и скриптовые языки использовать не рационально. Для Unix-подобных систем используют libpcap библиотеку, а для Microsoft Windows NT используют WinPcap библиотеку. Программное обеспечение сетевого мониторинга может использовать libpcap или WinPcap, чтобы захватить пакеты, путешествующие по сети и в более новых версиях для передачи пакетов в сети. Libpcap и WinPcap также поддерживают сохранение захваченных пакетов в файл и чтение файлов содержащих сохранённые пакеты. Программы написанные на основе libpcap или WinPcap могут захватить сетевой трафик, анализировать его. Файл захваченного траффика сохраняется в формате, понятном для приложений, использующих Pcap.

2.1 Для чего используется Wireshark?
  • Системные администраторы используют его для решения проблем в сети.
  • Аудиторы безопасности используют его для выявления проблем в сети.
  • Разработчики используют его для отладки сетевых приложений.
  • Обычные пользователи используют его для изучения внутреннего устройства сетевых протоколов.

2.2 Возможности Wireshark
  • Работает на большинстве современных ОС (Microsoft Windows, Mac OS X, UNIX). Wireshark – продукт с открытым исходным кодом, распространяемый на основании лицензии GPL. Его можно использовать на любом количестве компьютеров, не опасаясь за ввод лицензионных ключей, продление лицензии и другие неприятные мероприятия. Поэтому сообществу очень легко добавлять в него поддержку новых протоколов в виде плагинов или напрямую вшить её в исходный код.
  • Перехват трафика сетевого интерфейса в режиме реального времени. Wireshark может перехватывать трафик различных сетевых устройств, отображая его имя (включая беспроводные устройства). Поддерживаемость того или иного устройства зависит от многих факторов, например от операционной системы.
  • Множество протокольных декодировщиков (TELNET, FTP, POP, RLOGIN, ICQ, SMB, MySQL, HTTP, NNTP, X11, NAPSTER, IRC, RIP, BGP, SOCKS 5, IMAP 4, VNC, LDAP, NFS, SNMP, MSN, YMSG и другие).
  • Сохранение и открытие ранее сохраненного сетевого трафика.
  • Импорт и экспорт файлов из других пакетных анализаторов. Wireshark может сохранять перехваченные пакеты в большое количество форматов других пакетных анализаторов, например: libpcap, tcpdump, Sun snoop, atmsnoop, Shomiti/Finisar Surveyor, Novell LANalyzer, Microsoft Network Monitor, AIX's iptrace.
  • Позволяет фильтровать пакеты по множеству критерий.
  • Позволяет искать пакеты по множеству критерий.
  • Позволяет подсвечивать захваченные пакеты разных протоколов.
  • Позволяет создавать разнообразную статистику.
Ниже перечислены некоторые вещи, которые Wireshark делать не умеет.
  • Wireshark – это не система обнаружения вторжений. Он не предупредит о том, если кто-то делает странные вещи в сети. Однако если это происходит, Wireshark поможет понять что же на самом деле случилось.
  • Wireshark не умеет генерировать сетевой трафик, он может лишь анализировать имеющийся. В целом, Wireshark никак не проявляет себя в сети, кроме как при резолвинге доменных имен, но и эту функцию можно отключить.

2.3 Установка

Сразу предупреждаю тех кто юзает *nix обычный пользователь не имеет привилегий слушать интерфейсы, поэтому запускайте Wireshark через sudo.

Установка снифера Wireshark под Windows является тривиальной задачей и производится мастером установки.Если на компьютере отсутствует библиотека WinPcap, то она будет установлена вместе со снифером. На шаге выбора компонентов можно установить некоторые сопутствующие инструменты:
  • TShark – консольный анализатор сетевого трафика;
  • Rawshark – фильтр «сырых» пакетов;
  • Editcap – утилита, позволяющая открывать сохраненные пакетные дампы и изменять их;
  • Text2Pcap – утилита для конвертации HEX-дампов (побайтовое представление) пакетов в формат Pcap;
  • Mergecap – утилита для соединения нескольких дампов в один файл;
  • Capinfos – утилита для предоставления информации о сохраненных дампах;
  • Некоторые плагины расширенной статистики.
Сразу после установки снифер готов к работе.

2.4 Интерфейс Wireshark

Интерфейс программы Wireshark представлен на рисунке 1.


Рисунок 1 – Главное окно программы Wireshark

Рассмотрим интерфейс более подробно. Сверху находится стандартные для Windows приложений меню и тулбар, на них подробно останавливаться смысла не имеет. Далее следует фильтр, в нем можно задавать критерии фильтрации пакетов, подробное описание работы с ним рассмотрим позже. Следом идет окошко со списком всех перехваченных пакетов. В нем доступна такая информация как: номер пакета, относительное время получения пакета (отсчет производится от первого пакета; параметры отображения времени можно изменить в настройках), IP адрес отправителя, IP адрес получателя, протокол, по которому пересылается пакет, а также дополнительная информация о нем. Как можно заметить, разные протоколы подсвечены разными цветами, что добавляет наглядности и упрощает анализ. Далее видно окно, в котором представлена детальная информация о пакете согласно сетевой модели OSI (подробнее см. Википедию). Ну, и самое нижнее окно показывает нам пакет в сыром HEX виде, то есть побайтово. Конфигурация интерфейса может быть легко изменена в меню View. Например, можно убрать окно побайтового представления пакета (оно же Packet Bytes в меню View), так как в большинстве случаев (кроме анализа данных в пакете) оно не нужно и только дублирует информацию из окна детального описания.

2.5 Перехват трафика

Перехват трафика является одной из ключевых возможностей Wireshark. Движок Wireshark по перехвату предоставляет следующие возможности:
  • перехват трафика различных видов сетевого оборудования (Ethernet, Token Ring, ATM и другие);
  • прекращение перехвата на основе разных событий: размера перехваченных данных, продолжительность перехвата по времени, количество перехваченных пакетов;
  • показ декодированных пакетов во время перехвата;
  • фильтрация пакетов с целью уменьшить размер перехваченной информации;
  • запись дампов в несколько файлов, если перехват продолжается долго.
    Движок не может выполнять следующие функции:
  • перехват трафика с нескольких сетевых интерфейсов одновременно (однако, существует возможность запустить несколько копий Wireshark – каждая для своего интерфейса);
  • прекращение перехвата в зависимости от перехваченной информации.
Чтобы начать перехват трафика нужно иметь права Администратора на данной системе и выбрать правильный сетевой интерфейс. Итак, начнем. Чтобы выбрать сетевой адаптер, с которого будет выполняться перехват нужно нажать на кнопку Interfaces на тулбаре, либо их меню Capture > Interfaces… (отмечены красным цветом на рисунке 2).


Рисунок 2 – Выбор интерфейса для перехвата

После нажатия на одну из этих кнопок появится окно со списком сетевых интерфейсов, доступных в системе (рисунок 3).


Рисунок 3 – Список сетевых интерфейсов

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


Рисунок 4 – Настройки перехвата


Рисунок 5 – Информация об интерфейсе

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

3. Практика перехвата

После нажатия на кнопку Start начался перехват пакетов. Если сетевая активность высокая, то можно сразу увидеть массу непонятных входящих или исходящих пакетов. Они нас пока мало волнуют, сейчас мы займемся изучением всем известной утилиты ping.

3.1 Утилита ping

Нажмем Win+R и введем в строке выполнить cmd. Откроется консоль, введем там команду ping , как показано на рисунке 6. IP адрес следует писать, исходя из конфигурации конкретной сети.



Рисунок 6 – Выполнение команды ping

Теперь, если опрос хоста прошел так же успешно, как показано на рисунке, откроем окно Wireshark, чтобы посмотреть на это более подробно. Там мы скорее всего увидим полный бардак и разбираться в этом нужно будет очень долго. Тут нам на помощь и придут фильтры! Утилита ping работает по протоколу ICMP, поэтому впишем название этого протокола в строку фильтра и нажмем Apply. Должно получиться нечто похожее на рисунок 7.


Рисунок 7 – Фильтрация по протоколу ICMP

Здесь мы можем наблюдать как происходит Echo Request и Echo Reply в протоколе ICMP изнутри: какие тестовые данные посылаются, какие флаги символизируют о том, что это именно Echo Request, и другую не менее важную информацию.

3.2 Перехват FTP трафика

В этом пункте рассматривается перехват документа, передающегося по протоколу FTP без шифрования, и убедимся, что при использовании шифрования на основе TLS ничего полезного мы перехватить не сможем. В качестве FTP сервера используется Cerberus FTP Server, в качестве клиента – любой браузер, например, Internet Explorer (в данной работе использовался плагин к Mozilla Firefox под названием FireFTP).
Запускаем захват пакетов в Wireshark и делаем фильтр по протоколу FTP для удобства (набираем «ftp or ftp-data» без кавычек). Набираем в строке адреса браузера адрес нашего FTP сервера: ftp:// и жмем Enter. На сервере будет лежать текстовый документ под названием test.txt, скачиваем его. Теперь посмотрим, что произошло в снифере, и какие пакеты мы перехватили. На рисунке 8 можно видеть, что перехватить можно не только данные, которые передаются по протоколу, но и логин с паролем.



Рисунок 8 – Перехват логина и пароля

Теперь найдем в перехваченных пакетах содержание нашего документа. Несколько слов о процессе передачи файлов по протоколу FTP: в самом начале сервер посылает клиенту баннер приветствия (в данном случае это 220-Welcome to Cerberus FTP Server), пользователь проходит аутентификацию на сервере с помощью команд USER и PASS, получает список директорий с помощью команды LIST и запрашивает нужный файл с помощью команды RETR. Команду RETR мы и будем искать в списке пакетов. Для этого нужно нажать Ctrl+F, выбрать в опциях поиска Find by String и Search in Packet Bytes, в строке поиска ввести RETR и нажать Enter. Будет найден пакет, в котором клиент посылает эту команду серверу, если файл существует, то сервер пришлет ответ 150 Opening data connection, а в следующем пакете и будет содержимое документа (рисунок 9).


Рисунок 9 – Содержимое переданного документа

Теперь включим на сервере безопасную передачу данных на основе протокола TLS и повторим процедуру. Для установки безопасного соединения клиент использует команду AUTH TLS. При просмотре списка перехваченных пакетов (рисунок 10) становится ясно, что ничего полезного из них получить не получится.


Рисунок 10 – Список перехваченных зашифрованных пакетов

3.3 Перехват документа, переданного по протоколу SMB

SMB (Server Message Block) – формат сообщений на основе протокола совместного использования файлов Microsoft/3Com, используемый для передачи файловых запросов (open – открыть, close – закрыть, read – прочитать, write – записать и т. п.) между клиентами и серверами. Откроем Wireshark, запустим перехват пакетов и фильтр по протоколу SMB. Затем зайдем на удаленный расшаренный ресурс и скачаем файл test.txt. Остановим перехват пакетов, нажав на кнопочку «Stop the running live capture». Теперь посмотрим на то, что мы получили. В списке пакетов найдем запрос на передачу файла test.txt:
Цитата:
Trans2 Request, FIND_FIRST2, Pattern: \test.txt.
Спустя несколько пакетов можно будет увидеть ответ:
Цитата:
Read AndX Response, FID 0x0004, 23 bytes.
В этом пакете и будет содержание документа (рисунок 11).


Рисунок 11 – Перехват документа по протоколу SMB
 4. Заключение

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

Единственным решением, препятствующим снифингу, является шифрование. Нельзя допускать использования фирменных небезопасных прикладных протоколов или унаследованных протоколов, передающих данные явным образом. Замена небезопасных протоколов (таких как telnet) на их надежные шифрованные аналоги (такие как SSH) представляется серьезным барьером от перехвата. Замена всех небезопасных протоколов в большинстве случаев маловероятна.

Вместо прекращения использования протоколов, передающих данные явным образом, остается только одна возможность - шифрование всего сетевого трафика на 3 уровне, используя IPSec. Осуществляя шифрование на 3 уровне, возможно продолжать использовать небезопасные протоколы, поскольку все данные будут инкапсулированы IPSec и зашифрованы при передаче по сети. Таким образом, унаследованные приложения, которые используют старые протоколы, не пострадают. IPSec полностью прозрачен для приложений и пользователей. Это открытый стандарт, поддерживаемый многими вендорами, включая Microsoft и Cisco. Кроме того, многие реализации Unix поддерживают IPSec. Легкая настройка IPSec в Win2k/XP дополнительно увеличивает его доступность.

Осуществление технологии шифрования на 3 уровне, таких как IPSec решает проблему снифинга полностью. Масштабируемость, распространенность, доступность IPSec выделяет его как прагматическое решение проблемы перехвата сетевого трафика.

4 комментария:

  1. Рисунки 4,5,8,9 хотело бы увидеть :(

    ОтветитьУдалить
  2. Да, действительно хотелось бы увидеть все рисунки

    ОтветитьУдалить
  3. Суть вопроса такова: программа "А" отсылает пакет с моего ноута мне интересно узнать куда и чего именно она отсылает как найти эту программу в общем списке перехваченных пакетов или как только ее просканировать?

    ОтветитьУдалить