Модераторы: feodorv

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сканирование портов, SYN пакеты 
:(
    Опции темы
Kill_em_all
Дата 28.11.2005, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 2.4.2005

Репутация: нет
Всего: нет



Где можно найти инфу пр сканирование при помощи SYN пакетов
или rfc документ по SYN пакетам.
Или на худой конец исходник проги сканирующей с помощью этих пакетов smile
PM MAIL   Вверх
dwr_budr
Дата 29.11.2005, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 11.4.2004

Репутация: нет
Всего: 2



Там вроде как концептуально все просто. Посылается TCP пакет с включенным SYN битом. Если в ответ приходит TCP пакет с включенными SYN и ACK битами, то порт открыт и слушает. Если приходит TCP пакет с включенным RST битом, то порт соответсвенно закрыт.

Если все действительно так и делать в лоб, то написание кода сводится к созданию link layer сокета, небольшой возней с TCP и IP заголовками, и sendto. Ну а потом recvfrom все пакеты пока не получим ответ на наш SYN пакет.

Не исключаю, что я в чем то неправ и там все намного сложнее smile
PM MAIL   Вверх
GrayCardinal
Дата 29.11.2005, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 3
Всего: 58



Kill_em_all
Дык а чего ? Курни libnet (сишная которая, не перловская, шарить в гугле или www.sf.net) и НОУ ПРОБЛЕМ smile Кажись под винду тож есть версия. Там на сколько помню надо проставлять :
IP адреса
TTL
Порты
TCP флаги.
Кажись все. Остальное сама поставит и чексум посчитает. Мне нравится.

Цитата
Если приходит TCP пакет с включенным RST битом, то порт соответсвенно закрыт

Для виндового компа, извиняюсь, не так smile. Там обратное. Если ACK пришел, то открыт. Ежели ничего не пришло - закрыт, вестимо. Есть еще пара вариантов как это дело тестить. Ну да ладно...


--------------------
PM MAIL WWW   Вверх
Kill_em_all
Дата 29.11.2005, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 2.4.2005

Репутация: нет
Всего: нет



Цитата(dwr_budr @ 29.11.2005, 02:19)
Если все действительно так и делать в лоб, то написание кода сводится к созданию link layer сокета, небольшой возней с TCP и IP заголовками, и sendto. Ну а потом recvfrom все пакеты пока не получим ответ на наш SYN пакет

link layer сокет(в смысле)?Это ли не RAW-сокет?

Да, а можно ли подобным (или еще каким-нить способом) просканить UDP-порты?
Я посмотрю rfc по tcp, но если никого не затруднит выложить исходник с примером

Цитата(GrayCardinal @ 29.11.2005, 08:09)
Дык а чего ? Курни libnet (сишная которая, не перловская, шарить в гугле или www.sf.net) и НОУ ПРОБЛЕМ  Кажись под винду тож есть версия.

Это либа или dll?

PM MAIL   Вверх
dwr_budr
Дата 29.11.2005, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 11.4.2004

Репутация: нет
Всего: 2



Kill_em_all
RAW сокеты бывают разные.

socket(AF_INET, SOCK_RAW, PROTOCOL_XXX); Такой сокет предоставляет доступ к network layer'у. При этом далеко не любой входящий пакет ядро направит в такой сокет. К примеру IP пакеты в которых TCP или UDP пакеты в аткой сокет не попадут. А IP пакет с неизвестным содержимым - попадет. У Стивенса есть подробное описание какие пакеты в такой сокет попадут.

socket(PF_PACKET, SOCK_DGRAM, PROTOCOL_XXX); Такой сокет позволяет получить доступ к link layer'у. Вот из него уже можно получать все входящие пакеты. Как-то пробовал сварганить простой сниффер и как раз такой сокет использовал.

GrayCardinal
Очень интересная деталь про виндовую реализацию TCP 3 way handshake'а. Только напрашивается вопрос: нафига эти вариации? К примеру виндовый комп общается с линуксовым. При неудачном 3wh линуксовый комп шлет TCP пакет с RST флагом. А что винда? А винда его не ждет, и ежели такой пакет придет она его должна по идее проигнорировать. И как это называется?

Это сообщение отредактировал(а) dwr_budr - 29.11.2005, 13:32
PM MAIL   Вверх
Kill_em_all
Дата 29.11.2005, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 2.4.2005

Репутация: нет
Всего: нет



Я к тому, что я написал сниффер, но использовал
socket(AF_INET, SOCK_RAW, IPPROTO_IP);
а потом
ioctlsocket(s, SIO_RCVALL, &flag);
и я получал и tcp и udp пакеты
Я никак не разберусь как разобрать tcp пакет
Не покажешь ли как собрать и разобрать в структуру?
PM MAIL   Вверх
dwr_budr
Дата 29.11.2005, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 11.4.2004

Репутация: нет
Всего: 2



Прикольная фича. А ты с такими опциями получал именно голые TCP и UDP пакеты или IP пакеты?

А сам TCP пакет разобрать вроде несложно. В netinit/tcp.h определена struct tcphdr. Так что читай в такую структуру заголовок, проверяй включены ли SYNACK/RST флаги и я буду стирать nmap smile

Это сообщение отредактировал(а) dwr_budr - 29.11.2005, 13:30
PM MAIL   Вверх
Kill_em_all
Дата 30.11.2005, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 2.4.2005

Репутация: нет
Всего: нет



Цитата(dwr_budr @ 29.11.2005, 11:51)
socket(PF_PACKET, SOCK_DGRAM, PROTOCOL_XXX); Такой сокет позволяет получить доступ к link layer'у. Вот из него уже можно получать все входящие пакеты. Как-то пробовал сварганить простой сниффер и как раз такой сокет использовал.

А при этом не надо сокет переводить в неразборчивый режим?

И tcp.h у меня нету smile
Где ее можно взять(пишу я на VC++7)

Это сообщение отредактировал(а) Kill_em_all - 30.11.2005, 11:29
PM MAIL   Вверх
Kill_em_all
Дата 30.11.2005, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 2.4.2005

Репутация: нет
Всего: нет



Цитата(dwr_budr @ 29.11.2005, 13:30)
Прикольная фича. А ты с такими опциями получал именно голые TCP и UDP пакеты или IP пакеты?

А при этом не надо сокет переводить в неразборчивый режим?(ioctlsocket(s, SIO_RCVALL, &fl));

Код


typedef struct _TCP 
{
    WORD  SrcPort;
    WORD  DstPort;
    DWORD SeqNum;
    DWORD AckNum;
    BYTE  DataOff;
    BYTE  Flags;
    WORD  Window;
    WORD  Chksum;
    WORD  UrgPtr;
} TCP;


Надеюсь это та структура?

Если да то спасибо, вроде бы понял (хотя еще не написал сканер)



PM MAIL   Вверх
GrayCardinal
Дата 30.11.2005, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 3
Всего: 58



dwr_budr
Да фигня а не реализация. Хотя мелкомягких тоже можно понять. Тупой сканер вроде for () {connect} уже не включишь. Да и nmap в отсойнике smile Купить хостинг и сканить с него уже не прокатит. smile smile smile А что еще для жизни надо ? smile Правда тут же получите reflected syn flood, но про это они почему - то не думают smile

ЗЫ
Ты еще не стер nmap ? Стирай нафиг smile Подкинуть вещичку для линуха ? smile
smile smile smile




--------------------
PM MAIL WWW   Вверх
dwr_budr
Дата 30.11.2005, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 11.4.2004

Репутация: нет
Всего: 2



Kill_em_all
Я так и не понял куда направлен вопрос про неразборчивый режим. Если это в тему о link layer сокете, то не надо, потому как он уже получает все пакеты. Хотя наверняка и его можно настроить разными способами. А какую структуру используют в винде я не знаю, но та которую ты показал выглядит как надо.
PM MAIL   Вверх
dwr_budr
Дата 30.11.2005, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 11.4.2004

Репутация: нет
Всего: 2



GrayCardinal
Не понял почему for(;;) connect() сканнер не прокатит. Я понимаю, что такой сканнер тормознутый, но это уже другой вопрос.

А по поводу виндовго 3wh. Все же ну очень бредовая реализация. Ты уверен что ничего не путаешь? Где ты о такой фиче вычитал? Вот ты говоришь что если порт закрыт - ничего не придет. Тем не менее ответ может не прити не только потому что порт закрыт , но еще и потому что пакет не дошел и в таком случае запрос надо повторить. Как понять что же произошло? В итоге даже если порт действительно закрыт винда снова будет пробовать посылать запрос?

PM MAIL   Вверх
GrayCardinal
Дата 1.12.2005, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 3
Всего: 58



Я вычитал ? Да нифига. Сам сидел и слал SYN на microsoft.com Собственноручно. Ни один RST не пришел. Зато SYN/ACK - как положено. По сети проверял - у меня только виндовые компы. Та же фичя. Мож сам попробовать.

Включаешь tcpdump -vvv
Далее
connect ()
SYN уйдет - RST будешь ждать вечность (или пока не надоест smile )

И connect () будет ждать. Ну и SYN повторять. Только у него RTO сумасшедший (60 мин, что ли последний ? )

ЗЫ
или в мире что-то поменялось пока я спал smile ?


--------------------
PM MAIL WWW   Вверх
dwr_budr
Дата 1.12.2005, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 11.4.2004

Репутация: нет
Всего: 2



GrayCardinal

Да проверил я это дело. tethereal + nc. Ты прав RST с виндовых машин не приходят (пробовал на ms.com и на одном компе дома), так же пробовал на Сане и Линуксе - RST приходит. Ну а интерес к вопросу лишь поднимается. Получается неудачный коннект к виндовой машине занимает в среднем больше времени, чем к машине с нормальной реализацией TCP? А Билли хитёр.

Пробовал nmap'ить майкрософтовский сайт. Так вот сканирование connect()'ом заняло 50 секунд. А сканирование SYN'ами 70 секунд.

PS Я тут подумал. Может это дело рук фаервола или еще чего нить что непосредственно попадается по пути? Видит что порт не открыт - вот и молчит в ответ. На твоих компах фаерволы были? На моем есть, но в данный момент нет возможность его отключить и проверить.

Это сообщение отредактировал(а) dwr_budr - 1.12.2005, 10:04
PM MAIL   Вверх
GrayCardinal
Дата 1.12.2005, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 3
Всего: 58



dwr_budr
Не-а. У меня без файрволчиков. И nmap с connect просто глохнет на первом же connect (хотя я, в основном, не nmap, а самопалкой, но смысл от этого не меняется). nmap - ить SYN'ами не пробовал. Однако той-же самопалкой сканер SYN'ами - не больше трех секунд для виндовой машины (если по локалке, на модеме дольше, конечно smile ). Там даже не надо проверять RST. Тупо включаешь tcpdump, посылаешь 65535 SYN. И получаешь столько-то ACK. Красиво так выходит. Было дело сидел радовался.

ЗЫ
Билли сам себе могилу роет. Шо будет если адрес подделать и рассылать SYN якобы с его адреса, а ? Кранты ему будет вот что smile

Это сообщение отредактировал(а) GrayCardinal - 1.12.2005, 12:39


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0767 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.