новости
статьи
.save ass…

классификация и описание некоторых удаленных атак

В этой статье автор собрал воедино все сведения об так называемых удаленных, или внешних, атаках. Но для начала поясним, что понимается под удаленной атакой.

По общеупотребимой классификации, все атаки, равно как и уязвимости, позволяющие их выполнить, делятся (помимо всего прочего) на локальные и удаленные. В случае с локальной атакой нападение происходит «изнутри» системы, для проведения такой атаки злоумышленнику изначально требуется некоторый уровень доступа к системе. Обычно такого рода атаки направлены на повышение привилегий пользователя, хотя могут быть и другие варианты, например, DoS.
В отличае от локальных, удаленные атаки внешни по отношению к системе (отсюда и второе название – «внешние атаки»), то есть теоретически их может выполнить любой «гражданин» сети, имеющий базовый, непривилегированный доступ к системе. То есть достаточно, чтобы атакуемый хост был просто доступен атакующему по IP/TCP/HTTP и т. п. в зависисмости от конкретной разновидности атаки.
Удаленные атаки потенциально более опасны, чем локальные, поскольку а) круг «врагов» в этом случае намного шире, чем для локлаьных атак и б) врагов этих намного труднее отследить и призвать к ответственности, чем они и пользуются.

сетевые атаки

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

атаки, основанные на IP-фрагментации

Данная атака направлена на оборудование, находящееся за защитой IP фильтрующего оборудования. Для ее реализации злоумышленники используют два разных метода: "микрофрагменты" (Tiny Fragments) и "перекрытие фрагментов" (Fragment Overlapping). Эти атаки становятся достоянием истории, поскольку современные межсетевые экраны давно успешно с ними справляются.

микрофрагменты

Согласно RFC 791 (IP), все узлы (маршрутизаторы) Internet должны уметь передавать пакеты размером 68 байт без фрагментации. Минимальный размер заголовка IP-пакета без опций -- 20 байт. При заданных опциях, максимальный размер заголовка равен 60 байтам. В поле IHL (Internet Header Length) содержится длинна заголовка в 32 битных словах. Это поле использует 4 бита, потому количество возможных его значений равно 2^4 - 1 = 15 (поле не может принимать значение 0000). Следовательно, максимальный размер заголовка действительно равен 15*4 = 60 байтам. Наконец, поле смещения фрагмента (Fragment Offset), указывающее смещение первого байта фрагмента относительно всей дейтаграммы, займет 8 байт. Таким образом данные в фрагменте занимают минимум восемь байт. Откуда и получаем размер пакета в 68 байт.
Атака состоит из запроса TCP-соединения, фрагментированного на два IP-пакета. Первый IP-пакет состоит из 68 байт и содержит лишь первые восемь байт заголовка TCP (порты источника, назначения, и порядковый номер). Данные второго IP-пакета содержат запрос на TCP-соединение (флаг SYN установлен, ACK снят).
Пакетные фильтры применяют одно и то же правило ко всем фрагментам пакета. По первому фрагменту (смещение = 0) выбирается правило, в соответствии с которым обрабатываются все остальные фрагменты пакета безо всякого дополнительного контроля. Таким образом, при сборке фрагментов на целевой машине формируется пакет с запросом на соединение. В результате устанавливается соединение, несмотря на то, что пакетный фильтр должен был предотвратить такую ситуацию
На рисунках 1 и 2 показаны оба фрагмента, а на третьем -- дефрагментированный пакет на целевой машине:


Рис.1: Фрагмент 1.


Рис.2: Фрагмент 2.


Рис.3: Дефрагментированный пакет.

перекрытие фрагментов

В соответствии с тем же RFC 791, если два IP-фрагмента перекрываются, второй перезаписывает собой первый. Данный тип атаки также заключается в разбиении IP-пакета на два фрагмента. Пакетный фильтр пропускает первый пакет из 68 байт (по тому же принципу, что и в атаке типа "микрофрагменты"), поскольку он не содержит запроса на TCP-соединение (флаг SYN = 0 и флаг ACK = 0). И снова, данное правило применяется для всех фрагментов пакета. Второй фрагмент (со смещением = 1), содержащий настоящие данные о соединении, пропускается фильтром, так как он не видит, что в этом фрагменте содержится запрос на установление соединения. При дефрагментации, данные второго фрагмента замещают данные первого, начиная с восьмого байта (так как смещение = 1). Результирующий пакет получается корректным запросом на соединение для целевой машины. Соединение установлено, несмотря на присутствующий пакетный фильтр.
На рисунках 1 и 2 показаны оба фрагмента, а на третьем -- дефрагментированный пакет на целевой машине:


