В вычислительных сетях связь между двумя удаленными хостами осуществляется путем передачи по сети сообщений, заключенных в пакеты обмена. В общем случае, передаваемый по сети пакет, вне зависимости от используемого протокола и типа сети (Token Ring, Ethernet, X.25 и др.), состоит из заголовка пакета и поля данных. В заголовок пакета обычно заносится служебная информация, определяемая используемым протоколом обмена и необходимая для адресации пакета, его идентификации, преобразования и т. д. В поле данных помещаются либо непосредственно данные, либо другой пакет более высокого уровня OSI. Так, например, пакет транспортного уровня может быть вложен в пакет сетевого уровня, который, в свою очередь, вложен в пакет канального уровня. Спроецировав это утверждение на сетевую ОС, использующую протоколы TCP/IP, можно утверждать, что пакет TCP (транспортный уровень) вложен в пакет IP (сетевой уровень), который, в свою очередь, вложен в пакет Ethernet (канальный уровень). Рис.1 наглядно иллюстрирует то, как выглядит, например, TCP пакет в сети Internet:

Рассмотрим схему адресации пакетов в сети Internet и возникающие здесь проблемы с безопасностью. Как известно, базовым сетевым протоколом обмена в сети Internet является протокол IP (Internet Protocol) межсетевой протокол, позволяющий передавать пакеты в любую точку глобальной сети. Для адресации на сетевом уровне (IP уровне) каждый хост имеет уникальный 32 разрядный IP адрес. Для передачи IP пакета на хост необходимо указать в IP заголовке пакета в поле Destination Address IP адрес данного хоста. Однако, как видно из рис. 1, IP пакет находится внутри аппаратного пакета (в случае среды передачи Ethernet Ethernet пакета). Поэтому, каждый пакет в сетях любого типа и с любыми протоколами обмена в конечном счете адресуется на аппаратный адрес сетевого адаптера, непосредственно осуществляющего прием и передачу пакетов в сеть (в дальнейшем, рассматриваются только Ethernet сети).



Рис. 1. Структура TCP пакета

Из этого следует, что для адресации IP пакетов в сети Internet кроме IP адреса хоста необходим еще либо Ethernet адрес его сетевого адаптера (в случае адресации внутри одной подсети) либо Ethernet адрес маршрутизатора (в случае межсетевой адресации). Первоначально хост может не иметь информации о Ethernet адресах других хостов, находящихся с ним в одном сегменте, в том числе и о Ethernet адресе маршрутизатора. Следовательно, перед хостом встает стандартная проблема, решаемая с помощью алгоритма удаленного поиска .

Среди прочих в стеке TCP/IP определен управляющий протокол ICMP (Internet Control Message Protocol) , одной из функций которого является удаленное управление таблицей маршрутизации на хостах внутри сегмента сети. Динамическое удаленное управление маршрутизацией изначально задумывалось для предотвращения возможной передачи сообщений по неоптимальному маршруту и для повышения отказоустойчивости сети в целом. Предполагалось, что сетевой сегмент может быть подключен к глобальной сети не через один (как это обычно происходит на сегодняшний день), а через несколько маршрутизаторов. В это случае адресоваться во внешнюю сеть можно через любой из ближайших узлов. Это достаточно удобно, как с точки зрения оптимальности маршрута (например, к хосту www.example.one оптимальный (кратчайший) маршрут проходит через первый маршрутизатор, а к хосту www.example.two через второй марщрутизатор), так и с точки зрения повышения надежности работы сети (при выходе из строя одного из маршрутизаторов связь с внешним миром возможна через другой маршрутизатор). В обоих случаях (при изменении оптимального маршрута и при выходе из строя маршрутизатора) необходимо изменение таблицы маршрутизации в памяти сетевой операционной системы. Одно из назначений протокола ICMP состоит именно в динамическом изменении таблицы маршрутизации оконечных сетевых систем.

ARP-spoofing или ложный ARP-сервер

