Понимание флага TCP URG

Я сделал простой сканер портов с Python, используя Scapy.

Я устанавливаю Metasploitable и открываю несколько портов, например. 21, 22, 23 и 8009.

Затем я инициирую сканирование этих портов, и Scapy сообщает мне, что они открыты.

Однако, если я сканирую порты, которые не открыты в Metasploitable, я получаю обратно флаг TCP 20, который является флагом URG TCP. Это взято из описания флага URG.

Флаг URG используется для информирования принимающей станции о том, что определенные данные в сегменте являются срочными и должны иметь приоритет. Если флаг URG установлен, принимающая станция оценивает срочный указатель, 16-битное поле в заголовке TCP. Этот указатель указывает, какая часть данных в сегменте, считая от первого байта, является срочной.

Срочные данные для меня ничего не значат.

Я не понимаю, почему я получаю флаг URG обратно, и я пытаюсь понять, почему я получаю его, что он означает, даже если порт закрыт, и могу ли я когда-либо получить URG ответ назад, если порт был открыт.


person Daniel    schedule 29.06.2014    source источник
comment
Поскольку приведенный ниже ответ выглядит так, будто вопрос возник из-за неправильного прочтения экрана, я думаю, что это можно закрыть как проблему, которую больше нельзя воспроизвести.   -  person halfer    schedule 23.12.2015
comment
Сообщение по теме: Подтвержден ли TCP URG (срочные данные)?   -  person red0ct    schedule 24.03.2020


Ответы (1)


Флаг URG используется для отправки данных по второму каналу TCP-соединения. Нет смысла устанавливать его, если вы также не отправляете данные. Данные будут храниться в отдельном буфере на принимающей стороне, программа получает сигнал о наличии срочных данных и считывается с помощью специального флага системного вызова recv.

Насколько я знаю, единственный протокол, который когда-либо использовал его, — это FTP, где вы устанавливаете флаг URG, если хотите отправить команду во время передачи. Можно было бы предположить, что в противном случае сервер был занят отправкой данных и не слушал новые команды, но установка флага URG сервер была прервана специальным сигналом.

Вы точно правильно прочитали? Обычно для закрытых портов устанавливается флаг RST.

Историческая справка: флаг URG также приводил к сбою Windows 95 и NT с WinNuke.

person Per Johansson    schedule 29.06.2014
comment
Я установил дистрибутив metasploitable linux и загрузил его с помощью NAT. Я ничего не сделал для этого. Каждая машина работает в VM-ware. Я пробовал несколько разных кусков кода, и я не могу получить его по-другому. Так что я на 100% уверен, что сделал это правильно :-) - person Daniel; 29.06.2014
comment
О, вы видите десятичное число 20, а не шестнадцатеричное. Итак, это бит 0x10 и 0x4, то есть ACK|RST. - person Per Johansson; 29.06.2014
comment
Да, конечно.. вы правы.. он возвращает 0x14, который закрыт.. новый язык означает забвение основных вещей.. спасибо ;) - person Daniel; 29.06.2014
comment
telnet также использует флаг срочности. - person Graznarak; 03.09.2018