Обратились ко мне с интересным вопросом — продемонстрировать возможность вызвать падение удаленного Asterisk отправкой RTP пакета определенного вида. Я люблю интересные вопросы, поэтому потратил некоторое время для изысканий, в которых самым интересным было — найти возможность модифицировать один из пакетов в libpcap дампе. Отправить RTP пакеты в сеть с помощью sipp уже задача простая и описанная.

На просторах интернета информации не так много, есть лишь несколько утилит предназначенных для внесение изменений в .pcap файлы. Я использовал утилиту bittwiste проекта Bit-Twist. Проект предназначен для отправки трафика записанного в файле в реальную сеть используя libpcap.

Меня интересовало исправление единственного пакета, который нужно было сформировать. Записав трейс вызова к серверу, который передает CNG пакеты, смотрим номер пакета в дампе — в моем случае он номер 142. Извлекаем пакет (то же можно сделать из wireshark):

bittwiste -I /home/igorg/original.cap -R 142 -O /rtp-cng.cap

Моя задача была добавить дополнительный объем полезной нагрузки в CNG пакет. Если использовать для этого HEX редактор, придется  исправлять поля IP и UDP заголовков, а так же служебную информацию в pcap файле. Здесь и пригодится bittwiste — утилита позволяет вставить в пакеты в .pcap файле произвольную информацию.

Через wireshark смотрим в шестнадцатеричном формате данные RTP пакета (они начинаются после контрольной суммы UDP пакета), выписываем в строку, добавляем произвольное количество нужных данных. При вызове bittwiste используем параметры -L 4 -T udp, чтобы переписать данные в UDP пакете, следующие после UDP заголовка.

bittwiste -I /rtp-cng.cap -X 800dce3117850593f60538ea4751a2728c8c8c8c8c8c00 -O /rtp-cng-long.cap -L 4 -T udp

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

Похожие сообщения:

автор igorg \\ теги: , , , , ,