Рис.4: Фрагмент 1.


Рис.5: Фрагмент 2.


Рис.6: Дефрагментированный пакет.

подмена адреса источника (IP Spoofing)

Целью данной атаки является узурпировать IP-адрес определенной машины. Это позволяет злоумышленнику либо скрыть источник атаки (используется в атаках типа "отказ в обслуживании"), либо извлечь какую-либо пользу из доверительных связей двух машин. Здесь мы рассмотрим второй вариант использования атаки IP Spoofing.
Для злоумышленника, базовый принцип атаки заключается в фальсификации собственных IP-пакетов (например, с помощью таких программ, как hping2 или nemesis) в которых изменяется, среди прочего, IP-адрес источника. Атака IP Spoofing часто называется "слепой подменой" (Blind Spoofing). Это связано с тем, что ответы на фальсифицированные пакеты не могут прийти машине атакующего, ведь был изменен исходящий адрес. Следовательно, они отправляются машине, адрес которой атакующий использовал для подмены. Однако, все-таки существуют два метода получения ответов:
1. Маршрутизация от источника (Source Routing): в протоколе IP существует возможность маршрутизации от источника, которая позволяет задавать маршрут для ответных пакетов. Этот маршрут представляет собой набор IP-адресов маршрутизаторов, через которые должен проследовать пакет. Для кракера достаточно предоставить маршрут для пакетов до маршрутизатора, им контролируемого. В наше время, большинство реализаций стека TCP/IP отбраковывают пакеты с маршрутизацией от источника.
2. Перемаршрутизация (Re-routing): если маршрутизатор использует протокол RIP, то его таблицы можно изменить присылая ему RIP-пакеты с новой информацией о маршрутах. С помощью этого, атакующий добивается направления пакетов на подконтрольный ему маршрутизатор.
Эти технологии трудноприменимы, поэтому чаще атака выполняется без получения ответных пакетов целевого сервера. Слепая подмена используется против таких сервисов, как rlogin и rsh. Их механизмы аутентификации основаны лишь на исходных IP-адресах клиентских машин. Это широко известная атака. Кевин Митник применил ее против машины Цутому Шимомуры в1994). Атака требует некоторых шагов:
- обнаружение IP-адреса доверенной машины, например, при помощи команды showmount -e, которая выводит список хостов, для которых экспортируются файловые системы, или команды rpcinfo, выдающей больше информации;
- выполнение атаки "отказ в обслуживании" против доверенной машины, используя, например, SYN-наводнение (SYN Flooding, детальнее об атаках такого типа смотрите ниже). Это необходимо для предотвращения возможности ответа доверенной машины на пакеты от целевого сервера. В противном случае, машина пошлет серверу пакеты TCP RST, которые оборвут попытку соединения;
- предугадывание последовательного номера TCP: каждому TCP-пакету присваивается начальный номер последовательности. Стек TCP/IP операционной системы генерирует его линейно, в зависимости от времени, случайным или псевдослучайным методом. Кракер может атаковать только те системы, которые пользуются прогнозируемыми методами (линейным или основанном на времени) для вычисления номера последовательности;
- атака заключается в открытии TCP-соединения с желаемым портом (например rsh). Для лучшего понимания, мы напомним вам как работает механизм установления TCP-соединения. Он происходит в три шага (механизм тройного квитирования):
1. клиент шлет серверу пакет с выставленным флагом TCP SYN и номером последовательности x;
2. сервер отвечает пакетом с выставленными флагами TCP SYN и ACK (с номером подтверждения x+1). Номер последовательности данного пакеты равен y;
3. клиент шлет пакет с флагом TCP ACK (и номером подтверждения y+1) серверу.
Во время атаки хакер не получает от сервера пакет с выставленными флагами SYN-ACK. Для того, чтобы установить соединение, он прогнозирует номер последовательности y и посылает пакет с предполагаемым номером подтверждения (y+1). После этого соединение установлено. Теперь атакующий может послать команду сервису rsh, такую, как echo ++ >> /.rhosts и получить дополнительные права доступа. Чтобы сделать это, он шлет пакет с выставленным флагом TCP PSH (Push): полученные данные немедленно передаются протоколу более высокого уровня (в нашем случае сервису rsh). После чего, кракер может подключаться к серверу по rlogin или rsh без подмены адреса источника.
Рисунок 7 демонстрирует шаги по реализации атаки IP Spoofing:


