Специально для будущих студентов курса «Network engineer. Basic» наш эксперт - Александр Колесников подготовил интересный авторский материал.
Также приглашаем принять участие в открытом онлайн-уроке на тему «STP. Что? Зачем? Почему?». Участники урока вместе с экспертом рассмотрят протокол STP, разберут логику его работы, разберут его преимущества и недостатки.
Статья расскажет, как можно работать с сетевым трафиком. На примере нескольких дампов сетевого трафика будет разобрана работа нескольких полезных инструментов, показаны подходы к извлечению и сборке информации из трафика.
Инструментарий и методика исследования
Для разбора трафиков будем использовать следующее программное обеспечение:
Все инструменты не нуждаются в особенно развернутом представлении, так как являются единственными в своем роде бесплатными решениями для работы с трафиком. Первые два tshark
и wireshark
вообще предоставляются в составе одного и того же решения. Оба инструмента позволяют выполнять запись и разбор трафика с точки зрения статистики, передаваемых данных и структурах протокола.
Попробуем использовать эти инструменты на записанных сетевых трафиках. Все трафики взяты из различных ресурсов и собраны вот здесь, поэтому читатель при желании может самостоятельно провести их анализ по инструкциям из статьи.
Disclamer: Все файлы трафиков взяты из различных соревнований CTF, все права на задания принадлежат их авторам.
Для исследования трафиков будем придерживаться минимальной стратегии:
Определить количество участников сети;
Определить стек используемых протоколов;
На основании пункта 2 принять решение искать данные по убыванию популярности использования трафика;
Если выясняется, что данные, которые передаются в трафике, не были обработаны дополнительным кодированием, то применять фильтр по тексту.
Примеры разбора трафика
Первое задание для разбора:
1.pcap(9cd84b46fee506dae818ecdca76607d1)
. Задача — найти данные, которые будут содержать информацию видаFLAG-???????????
. Приступим к разбору. Пройдемся по методике, которую описали в прошлом пункте:
Количество участников в сети очень просто определить при помощи WireShark (Всё, что описано для этого инструмента, можно повторить и на tshark
. Автор использует WireShark для наглядности). В опциях WireShrak выбираем "Statistics->Endpoints":
![](https://habrastorage.org/getpro/habr/upload_files/177/3d5/593/1773d5593e4ca7932a486273132538d4.png)
Итого у нас 8 уникальных IP адресов, которые участвовали во взаимодействии. Определим стек протоколов. Сделать это можно в том же самом меню "Statistics->Protocol Hierarchy":
![](https://habrastorage.org/getpro/habr/upload_files/645/956/2d9/6459562d9f858b42d7375963c3b10efe.png)
Итак, самый популярный протокол взаимодействия — http. Этот протокол внутри файла pcap
хранится в текстовом представлении поэтому можно попробовать показать все данные из body
пересылаемых данных и отфильтровать данные по формату искомой строки. Попробуем это сделать с помощью tshark
. Команда для фильтра будет выглядеть так:
tshark -r ./1.pcap -Y http -Tfields -e http.file_data | grep "FLAG"
В результате получаем результат:
![](https://habrastorage.org/getpro/habr/upload_files/6c9/a9d/3db/6c9a9d3db75f927795a7fb211c5c2af8.png)
Второй файл для исследования — 2.pcap (9a67e1fb9e529b7acfc6e91db6e1b092)
. Проведем этапы исследования. Количество участников взаимодействия:
![](https://habrastorage.org/getpro/habr/upload_files/f19/2fd/983/f192fd98339725567a27a4b42cb6bef1.png)
В этом случае участников 13 — задание усложняется. Какие протоколы используются:
![](https://habrastorage.org/getpro/habr/upload_files/f51/b21/426/f51b214268b9c06bce8bd172fe767590.png)
К сожалению, в этот раз всё не так просто с используемыми протоколами для передачи данных. Среди информации пересылаемой через tcp протокол ничего интересного для нашего задания не встретилось. В udp же попалось кое-что интересное:
tshark -r ./2.pcap -Y 'dns'
Однако, если обратить внимание на резолв локальных адресов через dns, то мы можем обнаружить вот такую картину:
![](https://habrastorage.org/getpro/habr/upload_files/13f/ef9/4d2/13fef94d22d940c6a528be70c2c623b9.png)
Странная часть ip адреса, которая очень похожа на какие-то кодированные шестнадцатеричные символы. Попробуем их провести через кодировку:
tshark -r ./2.pcap -Y '!icmp.code && dns.qry.name contains 192.168' -Tfields -e
dns.qry.name | tr '.' ' ' |awk '{print $1}' |xxd -r
![](https://habrastorage.org/getpro/habr/upload_files/59a/b20/7e6/59ab207e6acaec8f2669c5557323244b.png)
Полученная строка очень похожа на base64
кодировку, раскодируем:
base64 -D <<<
"VGhpcyBpcyBhIHNlY3JldCB0Y3JldCB0cmFuc21pdHRlZCB0aHJvdWdoaHJvdWdoIGRucyBxdWVyeSA6KSBGTEFHKSBGTEFHLUZUNDdjTVgyNnBXeUZTSTZSeUZTSTZSUFdhU3I1WVJ3"
В итоге:
![](https://habrastorage.org/getpro/habr/upload_files/937/f1d/1f4/937f1d1f48966eb45ee8bd212d3ab8dc.png)
В качестве целевого сетевого трафика будем использовать 3.pcap(0e66830db52ad51971d40c77fa5b02c0)
. Проанализируем количество участников взаимодействия и статистику используемых протоколов:
![](https://habrastorage.org/getpro/habr/upload_files/74a/284/4b9/74a2844b9d5f3382cca605bd007c5e7b.png)
Похоже, что в этот раз протоколов меньше, но вариантов куда спрятать данные — больше. Попробуем отфильтровать данные по протоколу http.
tshark -r ./3.pcap -Y http
![](https://habrastorage.org/getpro/habr/upload_files/95a/0fe/9aa/95a0fe9aaed384f28d1415e474d88635.png)
Самые интересные строки находятся в конце записанного трафика, это запросы http к файлам "flag.zip" и "secret.txt". Сдампим их через Wireshark и попробуем открыть:
![](https://habrastorage.org/getpro/habr/upload_files/2bc/921/965/2bc92196505046586ec797bb36926653.png)
Попробуем сдампить файл, который называется flag.zip
через WireShark. Стандартным интерфейсом это сделать не получится, поэтому придется сделать небольшой хак — сохранить данные в Raw формате:
![](https://habrastorage.org/getpro/habr/upload_files/032/afb/f85/032afbf85ebd2864363426b20a8d0778.png)
Открываем с уже найденным паролем:
![](https://habrastorage.org/getpro/habr/upload_files/891/20d/773/89120d7735a2c2ea80d4629ea6ba1b22.png)
Похоже, что файл поврежден в нем нет части, которая содержит необходимую нам информацию. Спустя время, если отфильтровать по потокам, которые есть в tcp, можно натолкнуться на части фрагменты архивов:
![](https://habrastorage.org/getpro/habr/upload_files/abc/631/e68/abc631e68a9d3c705eafd34af4f747de.png)
Сохраним дамп этого потока и вырежем с помощью простой программы фрагмент архива:
python
data = []
with open('dump') as f:
data = f.read()
with open('tesst.zip','w') as w:
w.write(data[1010788:])
Пробуем распаковать:
7z x ./test.zip
![](https://habrastorage.org/getpro/habr/upload_files/9a7/6b9/b68/9a76b9b6840edaeb1908fb17ba80d7be.png)
Похоже, что часть данных недоступна, но мы смогли восстановить файл flag.txt
Описанная методика может позволить извлекать информацию из записанных сетевых данных. В качестве закрепления материала, предлагаем читателю найти данные в трафике 4.pcap(604bbac867a6e197972230019fb34b2e)
.
Узнать подробнее о курсе «Network engineer. Basic».
Зарегистрироваться на вебинар по теме «STP. Что? Зачем? Почему?».
amarao
Вы очень часто постите статьи, которые были актуальны в году так 2005-2010.
самый популярный протокол взаимодействия — http
Нет, самый популярный протокол взаимодействия — https. И на этом этапе ваш анализ перестаёт быть.