СПОСОБ ЗАЩИТЫ ВЫЧИСЛИТЕЛЬНЫХ СЕТЕЙ Российский патент 2019 года по МПК G06F21/60 H04L9/00 

Описание патента на изобретение RU2682432C1

Изобретение относится к электросвязи и может быть использовано в системах обнаружения атак с целью оперативного выявления и противодействия несанкционированным воздействиям в вычислительных сетях, в частности, в сети передачи данных типа «Internet», основанных на семействе коммуникационных протоколов TCP/IP {Transmission Control Protocol / Internet Protocol) и описанных в книге Олифер В., Олифер Н. Компьютерные Сети. Принципы, технологии, протоколы: Учебник для вузов. 5-е изд. - СПб.: Питер, 2016. - 992 с: ил.

Известен «Способ защиты вычислительной сети» по патенту РФ №2422892, класс G06F 21/20 (2006.01), заявл. 13.04.2010. Известный способ включает следующую последовательность действий. Устанавливают в каналах связи защищаемой вычислительной сети шлюз-компьютер с межсетевым экраном. Формируют базу параметров легитимных пакетов и блокируют поступающие из открытой сети пакеты на период установления легитимности. Запоминают адрес получателя, анализируют поступающие из открытой сети пакеты, для чего сравнивают их параметры с заранее сформированной базой параметров легитимных пакетов. После завершения анализа формируют ICMP-квитанцию, в которой адрес отправителя заменяют на ранее запомненный адрес получателя. Отправляют ее не легитимному отправителю.

Недостатком данного способа является относительно низкая защищенность от несанкционированных воздействий, признаками наличия которых являются несанкционированные информационные потоки (ИП). Это обусловлено тем, что при определении факта наличия несанкционированного ИП в вычислительных сетях блокируется передача пакета сообщений, что является недостаточным для защиты вычислительных сетей от несанкционированных воздействий. Реализация указанного подхода к защите вынуждает нарушителя далее воздействовать на вычислительные сети и (или) менять стратегию воздействия.

Известен «Способ (варианты) защиты вычислительных сетей» по патенту РФ №2307392, класс G06 F21/00, опубл. 27.09.2007. Известный способ включает следующую последовательность действий. Предварительно задают N≥1 опорных идентификаторов санкционированных ИП, содержащих адреса отправителей и получателей пакетов сообщений, принимают из канала связи пакет сообщений, выделяют из заголовка принятого пакета сообщений идентификатор ИП, сравнивают выделенный идентификатор с предварительно заданными опорными идентификаторами санкционированных ИП и при их совпадении передают пакет сообщений получателю, а при их несовпадении сравнивают адрес отправителя, указанный в идентификаторе принятого пакета сообщений с адресами отправителей, указанными в опорных идентификаторах санкционированных ИП, задают Р≥1 ложных адресов абонентов вычислительной сети и время задержки отправки пакетов сообщений tзад. В случае совпадения адреса отправителя в принятом пакете сообщений с одним из адресов отправителей опорных идентификаторов санкционированных ИП сравнивают адрес получателя в принятом пакете сообщений с адресами получателей опорных идентификаторов санкционированных ИП. При несовпадении адреса получателя в принятом пакете сообщений с адресами получателей опорных идентификаторов санкционированных ИП дополнительно сравнивают адрес получателя в принятом пакете сообщений с предварительно заданными ложными адресами абонентов вычислительной сети. В случае несовпадения адреса получателя в принятом пакете сообщений с предварительно заданными ложными адресами абонентов блокируют передачу пакета сообщений. А при несовпадении адреса отправителя в принятом пакете сообщений с одним из адресов отправителей опорных идентификаторов санкционированных ИП или совпадении адреса получателя в принятом пакете сообщений с адресами получателей опорных идентификаторов санкционированных ИП, или его совпадении с предварительно заданными ложными адресами абонентов вычислительной сети формируют ответный пакет сообщений, а затем, через заданное время задержки отправки пакетов сообщений tзад снижают скорость передачи сформированного пакета сообщений. Передают его отправителю, после чего принимают из канала связи очередной пакет сообщений. Для идентификации протокола взаимодействия выделяют идентификатор типа протокола взаимодействия и сравнивают его с эталонами идентификаторов типа протокола взаимодействия. Для снижения скорости передачи сформированного пакета сообщений фрагментируют пакет сообщений, передают пакет сообщений через заданное время задержки отправки пакетов сообщений tзад.

Недостатками данного способа являются относительно низкая результативность защиты вычислительных сетей и узкая область применения способа защиты. Низкая результативность защиты обусловлена тем, что в прототипе увеличение интенсивности несанкционированных информационных потоков и сохранение заданного времени задержки отправки ответных пакетов сообщений отправителю приведет к перегрузке вычислительной сети. Узкая область применения обусловлена тем, что для реализации способа защиты скорость информационного обмена с отправителем несанкционированных информационных потоков снижают только со стороны вычислительной сети, то есть в одностороннем порядке, и не учитывают возможность отправителя разорвать соединение.

Наиболее близким по своей технической сущности к заявленному, является способ защиты вычислительных сетей, описанный, например, в книге Grimes, R.A. Honeypots for Windows // Apress. 2005. 424 p. на стр. 191-192. Известный способ включает следующую последовательность действий. Предварительно задают Р≥1 неиспользуемых IP-адресов сетевых устройств вычислительной сети из всего количества IP-адресов вычислительной сети. Подключают сетевые устройства к вычислительной сети. Принимают TCP-пакет сообщений к неиспользуемому IP-адресу сетевого устройства вычислительной сети. После этого формируют служебные поля заголовка ответного TCP-пакета сообщений, для чего записывают в служебное поле «размер окна» ответного TCP-пакета сообщений значение Wнач равное 10 байт. Затем направляют отправителю ответные ТСР-пакеты сообщений с Wнач равным 10 байт и принимают очередной ТСР-пакет сообщений. Далее устанавливают в служебное поле «размер окна» заголовка ответного ТСР-пакета сообщений значение Wуд равное 0 байт и формируют ответные ТСР-пакеты сообщений с Wуд равным 0 байт. Направляют отправителю ответные ТСР-пакеты сообщений с Wуд равным 0 байт, а для блокирования попыток разорвать соединение со стороны отправителя ТСР-пакетов сообщений игнорируют все входящие ТСР-пакеты сообщений до истечения тайм-аута соединения.

Известный способ-прототип обеспечивает более высокую защищенность вычислительных сетей от несанкционированных воздействий по сравнению с аналогами за счет введения в заблуждение нарушителя относительно структуры вычислительных сетей путем имитации доступности всего массива IP-адресов вычислительной сети, обеспечивая тем самым максимальную вероятность перенаправления нарушителя на ресурс-ловушку, и за счет удержания в двухстороннем порядке соединения с отправителем пакетов сообщений, обеспечивая тем самым увеличение дискомфорта у нарушителя и выигрыш по времени, необходимый для реализации ответных мер.

Недостатками способа-прототипа является относительно низкая реалистичность функционирования имитируемых IP-адресов вычислительной сети и относительно низкая результативность защиты, обусловленные тем, что в прототипе не управляют параметрами служебного поля «опции» заголовка ответного TCP-пакета сообщений, что демаскирует наличие средств защиты и приводит к возможности идентификации нарушителем их характеристик.

Целью заявленного технического решения является разработка способа защиты вычислительных сетей, обеспечивающего повышение реалистичности функционирования имитируемых IP-адресов вычислительной сети и повышение результативности защиты за счет устранения демаскирующих признаков средств защиты вычислительной сети, что обеспечивают включением в заголовок ответного TCP-пакета сообщений служебного поля «опции» и избирательным копированием в него содержимого из заголовка входящего TCP-пакета сообщений, чем достигают реалистичную имитацию ложных абонентов и сеансов связи и низкую вероятность обнаружения нарушителем факта использования средств защиты и идентификации их характеристик.

