Различайте TCP-соединения, используя Seq No, Ack No и / или Datasize - PullRequest
1 голос
/ 20 ноября 2011

Я агрегирую соединения, проходя через собранный дамп пакетов, собранный с использованием TCPDUMP. Мой код в Ruby. Код будет различать соединения с использованием 4-х кортежей (SrcIP, SrcPort, DstIP, DstPort) Теперь, если соединения между одной и той же машиной имеют одинаковый IP-адрес и один и тот же порт, тогда эти соединения различаются следующим способом. 1. Если время между соединениями больше 2 часов, то это новое соединение 2. Если мы видим, что уже видели FIN или RST, то новый пакет от нового соединения 3. Если количество SYN больше двух (по одному в каждом направлении), то это новое соединение.

Ситуация, на которую я не могу ответить, следующая Если новое соединение между теми же двумя хостами (имеющее один и тот же 4-кортеж) произошло в течение 2 часов, и TCPDUMP отбросил предыдущие пакеты RST или FIN, а также отбросил 2 или более пакетов SYN из обоих соединений. В этом случае ни одно из указанных выше условий не будет работать. И единственный набор информации, который остается, - это время нового набора пакетов, Seq Nos, Ack Nos и размер данных. Просто используя эту информацию, я могу выяснить, является ли соединение новым или старым?

Я пытался увидеть, есть ли паттерн в последовательности No или между SeqNo и AckNo, но ни один из них не является определенным.

1 Ответ

1 голос
/ 20 ноября 2011

Поскольку TCP (в основном) использует скользящее окно подтверждения , поля SeqNo и AckNo будут монотонно увеличивать поля - пока они не будут обернуты из-за целочисленного переполнения .

Кроме того, SeqNo от одного направления трафика соответствует AckNo другого направления трафика, предоставляя еще один инвариант, который вы можете проверить.

Один осложняющий фактор заключается в том, что SeqNo изначально выбран случайным образомснизить вероятность человек в середине атаки ;поэтому новый сеанс с идентичными в противном случае параметрами может выбрать начальные порядковые номера, которые больше, чем ранее видимые порядковые номера, и запутать ваши алгоритмы.

...