Рис.7: Атака IP Spoofing направленная на сервис rsh.

Атакующий использует машину A, машина C -- это доверенная система. Обозначение A(C) символизирует пакет, отправленный машиной А с адресом машины C в качестве адреса источника.
Примечание: существует программа mendax, реализующая механизмы атаки IP Spoofing.

перехват TCP-сеанса (TCP Session Hijacking)

Перехват TCP-сеанса позволяет злоумышленнику перенаправлять поток TCP. Далее атакующий может преодолеть парольную защиту (как в telnet или ftp). Необходимость прослушивания (sniffing) ограничивает применяемость данного типа атаки до физического сегмента сети целевого хоста. Перед рассмотрением деталей этой атаки, давайте разберем некоторые базовые принципы протокола TCP.
Мы не будем детально рассматривать протокол, а сконцентрируемся на моментах, необходимых для понимания атаки. Заголовок TCP содержит различные поля:
- порт источника и порт назначения, идентифицирующие соединение;
- номер последовательности, идентифицирующий каждый посланный байт;
- номер подтверждения, соответствующий последнему полученному байту;
- различные флаги, в том числе SYN (используется для синхронизации при установлении сеанса), ACK (флаг подтверждения TCP-сегмента) и PSH (указывает на необходимость передачи данных приложению).
На рисунке 8 представлен процесс установления TCP-соединения (механизм тройного квитирования):


Рис.8: Механизм тройного квитирования

В данном примере машина A инициировала TCP-соединение с машиной B.
Рисунок 9 демонстрирует процесс передачи данных в протоколе TCP:


Рис. 9.

Номер последовательности будет меняться в соответствии с количеством посланных байтов. На рисунке он представлен как Seq, номер подтверждения находится после флагов PSH и ACK, а количество посланных байтов указано в скобках.
Рассматриваемая атака нарушает синхронизацию соединения на обоих концах, что позволяет выполнить перехват сеанса. Синхронизация нарушается, когда порядковый номер посылаемого машиной А байта, отличается от порядкового номера байта, который должна получить машина В. И наоборот.
В примере на рисунке 9 после первого шага, когда B получает пакет, машина A ждет ответного пакета с номером подтверждения x+60. Если пакет, посланный В будет содержать другой номер подтверждения, синхронизация соединения будет нарушена.
Итак, злоумышленник хочет выполнить с машины C перехват установленного между машинами A и B сеанса telnet. В начале он прослушивает telnet-трафик (TCP порт 23) между A и B. Когда злоумышленник решает, что А аутентифицировалась сервисом telnet машины В, он десинхронизирует соединение. Для этого, генерируется пакет с исходящим адресом машины А и номером подтверждения, который ожидает машина В. Естественно, что этот пакет принимается машиной В. Кроме рассинхронизации TCP-сеанса, этот пакет позволяет злоумышленнику выполнить команду в telnet-сеансе, установленном машиной А. Фактически, этот пакет может нести данные (флаг PSH = 1).
На рисунке 10 продемонстрирована атака.


Рис.10: Перехват TCP-сеанса.