Поставленная цель достигается тем, что в известном способе защиты вычислительных сетей предварительно задают Р≥1 неиспользуемых IP-адресов сетевых устройств вычислительной сети из всего количества IP-адресов вычислительной сети. Затем подключают сетевые устройства к вычислительной сети и принимают TCP-пакет сообщений к неиспользуемому IP-адресу сетевого устройства вычислительной сети. После этого формируют служебные поля заголовка ответного TCP-пакета сообщений, для чего записывают в служебное поле «размер окна» заголовка ответного TCP-пакета сообщений значение Wнач равное 10 байт. Направляют отправителю ответные ТСР-пакеты сообщений с Wнач равным 10 байт и принимают очередной ТСР-пакет сообщений. Далее устанавливают в служебное поле «размер окна» заголовка ответного ТСР-пакета сообщений значение W равное 0 байт и формируют ответные ТСР-пакеты сообщений с W равным 0 байт. После этого направляют отправителю ответные ТСР-пакеты сообщений с W равным 0 байт, а для блокирования попыток разорвать соединение со стороны отправителя ТСР-пакетов сообщений игнорируют все входящие ТСР-пакеты сообщений до истечения тайм-аута соединения. В предварительно заданные исходные данные дополнительно задают множество переменных для хранения эталонных значений сегмента kind служебного поля «опции» заголовка ТСР-пакета сообщений с установленным флагом ACK {MACK}={NOP, EOL, SACK, Timestamp}, множество переменных для хранения эталонных значений сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений с установленным флагом SYN {MSYN}={NOP, EOL, SACK, Timestamp, MSS, Wsopt, SACK-Permitted), а также множество переменных для хранения запрещенных эталонов значений сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений с установленным флагом ACK {MUN}={MSS, Wsopt, SACK-Permitted}. Затем предварительно задают величину LSL служебных полей заголовка TCP-пакета сообщений и устанавливают ее значение равным 20 байтам. Также предварительно задают счетчик IC величины служебного поля «опции» заголовка TCP-пакета сообщений, текущее значение которого принимают равным нулю. После этого предварительно задают массив памяти MR={kind, length, data} для хранения значений сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений и массив памяти MHlen для хранения считанного из принятого TCP-пакета сообщений значения служебного поля Hlen, определяющего величину заголовка принятого TCP-пакета сообщений. Далее предварительно задают переменную LF для хранения значения величины заголовка TCP-пакета сообщений, необходимого для формирования корректного ответного TCP-пакета сообщений, первоначальное значение переменной LF принимают равным сумме значений IC и LSL. После приема TCP-пакета сообщений считывают значение служебного поля Hlen из заголовка принятого TCP-пакета сообщений и запоминают его значение в массиве памяти MHlen. Далее сравнивают значение величины Hlen со значением величины LSL служебных полей заголовка TCP-пакета сообщений, и в случае если Hlen=LSL, то переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений. В ином случае, если Hlen>LSL, вычисляют значение LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, где LOPT=Hlen-LSL. После этого считывают значения служебных полей Flags из заголовка принятого TCP-пакета сообщений. Если в служебном поле Flags заголовка принятого TCP-пакета сообщений установлено значение бита SYN равным единице, то считывают значение сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений и сравнивают значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений со значениями переменных NOP и EOL множества {MSYN}. В случае если значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений равно переменным NOP или EOL множества {MSYN}, то увеличивают текущее значение счетчика IC на единицу и запоминают значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR. После этого сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений и если IC=LOPT, то нормализуют величину заголовка TCP-пакета сообщений. Далее переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений, а в случае, если IC≠LOPT, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают его со значениями переменных NOP и EOL множества {MSYN}. В случае их несовпадения сравнивают значение сегмента kind со значениями переменных MSS и Wsopt множества {MSYN}, и в случае совпадения значения сегмента kind со значениями переменных MSS или Wsopt множества {MSYN} считывают значение сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений. После этого увеличивают текущее значение счетчика IC на величину значения считанного сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений. Затем запоминают значения сегментов kind, length, data полей опций MSS или Wsopt заголовка принятого TCP-пакета сообщений в массив памяти MR и сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений. В случае, если IC=LOPT, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений. В ином случае, если IC≠LOPT, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают его со значениями переменных NOP и EOL множества {MSYN}. В случае их несовпадения сравнивают значение сегмента kind со значениями переменных MSS и Wsopt множества {MSYN}, и в случае их несовпадения сравнивают значение сегмента kind со значениями переменной Timestamp множества {MSYN}. В случае совпадения значения сегмента kind со значением переменной Timestamp множества {MSYN} считывают значение сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и вычисляют значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений. Затем увеличивают текущее значение счетчика IC на величину значения считанного сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и запоминают считанное значение сегментов kind, length и вычисленное значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений в массив памяти MR. Далее сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, и в случае, если IC=LOPT, то нормализуют величину заголовка TCP-пакета сообщений. После этого переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений и в случае, если IC≠LOPT, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений. Затем сравнивают его со значениями переменных NOP и EOL множества {MSYN}, и в случае их несовпадения сравнивают значение сегмента kind со значениями переменных MSS и Wsopt множества {MSYN}. В случае их несовпадения сравнивают значение сегмента kind со значениями переменной Timestamp множества {MSYN}, и в случае их несовпадения сравнивают значение сегмента kind со значениями переменных SACK и SACK-Permitted множества {MSYN}. После этого, в случае совпадения значения сегмента kind со значениями переменных SACK или SACK-Permitted множества {MSYN} запоминание значений сегментов kind и length служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR не осуществляют и значение счетчика IC не увеличивают. Затем переходят к сравнению текущего значения счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений. В противном случае, то есть при несовпадении значения сегмента kind со значениями переменных SACK или SACK-Permitted множества {MSYN} увеличивают текущее значение счетчика IC на величину значений считанных сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений. После этого запоминают значения считанных сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR и сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений. В случае, если IC-LOPT, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений. Если в служебном поле Flags заголовка принятого TCP-пакета сообщений установлено значение бита ACK равным единице, то считывают значение сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений и сравнивают значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений со значениями переменных NOP и EOL множества {MACK}. В случае, если значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений равно переменным NOP или EOL множества {MACK} то увеличивают текущее значение счетчика IC на единицу и запоминают значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR. Затем сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений. В случае, если IC=LOPT, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений. В ином случае, если IC≠LOPT, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений, сравнивают его со значениями переменных NOP и EOL множества {MACK}. В случае их несовпадения сравнивают значение сегмента kind со значениями переменной Timestamp множества {MACK}, и в случае совпадения значения сегмента kind со значением переменной Timestamp множества {MACK} считывают значение сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и вычисляют значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений. После этого увеличивают текущее значение счетчика IC на величину значения считанного сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и запоминают считанное значение сегментов kind, length и вычисленное значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений в массив памяти MR. Затем сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений и в случае, если IC=LOPT, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений. В случае, если IC≠LOPT, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений, сравнивают его со значениями переменных NOP и EOL множества {MACK}, и в случае их несовпадения сравнивают значение сегмента kind со значением переменной Timestamp множества {MACK}. В случае их несовпадения сравнивают значение сегмента kind со значениями переменных SACK множества {MACK} и переменных MSS, Wsopt, SACK-Permitted множества {MUN}. В случае совпадения значения сегмента kind со значениями переменной SACK множества {MACK} и переменных MSS, Wsopt, SACK-Permitted множества {MUN} запоминание значений сегментов kind, length, data служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR не осуществляют и значение счетчика IC не увеличивают. После этого переходят к сравнению текущего значения счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений. В противном случае, то есть при несовпадении значения сегмента kind со значениями переменной SACK множества {MACK} и переменных MSS, Wsopt, SACK-Permitted множества {MUN} увеличивают текущее значение счетчика IC на величину значения считанного сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений. Далее запоминают значения сегментов kind, length, data служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR, а затем сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений. В случае, если IC=LOPT, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений.