В сети Internet для нахождения адреса сетевого адаптера используется протокол ARP (Address Resolution Protocol) , который позволяет получить взаимно однозначное соответствие IP и Ethernet адресов для хостов, находящихся внутри одного сегмента. Это достигается следующим образом: при первом обращении к сетевым ресурсам хост отправляет широковещательный ARP запрос на Ethernet адрес FFFFFFFFFFFFh, в котором указывает IP адрес маршрутизатора и просит сообщить его свой Ethernet адрес (IP адрес маршрутизатора обязательный параметр, который всегда устанавливается вручную при настройке любой сетевой ОС в сети Internet). Этот широковещательный запрос получат все станции в данном сегменте сети, в том числе, и маршрутизатор. Получив данный запрос, маршрутизатор внесет запись о запросившем хосте в свою ARP таблицу, а, затем, отправит на запросивший хост ARP ответ, в котором сообщит свой Ethernet адрес. Полученный в ARP ответе Ethernet адрес будет занесен в ARP таблицу, находящуюся в памяти операционной системы на запросившем хосте и содержащую записи соответствия IP и Ethernet адресов для хостов внутри одного сегмента. Отметим, что в случае адресации к хосту, расположенному в той же подсети также используется ARP протокол и рассмотренная схема полностью повторяется.

В том случае, если в распределенной сети используются алгоритмы удаленного поиска, то имеется возможность осуществления в такой сети типовой удаленной атаки, связанной с внесением в систему ложного обюекта . Из анализа безопасности протокола ARP становится ясно, что перехватив на атакующем хосте внутри данного сегмента сети широковещательный ARP запрос, можно послать ложный ARP ответ, в котором обюявить себя искомым хостом, (например, маршрутизатором), и, в дальнейшем, активно контролировать и воздействовать на сетевой трафик «обманутого» хоста по схеме «Ложный обюект распределенной сети». Необходимо обратить внимание, что данная удаленная атака возможна только в сети с широковещательной среде передачи (типа Ethernet) и является внутрисегментной. (Стать ложным ARP-сервером довольно просто. Например, и в ОС Solaris, и в Linux имеется команда arp, которая, кроме всего прочего, как раз и предназначена для этой цели. Прим. ред.)

Рассмотрим обобщенную функциональную схему ложного ARP сервера (рис. 2):

  • ожидание ARP запроса;
  • при получении ARP запроса передача по сети на запросивший хост ложного ARP ответа, в котором указывается адрес сетевого адаптера атакующей станции (ложного ARP сервера) или тот Ethernet адрес, на котором будет принимать пакеты ложный ARP сервер (совершенно необязательно указывать в ложном ARP ответе свой настоящий Ethernet адрес, так как при работе непосредственно с сетевым адаптером его можно запрограммировать на прием пакетов на любой Ethernet адрес);
  • прием, анализ, воздействие и передача пакетов обмена между взаимодействующими хостами.


Рис. 2. Ложный ARP - сервер в сети Internet

Данная схема атаки требует некоторого уточнения в действительности, на практике автор столкнулся с тем, что, зачастую, даже очень квалифицированные сетевые администраторы и программисты не знают либо не понимают тонкостей работы протокола ARP. Это, наверное, связано с тем, что при обычной настройке сетевой ОС, поддерживающей протоколы TCP/IP, не требуется настройка модуля ARP (автор не встречал ни одной сетевой ОС, где обязательно требовалась бы создание «вручную» ARP таблицы). Поэтому протокол ARP остается, как бы, скрытым для администраторов. Далее, необходимо обратить внимание на тот факт, что у маршрутизатора тоже имеется ARP таблица, в которой содержится информация о IP и, соответствующих им Ethernet адресах всех хостов из сегмента сети, подключенного к маршрутизатору. Информация в эту ARP таблицу на маршрутизаторе также обычно заносится не «вручную», а при помощи протокола ARP. Поэтому, кстати, так легко в одном сегменте IP сети присвоить чужой IP адрес: выдать команду сетевой ОС на установку нового IP адреса, потом обратиться в сеть, а, значит сразу же будет послан широковещательный ARP запрос и маршрутизатор, получив этот запрос, автоматически обновит запись в своей ARP таблице (поставит в соответствии с чужим IP адресом Ehternet адрес вашей етевой карты) а в результате обладатель данного IP адреса потеряет связь с внешним миром (все пакеты, адресуемые на его бывший IP адрес и приходящие на маршрутизатор, будут направляться маршрутизатором на Ethernet адрес атакующего). Правда, некоторые ОС, анализируют все передаваемые по сети широковещательные ARP запросы. Например ОС Solaris при получении ARP запроса, с указанным в нем IP адресом, совпадающим с IP адресом данной системы, выдает предупреждающее сообщение о том, что хост с таким-то Ethernet адресом пытается присвоить (естественно, успешно) себе данный IP адрес.

