Как редактировать пакеты в Wireshark.

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

Я думаю, многие из нас приходили к мысли, что было бы хорошо, если бы в Wireshark’е был редактор пакетов: клик-клик, поменял и отправил. Но пока этого не случилось, мы вынуждены искать иные пути. Фактически задачку
приходится свести к тому, что мы снифаем трафик в Wireshark’е, находим необходимые пакеты и сохраняем только их в pcap-файл. А далее каким-то «редактором» их меняем на свой вкус и отправляем в канал. Задачка приводится к выбору этого редактора.

Как ни странно, одним из главных решений стал scapy (хотя кто бы сомневался, но о нем чуть позднее). Меня же заинтересовал относительно молодой и вроде бы активный проект Ostinato.

Общий вид Ostinato. Слева — перечень интерфейсов, справа — генерация пакетов, внизу — отправка пакетов, включение снифера и статистика
Общий вид Ostinato. Слева — перечень интерфейсов, справа — генерация пакетов,
внизу — отправка пакетов, включение снифера и статистика

Это GUI-шный мультиплатформенный (на Python’е) открытый генератор пакетов, а заодно и снифер. Можно либо взять и собрать пакет с нуля, а можно импортировать из Wireshark’а (формат pcap, pcap-ng — не понимает). Далее через GUI можно поменять любой из слоев TCP/IP-стека, что-то убрать, что-то добавить или изменить. Также можно посылать последовательности пакетов. По сути, все базовые потребности покрываются. Тем, кто не знаком близко со стеком TCP/IP, я бы очень посоветовал с ней поиграться.

ostinato
Измененный пакет Ostinato

В ней «слоеность пирога» очень четко просматривается. В качестве маленького совета — глянь мини-видео, ведь без него «методом клика» с тулзой не разберешься, несмотря на всю ее простоту.

Теперь о scapy. Это мощнейший инструмент для генерации/обработки сетевых пакетов.

Функционала очень много, из коробки поддерживается большое разнообразие протоколов. Можно воссоздать практически все сетевые атаки или эмулировать протоколы. Если не знаком с ним, то The very unofficial dummies guide to scapy поможет тебе в первом приближении понять, что там и как.

Ну а теперь о решении. Все, что требуется, — это проделать следующее в scapy:
1. Открыть pcap-файл и сохранить пакеты в массив:

wspkt=rdpcap("path_to_pcap_file")

2. Можно посмотреть список полученных пакетов в массиве wspkt:

wspkt.summary()

3. Полностью посмотреть конкретный пакет:

wspkt0 (.show()

4. Не забываем, что нужно что-то еще и отредактировать. Можно обратиться к определенным полям (из пункта выше). Например, поменяем MAC:

wspkt[0][Ether].dst="67:66:66:66:66:66"

5. Отправить какой-то пакет (например, второй) из массива в сеть:

send(wspkt[1])

Как видишь, все просто, но поставить scapy под Win — это нелегко.

Click to rate this post!
[Total: 7 Average: 4.3]

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

3 comments On Как редактировать пакеты в Wireshark.

Leave a reply:

Your email address will not be published.