Запись и повторное проигрывание трафика
Запись и повторное проигрывание трафика
Для симулирования трафика, перехваченного сниффером и сохранённого в формате
pcap, удобно использовать сочетание утилит tcpreplay
http://tcpreplay.synfin.net/ для непосредственной переотправки трафика и
tcprewrite http://tcpreplay.synfin.net/wiki/tcprewrite для замены IP-адресов
и других параметров пакетов. Повторная генерация потока может быть полезна для
оценки поведения различных программ на различные атаки, при изучении причин
сбоев в сетевом ПО или при проведении нагрузочного тестирования (можно менять
интенсивность отправки пакетов).
Обе утилиты входят в состав пакета tcpreplay:
sudo apt-get install tcpreplay
Перехват трафика можно произвести утилитой tcpdump:
tcpdump -ni wlan0 -s0 -w dump.pcap port 501
Для замены адреса отправителя 210.1.54.1 на адрес локальной машины 192.168.1.1
используем утилиту tcprewrite:
tcprewrite --skipbroadcast --pnat=210.1.54.1:192.168.1.1 --infile=dump.pcap --outfile=dump2.pcap
Повторно генерируем пакеты, используя интерфейс eth0:
tcpreplay --intf1=eth0 dump2.pcap
Из других похожих проектов, можно отметить:
fragroute - позволяет перехватывать, изменять и переотправлять трафик,
адресованный определённому хосту.
netdude - мощный редактор и просмотрщик содержимого pcap-дампов.
wireplay - простая и удобная утилита для переотправки записанных в
pcap-дампе TCP-сессий с внесением изменений. Например, для переотправки
записанного в http.pcap HTTP-трафика:
wireplay -K --role client --port 80 --target 127.0.0.1 -L -F http.pcap
В ситуации, когда нужно просто сгенерировать поток на основе лога HTTP-сервера,
можно использовать утилиту httperf:
Копируем список запрашиваемых URL из лога:
cat apache.log | awk ‘{print $7}’ > requests.log
Заменяем перевод сроки на нулевой символ, как того требует httperf
tr “\n” “\0” \< requests.log > httperf.log
Симулируем отправку пакетов к IP 192.168.1.1 в 100 одновременных запросов,
прекращаем отправку после 10 тыс. запросов.
httperf --hog --server 192.168.1.1 --port 80 --wlog=n,httperf.log --rate=100