Многие люди знакомы с понятием мнемоники [nəˈmɑnɪk] – устройства памяти, которое использует фразу, основанную на первой букве слов в серии.
Возможно, наиболее популярным из них в области сетевых технологий является модель для модели osi.
Ну чтож, для тех, кто много работает с tcp / ip, я подумал, что может быть полезно иметь мнемонику для флагов TCP.
Я регулярно придумываю и использую:
Unskilled Attackers Pester Real Security Folks
- Unskilled = URG
- Attackers = ACK
- Pester = PSH
- Real = RST
- Security = SYN
- Folks = FIN
Польза
Информация о флаге TCP наиболее полезна для меня при поиске определенных типов трафика с использованием tcpdump.
Например, возможно перехватить только syns (новые запросы на подключение), только RST (немедленное завершение сеанса) или любую комбинацию из шести флагов.
Как отмечалось в моем маленьком учебнике tcpdump, вы можете запечатлеть эти различные флаги следующим образом:
Найти все пакеты SYN
tcpdump 'tcp[13] & 2 != 0'
Найти все пакеты RST
tcpdump 'tcp[13] & 4 != 0'
Найти все пакеты ACK
tcpdump 'tcp[13] & 16 != 0'
Обратите внимание, что в примере SYN есть номер 2, RST – номер 4, а ACK – номер 16.
Эти цифры соответствуют тому, где флаги TCP попадают в двоичную шкалу.
Итак, когда вы пишете:
U A P R S F
… это соответствует:
32 16 8 4 2 1
Пример
Таким образом, когда вы читаете SYN-захват tcpdump ‘tcp [13] & 2! = 0’, вы говорите, что нашли 13-й байт в заголовке TCP, и захватываете только те пакеты, у которых флаг во 2-м бите не равен нулю.
Хорошо, если вы идете справа налево в строке UAPRSF, вы увидите, что точка, где находится 2, – это та, где S, который является тем самым SYN, и поэтому вы применяете только пакеты SYN, когда применяете этот фильтр.
# tcpdump 'tcp[13] & 2 != 0'
12:40:04.649404 IP 10.5.1.42.51584 > 64.233.187.99.http: S1524039069:1524039069(0) win 65535
12:40:04.708459 IP 64.233.187.99.http > 10.5.1.42.51584: S1416742397:1416742397(0) ack 1524039070 win 8190
Вы заметите, что когда я подключаюсь к Google через порт 80 с другого терминала, tcpdump показывает только два из трех шагов, связанных с трехсторонним рукопожатием.
Он не показывал третий, потому что последний шаг – просто ACK с моей стороны, то есть не установлен флаг SYN.
Заключение
Запоминание этих флагов и то, как их использовать, может оказать большое влияние на работу по устранению неполадок / безопасности сети низкого уровня, изолируя то, что вы хотите видеть и / или захватывать.
И, конечно, чем лучше вы сможете изолировать проблему, тем быстрее вы сможете ее решить.