Для нормализации величины заголовка TCP-пакета сообщений вычисляют значение LF величины заголовка TCP-пакета сообщений, необходимого для формирования корректного ответного TCP-пакета сообщений, где LF=IC+LSL. Затем вычисляют остаток от деления значения LF на четыре, и если остаток от деления LF на четыре не равен нулю, то есть LF mod 4≠0, то увеличивают значение счетчика IC на единицу. После этого запоминают значение сегмента kind поля опции NOP в массив памяти MR и вновь вычисляют значение LF и его остаток от деления на четыре. В противном случае, то есть если остаток от деления значения LF на четыре равен нулю, то есть LF mod 4=0, то записывают в служебное поле «опции» заголовка формируемого TCP-пакета сообщений значения сегментов из массива памяти MR.

Для вычисления значения сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений считывают значение хронометра и записывают его в четырехбайтовое поле временных меток Tsval, а затем считывают значение четырехбайтового поля временных меток Tsval последней принятой опции Timestamp и записывают его в четырехбайтовое поле временных меток TSecr.

Благодаря новой совокупности существенных признаков в заявленном способе обеспечивается повышение реалистичности функционирования имитируемых IP-адресов вычислительной сети и повышение результативности защиты за счет устранения демаскирующих признаков средств защиты вычислительной сети, что обеспечивают включением в заголовок ответного TCP-пакета сообщений служебного поля «опции» и избирательным копированием в него содержимого из заголовка входящего TCP-пакета сообщений, чем достигают реалистичную имитацию ложных абонентов и сеансов связи и низкую вероятность обнаружения нарушителем факта использования средств защиты и идентификации их характеристик.

Заявленные объекты изобретения поясняются чертежами, на которых показаны:

фиг. 1 - структура заголовка TCP-пакета сообщений;

фиг. 2 - пример, иллюстрирующий защиту вычислительной сети с применением сетевой «ловушки»;

фиг. 3 - блок-схема последовательности действий, реализующих заявленный способ;

фиг. 4 - наиболее используемые опции заголовка TCP-пакетов сообщений;

фиг. 5 - заголовки TCP-пакетов сообщений;

фиг. 6 - структура опций заголовков TCP-пакетов сообщений;

фиг. 7 - вывод результатов эксперимента по оценке результативности заявленного способа на первом этапе тестирования;

фиг. 8 - вывод результатов эксперимента по оценке результативности заявленного способа на втором этапе тестирования.

Реализация заявленного способа объясняется следующим образом. Известно, что в настоящее время достаточно большое количество компьютерных атак носит разведывательный характер с целью получения информации о структуре и топологии вычислительной сети, являющейся объектом атаки, а также об используемых средствах защиты вычислительной сети. Одними из средств сетевой защиты, функционирующих с применением обманных сетевых стратегий, направленных на создание у нарушителя иллюзий уязвимых целей или способствующих видимости более сложной инфраструктуры, чем существует на самом деле, являются сетевые «приманки» {honeypots), описанные, например, в книге Provos, N., Holz, Т, Virtual Honeypots: From Botnet Tracking to Intrusion Detection // Addison Wesley, 2007. 480 p. Более совершенные способы сетевого обмана включают в себя не только предоставление противнику правдоподобной цели, но и так называемые проактивные меры защиты, такие как, например, удержание в двухстороннем порядке соединения с отправителем пакетов сообщений, что вызывает «истощение» ресурсов отправителя пакетов сообщений для поддержания состояния соединения, замедляет процесс автоматического сканирования атакуемой вычислительной сети и, как результат, накладывает ограничение на используемый нарушителем вычислительный ресурс, что приводит к невозможности осуществлять сетевой информационный обмен. Рассмотренные способы проактивной защиты реализованы в виде инструментальных средств сетевого обмана, так называемых сетевых «ловушек» {network tarpits), которые описаны, например, в книге Andres, S., Kenyon, В. Birkolz, Е. Security Sage's Guide to Hardening the Network Infrastructure // Sungress Publishing, 2004. 608 p., на стр. 414-416.