Теперь вернемся непосредственно к уже описанной схеме атаки «ложный ARP сервер». Из анализа механизмов адресации становится ясно, что, так как поисковый ARP запрос кроме атакующего получит и маршрутизатор, то в его таблице окажется соответствующая запись о IP и Ethernet адресе атакуемого хоста. Поэтому, когда на маршрутизатор придет пакет, направленный на IP адрес атакуемого хоста, то он будет передан не на ложный ARP сервер, а непосредственно на хост. То есть схема передачи пакетов в этом случае будет следующая:

  • атакованный хост передает пакеты на ложный ARP сервер;
  • ложный ARP сервер передает принятый от атакованного хоста пакет на маршрутизатор;
  • маршрутизатор, в случае получения ответа на переданный запрос, передает его непосредственно на атакованный хост, минуя ложный ARP сервер.

В этом случае, очевидно, что последняя фаза, связанная с «приемом, анализом, воздействием и передачей пакетов обмена» между атакованным хостом и, например, маршрутизатором (или любым другим хостом в том же сегменте) будет проходить уже не в режиме полного перехвата пакетов ложным сервером, а режиме «полуперехвата» (петлевая схема). Действительно, в режиме полного перехвата маршрут всех пакетов, отправляемых как в одну, так и в другую стороны, обязательно проходит через ложный сервер; а в режиме «полуперехвата» маршрут пакетов образует петлю, которую можно видеть на рис. 3. Необходимо обратить внимание на эту петлевую схему перехвата информации ложным сервером, так как, в дальнейшем, будет рассмотрен вариант атаки на базе протокола ICMP, результат которой это перехват информации по такой же схеме, и там, также может возникнуть петлевой маршрут.



Рис. 3. Петлевая схема перехвата информации ложным ARP- сервером

Кстати, очевидно, что довольно просто придумать несколько способов, позволяющих функционировать ложному ARP серверу по мостовой схеме перехвата (полный перехват). Например, можно, получив ARP запрос, самому послать такой же запрос и присвоить себе данный IP адрес (правда, в этом случае ложному ARP серверу не удастся остаться незамеченным, так некоторые ОС, как уже отмечалось, перехватив этот запрос, выдадут предупреждение о использовании их IP адреса). Другой, значительно более предпочтительный способ: послать ARP запрос, указав в качестве своего IP адреса любой свободный в данном сегменте IP адрес, и, в дальнейшем, вести работу с данного IP адреса как с маршрутизатором, так и с «обманутыми» хостами.

В заключении разговоря о уязвимостях протокола ARP необходимо показать, как по разному различные сетевые ОС используют этот протокол для изменения информации в своих ARP таблицах. При исследовании различных сетевых ОС выяснилось, что в ОС Linux 1.2.8 при адресации к хосту, находящемуся в одной подсети с данным хостом, в случае отсутствия в ARP таблице соответствующей записи о Ethernet адресе, передается ARP запрос и, в дальнейшем, при последующих обращениях к данному хосту, посылки ARP запроса не происходит. В ОС Solaris при каждом новом обращении к хосту происходит передача ARP запроса и, следовательно, ARP таблица динамически обновляется. ОС Windows Б??95 при обращении к хостам с точки зрения использования протокола ARP ведет себя также, как и Linux, за исключением того, что эта операционная система периодически (каждую минуту) посылает ARP запрос о Ethernet адресе маршрутизатора (видимо, программисты Microsoft считают, что маршрутизатор постоянно меняет свой Ethernet адрес?!). Результатом этой уверенности (или лучше сказать халатности) является то, что в течении нескольких минут вся локальная сеть с Windows Б??95 с легкостью поражается с помощью ложного ARP сервера. Что касается NT 4.0, то эксперименты показали здест также используется динамически изменяемая ARP таблица и ARP запросы о Ethernet адресе маршрутизатора передаются с периодичностью 5 минут, следовательно сеть поражается чуть дольше.

