ПОЖМЕМ ДРУГ ДРУГУ РУКИ! разбор методов сканирования Спецвыпуск Xakep, номер #023, стр. 023-022-1 stix (f3x@hotmail.ru) Ты, наверное, как истинный кул хацкер, не можешь недооценить полезность и рулезность исследования системы методом сканирования портов с целью выявления уязвимых мест. А сканировать, не зная самих методов сканирования, - это fo lamaz. Так что давай не будем уподобляться этим животным, дающим столь ценную шерсть, и разберемся с этим вопросом. Перед рассмотрением всего, что пойдет ниже, хотелось бы отправить читателя, то есть тебя, поглядеть на опус о TCP - RFC 793, который непосредственно касается рассматриваемой нами темы. Но я же понимаю, что у тебя нет на это времени, и попробую растолковать все на пальцах :). Итак, первое, что ты должен понять, это механизм установления ТСР-соединения, который состоит из трех фаз, этапов, ступеней - короче, неважно. Комп, устанавливающий соединение, сначала посылает ТСР-пакет с установленным флагом SYN, после чего принимающий комп (адресат) посылает в ответ ТСР-пакет с установленными флагами SYN и ACK, если порт открыт, и - второй вариант развития данного действа - если порт не активен (закрыт), происходит разрыв соединения с помощью ТСР-пакета с установленным флагом RST, который отсылает адресат. Третья фаза заключается в следующем: после получения от адресата ТСР-пакета с установленными флагами SYN и АСК в ответ на этот пакет отсылает ТСР-пакет с установленным флагом ACK (само собой, все эти пакеты имеют соответствующие номера последовательностей sequence numbers (отвечающих за правильность принятия) и номера подтверждений acknowledge numbers (отвечающих за успешное принятие пакетов). После всего этого соединение считается установленным. Данная процедура имеет, как уже было замечено выше, свое название: "трехуровневое рукопожатие" или "трехфазное рукопожатие", или, короче, просто handshake, то есть рукопожатие. С процедуры установления соединения (рукопожатия) начинается любой сеанс обмена данными между удаленными компами. Необходимо также ввести ясность в понятие флага (SYN, ACK, RST). Что это за байдень такая? Любой ТСР-пакет состоит из некоторого строго определенного набора полей разной длины, заполняющихся некоторым значением (или 1, или 0), так вот, флаг SYN - это флаг или поле, значение которого установлено в 1, т. е. активировано. Пакет, установленный с флагом SYN, инициирует соединение. Флаг АСК используется для подтверждения успешного принятого пакета, флаг RST - отвечает за сброс соединения. Существуют определенные законы, по которым данным флагам назначаются значения. Они назначаются исходя из ситуации и условий - это означает, что нельзя сформировать ТСР-пакет от балды, с каким-то набором установленных флагов, который будет отправлен в сеть и перевернет для тебя все вверх ногами. Рассмотрение всех этих законов является темой отдельной статьи, поэтому не пугайся - в этой статье тебе будет дано все, что тебе необходимо знать, и не больше. Все, что бы тебе ни говорилось, конечно же, требует незамедлительной проверки и подтверждения. "Доверяй, но проверяй" - как гласит народная мудрость. В качестве подтверждения описываемых ниже методов и примеров их использования будет юзаться супер всемирно известная боевая софтина - nmap - и не менее известная прога - hping. Кстати, недавно в сети был выложен свежий релиз - nmap-3.0 (http://www.insecure.org), так что, недолго думая, чтобы быть на гребне волны, вперед, запускай свой супер грабер Интернета и будешь во всеоружии. Тем более, что описание обеих софтин и их применение уже не раз приводилось в ][. Да, кстати, чуть не забыл, если ты яростный поклонник форточек, то на том же сайте (http://www.insecure.org) ты можешь залить себе релиз данной тулзы под Win32, и тогда тебя вообще ничего не будет напрягать, кроме возможных последствий производимых тобой действий, так что намотай себе это на ус и будь осторожен. Аминь! |