Машина B принимает команду, посланную машиной C, и подтверждает это посылкой пакета машине А с выставленным флагом ACK. Теперь, если А пошлет пакет машине В, он будет отвергнут, поскольку у него будет номер последовательности отличный от ожидаемого машиной B.
Возникает проблема, называемая "штормом подтверждений" (Ack Storm). Генерируется множество ACK-пакетов. Это происходит, когда А шлет TCP-пакет с неверным номером последовательности (ведь A десинхронизирована), B отвергает его и шлет машине A ACK-пакет с ожидаемым номером последовательности. Машина А тоже отвергает этот пакет, ведь она тоже ожидает другой номер последовательности. И в свою очередь отправляет ACK-пакет машине B ...
Проблема шторма подтверждений может быть решена, если злоумышленник использует технологию подмены ARP-информации (ARP Spoofing). В этом случае, машина С изменит ARP-кэш машины B таким образом, чтобы IP-адресу машины А соответствовал MAC-адрес машины С. Эти технологии реализованы в программе hunt.

подмена ARP-информации (ARP Spoofing)

Эта атака, известная также под именем ARP Redirect, перенаправляет сетевой трафик от одной или более машин к машине злоумышленника. Выполняется в физической сети жертвы. Давайте вспомним, что представляет собой протокол ARP и как он работает.
ARP (протокол разрешения адресов, Address Resolution Protocol) реализует механизм разрешения IP-адресов в MAC-адреса Ethernet. Сетевое оборудование общается между собой путем обмена Ethernet-фреймами (если речь идет об Ethernet-сети) на канальном уровне. Для обеспечения возможности передачи этой информации необходимо, чтобы каждый сетевой интерфейс имел свой уникальный адрес в сети Ethernet. Он называется MAC-адресом (MAC=Media Access Control).
При посылке IP-пакета, отправляющая машина должна знать MAC-адрес получателя. Чтобы его узнать, в локальную сеть посылается широковещательный ARP-запрос. В нем спрашивается "Какой MAC-адрес соответствует такому-то IP-адресу?". Машина с соответствующим IP-адресом отвечает ARP-пакетом, содержащим запрошенный MAC-адрес. С этого момента, отправляющая машина знает MAC-адрес, соответствующий IP-адресу назначения. Это соответствие сохраняется некоторое время в кэше (чтобы не выполнять запрос каждый раз при посылке IP-пакета).
Рассматриваемая атака изменяет кэш целевой машины. Злоумышленник шлет ARP-ответы целевой машине с информацией о новом MAC-адресе, соответствующем (например) IP-адресу шлюза. На самом деле, этот MAC-адрес соответствует интерфейсу машины злоумышленника. Следовательно, весь трафик к шлюзу будет теперь получать машина злоумышленника. Теперь можно прослушивать трафик (и/или изменять его). После этого, трафик будет направляться к реальному целевому адресу и таким образом никто не заметит изменений.
Атака ARP Spoofing используется в локальной сети, построенной на коммутаторах. С ее помощью можно перенаправить поток Ethernet-фреймов на другие порты, в соответствии с MAC-адресом. После чего злоумышленник может перехватывать все пакеты на своем порту. Таким образом, атака ARP Spoofing позволяет перехватывать трафик машин, расположенных на разных портах коммутатора.
Для реализации атаки ARP Spoofing, злоумышленник может воспользоваться генераторами ARP-пакетов, например ARPSpoof или nemesis.
Пример: машина-жертва с адресом 10.0.0.171, ее шлюз -- 10.0.0.1, машина злоумышленника имеет адрес 10.0.0.227. Результат выполнения команды traceroute перед атакой:

[root@cible -> ~]$ traceroute 10.0.0.1
traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 40 byte packets
1 10.0.0.1 (10.0.0.1) 1.218 ms 1.061 ms 0.849 ms


ARP-кэш машины:

[root@cible -> ~]$ arp
Address HWtype HWAddress Flags Mask Iface
10.0.0.1 ether 00:b0:c2:88:de:65 C eth0
10.0.0.227 ether 00:00:86:35:c9:3f C eth0


Злоумышленник запускает программу ARPSpoof:

[root@pirate -> ~]$ arpspoof -t 10.0.0.171 10.0.0.1
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f


Посылаемые пакеты -- это ARP-ответы, изменяющие кэш машины 10.0.0.171. Они несут информацию, что с адресом 10.0.0.1 теперь ассоциирован MAC-адрес 00:00:86:35:c9:3f.

Теперь ARP-кэш машины 10.0.0.171 выглядит так:

[root@cible -> ~]$ arp
Address HWtype HWAddress Flags Mask Iface
10.0.0.1 ether 00:00:86:35:c9:3f C eth0
10.0.0.227 ether 00:00:86:35:c9:3f C eth0

Чтобы убедится, что весь трафик теперь проходит через машину 10.0.0.227, достаточно еще раз запустить traceroute к шлюзу 10.0.0.1:

[root@cible -> ~]$ traceroute 10.0.0.1
traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 40 byte packets
1 10.0.0.227 (10.0.0.227) 1.712 ms 1.465 ms 1.501 ms
2 10.0.0.1 (10.0.0.1) 2.238 ms 2.121 ms 2.169 ms


Теперь злоумышленник может прослушивать трафик между машинами 10.0.0.171 и 10.0.0.1. Он должен не забыть активировать маршрутизацию на своей машине 10.0.0.227.

подмена DNS (DNS Spoofing)

Система DNS (Domain Name System) преобразует доменное имя (например, www.test.com) в его IP-адрес (например, 192.168.0.1) и наоборот. Данная атака использует технологию отправки фальшивых ответов на DNS-запросы жертвы. Атака основывается на двух основных методах.

подмена DNS ID (DNS ID Spoofing)

Заголовок пакета DNS-протокола содержит идентификационное поле для соответствия запросов и ответов. Целью подмены DNS ID является посылка своего ответа на DNS-запрос до того, как ответит настоящий DNS-сервер. Для выполнения этого, нужно спрогнозировать идентификатор запроса. Локально это реализуется простым прослушиванием сетевого трафика. Однако, удаленно выполнить эту задачу гораздо сложнее. Существуют различные методы:
- проверка всех доступных значений идентификационного поля. Не очень практично, поскольку общее количество возможных значений составляет 65535 (размер поля 16 бит);
- посылка нескольких сотен DNS-запросов в правильном порядке. Очевидно, что этот метод не очень надежен;
- нахождение сервера, генерирующего прогнозируемые идентификаторы (например, увеличивающиеся на 1). Этот тип уязвимости присущ некоторым версиям Bind и системам Windows 9x.
В любом случае, необходимо ответить до настоящего DNS-сервера. Этого можно достичь, например, выполнив против сервера атаку типа "отказ в обслуживании".
Для проведения успешной атаки, злоумышленник должен контролировать DNS-сервер (ns.attaquant.com), авторитетный для зоны attaquant.com. Целевой DNS-сервер (ns.cible.com) предположительно генерирует прогнозируемые идентификационные номера (увеличивающиеся на 1 при каждом запросе).
Атака требует выполнения четырех шагов:
1. атакующий шлет DNS-запрос от имени www.attaquant.com к DNS-серверу домена cible.com, как показано на рисунке 11;


Рис.11: DNS-запрос посланный к ns.cible.com.

2. целевой DNS-сервер перенаправляет запрос к серверу домена attaquant.com;
3. злоумышленник прослушивает запросы на предмет получения идентификаторов (в нашем примере ID равен 100);
4. злоумышленник фальсифицирует IP-адрес соответствующий имени. В примере машина-жертва это www.spoofed.com, адрес которой должен быть 192.168.0.1. Злоумышленник посылает DNS-запрос на разрешение имени www.spoofed.com серверу ns.cible.com. И сразу же шлет группу фальсифицированных DNS-ответов (передавая в качестве IP-адреса один из адресов злоумышленника -- 10.0.0.1) на свой же запрос с подмененным IP-адресом источника на адрес одного из DNS-серверов домена spoofed.com. В каждом ответе ID увеличивается на 1 по сравнению с идентификатором, полученным во время второго этапа атаки (ID = 100) для увеличения вероятности нахождения правильного номера ID. Сервер ns.cible.com мог ответить на запросы других клиентов и, соответственно, увеличить свой DNS ID. На рисунке 12 показано, как выполняются два последних этапа атаки.


Рис.12: Подмена DNS ID

В результате, кэш целевого DNS-сервера будет содержать соответствие, необходимое злоумышленнику и следующим клиентам запрашивающим адрес www.spoofed.com будет сообщен адрес машины злоумышленника. На ней может быть размещена копия настоящего сайта, с помощью которого злоумышленник может красть конфиденциальную информацию.