Причина успеха данной удаленной атаки кроется не столько в недостатках организации Internet сколько в широковещательной среде Ethernet. Кроме этого, очевидно, что удаленная атака является внутрисегментной и поэтому представляет угрозу для пользователя только в случае нахождения атакующего внутри сегмента сети. Однако, как известно по статистике нарушений информационной безопасности вычислительных сетей, большинство состоявшихся взломов сетей было выполнено изнутри собственными сотрудниками организаций. Причины этого очевидны. Во-первых, осуществить внутрисегментную удаленную атаку значительно легче, чем межсегментную. Во-вторых, практически все организации имеют локальные сети (в том числе и IP сети), однако далеко не у всех локальные сети подключены к глобальной сети Internet. Это обюясняется как соображениями безопасности так и наличием необходимости для организации такого подключения. В-третьих, сотрудникам самой организации, знающим тонкости своей внутренней вычислительной сети, гораздо легче осуществить взлом, чем кому бы то ни было другому. Поэтому администраторам безопасности нельзя недооценивать данную удаленную атаку, даже если ее источник находится внутри локальной IP сети.

Таблица 1.

Таблица маршрутизации Таблица 1
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 144.206.136.11 UGSc 8 91699 ed0  
127.0.0.1 127.0.0.1 UH 1 112 lo0  
144.206.128/19 link#1 UC 0 0    
144.206.130.52 0:0:1b:12:32:79 UHLW 0 719 ed0 275
144.206.136.11 0:60:9:a5:8f:60 UHLW 9 0 ed0 1199
144.206.146.158 0:80:48:fc:b7:ef UHLW 0 234 ed0 1068
144.206.192/19 link#2 UC 0 0    
144.206.192.10 8:0:69:b:20:a0 UHLW 0 185 ed1 404
144.206.192.11 8:0:69:b:20:a0 UHLW 0 709 ed1 47
144.206.192.20 8:0:69:5:6f:55 UHLW 0 2278 ed1 572
144.206.192.23 0:0:e2:2:eb:41 UHLW 2 4887 ed1 1187

ICMP-spoofing

Общеизвестно, что маршрутизация в сети Internet играет важнейшую роль для обеспечения ее нормального функционирования. Маршрутизация осуществляется на сетевом уровне (IP уровень), а на программном уровне в памяти сетевой операционной системы каждого хоста существуют таблицы маршрутизации, содержащие данные о возможных маршрутах. На аппаратном уровне каждый сегмент сети подключен к глобальной Сети как минимум через один маршрутизатор, а, следовательно, все хосты в этом сегменте и маршрутизатор должны физически располагаться в одном сегменте. Поэтому, все сообщения, адресованные в другие сегменты сети, направляются на маршрутизатор, который, в свою очередь, перенаправляет их далее по указанному в пакете IP адресу, выбирая при этом оптимальный маршрут. Рассмотрим далее, что представляет из себя таблица маршрутизации хоста (netstat -rn).

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

Сегодняшняя сеть Internet представляет из себя совокупность сегментов, соединенных через маршрутизаторы, поэтому в сети вынуждены использовать систему двойной адресации (по аппаратным и сетевым адресам). Когда пакет направляется в другой сегмент сети в заголовке сетевого уровня указывается IP адрес назначения, а в заголовке канального уровня указывается Ethernet адрес ближайшего маршрутизатора. Обычно в сетях TCP/IP различают внешнюю и внутреннюю, статическую и динамическую маршрутизацию. Внешняя маршрутизация это маршруты между автономными системами Internet, внутренняя маршрутизация внутри автономной системы, статическая администратор хоста вручную прописывает таблицу маршрутизации, динамическая используются протоколы динамической маршрутизации. Обычно внимание администратора сегмента сети сосредотачивается на выборе типа маршрутизации и настройке программного обеспечения. Но в сегменте сети, которая разбита на подсети правки в таблицу маршрутизации могут вносить и ICMP-сообщения в виде передачи с маршрутизатора на хост управляющего сообщения: Redirect Message.

8-bit

Type
8-bit

Code
16-bit

Checksum
32-bit

Gateway Internet Address
Internet Header + 64 bits of Original Data Datagram

ICMP Заголовок:

поле Type: 5

поле Code:

0 = Redirect datagrams for the Network;

1 = Redirect datagrams for the Host;

2 = Redirect datagrams for the Type of Service and Network;

3 = Redirect datagrams for the Type of Service and Host.

 

