Просмотр Исходного

Переходим в chroot.

{code}
chroot /app/reductor
{code}

Сперва переходим в директорию с дампами.
{code}
cd /var/revisor_dumps/
{code}

Отсеять взаимодействия с определённым IP адресом:
{code}
# не используем xargs из-за подстановки в -w $f
find -type f | while read f; do
tcpdump -r $f tcp and host 104.27.163.7 -w /home/carbon/dumps/${f//[\.\/]/_}
done
{code}

Собрать все дампы в текущей директории в один файл:
{code}
mergecap -w /home/carbon/one_big.pcap $(find . -type f)
{code}

или

{code}
find -type f -name "duplex.pcap" | xargs mergecap -w /home/revisor_dump/big_28.09_duplex.dump
{code}

Удалить всё кроме уже смерженных (duplex.pcap):
{code}
find -type f -name "re*.pcap" -delete
{code}

Набросок скрипта для анализа дампов по определённому IP:
{code}
#!/bin/bash

set -eu

IP="$1"
OUTPUT="/home/carbon/dumps/"
INPUT=/var/revisor_dump
rm -f $OUTPUT/*
cd "$INPUT"

find -type f | while read f; do
tcpdump -r $f tcp and host "$1" -w $OUTPUT/${f//[\.\/]/_}
done

mergecap -w "${OUTPUT%/*}"/$IP.pcap $(find $OUTPUT -type f)
echo "${OUTPUT%/*}"/$IP.pcap ready
{code}

Как выглядит потеря?

Запускаем:
{code}
tcpdump -ttttnnr $IP.dump tcp port 80 and host $IP
{code}

если глазами находим последовательность пакетов:

{code}
revisor -> host [S]
revisor -> host [.]
revisor -> host [.]
...
{code}

вместо

{code}
revisor -> host [S]
revisor -> host [.]
revisor -> host [P]
host -> revisor [P.]
host -> revisor [R]
...
{code}

Скорее всего имеет место потеря пакета с GET запросом.

При анализе этого дампа tshark можно будет найти пометку:
{code}
[SEQ/ACK analysis]
[TCP Analysis Flags]
[A segment before this frame wasn't captured]
[Expert Info (Warn/Sequence): Previous segment not captured (common at capture start)]
[Message: Previous segment not captured (common at capture start)]
[Severity level: Warn]
[Group: Sequence]
{code}

Консольные команды, работают в tshark в такой версии - точно:





{code}
$ tshark -v
TShark 1.10.6 (v1.10.6 from master-1.10)
{code}

\#Узнаём номер tcp-сессии и время, это первая и вторая колонка (для сравнения с отчётом), грепаем по ip, get-запросу или домену:

{code}
tshark -T fields -e tcp.stream -e frame.time -e frame.number -e ip.src -e ip.dst -e col.Info -e http.host -r <file.pcap> | grep 'GetOrIpOrHost'
{code}

\#Смотрим нашу tcp-сессию (конкретная tcp-сессия, в которой происходил запрос заблокированного ресурса АС Ревизор-ом и ответы Редуктора).

{code}
tshark -R "tcp.stream eq <NumberOfStream>" -T fields -e frame.time -e frame.number -e ip.src -e ip.dst -e _ws.col.Info -e http.host -r <file.pcap>
{code}

\#Полезные поля для \-T fields

{code}
ip.dst
ip.src
http.request.method
http.request.full_uri
http.response.code
tcp.srcport
tcp.dstport
{code}