Анонимное сканирование портов при помощи hping3

Для реализации понадобится уверенные знания работы TCP/IP и желание понять. В результате мы получим возможность сканировать удаленную машину на открытые порты от чужого адреса по следующией схеме (картинка из мануала по nmap):

image

Теоретическое введение

Как можно увидеть на википедии, каждому отправляемому IP пакету назначается его номер (правда фрагментированные пакеты имеют один номер), хранимый в специальном 16ти битном поле. При переполнении поля счет начинается с нуля. Сделав 2 замера номеров сетевого пакета можно судить о сетевой активности наблюдаемого компьютера.
Установка TCP соединения происходит по схеме «тройного рукопожатия». Клиент посылает серверу пакет с установленным флагом SYN, сигнализирующим предложение создать соединение. В случае, если серверу удается создать socket для соединения, то он ответит клиенту пакетом с встречным предложением SYN и запросом на подтверждение ACK (где в свою очередь клиент подтверждает свое желание о создании TCP соединения пакетом с флагом ACK). В случае, если сервер отказывает в соединении, он отсылает клиенту отказ в виде пакета с флагом RST, на что свою очередь клиент грустно отмалчивается. Базируясь на этом различии мы и построим сканирование открытых портов от чужого имени.

Читать