Как вы можете использовать Python для анализа активности сетевого трафика.

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

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

Например; если вы стали жертвой компьютерного вируса, изучение активности вашего компьютера может помочь вам точно определить действие, которое привело к загрузке вредоносной программы/файла. Затем вы можете отследить эту программу, чтобы увидеть, переместилась ли она на другой компьютер в вашей сети!

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

Давайте начнем

Мы собираемся использовать несколько библиотек Python:

  • Pandas как pd → читать данные и сохранять в кадре данных
  • MatPlotlib как plt → данные графика
  • Networkx как nx → графические данные как узлы, если они общались

Затем загрузите данные на основе пути к файлу. Глядя на наш фрейм данных, мы видим столбцы → «№», «Время», «Источник», «Назначение», «Протокол», «Длина», «Информация».

Теперь, когда наши данные находятся в аккуратном фрейме данных, мы можем использовать функции:

  • groupby() → выберите столбец для идентификации и группировки по уникальным значениям
  • count() → подсчитать, сколько раз значение появляется во фрейме данных как значение
  • sort_values ​​→ отображать значения в зависимости от размера

Мы собираемся использовать эти функции для понимания устройств, которые инициировали разговоры, приняли сообщения и типы связи.

Просмотр «источников» показывает, какие устройства имели наименьшее/наибольшее количество сообщений.

Вы можете отметить ту же информацию из «пунктов назначения».

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

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

Применить теорию графов

Используя networkxв Python, вы можете создавать графы узлов, представляющие тип связи.

Поскольку наши данные находятся во фрейме данных pandas, мы можем использовать networkx непосредственно на нем и выбирать наши узлы в качестве «источника» и «цели». Нас интересуют узлы Source и Destination. Выбор этих узлов поможет нам увидеть, как взаимодействуют устройства в этой сети.

С выбранными нами узлами мы снова будем использовать networkx с функцией draw_circular для отображения карты сети на основе трафик!

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

Мы назовем это устройство подозрительным и с помощью networkx создадим карту с цветовой кодировкой, показывающую, какие устройства вредоносное устройство, с которым осуществляется связь.

Вуаля!

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

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

Ресурсы и дополнительная информация

Очень рекомендую ознакомиться с этой статьей!



Для получения дополнительной документации, которая поможет вам в дальнейших проектах:







Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.