СПОСОБ ЗАЩИТЫ ВЫЧИСЛИТЕЛЬНЫХ СЕТЕЙ
METHOD OF COMPUTER NETWORKS PROTECTION

Изобретение относится к электросвязи и может быть использовано в системах обнаружения атак с целью оперативного выявления и противодействия несанкционированным воздействиям в вычислительных сетях, в частности, в сети передачи данных типа «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-пакета сообщений, чем достигают реалистичную имитацию ложных абонентов и сеансов связи и низкую вероятность обнаружения нарушителем факта использования средств защиты и идентификации их характеристик.
нач
нач
yд
yд
yд
ACK
SYN
UN
SL
C
R
Hlen
F
F
C
SL
Hlen
SL
SL
SL
OPT
OPT
SL
SYN
SYN
C
R
C
OPT
C
OPT
C
OPT
SYN
SYN
SYN
C
R
C
OPT
C
OPT
C
OPT
SYN
SYN
SYN
SYN
C
R
C
OPT
C
OPT
C
OPT
SYN
SYN
SYN
SYN
SYN
R
C
C
OPT
SYN
C
R
C
OPT
C
OPT
ACK
ACK
C
R
C
OPT
C
OPT
C
OPT
ACK
ACK
ACK
C
R
C
OPT
C
OPT
C
OPT
ACK
ACK
ACK
UN
ACK
UN
R
C
C
OPT
ACK
UN
C
R
C
OPT
C
OPT
Поставленная цель достигается тем, что в известном способе защиты вычислительных сетей предварительно задают Р≥1 неиспользуемых IP-адресов сетевых устройств вычислительной сети из всего количества IP-адресов вычислительной сети. Затем подключают сетевые устройства к вычислительной сети и принимают TCP-пакет сообщений к неиспользуемому IP-адресу сетевого устройства вычислительной сети. После этого формируют служебные поля заголовка ответного TCP-пакета сообщений, для чего записывают в служебное поле «размер окна» заголовка ответного TCP-пакета сообщений значение W равное 10 байт. Направляют отправителю ответные ТСР-пакеты сообщений с W равным 10 байт и принимают очередной ТСР-пакет сообщений. Далее устанавливают в служебное поле «размер окна» заголовка ответного ТСР-пакета сообщений значение W равное 0 байт и формируют ответные ТСР-пакеты сообщений с W равным 0 байт. После этого направляют отправителю ответные ТСР-пакеты сообщений с W равным 0 байт, а для блокирования попыток разорвать соединение со стороны отправителя ТСР-пакетов сообщений игнорируют все входящие ТСР-пакеты сообщений до истечения тайм-аута соединения. В предварительно заданные исходные данные дополнительно задают множество переменных для хранения эталонных значений сегмента kind служебного поля «опции» заголовка ТСР-пакета сообщений с установленным флагом ACK {M}={NOP, EOL, SACK, Timestamp}, множество переменных для хранения эталонных значений сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений с установленным флагом SYN {M}={NOP, EOL, SACK, Timestamp, MSS, Wsopt, SACK-Permitted), а также множество переменных для хранения запрещенных эталонов значений сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений с установленным флагом ACK {M}={MSS, Wsopt, SACK-Permitted}. Затем предварительно задают величину L служебных полей заголовка TCP-пакета сообщений и устанавливают ее значение равным 20 байтам. Также предварительно задают счетчик I величины служебного поля «опции» заголовка TCP-пакета сообщений, текущее значение которого принимают равным нулю. После этого предварительно задают массив памяти M={kind, length, data} для хранения значений сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений и массив памяти M для хранения считанного из принятого TCP-пакета сообщений значения служебного поля Hlen, определяющего величину заголовка принятого TCP-пакета сообщений. Далее предварительно задают переменную L для хранения значения величины заголовка TCP-пакета сообщений, необходимого для формирования корректного ответного TCP-пакета сообщений, первоначальное значение переменной L принимают равным сумме значений I и L. После приема TCP-пакета сообщений считывают значение служебного поля Hlen из заголовка принятого TCP-пакета сообщений и запоминают его значение в массиве памяти M. Далее сравнивают значение величины Hlen со значением величины L служебных полей заголовка TCP-пакета сообщений, и в случае если Hlen=L, то переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений. В ином случае, если Hlen>L, вычисляют значение L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, где L=Hlen-L. После этого считывают значения служебных полей Flags из заголовка принятого TCP-пакета сообщений. Если в служебном поле Flags заголовка принятого TCP-пакета сообщений установлено значение бита SYN равным единице, то считывают значение сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений и сравнивают значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений со значениями переменных NOP и EOL множества {M}. В случае если значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений равно переменным NOP или EOL множества {M}, то увеличивают текущее значение счетчика I на единицу и запоминают значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти M. После этого сравнивают текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений и если I=L, то нормализуют величину заголовка TCP-пакета сообщений. Далее переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений, а в случае, если I≠L, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают его со значениями переменных NOP и EOL множества {M}. В случае их несовпадения сравнивают значение сегмента kind со значениями переменных MSS и Wsopt множества {M}, и в случае совпадения значения сегмента kind со значениями переменных MSS или Wsopt множества {M} считывают значение сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений. После этого увеличивают текущее значение счетчика I на величину значения считанного сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений. Затем запоминают значения сегментов kind, length, data полей опций MSS или Wsopt заголовка принятого TCP-пакета сообщений в массив памяти M и сравнивают текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений. В случае, если I=L, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений. В ином случае, если I≠L, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают его со значениями переменных NOP и EOL множества {M}. В случае их несовпадения сравнивают значение сегмента kind со значениями переменных MSS и Wsopt множества {M}, и в случае их несовпадения сравнивают значение сегмента kind со значениями переменной Timestamp множества {M}. В случае совпадения значения сегмента kind со значением переменной Timestamp множества {M} считывают значение сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и вычисляют значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений. Затем увеличивают текущее значение счетчика I на величину значения считанного сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и запоминают считанное значение сегментов kind, length и вычисленное значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений в массив памяти M. Далее сравнивают текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, и в случае, если I=L, то нормализуют величину заголовка TCP-пакета сообщений. После этого переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений и в случае, если I≠L, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений. Затем сравнивают его со значениями переменных NOP и EOL множества {M}, и в случае их несовпадения сравнивают значение сегмента kind со значениями переменных MSS и Wsopt множества {M}. В случае их несовпадения сравнивают значение сегмента kind со значениями переменной Timestamp множества {M}, и в случае их несовпадения сравнивают значение сегмента kind со значениями переменных SACK и SACK-Permitted множества {M}. После этого, в случае совпадения значения сегмента kind со значениями переменных SACK или SACK-Permitted множества {M} запоминание значений сегментов kind и length служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти M не осуществляют и значение счетчика I не увеличивают. Затем переходят к сравнению текущего значения счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений. В противном случае, то есть при несовпадении значения сегмента kind со значениями переменных SACK или SACK-Permitted множества {M} увеличивают текущее значение счетчика I на величину значений считанных сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений. После этого запоминают значения считанных сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти M и сравнивают текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений. В случае, если I-L, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений. Если в служебном поле Flags заголовка принятого TCP-пакета сообщений установлено значение бита ACK равным единице, то считывают значение сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений и сравнивают значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений со значениями переменных NOP и EOL множества {M}. В случае, если значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений равно переменным NOP или EOL множества {M} то увеличивают текущее значение счетчика I на единицу и запоминают значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти M. Затем сравнивают текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений. В случае, если I=L, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений. В ином случае, если I≠L, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений, сравнивают его со значениями переменных NOP и EOL множества {M}. В случае их несовпадения сравнивают значение сегмента kind со значениями переменной Timestamp множества {M}, и в случае совпадения значения сегмента kind со значением переменной Timestamp множества {M} считывают значение сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и вычисляют значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений. После этого увеличивают текущее значение счетчика I на величину значения считанного сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и запоминают считанное значение сегментов kind, length и вычисленное значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений в массив памяти M. Затем сравнивают текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений и в случае, если I=L, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений. В случае, если I≠L, то вновь считывают значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений, сравнивают его со значениями переменных NOP и EOL множества {M}, и в случае их несовпадения сравнивают значение сегмента kind со значением переменной Timestamp множества {M}. В случае их несовпадения сравнивают значение сегмента kind со значениями переменных SACK множества {M} и переменных MSS, Wsopt, SACK-Permitted множества {M}. В случае совпадения значения сегмента kind со значениями переменной SACK множества {M} и переменных MSS, Wsopt, SACK-Permitted множества {M} запоминание значений сегментов kind, length, data служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти M не осуществляют и значение счетчика I не увеличивают. После этого переходят к сравнению текущего значения счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений. В противном случае, то есть при несовпадении значения сегмента kind со значениями переменной SACK множества {M} и переменных MSS, Wsopt, SACK-Permitted множества {M} увеличивают текущее значение счетчика I на величину значения считанного сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений. Далее запоминают значения сегментов kind, length, data служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти M, а затем сравнивают текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений. В случае, если I=L, то нормализуют величину заголовка TCP-пакета сообщений и переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений.
F
F
C
SL
F
F
F
C
R
F
F
F
R
Для нормализации величины заголовка TCP-пакета сообщений вычисляют значение L величины заголовка TCP-пакета сообщений, необходимого для формирования корректного ответного TCP-пакета сообщений, где L=I+L. Затем вычисляют остаток от деления значения L на четыре, и если остаток от деления L на четыре не равен нулю, то есть L mod 4≠0, то увеличивают значение счетчика I на единицу. После этого запоминают значение сегмента kind поля опции NOP в массив памяти M и вновь вычисляют значение L и его остаток от деления на четыре. В противном случае, то есть если остаток от деления значения L на четыре равен нулю, то есть L mod 4=0, то записывают в служебное поле «опции» заголовка формируемого TCP-пакета сообщений значения сегментов из массива памяти M.
Для вычисления значения сегмента 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).
Таким образом, возникает противоречие между результативностью защиты вычислительных сетей и возможностями нарушителей по определению структуры вычислительных сетей и идентификации характеристик средств защиты, имеющих демаскирующие признаки. На устранение указанного противоречия направлен заявленный способ.
1
2
3
4
5
n
4
5
n
Заявленный способ реализуют следующим образом. В общем случае (фиг. 2) вычислительная сеть представляет собой совокупность корреспондентов 101, 102, 106, 107, являющихся источниками и получателями сетевого трафика, периферийного и коммуникационного оборудования 104, 109, ретранслирующего сетевой трафик корреспондентов, объединенного физическими линиями (каналами) связи 103, 1010, соединяющих п узлов вычислительной сети в единую инфраструктуру, в том числе с использованием сети передачи данных типа «Internet» 105. При этом пространство IP-адресов сетевых устройств занято корреспондентами вычислительной сети не полностью: корреспонденты K, K, K, выделенные на фиг. 2 в совокупность 101, подключены к вычислительной сети. Тогда как корреспонденты K, K, … K, выделенные на фиг. 2 в совокупность 102 (иконки ПЭВМ на фиг. 2 изображены пунктиром), не подключены к вычислительной сети, то есть IP-адреса корреспондентами K, K, … K, не заняты (не используются).
Для защиты вычислительной сети и введения в заблуждение нарушителя относительно структуры вычислительной сети, на одном из выделенных компьютеров 107 вычислительной сети устанавливают сетевую «ловушку», осуществляющую перехват запросов к неиспользуемому IP-адресу сетевого устройства совокупности 102 вычислительной сети, посредством анализатора пакетов 108. После перехвата запросов осуществляют отправление пакета сообщений отправителю пакетов сообщений и последующее удержание с ним соединения в двухстороннем порядке.
На фиг. 3а и 3б представлена блок-схема последовательности действий, реализующих заявленный способ защиты вычислительных сетей, в которой приняты следующие обозначения:
ACK
ACK
{M} - множество переменных для хранения эталонных значений сегмента kind поля опций заголовка TCP-пакета сообщений с установленным флагом ACK, где {M}={NOP, EOL, SACK, Timestamp};
SYN
SYN
{M} - множество переменных для хранения эталонных значений сегмента kind поля опций заголовка TCP-пакета сообщений с установленным флагом SYN, где {M}={NOP, EOL, SACK, Timestamp, MSS, Wsopt, SACK-Permitted};
UN
UN
{M} - множество переменных для хранения запрещенных эталонов значений сегмента kind поля опций заголовка TCP-пакета сообщений с установленным флагом ACK, где {M}={MSS, Wsopt, SACK-Permitted};
SL
L - величина служебных полей заголовка TCP-пакета сообщений, значение которой установлено равным 20 байтам;
C
I - счетчик величины поля опций заголовка TCP-пакета сообщений, текущее значение которого принимают равным нулю;
R
R
M - массив памяти для хранения значений сегментов поля опций заголовка принятого TCP-пакета сообщений, где M={kind, length, data};
Hlen
M - массив памяти для хранения считанного из принятого TCP-пакета сообщений значения служебного поля Hlen, определяющего величину заголовка принятого TCP-пакета сообщений;
F
F
C
SL
L - переменную для хранения значения величины заголовка TCP-пакета сообщений, необходимого для формирования корректного ответного TCP-пакета сообщений, где первоначальное значение переменной L принимают равным сумме значений I и L;
нач
W - начальное значение служебного поля «размер окна» для формирования заголовка ответного TCP-пакета сообщений;
yд
W - устанавливаемое значение служебного поля «размер окна» в заголовке ответного TCP-пакета сообщений для удержания соединения с отправителем пакетов сообщений.
Для снижения вероятности идентификации характеристик средств защиты в заявленном способе обеспечивают устранение демаскирующих признаков сетевой «ловушки», заключающихся в формировании ответного TCP-пакета сообщений с отсутствующим у него в заголовке служебным полем «опции» (величина служебного поля «опции» равна нулю). Для этого записывают в заголовок ответных ТСР-пакетов сообщений служебное поле «опции», путем избирательного копирования содержимого служебного поля «опции» из входящего TCP-пакета сообщений и его записи в ответный ТСР-пакет сообщений, обеспечивая тем самым реалистичность функционирования защищаемой вычислительной сети.
ACK
Применение поддержки служебного поля «опции» в ответном ТСР-пакете сообщений достигают тем, что в предварительно заданные исходные данные дополнительно задают (см. блок 1 на фиг. 3а) множество переменных для хранения эталонных значений сегмента kind служебного поля «опции» TCP-пакета сообщений с установленным флагом ACK {M}={NOP, EOL, SACK, Timestamp}.
SYN
Также предварительно задают (см. блок 1 на фиг. 3а) множество переменных для хранения эталонных значений сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений с установленным флагом SYN {M}={NOP, EOL, SACK, Timestamp, MSS, Wsopt, SACK-Permitted}. Заданные переменные соответствуют наиболее используемым опциям TCP-пакета сообщений с установленным флагом SYN (фиг. 4), так, например, типовые заголовки для ОС Linux и TCP ACK пакетов сообщений в ОС Solaris представлены на (фиг. 5а и 5б).
UN
UN
UN
Затем предварительно задают (см. блок 1 на фиг. 3а) множество переменных для хранения запрещенных эталонов значений сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений с установленным флагом ACK {M}={MSS, Wsopt, SACK-Permitted}. Переменные из множества M являются нехарактерными для сегментов ACK и могут появляться только в сегментах SYN, что описано в технических спецификациях (RFC, Request for Comments) сети Интернет (см., например, https://tools.ietf.org/html/rfc4413). Введение множества {M} обусловлено тем, что злоумышленник, используя специализированные утилиты для сборки пакетов, например, такие как scapy, (см., например, http://www.secdev.org/projects/scapy/) может сформировать такой TCP ACK пакет сообщений как, например, представлен на (фиг. 5в), содержащий TCP-опции, характерные только для TCP SYN пакетов (MSS, Wsopt, SACK-Permitted). Поэтому простое копирование всего служебного поля «опции» из заголовка принятого пакета сообщений в формируемый ответный пакет сообщений, содержащий нехарактерные для TCP ACK пакета сообщений TCP-опции, приведет к однозначной компрометации средств проактивной защиты вычислительных сетей.
SL
SL
Далее предварительно задают (см. блок 1 на фиг. 3а) величину L служебных полей заголовка TCP-пакета сообщений и устанавливают ее значение равным 20 байтам. Значение величины L соответствует величине стандартного заголовка TCP-пакета сообщений, не включающего служебного поля «опции», которое, в свою очередь может занимать не более 40 байт, что описано в технических спецификациях (RFC, Request for Comments) сети Интернет (см., например, https://tools.ietf.org/html/rfc4413).
R
Также задают (см. блок 1 на фиг. 3а) счетчик 1с величины служебного поля «опции» заголовка TCP-пакета сообщений, текущее значение которого принимают равным нулю и массив памяти M={kind, length, data} для хранения значений сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений.
Hlen
F
F
C
SL
Далее предварительно задают (см. блок 1 на фиг. 3а) массив памяти M для хранения считанного из принятого TCP-пакета сообщений значения служебного поля Hlen фиг. 1, определяющего величину заголовка принятого TCP-пакета сообщений, описанного, например, в книге Куроуз Д., Росс К. Компьютерные сети: Нисходящий подход / Джеймс Куроуз, Кит Росс. - 6-е изд. - Москва: Издательство «Э», 2016. - 912 с. на стр. 272-273 и переменную L (см. блок 1 на фиг. 3а) для хранения значения величины заголовка TCP-пакета сообщений, необходимого для формирования корректного ответного TCP-пакета сообщений. Первоначальное значение переменной L принимают равным сумме значений I и L.
Hlen
SL
После приема пакета сообщений (см. блок 2 на фиг. 3а) считывают значение служебного поля Hlen из заголовка принятого TCP-пакета сообщений (см. блок 3 на фиг. 3а) и запоминают (см. блок 4 на фиг. 3а) его значение в массиве памяти M. Затем сравнивают (см. блок 5 на фиг. 3а) значение величины Hlen со значением величины L служебных полей заголовка TCP-пакета сообщений.
SL
В случае если Hlen=L, переходят к формированию служебных полей заголовка ответного TCP-пакета сообщений (см. блок 40 на фиг. 3б). Это говорит о том, что входящий TCP-пакет сообщений пакет сообщений не содержит служебного поля «опции» (величина служебного поля «опции» равна нулю байт), следовательно принятие мер по сокрытию демаскирующего признака с отсутствием в заголовке ответного TCP-пакета сообщений служебного поля «опции» не требуется.
SL
OPT
OPT
SL
В ином случае, если Hlen>L, что говорит о наличии в заголовке ответного TCP-пакета сообщений служебного поля «опции» и необходимости избирательного копирования содержимого служебного поля «опции» в заголовок ответного TCP-пакета сообщений, вычисляют (см. блок 6 на фиг. 3а) значение L величины поля опций заголовка принятого TCP-пакета сообщений, где L=Hlen-L.
SYN
После этого считывают (см. блок 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 множества {M}.
SYN
C
В случае если значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений равно переменным NOP или EOL множества {M}, то увеличивают (см. блок 11 на фиг. 3а) текущее значение счетчика I на единицу. 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).
R
C
OPT
C
OPT
Затем запоминают (см. блок 12 на фиг. 3а) значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти M. После этого сравнивают (см. блок 13 на фиг. 3а) текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, и в случае, если I=L, то нормализуют (см. блоки 14, 15, 16, 17 на фиг. 3а) величину заголовка TCP-пакета сообщений. Необходимость нормализации обусловлена требованиями по выравниванию величины заголовка TCP-пакета сообщений по четырехоктетной границе для исключения обработки пакетов сообщений с заголовком нестандартной длины. Для выравнивания следующей опции по границе слова используют опцию No-Operation (NOP), которая может включаться между другими опциями заголовка, или в конце него, как показано на фиг. 5г и описано, например, в технических спецификациях (RFC, Request for Comments) сети Интернет (см., например, https://tools.ietf.org/html/rfc4413).
C
OPT
SYN
Далее переходят к формированию (см. блок 40 на фиг. 3б) служебных полей заголовка ответного TCP-пакета сообщений. В случае, если I≠L, то вновь считывают (см. блок 9 на фиг. 3а) значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают (см. блок 10 на фиг. 4) его со значениями переменных NOP и EOL множества {M}.
SYN
SYN
C
R
В случае их несовпадения сравнивают значение сегмента kind со значениями переменных MSS (см. блок 18 на фиг. 3а) и Wsopt (см. блок 19 на фиг. 3а) множества {M} и в случае совпадения значения сегмента kind со значениями переменных MSS или Wsopt множества {M} считывают (см. блок 20 на фиг. 3а) значение сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений. Затем увеличивают (см. блок 11 на фиг. 3а) текущее значение счетчика I на величину значения считанного сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений. После этого запоминают (см. блок 12 на фиг. 3а) значения сегментов kind, length, data полей опций MSS или Wsopt заголовка принятого TCP-пакета сообщений в массив памяти M
C
OPT
C
OPT
Затем сравнивают (см. блок 13 на фиг. 3а) текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений и в случае, если I=L, то нормализуют (см. блоки 14, 15, 16, 17 на фиг. 3а) величину заголовка TCP-пакета сообщений, после чего переходят к формированию (см. блок 40 на фиг. 3б) служебных полей заголовка ответного TCP-пакета сообщений.
C
OPT
SYN
SYN
SYN
В ином случае, если I≠L вновь считывают (см. блок 9 на фиг. 3а) значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают (см. блок 10 на фиг. 3а) его со значениями переменных NOP и EOL множества {M}. В случае их несовпадения сравнивают значение сегмента kind со значениями переменных MSS (см. блок 18 на фиг. 3а) и Wsopt (см. блок 19 на фиг. 3а) множества {M}, и в случае их несовпадения сравнивают (см. блок 21 на фиг. 3а) значение сегмента kind со значениями переменной Timestamp множества {M}.
SYN
В случае совпадения значения сегмента kind со значением переменной Timestamp множества {M} считывают (см. блок 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).
C
R
Далее увеличивают (см. блок 11 на фиг. 3а) текущее значение счетчика I на величину значения считанного сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и запоминают (см. блок 12 на фиг. 3а) считанное значение сегментов kind, length и вычисленное значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений в массив памяти M.
C
OPT
C
OPT
После этого сравнивают (см. блок 13 на фиг. 3а) текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений, и в случае, если I=L то нормализуют (см. блоки 14, 15, 16, 17 на фиг. 3а) величину заголовка TCP-пакета сообщений и переходят (см. блок 40 на фиг. 3б) к формированию служебных полей заголовка ответного TCP-пакета сообщений.
C
OPT
SYN
SYN
SYN
SYN
В ином случае, если I≠L, вновь считывают (см. блок 9 на фиг. 3а) значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают (см. блок 10 на фиг. 3а) его со значениями переменных NOP и EOL множества {M}. В случае их несовпадения, сравнивают значение сегмента kind со значениями переменных MSS (см. блок 18 на фиг. 3а) и Wsopt (см. блок 19 на фиг. 3а) множества {M} и в случае их несовпадения сравнивают (см. блок 21 на фиг. 3а) значение сегмента kind со значениями переменной Timestamp множества {M}. После этого, в случае их несовпадения, сравнивают (см. блок 24 на фиг. 3а) значение сегмента kind со значениями переменных SACK и SACK-Permitted множества {M}.
SYN
R
C
C
OPT
В случае совпадения значения сегмента kind со значениями переменных SACK или SACK-Permitted множества {M} запоминание значений сегментов kind и length служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти M не осуществляют и значение счетчика I не увеличивают (см. блок 25 на фиг. 3а). После этого переходят (см. блок 13 на фиг. 3а) к сравнению текущего значения счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений.
SYN
C
R
C
OPT
В противном случае, то есть при несовпадении значения сегмента kind со значениями переменных SACK или SACK-Permitted множества {M}, увеличивают (см. блок 11 на фиг. 3а) текущее значение счетчика I на величину значений считанных сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений и запоминают (см. блок 12 на фиг. 3а) значения считанных сегментов служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти M. Далее сравнивают (см. блок 13 на фиг. 3а) текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений.
C
OPT
В случае, если I=L, то нормализуют (см. блоки 14, 15, 16, 17 на фиг. 3а) величину заголовка TCP-пакета сообщений. После этого переходят (см. блок 40 на фиг. 3б) к формированию служебных полей заголовка ответного TCP-пакета сообщений.
ACK
ACK
C
R
C
OPT
Если в служебном поле Flags заголовка принятого TCP-пакета сообщений установлено значение бита ACK равным единице, то считывают (см. блок 26 на фиг. 3б) значение сегмента kind служебного поля «опции» заголовка TCP-пакета сообщений. После чего сравнивают (см. блок 27 на фиг. 3б) значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений со значениями переменных NOP и EOL множества {M} и если значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений равно переменным NOP или EOL множества {M} то увеличивают (см. блок 28 на фиг. 3б) текущее значение счетчика I на единицу. Затем запоминают (см. блок 29 на фиг. 3б) значение считанного сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти M и сравнивают (см. блок 30 на фиг. 3б) текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений.
C
OPT
В случае, если I=L, то нормализуют (см. блоки 31, 32, 33, 34 на фиг. 3б) величину заголовка TCP-пакета сообщений и переходят (см. блок 40 на фиг. 3б) к формированию служебных полей заголовка ответного TCP-пакета сообщений.
C
OPT
ACK
ACK
ACK
C
R
C
OPT
В другом случае, то есть если I≠L, то вновь считывают (см. блок 26 на фиг. 3б) значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают (см. блок 27 на фиг. 3б) его со значениями переменных NOP и EOL множества {M}. Иначе, в случае их несовпадения, сравнивают (см. блок 35 на фиг. 3б) значение сегмента kind со значениями переменной Timestamp множества {M}. Далее, в случае совпадения значения сегмента kind со значением переменной Timestamp множества {M}, считывают (см. блок 36 на фиг. 3б) значение сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и вычисляют (см. блок 37 на фиг. 3б) значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений. После этого увеличивают (см. блок 28 на фиг. 3б) текущее значение счетчика I на величину значения считанного сегмента length поля опции Timestamp заголовка принятого TCP-пакета сообщений и запоминают (см. блок 29 на фиг. 3б) считанное значение сегментов kind, length и вычисленное значение сегмента data поля опции Timestamp заголовка принятого TCP-пакета сообщений в массив памяти M. Далее сравнивают (см. блок 30 на фиг. 3б) текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений.
C
OPT
В случае, если I=L нормализуют (см. блоки 31, 32, 33, 34 на фиг. 3б) величину заголовка TCP-пакета сообщений, после чего переходят (см. блок 40 на фиг. 3б) к формированию служебных полей заголовка ответного TCP-пакета сообщений.
C
OPT
ACK
ACK
ACK
UN
ACK
UN
R
C
C
OPT
Иначе, в случае, если I≠L, то вновь считывают (см. блок 26 на фиг. 3б) значение сегмента kind служебного поля «опции» заголовка принятого TCP-пакета сообщений и сравнивают (см. блок 27 на фиг. 3б) его со значениями переменных NOP и EOL множества {M}. Далее, в случае их несовпадения сравнивают (см. блок 35 на фиг. 3б) значение сегмента kind со значением переменной Timestamp множества {M}. В случае их несовпадения сравнивают (см. блок 38 на фиг. 3б) значение сегмента kind со значениями переменных SACK множества {M} и переменных MSS, Wsopt, SACK-Permitted множества {M}. После этого, в случае совпадения значения сегмента kind со значениями переменной SACK множества {M} и переменных MSS, Wsopt, SACK-Permitted множества {M}, запоминание значений сегментов kind, length, data служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти M не осуществляют и значение счетчика I не увеличивают (см. блок 39 на фиг. 3б). Затем переходят (см. блок 30 на фиг. 3б) к сравнению текущего значения счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений.
ACK
UN
C
R
C
OPT
В противном случае, то есть при несовпадении значения сегмента kind со значениями переменной SACK множества {M} и переменных MSS, Wsopt, SACK-Permitted множества {M} увеличивают (см. блок 28 на фиг. 3б) текущее значение счетчика I на величину значения считанного сегмента length служебного поля «опции» заголовка принятого TCP-пакета сообщений. После этого запоминают (см. блок 29 на фиг. 3б) значения сегментов kind, length, data служебного поля «опции» заголовка принятого TCP-пакета сообщений в массив памяти M и сравнивают (см. блок 30 на фиг. 3б) текущее значение счетчика I со значением L величины служебного поля «опции» заголовка принятого TCP-пакета сообщений.
C
OPT
В случае, если I=L, то нормализуют (см. блоки 31, 32, 33, 34 на фиг. 3б) величину заголовка TCP-пакета сообщений и переходят (см. блок 40 на фиг. 3б) к формированию служебных полей заголовка ответного TCP-пакета сообщений.
R
нач
нач
R
Далее формируют ответный пакет сообщений, для чего записывают (см. блок 40 на фиг. 3б) в служебное поле «опции» значения сегментов из массива памяти M, а также записывают (см. блок 41 на фиг. 3б) в поле «размер окна» ТСР-заголовка ответного пакета сообщений значения W равное 10 байт. После этого направляют (см. блок 42 на фиг. 3б) отправителю ответные ТСР-пакеты сообщений с W равным 10 байт и сформированным служебным полем «опции» с записанными значениями сегментов из массива памяти M.
yд
yд
yд
Затем принимают (см. блок 43 на фиг. 3б) очередной пакет сообщений и устанавливают (см. блок 44 на фиг. 3б) в поле «размер окна» заголовка ответного пакета W=0, после чего формируют (см. блок 45 на фиг. 3б) ответные пакеты с W=0 и направляют (см. блок 46 на фиг. 3б) отправителю ответные пакеты с W=0. Для блокирования попыток разорвать соединение со стороны отправителя пакетов сообщений игнорируют (см. блок 47 на фиг. 3б) все входящие пакеты сообщений, до тех пор, пока не истечет тайм-аут соединения.
F
F
C
SL
F
F
F
C
R
F
F
F
R
Для нормализации величины заголовка TCP-пакета сообщений вычисляют (см. блок 31 на фиг. 3б) значение L величины заголовка TCP-пакета сообщений, необходимого для формирования корректного ответного TCP-пакета сообщений, где L=I+L. Затем вычисляют остаток от деления значения L на четыре, и в случае если остаток от деления L на четыре не равен нулю, то есть L mod 4≠0, то увеличивают (см. блок 33 на фиг. 3б) значение счетчика I на единицу и запоминают (см. блок 34 на фиг. 3б) значение сегмента kind поля опции NOP в массиве памяти M. После этого вновь вычисляют (см. блок 31 на фиг. 3б) значение L и его остаток от деления на четыре. В случае если остаток от деления значения L на четыре равен нулю, то есть L mod 4=0, записывают (см. блок 40 на фиг. 3б) в служебное поле «опции» заголовка формируемого TCP-пакета сообщений значения сегментов из массива памяти M.
Для вычисления значения сегмента 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-пакета сообщений, чем достигают реалистичную имитацию ложных абонентов и сеансов связи и низкую вероятность обнаружения нарушителем факта использования средств защиты и идентификации их характеристик.