• Чем расшифровать и поймать трафик по сети. Что такое трафик и его виды

    17.10.2020

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

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

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

    • Захват пакетов в реальном времени из проводного или любого другого типа сетевых интерфейсов, а также чтение из файла;
    • Поддерживаются такие интерфейсы захвата: Ethernet, IEEE 802.11, PPP и локальные виртуальные интерфейсы;
    • Пакеты можно отсеивать по множеству параметров с помощью фильтров;
    • Все известные протоколы подсвечиваются в списке разными цветами, например TCP, HTTP, FTP, DNS, ICMP и так далее;
    • Поддержка захвата трафика VoIP-звонков;
    • Поддерживается расшифровка HTTPS-трафика при наличии сертификата;
    • Расшифровка WEP-, WPA-трафика беспроводных сетей при наличии ключа и handshake;
    • Отображение статистики нагрузки на сеть;
    • Просмотр содержимого пакетов для всех сетевых уровней;
    • Отображение времени отправки и получения пакетов.

    Программа имеет множество других функций, но это были те основные, которые могут вас заинтересовать.

    Как пользоваться Wireshark

    Я предполагаю, что программа у вас уже установлена, но если нет, то вы можете ее установить из официальных репозиториев. Для этого наберите команду в Ubuntu:

    sudo apt install wireshark

    После установки вы сможете найти программу в главном меню дистрибутива. Запускать Wireshark нужно с правами суперпользователя, потому что иначе она не сможет анализировать сетевые пакеты. Это можно сделать из главного меню или через терминал с помощью команды для KDE:

    А для Gnome / Unity:

    Главное окно программы разделено на три части: первая колонка содержит список доступных для анализа сетевых интерфейсов, вторая - опции для открытия файлов, а третья - помощь.

    Анализ сетевого трафика

    Для начала анализа выберите сетевой интерфейс, например eth0, и нажмите кнопку Start.

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

    • Верхняя часть - это меню и панели с различными кнопками;
    • Список пакетов - дальше отображается поток сетевых пакетов, которые вы будете анализировать;
    • Содержимое пакета - чуть ниже расположено содержимое выбранного пакета, оно разбито по категориям в зависимости от транспортного уровня;
    • Реальное представление - в самом низу отображается содержимое пакета в реальном виде, а также в виде HEX.

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

    Здесь мы видим пакет запроса к DNS, чтобы получить IP-адрес сайта, в самом запросе отправляется домен, а в пакете ответа мы получаем наш вопрос, а также ответ.

    Для более удобного просмотра можно открыть пакет в новом окне, выполнив двойной клик по записи:

    Фильтры Wireshark

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

    • ip.dst - целевой IP-адрес;
    • ip.src - IP-адрес отправителя;
    • ip.addr - IP отправителя или получателя;
    • ip.proto - протокол;
    • tcp.dstport - порт назначения;
    • tcp.srcport - порт отправителя;
    • ip.ttl - фильтр по ttl, определяет сетевое расстояние;
    • http.request_uri - запрашиваемый адрес сайта.

    Для указания отношения между полем и значением в фильтре можно использовать такие операторы:

    • == - равно;
    • != - не равно;
    • < - меньше;
    • > - больше;
    • <= - меньше или равно;
    • >= - больше или равно;
    • matches - регулярное выражение;
    • contains - содержит.

    Для объединения нескольких выражений можно применять:

    • && - оба выражения должны быть верными для пакета;
    • || - может быть верным одно из выражений.

    Теперь рассмотрим подробнее на примерах несколько фильтров и попытаемся понять все знаки отношений.

    Сначала отфильтруем все пакеты, отправленные на 194.67.215.. Наберите строку в поле фильтра и нажмите Apply . Для удобства фильтры Wireshark можно сохранять с помощью кнопки Save :

    ip.dst == 194.67.215.125

    А чтобы получить не только отправленные пакеты, но и полученные в ответ от этого узла, можно объединить два условия:

    ip.dst == 194.67.215.125 || ip.src == 194.67.215.125

    Также мы можем отобрать переданные большие файлы:

    http.content_length > 5000

    Отфильтровав Content-Type, мы можем выбрать все картинки, которые были загружены; выполним анализ трафика Wireshark, пакеты, которого содержат слово image:

    http.content_type contains image

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

    Например, я хочу вывести в виде колонки ttl (время жизни) пакета. Для этого откройте информацию о пакете, найдите это поле в разделе IP. Затем вызовите контекстное меню и выберите опцию Apply As Column :

    Таким же образом можно создать фильтр на основе любого нужного поля. Выберите его и вызовите контекстное меню, затем нажмите Apply as filter или Prepare as filter , затем выбираем Selected, чтобы вывести только выбранные значения, или Not selected , чтобы их убрать:

    Указанное поле и его значение будет применено или во втором случае подставлено в поле фильтра:

    Таким способом вы можете добавить в фильтр поле любого пакета или колонку. Там тоже есть эта опция в контекстном меню. Для фильтрации протоколов вы можете использовать и более простые условия. Например, выполним анализ трафика Wireshark для протоколов HTTP и DNS:

    Еще одна интересная возможность программы - использование Wireshark для отслеживания определённого сеанса между компьютером пользователя и сервером. Для этого откройте контекстное меню для пакета и выберите Follow TCP stream .

    Затем откроется окно, в котором вы найдете все данные, переданные между сервером и клиентом:

    Диагностика проблем Wireshark

    Возможно, вам интересно, как пользоваться Wireshark 2.0 для обнаружения проблем в сети. Для этого в левом нижнем углу окна есть круглая кнопка, при нажатии на неё открывается окно Expet Tools . В нём Wireshark собирает все сообщения об ошибках и неполадках в сети:

    Окно разделено на такие вкладки, как Errors, Warnings, Notices, Chats. Программа умеет фильтровать и находить множество проблем с сетью, и тут вы можете их очень быстро увидеть. Здесь тоже поддерживаются фильтры Wireshark.

    Анализ трафика Wireshark

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

    Для этого сначала нужно остановить захват трафика с помощью красного квадрата на панели. Затем откройте меню File -> Export Objects -> HTTP :

    Многие пользователи и не догадываются, что заполняя логин и пароль при регистрации или авторизации на закрытом Интернет-ресурсе и нажимая ENTER, эти данные легко могут перехватить. Очень часто они передаются по сети не в защищенном виде. Поэтому если сайт, на котором вы пытаетесь авторизоваться, использует HTTP протокол, то очень просто выполнить захват этого трафика, проанализировать его с помощью Wireshark и далее с помощью специальных фильтров и программ найти и расшифровать пароль.

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

    Шаг 1. Устанавливаем и запускаем Wireshark для захвата трафика

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

    Захват трафика начался.

    Шаг 2. Фильтрация захваченного POST трафика

    Открываем браузер и пытаемся авторизоваться на каком-либо ресурсе с помощью логина и пароля. По завершению процесса авторизации и открытия сайта мы останавливаем захват трафика в Wireshark. Далее открываем анализатор протоколов и видим большое количество пакетов. Именно на этом этапе большинство ИТ-специалистов сдаются, так как не знают, что делать дальше. Но мы знаем и нас интересуют конкретные пакеты, которые содержат POST данные, которые формируются на нашей локальной машине при заполнении формы на экране и отправляются на удаленные сервер при нажатии кнопки «Вход» или «Авторизация» в браузере.

    Вводим в окне специальный фильтр для отображения захваченных пакетов: http. request. method == “ POST”

    И видим вместо тысячи пакетов, всего один с искомыми нами данными.

    Шаг 3. Находим логин и пароль пользователя

    Быстрый клик правой кнопки мыши и выбираем из меню пункт Follow TCP Steam


    После этого в новом окне появится текст, который в коде восстанавливает содержимое страницы. Найдем поля «password» и «user», которые соответствуют паролю и имени пользователя. В некоторых случаях оба поля будут легко читаемы и даже не зашифрованы, но если мы пытаемся захватить трафик при обращении к очень известным ресурсам типа: Mail.ru, Facebook, Вконтакте и т.д., то пароль будет закодирован:

    HTTP/1.1 302 Found

    Server: Apache/2.2.15 (CentOS)

    X-Powered-By: PHP/5.3.3

    P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"

    Set-Cookie: password=; expires=Thu, 07-Nov-2024 23:52:21 GMT; path=/

    Location: loggedin.php

    Content-Length: 0

    Connection: close

    Content-Type: text/html; charset=UTF-8

    Таким образом, в нашем случае:

    Имя пользователя: networkguru

    Пароль:

    Шаг 4. Определение типа кодирования для расшифровки пароля

    Заходим, например, на сайт http://www.onlinehashcrack.com/hash-identification.php#res и вводим наш пароль в окно для идентификации. Мне выдан был список протоколов кодирования в порядке приоритета:

    Шаг 5. Расшифровка пароля пользователя

    На данном этапе можем воспользоваться утилитой hashcat:

    ~# hashcat -m 0 -a 0 /root/wireshark-hash.lf /root/rockyou.txt

    На выходе мы получили расшифрованным пароль: simplepassword

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

    • Протокол POP и фильтр выглядит следующим образом: pop.request.command == "USER" || pop.request.command == "PASS"
    • Протокол IMAP и фильтр будет: imap.request contains "login"
    • Протокол SMTP и потребуется ввод следующего фильтра: smtp.req.command == "AUTH"

    и более серьезные утилиты для расшифровки протокола кодирования.

    Шаг 6. Что делать, если трафик зашифрован и используется HTTPS?

    Для ответа на этот вопрос есть несколько вариантов.

    Вариант 1. Подключиться в разрыв соединения между пользователем и сервером и захватить трафик в момент установления соединения (SSL Handshake). В момент установки соединения можно перехватить сеансовый ключ.

    Вариант 2. Вы можете расшифровать трафик HTTPS, используя файл журнала сеансовых ключей, записываемый Firefox или Chrome. Для этого браузер должен быть настроен на запись этих ключей шифрования в файл журнала (пример на базе FireFox), и вы должны получить этот файл журнала. По сути, необходимо похитить файл с ключом сессии с жесткого диска другого пользователя (что является незаконным). Ну а далее захватить трафик и применить полученный ключ для его расшифровки.

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

    После получения ключей по варианту 1 или 2 необходимо прописать их в WireShark:

    1. Идем в меню Edit - Preferences - Protocols - SSL.
    2. Ставим флаг «Reassemble SSL records spanning multiple TCP segments».
    3. «RSA keys list» и нажимаем Edit.
    4. Вводим данные во все поля и прописываем путь в файлу с ключом

    HTTP компрессия, используемая на большинстве сайтов для уменьшения размера передаваемых данных, может стать серьезной угрозой безопасности, если сайт использует HTTPS. Об этом заявили эксперты по безопасности Димитрис Каракостас (Dimitris Karakostas) и Дионисис Зиндрос (Dionysis Zindros). Исследователям удалось усовершенствовать эксплуатацию давно известной бреши, позволяющей ускорить расшифровку HTTPS трафика, и применить атаку против блочных шифров в SSL/TLS соединении.

    Атака, получившая название BREACH (Browser Reconnaissance and Exfiltration via Adaptive Compression of Hypertext), использует недочеты алгоритма сжатия gzip/DEFLATE. Впервые об атаке стало известно еще в 2013 году. На конференции Black Hat USA исследователи Ангело Прадо (Angelo Prado), Нил Херрис (Neal Harris) и Йоел Глюк (Yoel Gluck) рассказали об атаках на SSL/TLS потоковые шифры, например RC4.

    Демонстрация нового подхода к эксплуатации реализована в фреймворке с открытым исходным кодом Rupture , представленном на конференции Black Hat Asia на прошлой неделе.

    Во время доклада эксперты продемонстрировали две успешные атаки на Gmail и чат Facebook.

    Для осуществления BREACH атаки злоумышленник должен иметь возможность перехвата сетевого трафика жертвы. Это может быть осуществлено посредством Wi-Fi сети, или через доступ к оборудованию Интернет-провайдера. Атакующему также потребуется обнаружить уязвимую часть приложения, принимающую входные данные посредством URL параметров, и возвращающую эти данные в зашифрованном ответе.

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

    Злоумышленник может заставит клиентское приложение отправить большое количество запросов и, таким образом, угадать все символы аутентификационного токена.

    Фреймворк Rupture позволяет внедрить специальный код в каждый незашифрованный HTTP запрос, открытый браузером жертвы. Внедренный код заставляет браузер клиента осуществлять подключения к уязвимому HTTPS приложению в фоновом режиме. Это требуется для проведения успешной атаки на блочные шифры, создающие много «шума» при шифровании данных. Для устранения мусора исследователи отправляли одни и те же запросы несколько раз подряд и анализировали разницу в размерах полученных ответов. Экспертам также удалось использовать параллелизацию на стороне браузера, что значительно ускорило атаку против блочных шифров в TLS подключениях.

    Журналистам издания «Коммерсантъ» стало известно, как правительственные ведомства видят реализацию «закона Яровой» на практике.

    По данным «Коммерсанта» , ФСБ, Минкомсвязь и Минпромторг в настоящий момент обсуждают набор технических решений, которые позволят реализовать дешифровку и соответственно доступ ко всему интернет-трафику россиян, как того требует «закон Яровой». Журналисты ссылаются на информацию, полученную от топ-менеджера одного из производителей оборудования, члена Администрации президента (АП), а также неназванного источника в IT-компании.

    «Хранить эксабайты шифрованного интернет-трафика не имеет смысла - в нем ничего не найдешь. ФСБ выступает за то, чтобы расшифровывать весь трафик в режиме real-time и анализировать его по ключевым параметрам, условно говоря, по слову "бомба", а министерства настаивают на расшифровке трафика лишь по тем абонентам, которые привлекут внимание правоохранительных органов»,- рассказал журналистам представитель АП.

    Для анализа нешифрованного и уже расшифрованного трафика планируется использовать DPI-системы (Deep Packet Inspection), которые и сейчас применяются многими операторами, например для URL-фильтрации по спискам запрещенных сайтов.

    Сложности у правительственных ведомств вызывает зашифрованный трафик. «В интернете огромное количество сайтов, которые не являются организаторами распространения информации и используют защищенное https-соединение", - поясняют собеседники издания. "Без расшифровки трафика не всегда можно понять, на какой сайт заходил пользователь, не говоря о том, что он там делал». Так, одним из обсуждаемых вариантов дешифровки трафика является установка в сетях операторов оборудования, которое будет фактически выполнять MITM-атаки:

    «Для пользователя это оборудование притворяется запрошенным сайтом, а для сайта - пользователем. Получается, что пользователь будет устанавливать SSL-соединение с этим оборудованием, а уже оно - с сервером, к которому обращался пользователь. Оборудование расшифрует перехваченный от сервера трафик, а перед отправкой пользователю заново зашифрует его SSL-сертификатом, выданным российским удостоверяющим центром (УЦ). Чтобы браузер пользователя не выдавал ему оповещений о небезопасном соединении, российский УЦ должен быть добавлен в доверенные корневые центры сертификации на компьютере пользователя».

    Журналисты пишут, что Илья Массух, глава подгруппы «ИТ+Суверенитет» при Администрации президента, ранее уже подтверждал, что планы по созданию такого удостоверяющего центра действительно есть. Впрочем, будет ли данный УЦ использоваться для реализации «закона Яровой», пока неизвестно.

    Также о предложении по расшифровке трафика слышал основатель «Энвижн Групп» и совладелец производителя телекоммуникационного оборудования РДП.РУ Антон Сушкевич.

    «Два основных метода шифрования в интернете - end-to-end, который очень популярен в мессенджерах, и SSL-сертификаты - с их помощью около 80% интернет-трафика шифруется. Для того чтобы выполнять задачу, поставленную "законом Яровой", то есть бороться с терроризмом, нужно расшифровывать и анализировать трафик в прямом эфире, а не какое-то время спустя. Организация MITM - один из возможных путей»,- утверждает Сушкевич.

    Также «Коммерсантъ» поинтересовался мнением экспертов по данному вопросу, и те выразили определенный скепсис относительно описанной схемы.

    «Когда о данном факте станет известно, из всего ПО, обеспечивающего работу с шифрованным трафиком, сертификат подобного удостоверяющего центра будет вырезан в очередном обновлении. И это будет правильно, потому что возможность создавать "левые" сертификаты дискредитирует всю электронную коммерцию: все банковские карточки, учетные данные всех пользователей во всех системах становятся перехватываемыми»,- объясняет глава АРСИЭНТЕК Денис Нештун.

    «MITM хорошо, а местами и легально работает для клиент-серверных технологий на базе SSL. Но от него стали чаще отказываться и переходить на TLS, для которого MITM сделать сегодня нельзя. А в случае с end-to-end шифрованием, на котором построено большинство мессенджеров, MITM вообще нереализуем»,- говорит консультант по интернет-безопасности Cisco Алексей Лукацкий.

    Напомню, что согласно «закону Яровой», организаторы распространения информации должны предоставлять информацию, необходимую для декодирования принимаемых, передаваемых, доставляемых и (или) обрабатываемых электронных сообщений пользователей в уполномоченное подразделение ФСБ.

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

    Собеседники «Коммерсанта» полагают, что «иностранные компании этому требованию просто не подчинятся, а российские, может, и сдадут ключи после многочисленных требований».

    Похожие статьи