В свою очередь, нарушителями информационной безопасности также активно разрабатываются и совершенствуются средства снижения результативности сетевых «ловушек», реализующие следующие способы их компрометации: детектирование уникальных идентификаторов (демаскирующих признаков) сетевых «ловушек»; детальный анализ сетевого трафика поступающего с сетевых «ловушек». Таким демаскирующим признаком сетевой «ловушки», реализованной в способе-прототипе, является отсутствие служебного поля опций (величина служебного поля опций равна нулю) в ответном пакете сообщений, что демаскирует наличие и возможности средств защиты. Служебное поле опций фиг. 1, это одно из служебных полей заголовка TCP-пакета сообщений, является необязательным, имеет переменную длину и может вообще отсутствовать. Служебное поле опций используется для решения вспомогательных задач, например для согласования максимального размера сегмента, и описано, например, в технических спецификациях (RFC, Request for Comments) сети Интернет (см., например, https://tools.ietf.org/html/rfc4413).

В качестве средств компрометации сетевых «ловушек», использующих обнаружение отсутствия служебного поля опций в ответных пакетах сообщений нарушителем применяются как широкоизвестные утилиты такие, как анализатор трафика Wireshark описанный, например в (Abbhinav, Singh. Instant Wireshark Starter. Pakt Publishing, UK 69 p. ISBN 978-1-84969-564-0), так и специализированные средства компрометации средств проактивной защиты вычислительных сетей, такие как Degreaser, (см., например, https://github.com/lancealt/degreaser).

Таким образом, возникает противоречие между результативностью защиты вычислительных сетей и возможностями нарушителей по определению структуры вычислительных сетей и идентификации характеристик средств защиты, имеющих демаскирующие признаки. На устранение указанного противоречия направлен заявленный способ.

Заявленный способ реализуют следующим образом. В общем случае (фиг. 2) вычислительная сеть представляет собой совокупность корреспондентов 101, 102, 106, 107, являющихся источниками и получателями сетевого трафика, периферийного и коммуникационного оборудования 104, 109, ретранслирующего сетевой трафик корреспондентов, объединенного физическими линиями (каналами) связи 103, 1010, соединяющих п узлов вычислительной сети в единую инфраструктуру, в том числе с использованием сети передачи данных типа «Internet» 105. При этом пространство IP-адресов сетевых устройств занято корреспондентами вычислительной сети не полностью: корреспонденты K1, K2, K3, выделенные на фиг. 2 в совокупность 101, подключены к вычислительной сети. Тогда как корреспонденты K4, K5, … Kn, выделенные на фиг. 2 в совокупность 102 (иконки ПЭВМ на фиг. 2 изображены пунктиром), не подключены к вычислительной сети, то есть IP-адреса корреспондентами K4, K5, … Kn, не заняты (не используются).

Для защиты вычислительной сети и введения в заблуждение нарушителя относительно структуры вычислительной сети, на одном из выделенных компьютеров 107 вычислительной сети устанавливают сетевую «ловушку», осуществляющую перехват запросов к неиспользуемому IP-адресу сетевого устройства совокупности 102 вычислительной сети, посредством анализатора пакетов 108. После перехвата запросов осуществляют отправление пакета сообщений отправителю пакетов сообщений и последующее удержание с ним соединения в двухстороннем порядке.

На фиг. 3а и 3б представлена блок-схема последовательности действий, реализующих заявленный способ защиты вычислительных сетей, в которой приняты следующие обозначения:

{MACK} - множество переменных для хранения эталонных значений сегмента kind поля опций заголовка TCP-пакета сообщений с установленным флагом ACK, где {MACK}={NOP, EOL, SACK, Timestamp};

{MSYN} - множество переменных для хранения эталонных значений сегмента kind поля опций заголовка TCP-пакета сообщений с установленным флагом SYN, где {MSYN}={NOP, EOL, SACK, Timestamp, MSS, Wsopt, SACK-Permitted};

{MUN} - множество переменных для хранения запрещенных эталонов значений сегмента kind поля опций заголовка TCP-пакета сообщений с установленным флагом ACK, где {MUN}={MSS, Wsopt, SACK-Permitted};

LSL - величина служебных полей заголовка TCP-пакета сообщений, значение которой установлено равным 20 байтам;

IC - счетчик величины поля опций заголовка TCP-пакета сообщений, текущее значение которого принимают равным нулю;

MR - массив памяти для хранения значений сегментов поля опций заголовка принятого TCP-пакета сообщений, где MR={kind, length, data};

MHlen - массив памяти для хранения считанного из принятого TCP-пакета сообщений значения служебного поля Hlen, определяющего величину заголовка принятого TCP-пакета сообщений;

LF - переменную для хранения значения величины заголовка TCP-пакета сообщений, необходимого для формирования корректного ответного TCP-пакета сообщений, где первоначальное значение переменной LF принимают равным сумме значений IC и LSL;

Wнач - начальное значение служебного поля «размер окна» для формирования заголовка ответного TCP-пакета сообщений;

W - устанавливаемое значение служебного поля «размер окна» в заголовке ответного TCP-пакета сообщений для удержания соединения с отправителем пакетов сообщений.

Для снижения вероятности идентификации характеристик средств защиты в заявленном способе обеспечивают устранение демаскирующих признаков сетевой «ловушки», заключающихся в формировании ответного TCP-пакета сообщений с отсутствующим у него в заголовке служебным полем «опции» (величина служебного поля «опции» равна нулю). Для этого записывают в заголовок ответных ТСР-пакетов сообщений служебное поле «опции», путем избирательного копирования содержимого служебного поля «опции» из входящего TCP-пакета сообщений и его записи в ответный ТСР-пакет сообщений, обеспечивая тем самым реалистичность функционирования защищаемой вычислительной сети.

Применение поддержки служебного поля «опции» в ответном ТСР-пакете сообщений достигают тем, что в предварительно заданные исходные данные дополнительно задают (см. блок 1 на фиг. 3а) множество переменных для хранения эталонных значений сегмента kind служебного поля «опции» TCP-пакета сообщений с установленным флагом ACK {MACK}={NOP, EOL, SACK, Timestamp}.

Также предварительно задают (см. блок 1 на фиг. 3а) множество переменных для хранения эталонных значений сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений с установленным флагом SYN {MSYN}={NOP, EOL, SACK, Timestamp, MSS, Wsopt, SACK-Permitted}. Заданные переменные соответствуют наиболее используемым опциям TCP-пакета сообщений с установленным флагом SYN (фиг. 4), так, например, типовые заголовки для ОС Linux и TCP ACK пакетов сообщений в ОС Solaris представлены на (фиг. 5а и 5б).

Затем предварительно задают (см. блок 1 на фиг. 3а) множество переменных для хранения запрещенных эталонов значений сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений с установленным флагом ACK {MUN}={MSS, Wsopt, SACK-Permitted}. Переменные из множества MUN являются нехарактерными для сегментов ACK и могут появляться только в сегментах SYN, что описано в технических спецификациях (RFC, Request for Comments) сети Интернет (см., например, https://tools.ietf.org/html/rfc4413). Введение множества {MUN} обусловлено тем, что злоумышленник, используя специализированные утилиты для сборки пакетов, например, такие как scapy, (см., например, http://www.secdev.org/projects/scapy/) может сформировать такой TCP ACK пакет сообщений как, например, представлен на (фиг. 5в), содержащий TCP-опции, характерные только для TCP SYN пакетов (MSS, Wsopt, SACK-Permitted). Поэтому простое копирование всего служебного поля «опции» из заголовка принятого пакета сообщений в формируемый ответный пакет сообщений, содержащий нехарактерные для TCP ACK пакета сообщений TCP-опции, приведет к однозначной компрометации средств проактивной защиты вычислительных сетей.

Далее предварительно задают (см. блок 1 на фиг. 3а) величину LSL служебных полей заголовка TCP-пакета сообщений и устанавливают ее значение равным 20 байтам. Значение величины LSL соответствует величине стандартного заголовка TCP-пакета сообщений, не включающего служебного поля «опции», которое, в свою очередь может занимать не более 40 байт, что описано в технических спецификациях (RFC, Request for Comments) сети Интернет (см., например, https://tools.ietf.org/html/rfc4413).

Также задают (см. блок 1 на фиг. 3а) счетчик 1с величины служебного поля «опции» заголовка TCP-пакета сообщений, текущее значение которого принимают равным нулю и массив памяти MR={kind, length, data} для хранения значений сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений.

Далее предварительно задают (см. блок 1 на фиг. 3а) массив памяти MHlen для хранения считанного из принятого TCP-пакета сообщений значения служебного поля Hlen фиг. 1, определяющего величину заголовка принятого TCP-пакета сообщений, описанного, например, в книге Куроуз Д., Росс К. Компьютерные сети: Нисходящий подход / Джеймс Куроуз, Кит Росс. - 6-е изд. - Москва: Издательство «Э», 2016. - 912 с. на стр. 272-273 и переменную LF (см. блок 1 на фиг. 3а) для хранения значения величины заголовка TCP-пакета сообщений, необходимого для формирования корректного ответного TCP-пакета сообщений. Первоначальное значение переменной LF принимают равным сумме значений IC и LSL.

После приема пакета сообщений (см. блок 2 на фиг. 3а) считывают значение служебного поля Hlen из заголовка принятого TCP-пакета сообщений (см. блок 3 на фиг. 3а) и запоминают (см. блок 4 на фиг. 3а) его значение в массиве памяти MHlen. Затем сравнивают (см. блок 5 на фиг. 3а) значение величины Hlen со значением величины LSL служебных полей заголовка TCP-пакета сообщений.

В случае если Hlen=LSL, переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений (см. блок 40 на фиг. 3б). Это говорит о том, что входящий TCP-пакет сообщений пакет сообщений не содержит служебного поля «опции» (величина служебного поля «опции» равна нулю байт), следовательно принятие мер по сокрытию демаскирующего признака с отсутствием в заголовке ответного TCP-пакета сообщений служебного поля «опции» не требуется.

В ином случае, если Hlen>LSL, что говорит о наличии в заголовке ответного TCP-пакета сообщений служебного поля «опции» и необходимости избирательного копирования содержимого служебного поля «опции» в заголовок ответного TCP-пакета сообщений, вычисляют (см. блок 6 на фиг. 3а) значение LOPT величины поля опций заголовка принятого TCP-пакета сообщений, где LOPT=Hlen-LSL.

После этого считывают (см. блок 7 на фиг. 3а) значения служебных полей Flags из заголовка принятого TCP-пакета сообщений и если в служебном поле Flags заголовка принятого TCP-пакета сообщений установлено значение бита SYN равным единице (см. блок 8 на фиг. 3а), то считывают (см. блок 9 на фиг. 3а) значение сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений. Считанное значение бита SYN, равное единице, позволяет определить множество наиболее используемых опций (фиг. 4) в служебного поля «опции» заголовка принятого TCP-пакета сообщений, т.к. при установленном значении бита ACK равного единице набор TCP-опций в служебном поле «опции» заголовка будет другим (для пакетов ACK является нехарактерным присутствие опций MSS, Wsopt, SACK-Permitted в служебном поле «опции» заголовка принятого TCP-пакета сообщений, что однозначно скомпрометирует средства проактивной защиты вычислительной сети). Затем сравнивают (см. блок 10 на фиг. 3а) значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений со значениями переменных NOP и EOL множества {MSYN}.

В случае если значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений равно переменным NOP или EOL множества {MSYN}, то увеличивают (см. блок 11 на фиг. 3а) текущее значение счетчика IC на единицу. TCP-опции типа 0 и 1 - End of Option List (EOL) и No-Operation (NOP) соответственно, занимают один октет и являются однобайтными. Остальные TCP-опции, например, SACK, Timestamp, Maximum Segment Size (MSS) и др. являются многобайтными. Многобайтные опции имеют 1-октетное поле типа (kind), за которым следует октет размера (length) и поле данных (data), размерности и структура наиболее часто используемых опций TCP-пакета сообщений представлены на фиг. 6 и описаны в технических спецификациях (RFC, Request for Comments) сети Интернет (см., например, https://tools.ietf.org/html/rfc4413).

Затем запоминают (см. блок 12 на фиг. 3а) значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR. После этого сравнивают (см. блок 13 на фиг. 3а) текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, и в случае, если IC=LOPT, то нормализуют (см. блоки 14, 15, 16, 17 на фиг. 3а) величину заголовка TCP-пакета сообщений. Необходимость нормализации обусловлена требованиями по выравниванию величины заголовка TCP-пакета сообщений по четырехоктетной границе для исключения обработки пакетов сообщений с заголовком нестандартной длины. Для выравнивания следующей опции по границе слова используют опцию No-Operation (NOP), которая может включаться между другими опциями заголовка, или в конце него, как показано на фиг. 5г и описано, например, в технических спецификациях (RFC, Request for Comments) сети Интернет (см., например, https://tools.ietf.org/html/rfc4413).

Далее переходят к формированию (см. блок 40 на фиг. 3б) служебных полей заголовка ответного TCP-пакета сообщений. В случае, если IC≠LOPT, то вновь считывают (см. блок 9 на фиг. 3а) значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают (см. блок 10 на фиг. 4) его со значениями переменных NOP и EOL множества {MSYN}.

В случае их несовпадения сравнивают значение сегмента kind со значениями переменных MSS (см. блок 18 на фиг. 3а) и Wsopt (см. блок 19 на фиг. 3а) множества {MSYN} и в случае совпадения значения сегмента kind со значениями переменных MSS или Wsopt множества {MSYN} считывают (см. блок 20 на фиг. 3а) значение сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений. Затем увеличивают (см. блок 11 на фиг. 3а) текущее значение счетчика IC на величину значения считанного сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений. После этого запоминают (см. блок 12 на фиг. 3а) значения сегментов kind, length, data полей опций MSS или Wsopt заголовка принятого TCP-пакета сообщений в массив памяти MR

Затем сравнивают (см. блок 13 на фиг. 3а) текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений и в случае, если IC=LOPT, то нормализуют (см. блоки 14, 15, 16, 17 на фиг. 3а) величину заголовка TCP-пакета сообщений, после чего переходят к формированию (см. блок 40 на фиг. 3б) служебных полей заголовка ответного TCP-пакета сообщений.

В ином случае, если IC≠LOPT вновь считывают (см. блок 9 на фиг. 3а) значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают (см. блок 10 на фиг. 3а) его со значениями переменных NOP и EOL множества {MSYN}. В случае их несовпадения сравнивают значение сегмента kind со значениями переменных MSS (см. блок 18 на фиг. 3а) и Wsopt (см. блок 19 на фиг. 3а) множества {MSYN}, и в случае их несовпадения сравнивают (см. блок 21 на фиг. 3а) значение сегмента kind со значениями переменной Timestamp множества {MSYN}.

В случае совпадения значения сегмента kind со значением переменной Timestamp множества {MSYN} считывают (см. блок 22 на фиг. 3а) значение сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и вычисляют (см. блок 23 на фиг. 3а) значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений. Для исключения компрометации средства защиты в заявленном способе защиты вычислительных сетей опция Timestamp не копируется из служебного поля «опции» заголовка принимаемого TCP-пакета сообщений. Опция Timestamp состоит из двух четырехбайтовых полей временных меток Tsval и TSecr (фиг. 6). Поле Timestamp Value (TSval) содержит текущее значение временной метки передавшего опцию модуля TCP. Поле Timestamp Echo Reply (TSecr) содержит временную метку, переданную удаленным модулем TCP, что описано в технических спецификациях (RFC, Request for Comments) сети Интернет (см., например, https://tools.ietf.org/html/rfc4413). Для вычисления значения сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений считывают значение хронометра временных меток (виртуальных часов «timestamp clock») и записывают его в четырехбайтовое поле временных меток Tsval, а затем считывают значение четырехбайтового поля временных меток Tsval последней принятой опции Timestamp и записывают его в четырехбайтовое поле временных меток TSecr, что описано, например, в технических спецификациях (RFC, Request for Comments) сети Интернет (см., например, https://tools.ietf.org/html/rfc1323).

Далее увеличивают (см. блок 11 на фиг. 3а) текущее значение счетчика IC на величину значения считанного сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и запоминают (см. блок 12 на фиг. 3а) считанное значение сегментов kind, length и вычисленное значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений в массив памяти MR.

После этого сравнивают (см. блок 13 на фиг. 3а) текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, и в случае, если IC=LOPT то нормализуют (см. блоки 14, 15, 16, 17 на фиг. 3а) величину заголовка TCP-пакета сообщений и переходят (см. блок 40 на фиг. 3б) к формированию служебных полей заголовка ответного TCP-пакета сообщений.

В ином случае, если IC≠LOPT, вновь считывают (см. блок 9 на фиг. 3а) значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают (см. блок 10 на фиг. 3а) его со значениями переменных NOP и EOL множества {MSYN}. В случае их несовпадения, сравнивают значение сегмента kind со значениями переменных MSS (см. блок 18 на фиг. 3а) и Wsopt (см. блок 19 на фиг. 3а) множества {MSYN} и в случае их несовпадения сравнивают (см. блок 21 на фиг. 3а) значение сегмента kind со значениями переменной Timestamp множества {MSYN}. После этого, в случае их несовпадения, сравнивают (см. блок 24 на фиг. 3а) значение сегмента kind со значениями переменных SACK и SACK-Permitted множества {MSYN}.

В случае совпадения значения сегмента kind со значениями переменных SACK или SACK-Permitted множества {MSYN} запоминание значений сегментов kind и length служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR не осуществляют и значение счетчика IC не увеличивают (см. блок 25 на фиг. 3а). После этого переходят (см. блок 13 на фиг. 3а) к сравнению текущего значения счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений.

В противном случае, то есть при несовпадении значения сегмента kind со значениями переменных SACK или SACK-Permitted множества {MSYN}, увеличивают (см. блок 11 на фиг. 3а) текущее значение счетчика IC на величину значений считанных сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений и запоминают (см. блок 12 на фиг. 3а) значения считанных сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR. Далее сравнивают (см. блок 13 на фиг. 3а) текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений.

В случае, если IC=LOPT, то нормализуют (см. блоки 14, 15, 16, 17 на фиг. 3а) величину заголовка TCP-пакета сообщений. После этого переходят (см. блок 40 на фиг. 3б) к формированию служебных полей заголовка ответного TCP-пакета сообщений.

Если в служебном поле Flags заголовка принятого TCP-пакета сообщений установлено значение бита ACK равным единице, то считывают (см. блок 26 на фиг. 3б) значение сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений. После чего сравнивают (см. блок 27 на фиг. 3б) значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений со значениями переменных NOP и EOL множества {MACK} и если значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений равно переменным NOP или EOL множества {MACK} то увеличивают (см. блок 28 на фиг. 3б) текущее значение счетчика IC на единицу. Затем запоминают (см. блок 29 на фиг. 3б) значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR и сравнивают (см. блок 30 на фиг. 3б) текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений.

В случае, если IC=LOPT, то нормализуют (см. блоки 31, 32, 33, 34 на фиг. 3б) величину заголовка TCP-пакета сообщений и переходят (см. блок 40 на фиг. 3б) к формированию служебных полей заголовка ответного TCP-пакета сообщений.

В другом случае, то есть если IC≠LOPT, то вновь считывают (см. блок 26 на фиг. 3б) значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают (см. блок 27 на фиг. 3б) его со значениями переменных NOP и EOL множества {MACK}. Иначе, в случае их несовпадения, сравнивают (см. блок 35 на фиг. 3б) значение сегмента kind со значениями переменной Timestamp множества {MACK}. Далее, в случае совпадения значения сегмента kind со значением переменной Timestamp множества {MACK}, считывают (см. блок 36 на фиг. 3б) значение сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и вычисляют (см. блок 37 на фиг. 3б) значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений. После этого увеличивают (см. блок 28 на фиг. 3б) текущее значение счетчика IC на величину значения считанного сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и запоминают (см. блок 29 на фиг. 3б) считанное значение сегментов kind, length и вычисленное значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений в массив памяти MR. Далее сравнивают (см. блок 30 на фиг. 3б) текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений.

В случае, если IC=LOPT нормализуют (см. блоки 31, 32, 33, 34 на фиг. 3б) величину заголовка TCP-пакета сообщений, после чего переходят (см. блок 40 на фиг. 3б) к формированию служебных полей заголовка ответного TCP-пакета сообщений.

Иначе, в случае, если IC≠LOPT, то вновь считывают (см. блок 26 на фиг. 3б) значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают (см. блок 27 на фиг. 3б) его со значениями переменных NOP и EOL множества {MACK}. Далее, в случае их несовпадения сравнивают (см. блок 35 на фиг. 3б) значение сегмента kind со значением переменной Timestamp множества {MACK}. В случае их несовпадения сравнивают (см. блок 38 на фиг. 3б) значение сегмента kind со значениями переменных SACK множества {MACK} и переменных MSS, Wsopt, SACK-Permitted множества {MUN}. После этого, в случае совпадения значения сегмента kind со значениями переменной SACK множества {MACK} и переменных MSS, Wsopt, SACK-Permitted множества {MUN}, запоминание значений сегментов kind, length, data служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR не осуществляют и значение счетчика IC не увеличивают (см. блок 39 на фиг. 3б). Затем переходят (см. блок 30 на фиг. 3б) к сравнению текущего значения счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений.

В противном случае, то есть при несовпадении значения сегмента kind со значениями переменной SACK множества {MACK} и переменных MSS, Wsopt, SACK-Permitted множества {MUN} увеличивают (см. блок 28 на фиг. 3б) текущее значение счетчика IC на величину значения считанного сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений. После этого запоминают (см. блок 29 на фиг. 3б) значения сегментов kind, length, data служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR и сравнивают (см. блок 30 на фиг. 3б) текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений.

В случае, если IC=LOPT, то нормализуют (см. блоки 31, 32, 33, 34 на фиг. 3б) величину заголовка TCP-пакета сообщений и переходят (см. блок 40 на фиг. 3б) к формированию служебных полей заголовка ответного TCP-пакета сообщений.

Далее формируют ответный пакет сообщений, для чего записывают (см. блок 40 на фиг. 3б) в служебное поле «опции» значения сегментов из массива памяти MR, а также записывают (см. блок 41 на фиг. 3б) в поле «размер окна» ТСР-заголовка ответного пакета сообщений значения Wнач равное 10 байт. После этого направляют (см. блок 42 на фиг. 3б) отправителю ответные ТСР-пакеты сообщений с Wнач равным 10 байт и сформированным служебным полем «опции» с записанными значениями сегментов из массива памяти MR.

Затем принимают (см. блок 43 на фиг. 3б) очередной пакет сообщений и устанавливают (см. блок 44 на фиг. 3б) в поле «размер окна» заголовка ответного пакета W=0, после чего формируют (см. блок 45 на фиг. 3б) ответные пакеты с W=0 и направляют (см. блок 46 на фиг. 3б) отправителю ответные пакеты с W=0. Для блокирования попыток разорвать соединение со стороны отправителя пакетов сообщений игнорируют (см. блок 47 на фиг. 3б) все входящие пакеты сообщений, до тех пор, пока не истечет тайм-аут соединения.

Для нормализации величины заголовка TCP-пакета сообщений вычисляют (см. блок 31 на фиг. 3б) значение LF величины заголовка TCP-пакета сообщений, необходимого для формирования корректного ответного TCP-пакета сообщений, где LF=IC+LSL. Затем вычисляют остаток от деления значения LF на четыре, и в случае если остаток от деления LF на четыре не равен нулю, то есть LF mod 4≠0, то увеличивают (см. блок 33 на фиг. 3б) значение счетчика IC на единицу и запоминают (см. блок 34 на фиг. 3б) значение сегмента kind поля опции NOP в массиве памяти MR. После этого вновь вычисляют (см. блок 31 на фиг. 3б) значение LF и его остаток от деления на четыре. В случае если остаток от деления значения LF на четыре равен нулю, то есть LF mod 4=0, записывают (см. блок 40 на фиг. 3б) в служебное поле «опции» заголовка формируемого TCP-пакета сообщений значения сегментов из массива памяти MR.

Для вычисления значения сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений считывают значение хронометра временных меток и записывают его в четырехбайтовое поле временных меток Tsval, а затем считывают значение четырехбайтового поля временных меток Tsval последней принятой опции Timestamp и записывают его в четырехбайтовое поле временных меток TSecr.

Результативность сформулированного технического результата была проверена путем программной реализации заявленного способа и проведения натурного эксперимента. Суть эксперимента - сравнение результативности обнаружения сетевой «ловушки», реализованной в способе-прототипе, с результативностью обнаружения сетевой «ловушки» при программной реализации заявленного способа. Для идентификации сетевой «ловушки», то есть для идентификации характеристик средств защиты в процессе эксперимента применен перехват из сетевого трафика ответов на запросы с использованием специализированного программного обеспечения Degreaser.

В процессе работы для определения, является ли узел сетевой «ловушкой» (Tarpit) или нет, Degreaser проверяет наличие служебного поля «опции» в ответных TCP-пакетах сообщений. На фиг. 7 представлен вывод результатов работы Degreaser, сканирующего подсеть, в которой запущены сетевые «ловушки» (Tarpit), реализованные в способе-прототипе (первый этап тестирования).

Degreaser определяет, что узлы, отвечающие TCP-пакетами сообщений, в которых отсутствует служебное поле «опции», являются сетевыми «ловушками» (Tarpit). В столбце TCP Options отображается, какие ТСР-опции присутствовали в ответных TCP-пакетах сообщений на ТСР-запросы, направляемые Degreaser, каждому из исследуемых узлов. Далее, на фиг. 8, отображен вывод работы Degreaser (второй этап тестирования), когда сканируют подсеть, в которой запущены сетевые «ловушки» (Tarpit) при программной реализации заявленного способа защиты.

Как показано на фиг. 8, в столбце TCP Options отображены ТСР-опции Maximum Segment Size (М), Window Scale Option (W), SACK (S) и Timestamp (T). Специализированное программное обеспечение Degreaser теперь не в состоянии определить, что ответы от данных узлов отправляют сетевые «ловушки» (Tarpit). Представленные результаты тестирования могут быть использованы и при сравнительной оценке информационных систем на предмет их потенциальной устойчивости к деструктивным воздействиям.

Таким образом, в заявленном способе достигается достижение сформулированной цели, заключающейся в повышении реалистичности функционирования имитируемых IP-адресов вычислительной сети и повышении результативности защиты за счет устранения демаскирующих признаков средств защиты вычислительной сети, что обеспечивают включением в заголовок ответного TCP-пакета сообщений служебного поля «опции» и избирательным копированием в него содержимого из заголовка входящего TCP-пакета сообщений, чем достигают реалистичную имитацию ложных абонентов и сеансов связи и низкую вероятность обнаружения нарушителем факта использования средств защиты и идентификации их характеристик.

Похожие патенты RU2682432C1

название год авторы номер документа
СПОСОБ ЗАЩИТЫ ВЫЧИСЛИТЕЛЬНЫХ СЕТЕЙ 2018
  • Барабанов Владислав Валерьевич
  • Ефремов Антон Андреевич
  • Максимов Роман Викторович
  • Орехов Дмитрий Николаевич
  • Ворончихин Иван Сергеевич
  • Соколовский Сергей Петрович
RU2696330C1
СПОСОБ ЗАЩИТЫ ВЫЧИСЛИТЕЛЬНЫХ СЕТЕЙ 2017
  • Максимов Роман Викторович
  • Орехов Дмитрий Николаевич
  • Проскуряков Игорь Сергеевич
  • Соколовский Сергей Петрович
RU2649789C1
Способ защиты информационно-телекоммуникационной сети от пассивных компьютерных атак 2016
  • Бирюков Андрей Анатольевич
  • Грецев Валерий Петрович
  • Давыдов Александр Викторович
  • Дьяков Сергей Вячеславович
  • Киселев Олег Николаевич
  • Кузин Павел Игоревич
  • Панкин Андрей Алексеевич
  • Потапов Илья Александрович
RU2642403C1
СПОСОБ ЗАЩИТЫ ВЫЧИСЛИТЕЛЬНЫХ СЕТЕЙ 2018
  • Гаврилов Алексей Леонидович
  • Катунцев Сергей Леонидович
  • Максимов Роман Викторович
  • Орехов Дмитрий Николаевич
  • Маленков Евгений Сергеевич
  • Платов Николай Евгеньевич
  • Соколовский Сергей Петрович
  • Шаманов Алексей Игоревич
RU2690749C1
Способ предотвращения фрагментации TCP/IP-пакетов при использовании VPLS в сети с коммутацией пакетов 2018
  • Вороков Евгений Леонидович
  • Щеглов Александр Владимирович
RU2687217C1
СПОСОБ ЗАЩИТЫ ВЫЧИСЛИТЕЛЬНЫХ СЕТЕЙ 2018
  • Гаврилов Алексей Леонидович
  • Катунцев Сергей Леонидович
  • Максимов Роман Викторович
  • Орехов Дмитрий Николаевич
  • Прокопенко Андрей Валерьевич
  • Проскуряков Игорь Сергеевич
  • Соколовский Сергей Петрович
RU2680038C1
СПОСОБ ЗАЩИТЫ ВЫЧИСЛИТЕЛЬНЫХ СЕТЕЙ 2018
  • Гаврилов Алексей Леонидович
  • Катунцев Сергей Леонидович
  • Максимов Роман Викторович
  • Орехов Дмитрий Николаевич
  • Пряхин Вячеслав Петрович
  • Тимашенко Дмитрий Валерьевич
  • Соколовский Сергей Петрович
  • Тимашенко Владимир Константинович
RU2686023C1
СПОСОБ МАСКИРОВАНИЯ СТРУКТУРЫ СЕТИ СВЯЗИ 2018
  • Зайцев Данил Викторович
  • Зуев Олег Евгеньевич
  • Крупенин Александр Владимирович
  • Максимов Роман Викторович
  • Починок Виктор Викторович
  • Шарифуллин Сергей Равильевич
  • Шерстобитов Роман Сергеевич
RU2682105C1
Способ обработки ТСР протокола в кластере сетевой вычислительной системы 2018
  • Тычина Леонид Анатольевич
RU2694584C1
СПОСОБ ЗАЩИТЫ ВЫЧИСЛИТЕЛЬНЫХ СЕТЕЙ 2018
  • Бухарин Владимир Владимирович
  • Карайчев Сергей Сергеевич
  • Казачкин Антон Владимирович
  • Таранов Алексей Борисович
  • Ступаков Игорь Георгиевич
RU2696549C1

Иллюстрации к изобретению RU 2 682 432 C1

Реферат патента 2019 года СПОСОБ ЗАЩИТЫ ВЫЧИСЛИТЕЛЬНЫХ СЕТЕЙ

Изобретение относится к вычислительной технике. Технический результат заключается в повышении реалистичности функционирования имитируемых IP-адресов вычислительной сети и повышении результативности защиты за счет устранения демаскирующих признаков средств защиты вычислительной сети. Способ защиты вычислительных сетей предназначен для использования в системах обнаружения атак с целью оперативного выявления и противодействия несанкционированным воздействиям в вычислительных сетях, в частности в сети передачи данных типа «Internet», основанных на семействе коммуникационных протоколов TCP/IP. Это обеспечивается путем включения в заголовок ответного TCP-пакета сообщений служебного поля «опции» и избирательным копированием в него содержимого из заголовка входящего TCP-пакета сообщений, чем достигается реалистичная имитация ложных абонентов и сеансов связи и низкая вероятность обнаружения нарушителем факта использования средств защиты и идентификации их характеристик. 2 з.п. ф-лы, 8 ил.

Формула изобретения RU 2 682 432 C1

1. Способ защиты вычислительных сетей, заключающийся в том, что предварительно задают Р≥1 неиспользуемых IP-адресов сетевых устройств вычислительной сети из всего количества IP-адресов вычислительной сети, подключают сетевые устройства к вычислительной сети, принимают TCP-пакет сообщений к неиспользуемому IP-адресу сетевого устройства вычислительной сети, формируют служебные поля заголовка ответного TCP-пакета сообщений, для чего записывают в служебное поле «размер окна» заголовка ответного TCP-пакета сообщений значение Wнач, равное 10 байт, направляют отправителю ответные TCP-пакеты сообщений с Wнач, равным 10 байт, принимают очередной TCP-пакет сообщений, устанавливают в служебное поле «размер окна» заголовка ответного TCP-пакета сообщений значение Wуд, равное 0 байт, формируют ответные TCP-пакеты сообщений с Wуд, равным 0 байт, направляют отправителю ответные TCP-пакеты сообщений с Wуд, равным 0 байт, а для блокирования попыток разорвать соединение со стороны отправителя TCP-пакетов сообщений игнорируют все входящие TCP-пакеты сообщений до истечения тайм-аута соединения, отличающийся тем, что предварительно задают множество переменных для хранения эталонных значений сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений с установленным флагом ACK {MACK}={NOP, EOL, SACK, Timestamp}, множество переменных для хранения эталонных значений сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений с установленным флагом SYN {MSYN}={NOP, EOL, SACK, Timestamp, MSS, Wsopt, SACK-Permitted}, множество переменных для хранения запрещенных эталонов значений сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений с установленным флагом ACK {MUN}={MSS, Wsopt, SACK-Permitted}, величину LSL служебных полей заголовка TCP-пакета сообщений и устанавливают ее значение равным 20 байтам, счетчик IC величины служебного поля «опции» заголовка TCP-пакета сообщений, текущее значение которого принимают равным нулю, массив памяти MR={kind, length, data} для хранения значений сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений, массив памяти MHlen для хранения считанного из принятого TCP-пакета сообщений значения служебного поля Hlen, определяющего величину заголовка принятого TCP-пакета сообщений, переменную LF для хранения значения величины заголовка TCP-пакета сообщений, необходимого для формирования корректного ответного TCP-пакета сообщений, первоначальное значение переменной LF принимают равным сумме значений IC и LSL и после приема TCP-пакета сообщений считывают значение служебного поля Hlen из заголовка принятого TCP-пакета сообщений и запоминают его значение в массиве памяти MHlen, после чего сравнивают значение величины Hlen со значением величины LSL служебных полей заголовка TCP-пакета сообщений, и в случае если Hlen=LSL, то переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений, а если Hlen>LSL, то вычисляют значение LOPT величины поля опций заголовка принятого TCP-пакета сообщений, где LOPT=Hlen-LSL, после этого считывают значения служебных полей Flags из заголовка принятого TCP-пакета сообщений, и если в служебном поле Flags заголовка принятого TCP-пакета сообщений установлено значение бита SYN равным единице, то считывают значение сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений, сравнивают значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений со значениями переменных NOP и EOL множества {MSYN}, и если значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений равно переменным NOP или EOL множества {MSYN}, то увеличивают текущее значение счетчика IC на единицу и запоминают значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR, после чего сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, и в случае если IC=LOPT, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений, а в случае если IC≠LOPT, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений, сравнивают его со значениями переменных NOP и EOL множества {MSYN}, и в случае их несовпадения сравнивают значение сегмента kind со значениями переменных MSS и Wsopt множества {MSYN}, и в случае совпадения значения сегмента kind со значениями переменных MSS или Wsopt множества {MSYN} считывают значение сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений и увеличивают текущее значение счетчика IC на величину значения считанного сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений, после чего запоминают значения сегментов kind, length, data полей опций MSS или Wsopt заголовка принятого TCP-пакета сообщений в массив памяти MR, затем сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, и в случае если IC=LOPT, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебного поля «опции» заголовка ответного TCP-пакета сообщений, в ином случае если IC≠LOPT, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают его со значениями переменных NOP и EOL множества {MSYN}, и в случае их несовпадения сравнивают значение сегмента kind со значениями переменных MSS и Wsopt множества {MSYN}, и в случае их несовпадения сравнивают значение сегмента kind со значениями переменной Timestamp множества {MSYN}, и в случае совпадения значения сегмента kind со значением переменной Timestamp множества {MSYN} считывают значение сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений, вычисляют значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений и увеличивают текущее значение счетчика IC на величину значения считанного сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений, запоминают считанное значение сегментов kind, length и вычисленное значение сегмента data полей опции Timestamp заголовка принятого TCP-пакета сообщений в массив памяти MR, сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, и в случае если IC=LOPT, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений, в случае если IC≠LOPT, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений, сравнивают его со значениями переменных NOP и EOL множества {MSYN}, и в случае их несовпадения сравнивают значение сегмента kind со значениями переменных MSS и Wsopt множества {MSYN}, и в случае их несовпадения сравнивают значение сегмента kind со значением переменной Timestamp множества {MSYN}, и в случае их несовпадения сравнивают значение сегмента kind со значениями переменных SACK и SACK-Permitted множества {MSYN}, в случае совпадения значения сегмента kind со значениями переменных SACK или SACK-Permitted множества {MSYN} запоминание значений сегментов kind и length служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR не осуществляют и значение счетчика IC не увеличивают и переходят к сравнению текущего значения счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, в противном случае, то есть при несовпадении значения сегмента kind со значениями переменных SACK или SACK-Permitted множества {MSYN}, увеличивают текущее значение счетчика IC на величину значений считанных сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений, запоминают значения считанных сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR, сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, и в случае если IC=LOPT, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений, а если в служебном поле Flags заголовка принятого TCP-пакета сообщений установлено значение бита ACK равным единице, то считывают значение сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений, сравнивают значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений со значениями переменных NOP и EOL множества {MACK}, и если значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений равно переменным NOP или EOL множества {MACK}, то увеличивают текущее значение счетчика IC на единицу и запоминают значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR, затем сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, и в случае если IC=LOPT, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений, а в случае если IC≠LOPT, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений, сравнивают его со значениями переменных NOP и EOL множества {MACK}, и в случае их несовпадения сравнивают значение сегмента kind со значениями переменной Timestamp множества {MACK}, и в случае совпадения значения сегмента kind со значением переменной Timestamp множества {MACK} считывают значение сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений, вычисляют значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений и увеличивают текущее значение счетчика IC на величину значения считанного сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений, после чего запоминают считанное значение сегментов kind, length и вычисленное значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений в массив памяти MR, затем сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, и в случае если IC=LOPT, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений, в случае если IC≠LOPT, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений, сравнивают его со значениями переменных NOP и EOL множества {MACK}, и в случае их несовпадения сравнивают значение сегмента kind со значением переменной Timestamp множества {MACK}, и в случае их несовпадения сравнивают значение сегмента kind со значениями переменных SACK множества {MACK} и переменных MSS, Wsopt, SACK-Permitted множества {MUN}, и в случае совпадения значения сегмента kind со значениями переменной SACK множества {MACK} и переменных MSS, Wsopt, SACK-Permitted множества {MUN} запоминание значений сегментов kind, length, data служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR не осуществляют и значение счетчика IC не увеличивают и переходят к сравнению текущего значения счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, в противном случае, то есть при несовпадении значения сегмента kind со значениями переменной SACK множества {MACK} и переменных MSS, Wsopt, SACK-Permitted множества {MUN}, увеличивают текущее значение счетчика IC на величину значения считанного сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений, запоминают значения сегментов kind, length, data служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти MR, затем сравнивают текущее значение счетчика IC со значением LOPT величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, и в случае если IC=LOPT, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений.

2. Способ по п. 1, отличающийся тем, что для нормализации величины заголовка TCP-пакета сообщений вычисляют значение LF величины заголовка TCP-пакета сообщений, необходимого для формирования корректного ответного TCP-пакета сообщений, где LF=IC+LSL, затем вычисляют остаток от деления значения LF на четыре, и если остаток от деления LF на четыре не равен нулю, то есть LF mod 4≠0, то увеличивают значение счетчика IC на единицу, запоминают значение сегмента kind поля опции NOP в массив памяти MR и вновь вычисляют значение LF и его остаток от деления на четыре, в противном случае, то есть если остаток от деления значения LF на четыре равен нулю, то есть LF mod 4=0, записывают в служебное поле «опции» заголовка формируемого TCP-пакета сообщений значения сегментов из массива памяти MR.

3. Способ по п. 1, отличающийся тем, что для вычисления значения сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений считывают значение хронометра временных меток и записывают его в четырехбайтовое поле временных меток Tsval, а затем считывают значение четырехбайтового поля временных меток Tsval последней принятой опции Timestamp и записывают его в четырехбайтовое поле временных меток TSecr.

Документы, цитированные в отчете о поиске Патент 2019 года RU2682432C1

СПОСОБ ЗАЩИТЫ ВЫЧИСЛИТЕЛЬНОЙ СЕТИ 2010
  • Гречишников Евгений Владимирович
  • Милая Ирина Владимировна
  • Санин Игорь Юрьевич
  • Стародубцев Юрий Иванович
RU2422892C1
СПОСОБ (ВАРИАНТЫ) ЗАЩИТЫ ВЫЧИСЛИТЕЛЬНЫХ СЕТЕЙ 2006
  • Выговский Леонид Сергеевич
  • Заргаров Иван Артемович
  • Кожевников Дмитрий Анатольевич
  • Максимов Роман Викторович
  • Павловский Антон Владимирович
  • Стародубцев Юрий Иванович
  • Худайназаров Юрий Кахрамонович
  • Юров Игорь Александрович
RU2307392C1
СПОСОБ ОБРАБОТКИ СЕТЕВЫХ ПАКЕТОВ ДЛЯ ОБНАРУЖЕНИЯ КОМПЬЮТЕРНЫХ АТАК 2005
  • Аграновский Александр Владимирович
  • Алиев Александр Тофикович
  • Репалов Сергей Анатольевич
  • Селин Роман Николаевич
  • Хади Роман Ахмедович
RU2304302C2
СПОСОБ КОНТРОЛЯ ИНФОРМАЦИОННЫХ ПОТОКОВ В ЦИФРОВЫХ СЕТЯХ СВЯЗИ 2004
  • Андриенко А.А.
  • Куликов О.Е.
  • Костырев А.Л.
  • Максимов Р.В.
  • Павловский А.В.
  • Лебедев А.Ю.
  • Колбасова Г.С.
RU2267154C1
US 6513122 B1, 28.01.2003.

RU 2 682 432 C1

Авторы

Гаврилов Алексей Леонидович

Катунцев Сергей Леонидович

Максимов Роман Викторович

Орехов Дмитрий Николаевич

Крупенин Александр Владимирович

Медведев Андрей Николаевич

Соколовский Сергей Петрович

Даты

2019-03-19Публикация

2018-03-26Подача