Установление сеанса TCP без его завершения (без отправки RST/FIN)

Предоставление команды lsв приглашении сделает немного больше, чем просто вызов /bin/ls. Если бы lsбыл псевдонимом или функцией, вызывался бы этот псевдоним или функция. Если это не было ни тем, ни другим, и если это не было встроенным -в команде(lsочень редко является встроенным -в команде ), тогда поиск пути был бы выполнен для lsв каждом каталоге в список с разделителями:-в переменной окружения $PATH.

Будет выполнен ls, который был первым , найденным в $PATH. Потенциально это может быть ls, а не /bin/ls, если каталог, содержащий такое имя, находится раньше, чем /bin, в списке $PATH.

Использование /bin/shпозволит обойти поиски псевдонимов и функций, а также любые поиски в $PATHи вместо этого будет запускать эту команду напрямую.

Разница в цвете вывода между lsи /bin/ls, возможно, может быть объяснена тем, что lsявляется псевдонимом, который добавляет дополнительные параметры командной строки при вызове утилиты ls(проверьте с помощью alias lsили type -a lsв bash).

0
16.11.2021, 07:28
1 ответ

Ядро управляет SYN/FIN/RST как частью протокола TCP, поэтому нет инструментов как таковых , которые создают поток TCP без его завершения.

Некоторые возможности

  • Напишите свой собственный код, который напрямую генерирует необработанные пакеты SYN и SYN/ACK

  • Используйте стандартный инструмент, но просто оставьте его в подвешенном состоянии, пока он больше не понадобится

    nc remoteHost remotePort &    # nc example.com 80
    ncPID=$!
    
    sleep 1
    kill -STOP $ncPID
    
  • Используйте стандартный инструмент и внедрите правило брандмауэра, чтобы заблокировать поток перед его закрытием

    nc remoteHost remotePort &
    ncPID=$!
    
    sleep 1
    iptables -I OUTPUT --dst remoteHost --dport remotePort -j DROP
    kill $ncPID
    
    sleep 1
    iptables -D OUTPUT --dst remoteHost --dport remotePort -j DROP
    
0
16.11.2021, 08:17

Теги

Похожие вопросы