Как следует из спецификации протокола ICMP, сообщение Redirect бывает двух видов. Первый вид (code 0) носит название Redirect datagrams for the Network и уведомляет хост о необходимости смены адреса маршрутизатора default маршрута. Второй вид (code 1) Redirect datagrams for the Host информирует хост о необходимости создания нового маршрута к указанному в сообщении хосту и внесения его в таблицу маршрутизации. Для этого в сообщении указывается IP адрес хоста, где необходима смена маршрута (адрес будет занесен в поле Destination в пристыкованном IP заголовке), и новый IP адрес маршрутизатора, на который необходимо направлять пакеты, адресованные данному хосту (этот адрес заносится в поле Gateway). Необходимо обратить внимание на важное ограничение, накладываемое на IP адрес нового маршрутизатора он должен быть в пределах адресов данной подсети! Это выяснилось в результате изучения реакции различных сетевых систем на данное ICMP сообщение.

Анализ публикаций, посвященных протоколу ICMP показал, что сообщение Redirect datagrams for the Network является устаревшим и уже не используется современными сетевыми ОС. Это подтверждает и проведенный автором анализ исходных текстов ОС Linux 1.2.8. Иначе дело обстоит с управляющим сообщением Redirect datagrams for the Host. Здесь нет такого единства в рядах разработчиков различных сетевых операционных систем. На практике многие из известных ОС игнорируют это сообщение. Например, если в версии Linux 1.2.8 еще была реакция на Redirect datagrams for the Host, то уже в версии Linux 2.0.0 это сообщение игнорировалось. Иначе обстоит дело с ОС Windows 95 и NT. Наплевательское отношение разработчиков этих систем к вопросам обеспечения безопасности в данном случае привело как всегда к тому же: очевидная опасность Redirect datagrams for the Host была ими проигнорирована и обе системы реагируют на это сообщение, позволяя удаленно изменять таблицу маршрутизации на любом Windows хосте.

Итак. Мы подошли к основному вопросу. В чем же состоит потенциальная опасность в реакции сетевой ОС на ICMP сообщение Redirect datagrams for the Host? Ответ на этот вопрос очевиден: существует опасность несанкционированого изменения маршрутизации на хосте. Что может помешать хакеру самому послать подобное сообщение и навязать системе ложный маршрут. К сожалению ничего. Анализ механизма идентификации ICMP Redirect сообщения показывает, что единственным параметром, идентифицирующим это сообщение, является IP адрес отправителя, который должен совпадать с IP адресом маршрутизатора, так как это сообщение может и должно передаваться только маршрутизатором. Особенность протокола ICMP состоит в том, что он не предусматривает никакой дополнительной аутентификации источников сообщений. ICMP сообщения передаются на хост маршрутизатором однонаправлено без создания виртуального соединения (в процессе создания виртуального соединения можно было бы динамически, например, по схеме Диффи-Хелмана, выработать идентифицирующую информацию). А так как изначально ни хост, ни маршрутизатор не имеют заранее определенной статической ключевой информации для идентификации ICMP Redirect сообщения, то, очевидно, что в данном случае у его получателя нет возможности установить подлинность отправителя однонаправленного сообщения ICMP Redirect. Следовательно, ничто не мешает атакующему самому послать ложное ICMP Redirect сообщение о смене маршрута от имени маршрутизатора.

Приведенные факты позволяют осуществить типовую удаленную атаку «Внедрение в распределенную сеть ложного обюекта путем навязывания ложного маршрута» . Для осуществления этой удаленной атаки достаточно подготовить ложное ICMP Redirect datagrams for the Host- сообщение, в котором указать конечный IP адрес маршрута (адрес хоста, маршрут к которому будет изменен) и IP адрес ложного маршрутизатора. Далее, это сообщение передается на атакуемый хост от имени маршрутизатора. Для этого в IP заголовке в поле адреса отправителя указывается IP адрес маршрутизатора.

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



Рис. 4.Внутрисегментное навязывание хосту ложного маршрута при использовании протокола ICMP
  • передача на атакуемый хост ложного сообщения ICMP Redirect datagrams for the Host;
  • если пришел ARP запpос от атакуемого хоста, то посылается ARP ответ;
  • если пришел пакет от атакуемого хоста, то он переправляется на настоящий маршрутизатор;
  • если пришел пакет от маршрутизатора, то он переправляется на атакуемый хост;
  • при приеме пакета возможно воздействие на информацию по схеме «Ложный обюект сети» .