DNS Cache Poisoning

DNS-серверы используют кеш для хранения результатов предыдущих запросов в течение некоторого времени. Это делается, чтобы избежать постоянных повторов запросов к авторизированным серверам соответствующих доменов. Второй вариант атаки, направленной на подмену DNS, заключается в изменении кэша DNS-сервера. Вот пример:
Используем те же данные, что и в предыдущем примере. Вот ключевые моменты этого варианта атаки:
- послать DNS-запрос на разрешение имени www.attaquant.com DNS-серверу домена cible.com;
- целевой DNS-сервер шлет запрос на разрешение имени www.attaquant.com DNS-серверу злоумышленника;
- DNS-сервер злоумышленника шлет ответ, с фальсифицированными записями, что позволяет задавать имени соответствие с IP-адресом злоумышленника. Например, сайт www.cible.com может иметь фальсифицированную DNS-запись, соответствующую IP-адресу сайта www.attaquant.com.

атаки на приложения

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

конфигурационные проблемы

Одними из первых обнаруживаются проблемы безопасности, связанные с ошибками в конфигурации приложений. Существуют два типа ошибок: установка по-умолчанию и неправильная конфигурация.
Программное обеспечение, такое, как веб-серверы, в установке по-умолчанию часто содержат примеры сайтов, которые может использовать злоумышленник для доступа к конфиденциальной информации. Например, такие установки могут содержать интерфейсы удаленного администрирования с паролем по-умолчанию (который можно найти в руководстве администратора по данному приложению). В результате злоумышленник получает полный доступ к сайту.
Наиболее распространенная уязвимость -- это неправильные списки доступа. Из-за этого злоумышленник может получить доступ к конфиденциальной информации.
Классическим примером ошибочной конфигурации приложения является настройка веб-сервера Lotus Domino. После установки этого сервера, в его конфигурации отсутствуют списки доступа. То есть, к базе names.nsf можно получить доступ непосредственно из браузера без какой-либо аутентификации.

ошибки

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

скрипты

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

атака "Посредник" (Man in the Middle)

Главной целью атаки является перенаправление трафика между двумя машинами. Это нужно для перехвата, модификации или уничтожения данных, которыми обмениваются системы. Эта атака, скорее концептуальная, нежели практическая. Существует множество типов атак, реализующих принцип "Посредника", например "посредник" в DNS, использующий подмену DNS для перенаправления трафика между веб-сервером и клиентом. Недавно созданы программы для перенаправления SSH-трафика.

отказ в обслуживании (DoS)

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

SYN-наводнение

Мы уже рассматривали механизм установления TCP-соединения (механизм тройного квитирования). SYN-наводнение использует этот механизм. Как вы помните, есть три состояния: посылка SYN-пакета, получение пакета SYN-ACK и посылка ACK-пакета. Идея атаки состоит в создании большого количества не до конца установленных TCP-соединений. Для реализации этого злоумышленник посылает множество запросов на установление соединения (пакеты с выставленным флагом SYN), целевая машина отвечает пакетами SYN-ACK. Злоумышленник же не завершает процесс установки соединения, а оставляет их в полуоткрытом состоянии. Следовательно, для каждого полученного SYN-пакета сервер выделяет ресурсы и вскоре они исчерпываются. В результате, новые соединения не могут быть открыты. Этот тип отказа в обслуживании направлен только на целевую машину.
Для реализации атаки SYN-наводнения злоумышленник может использовать программу synk4, передавая ей в качестве параметра целевой хост, порт и случайный адрес источника. Последнее затрудняет определение машины злоумышленника.

UDP-наводнение

