Специально для будущих студентов курса Network engineer. Basic наш эксперт - Александр Колесников подготовил интересный авторский материал.
Также приглашаем принять участие в открытом онлайн-уроке на тему STP. Что? Зачем? Почему?. Участники урока вместе с экспертом рассмотрят протокол STP, разберут логику его работы, разберут его преимущества и недостатки.
Статья расскажет, как можно работать с сетевым трафиком. На примере нескольких дампов сетевого трафика будет разобрана работа нескольких полезных инструментов, показаны подходы к извлечению и сборке информации из трафика.
Инструментарий и методика исследования
Для разбора трафиков будем использовать следующее программное обеспечение:
Все инструменты не нуждаются в особенно развернутом
представлении, так как являются единственными в своем роде
бесплатными решениями для работы с трафиком. Первые два
tshark
и wireshark
вообще предоставляются
в составе одного и того же решения. Оба инструмента позволяют
выполнять запись и разбор трафика с точки зрения статистики,
передаваемых данных и структурах протокола.
Попробуем использовать эти инструменты на записанных сетевых трафиках. Все трафики взяты из различных ресурсов и собраны вот здесь, поэтому читатель при желании может самостоятельно провести их анализ по инструкциям из статьи.
Disclamer: Все файлы трафиков взяты из различных соревнований CTF, все права на задания принадлежат их авторам.
Для исследования трафиков будем придерживаться минимальной стратегии:
-
Определить количество участников сети;
-
Определить стек используемых протоколов;
-
На основании пункта 2 принять решение искать данные по убыванию популярности использования трафика;
-
Если выясняется, что данные, которые передаются в трафике, не были обработаны дополнительным кодированием, то применять фильтр по тексту.
Примеры разбора трафика
Первое задание для разбора:
1.pcap(9cd84b46fee506dae818ecdca76607d1)
. Задача
найти данные, которые будут содержать информацию вида
"FLAG-???????????"
. Приступим к разбору. Пройдемся по
методике, которую описали в прошлом пункте:
Количество участников в сети очень просто определить при помощи
WireShark (Всё, что описано для этого инструмента, можно повторить
и на tshark
. Автор использует WireShark для
наглядности). В опциях WireShrak выбираем
"Statistics->Endpoints":
Итого у нас 8 уникальных IP адресов, которые участвовали во взаимодействии. Определим стек протоколов. Сделать это можно в том же самом меню "Statistics->Protocol Hierarchy":
Итак, самый популярный протокол взаимодействия http. Этот
протокол внутри файла pcap
хранится в текстовом
представлении поэтому можно попробовать показать все данные из
body
пересылаемых данных и отфильтровать данные по
формату искомой строки. Попробуем это сделать с помощью
tshark
. Команда для фильтра будет выглядеть так:
``` tshark -r ./1.pcap -Y http -Tfields -e http.file_data | grep "FLAG"```
В результате получаем результат:
Второй файл для исследования 2.pcap
(9a67e1fb9e529b7acfc6e91db6e1b092)
. Проведем этапы
исследования. Количество участников взаимодействия:
В этом случае участников 13 задание усложняется. Какие протоколы используются:
К сожалению, в этот раз всё не так просто с используемыми протоколами для передачи данных. Среди информации пересылаемой через tcp протокол ничего интересного для нашего задания не встретилось. В udp же попалось кое-что интересное:
``` tshark -r ./2.pcap -Y 'dns' ```
Однако, если обратить внимание на резолв локальных адресов через dns, то мы можем обнаружить вот такую картину:
Странная часть 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```
Полученная строка очень похожа на base64
кодировку,
раскодируем:
``` base64 -D <<< "VGhpcyBpcyBhIHNlY3JldCB0Y3JldCB0cmFuc21pdHRlZCB0aHJvdWdoaHJvdWdoIGRucyBxdWVyeSA6KSBGTEFHKSBGTEFHLUZUNDdjTVgyNnBXeUZTSTZSeUZTSTZSUFdhU3I1WVJ3"```
В итоге:
В качестве целевого сетевого трафика будем использовать
3.pcap(0e66830db52ad51971d40c77fa5b02c0)
.
Проанализируем количество участников взаимодействия и статистику
используемых протоколов:
Похоже, что в этот раз протоколов меньше, но вариантов куда спрятать данные больше. Попробуем отфильтровать данные по протоколу http.
``` tshark -r ./3.pcap -Y http```
Самые интересные строки находятся в конце записанного трафика, это запросы http к файлам "flag.zip" и "secret.txt". Сдампим их через Wireshark и попробуем открыть:
Попробуем сдампить файл, который называется
flag.zip
через WireShark. Стандартным интерфейсом это
сделать не получится, поэтому придется сделать небольшой хак
сохранить данные в Raw формате:
Открываем с уже найденным паролем:
Похоже, что файл поврежден в нем нет части, которая содержит необходимую нам информацию. Спустя время, если отфильтровать по потокам, которые есть в tcp, можно натолкнуться на части фрагменты архивов:
Сохраним дамп этого потока и вырежем с помощью простой программы фрагмент архива:
```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 ```
Похоже, что часть данных недоступна, но мы смогли восстановить файл flag.txt
Описанная методика может позволить извлекать информацию из
записанных сетевых данных. В качестве закрепления материала,
предлагаем читателю найти данные в трафике
4.pcap(604bbac867a6e197972230019fb34b2e)
.
Узнать подробнее о курсе Network engineer. Basic.
Зарегистрироваться на вебинар по теме STP. Что? Зачем? Почему?.