В случае осуществления второго варианта удаленной атаки, атакующий находится в другом сегменте относительно цели атаки. Тогда при передаче на атакуемый хост ложного ICMP Redirect сообщения сам атакующий уже не сможет получить контроль над трафиком, так как адрес нового маршрутизатора должен находиться в пределах подсети атакуемого хоста. Использование данного варианта этой удаленной атаки не позволит атакующему получить доступ к передаваемой по каналу связи информации. Однако в этом случае атака достигает другой цели нарушение работоспособности хоста. Хакер с любого хоста в Internet может послать подобное сообщение на атакуемый хост и, в случае, если сетевая ОС на данном хосте не проигнорирует данное сообщение, то в дальнейшем нарушится связь между хостом и указанным в ложном ICMP сообщении сервером. Это произойдет из-за того, что все пакеты, направляемые хостом на этот сервер будут отправлены на IP адрес несуществующего маршрутизатора. Для того, чтобы провести эту межсегментную атаку хакеру необходимо, во-первых, знать внутренний IP адрес маршрутизатора, к которому подключен хост, во-вторых, выбрать имя сервера, к которому требуется изменить маршрутизацию, и, в-третьих, выбрать IP адрес ложного маршрутизатора из внутренней атакуемой сети.

Рассмотрим возможные проблемы для хакера и способы построения препятствий на пути осуществления данной атаки.

Первая проблема внутренний IP адрес маршрутизатора. Узнать его можно только путем простого перебора получить этот адрес из внешней сети не представляется возможным (утилита traceroute даст только IP адрес маршрутизатора во внешней сети). Поэтому, исходя из того, что большинство хостов в сети находятся в подсетях класса C, то для осуществления этой атаки достаточно будет послать 256 ICMP Redirect сообщений с различными IP адресами отправителя. Например, пусть хост имеет IP адрес 194.85.96.197. Тогда, исходя из предположения, что он находится в подсети класса С, IP-адрес маршрутизатора, к которому он подключен, будет иметь те же первые три байта: 194.85.96. Хакеру достаточно будет перебрать только последний байт (послать 256 пакетов).

Вторая проблема для хакера выбор имени (или IP адреса) сервера, к которому будет изменена маршрутизация. Очевидно, что узнать к какому серверу наиболее часто обращается пользователь данного хоста для хакера не представляется возможным. Однако ничто ему не мешает, посылая неограниченное число ICMP Redirect сообщений, последовательно изменять маршрутизацию к наиболее известным или наиболее часто используемым серверам Internet (поисковые серверы, серверы известных фирм, и т.д.). Дело может сильно упроститься в том случае, если хакер будет обладать некоторой информацией об атакуемом обюекте (например, он является бывшим сотрудником данной фирмы).

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



Рис. 5. Внутрисегментное навязывание хосту ложного маршрута при использовании протокола ICMP, приводящее к отказу в обслуживании

В том случае, если атакующий в качестве ложного маршрутизатора выберет активный хост, то с ARP ответом от него проблем не будет и связь будет нарушена на значительно более долгий промежуток времени. Время нарушения работоспособности сетевой операционной системы для каждой ОС свое. Эксперименты, проведенные автором с ОС Windows NT 4.0 показали, что время нарушения работоспособности системы этой атакой 10 минут. Получив одно ложное ICMP Redirect сообщение NT не могла связаться с указанным в ложном сообщении серверов в течении 10 минут (однако ничто не мешает хакеру, атакуя Windows NT, передавать это сообщение с периодом 10 минут, не правда ли?).

Защититься от этой атаки можно только фильтрацией (при помощи систем брандмауэров) проходящих ICMP Redirect сообщений. Другой способ защиты состоит в изменении исходных текстов сетевого ядра операционных систем с дальнейшей его перекомпиляцией с целью запретить реакцию на ICMP Redirect сообщение. Но это возможно только в случае свободного распространения исходных текстов ОС (как в случае с ОС Linux или ОС Free BSD). (В общем случае, перенаправление, приходящее из внешней сети фильтруется маршрутизатором, который соединяет сеть организации с внешним миром, поэтому нужно опасаться своих шалунов, так же как и в случае с ARP. Имеются организации где ICMP redirect работает во всю, но сбои по маршрутизации бывают только когда происходят сбои у CISCO. Прим. ред.)

Литература:



И. Медведовский, П. Семьянов Атака через Internet. //Мир и Семья-95, 1997г.

RFC792 ICMP

RFC826 ARP Protocol for finding out Ethernet addresses

 

Илья Медведовский (ilya@blader.com) — Специализированный Центр Защиты Информации (Санкт-Петербург).