Этот тип атаки "отказ в обслуживании" использует бессеансовый режим протокола UDP. Злоумышленник генерирует большое количество UDP-пакетов ("шторм UDP-пакетов"), направленных на одну или две машины. В результате происходит перегрузка сети и целевых машин. Эффективность данной атаки особенно высокая, поскольку UDP-трафик приоритетнее TCP-трафика. В протоколе TCP есть механизмы предотвращения перегрузок, если подтверждения приема пакетов приходят с значительной задержкой, передающая сторона замедляет скорость передачи TCP-пакетов. В протоколе UDP такой механизм отсутствует, и после начала атаки UDP-трафик быстро захватит всю доступную полосу пропускания, и TCP-трафику останется лишь малая ее часть.
Наиболее известный пример UDP-наводнения это атака на сервис chargen. Реализация этой атаки проста: достаточно установить связь между сервисами chargen на одной машине и сервисом echo на другой. Сервис chargen генерирует символы, а сервис echo дублирует полученные данные. Злоумышленник посылает UDP-пакеты на порт 19 (chargen) одной из машин-жертв, подделывая IP-адрес и порт источника. В данном случае, портом источника будет UDP-порт 7 (echo). Атака UDP-наводнение приводит к перегрузке сети на отрезке между двумя машинами. В результате, пострадать может вся сеть. /* Впрочем, атаку, нацеленную на перегрузку сети, все же чаще проводят с помощью ICMP, в самом простом случае это банальный ping –f. – прим. ред. */

пакетная фрагментация

Отказ в обслуживании, достигаемый с помощью пакетной фрагментации, использует уязвимости некоторых стеков TCP/IP, связанных с дефрагментацией пакетов (сборкой IP-фрагментов).
Известная атака, использующая этот подход -- это Teardrop. Фрагментарное смещение второго сегмента меньше размера первого сегмента. Это означает, что при сборке фрагментов первый сегмент должен будет содержать данные второго сегмента, происходит перекрытие фрагментов. Во время сборки таких пакетов, некоторые системы не могут обработать сложившуюся ситуацию, что приводит к отказу в обслуживании. Существуют разные варианты этой атаки, например bonk, boink и newtear. DoS-атака "пинг смерти" использует некорректную обработку ICMP-фрагментов, посылая больше данных, чем максимальный размер IP-пакета.

Smurfing

Данная атака использует протокол ICMP. При посылке ping-пакета (сообщение ICMP Echo) по широковещательному адресу (например, 10.255.255.255), он доставляется каждой машине в этой сети. Принцип атаки заключается в посылке пакета ICMP Echo Request с адресом-источником машины-жертвы. Злоумышленник шлет постоянный поток ping-пакетов по сетевому широковещательному адресу. Все машины, получив запрос, отвечают источнику (то есть жертве, а не злоумышленнику) пакетом ICMP Echo Reply. Соответственно, размер ответного потока пакетов возрастает в пропорциональное количеству хостов число раз. В результате, вся сеть подвергается отказу в обслуживании из-за перегрузки.

распределенная атака "отказ в обслуживании" (DDoS)


Распределенная атака "отказ в обслуживании" перегружает целевую сеть или систему. Идея атаки, заключается в использовании разных источников (демонов) для атаки, и "владельцев" для управления. Наиболее известные утилиты организации DDoS (Distributed Denial of Service) -- это Tribal Flood Network (TFN), TFN2K, Trinoo и Stacheldraht. На рисунке 13 приведен пример организации DDoS:


Рис.13: Распределенная атака "отказ в обслуживании".

Злоумышленник использует "хозяев" (masters) для управления источниками. Очевидно, что ему необходимо подключится (TCP) к "хозяевам" для того, чтобы настроить их и подготовить атаку. "Хозяева" лишь пересылают команды источникам по протоколу UDP. Без "хозяев", злоумышленнику пришлось бы устанавливать соединение с каждым из источников. Таким образом, происхождение атаки можно было бы легко обнаружить, а реализация ее занимала бы больше времени.
Каждый источник обменивается с "хозяином" специфическими сообщениями. В зависимости от используемых утилит, общение может быть с использованием механизма авторизации и/или шифрования. Для установки источников и "хозяев", злоумышленник использует известные уязвимости (переполнение буфера таких сервисов, как RPC, FTP, и т.п.). Сама же атака являет собой либо SYN-наводнение, либо Smurf и приводит к отказу в обслуживании целевой сети или системы.

Eric Detoisien, перевод Ивана Песина, ipesin@post.Lviv.UA. Впервые опубликована в журнале LinuxFocus.
обсудить статью

© сетевые решения
.
.