Закройте TCP соединение с помощью nmap

706
Florian Bidabe

Я пытаюсь закрыть соединения в командной строке. Например, я пытаюсь закрыть мое соединение SSH с помощью этой команды Nmap:

$ sudo nmap -p 22 --scanflags RST <mySSHServerPublicIP> $ sudo nmap -p 22 --scanflags FIN <mySSHServerPublicIP> 

Как только TCP-квитирование выполнено (последовательности SYN, SYN-ACK, ACK завершены) и соединение установлено, я понимаю, что Сервер или клиент закрывает это соединение изящно, отправляя FIN, или не изящно, отправляя RST.

Я также попытался подделать мой сервер, чтобы закрыть соединение на моем клиенте:

$ sudo nmap -p 23926 --scanflags FIN -S <mySSHServerPublicIP> <MyLocalIP> -Pn -n -e <interface> 

Эти команды не имеют эффекта, кто-нибудь знает, почему он не закрывает соединение?

1
ну, во-первых, вам нужно будет на самом деле перехватить TCP-соединение, чтобы внедрить в него FIN или RST. если устройство не получит правильные значения SYN и ACK из вашего пакета, оно проигнорирует его. Большинство современных IP-стеков слишком сложны, чтобы предсказать значения, которые позволят обрабатывать пакет как часть логического соединения. Кроме того, TCP требует, чтобы оба конца подтвердили FIN, поэтому FIN клиента, ответ сервера с ACK, а затем отдельный FIN, так что оба конца соглашаются, что соединение закрыто. Frank Thomas 8 лет назад 0
Но я ожидаю увидеть Close_Wait после отправки FIN, но этого не происходит. Почему TCPView может закрыть соединение? Это захватывает связь? Это возможно с tcpvcon или hping? Florian Bidabe 8 лет назад 0
Проще говоря, вы, вероятно, не сможете делать то, что вы хотите. Компьютерные инженеры и ученые потратили десятилетия на разработку системы, которая явно запрещает вам делать то, что вы пытаетесь сделать. Frank Thomas 8 лет назад 0
Спасибо за ваш ответ, это слишком широко, но я надеюсь, что кто-то сможет прийти с техническим анализом. Я сделаю трассировку сети и сравню, что делает закрытие соединения с TCPView, и что делает эта команда nmap. Florian Bidabe 8 лет назад 0
Во всех смыслах. Я рекомендую вам прочитать о трехстороннем рукопожатии TCP о том, как создаются соединения. это поможет вам понять, почему игнорируется пакет извне логического соединения и как он идентифицируется (например, недопустимые значения SYN и ACK). Кстати, tcpview просто говорит ОС закрыть порт. это не отправляет пакет. Frank Thomas 8 лет назад 0
Спасибо за ваш вклад, Фрэнк, вы все еще не отвечаете на мой вопрос. Не могли бы вы опубликовать ответ с некоторыми техническими подробностями, если вы понимаете, почему это не работает? Например, какая характеристика этого TCP-пакета, сгенерированного nmap, неожиданна? Florian Bidabe 8 лет назад 0

1 ответ на вопрос

0
Florian Bidabe

Nmap не подходит для этой работы.

Чтобы закрыть соединение, мне нужно предсказать порядковый номер TCP, увеличить его на единицу и ответить FIN или RST. Похоже, Scapy позволит мне сделать это ... Я обновлю этот ответ после некоторого практического тестирования