В современных атаках SYN-наводнение заключается в простой отправке на сервер сотен или тысяч пакетов в секунду. Это приводит к растрате или ресурсов сервера, или даже сетевых ресурсов при достаточной интенсивности трафика.

При организации наводнения SYN-пакетами злоумышленник не старается провести полную процедуру установки TCP-соединения. Его целью является превысить допустимый предел числа одновременно устанавливаемых соединений для определенной службы. В 1994 году стеки TCP/IP были не в состоянии установить никаких новых соединений для атакованной службы до тех пор, пока число запросов на соединение не станет меньше установленного предела. До момента превышения установленного предела сервер на каждый получаемый SYN-пакет отвечает пакетом с установленными флагами SYN и АСК. Запросы остаются в очереди (которая обычно составляет от 5 до 10 одновременно устанавливаемых соединений). В современных стеках очереди стали больше, и максимальное количество одновременно устанавливаемых соединений составляет от 100 до 1000.

SYN-наводнения пять лет спустя

В феврале 2000 года SYN-наводнение было в заголовках всех новостей, когда знаменитая распределенная атака отказа в обслуживании была использована против Yahoo! и других популярных Internet-сайтов. За годы, прошедшие со времени атаки Митника, в стеки сетевых протоколов были внесены значительные усовершенствования и была улучшена защита по периметру. Ответ хакеров был очень простым - количество SYN-пакетов увеличилось на несколько порядков. Описанное в нашей книге SYN-наводнение проводится довольно элегантно, а многие современные наводнения в Internet являются примерами грубой силы.

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

Сокрытие следов

Поскольку единственная цель данной атаки заключается в обеспечении условий отказа в обслуживании, то злоумышленнику нет смысла использовать свой настоящий 1Р-адрес. TCP-соединение не устанавливается, а только заполняется очередь. Злоумышленнику совсем не нужны ответные пакеты с установленными флагами SYN и АСК, и он уж точно не хочет быть обнаруженным. Поэтому IP-адрес отправителя, как правило, подменяется. Следующий IP-заголовок взят из реального кода атаки для SYN-наводнения. Обратите внимание на адреса dadd и sadd, использующиеся соответственно в качестве адресов получателя и отправителя.

/* Введите информацию IP-заголовка */

packet.ip.version = 4; /* Версия. 4 бит */

packet.ip.ihl=5; /* Длина заголовка. 4 бит */

packet.ip.tos=0; /* Тип обслуживания. 8 бит */

packet.ip.tot_len =htons(40); /* Общая длина. 16 бит */

packet.ip.id=getpid(); /* Идентификатор. 16 бит */

packet.ip.frag_off=0; /* Смещение фрагмента. 13 бит */

packet.ip.ttl=255; /* Поле TTL. 8 бит */

packet.ip,protocol=IPPROTO_TCP; /* Протокол. 8 бит */

packet.ip.check=0; /* Контрольная сумма заголовка */

packet.ip.saddr=sadd; /* IP-адрес отправителя */

packet.ip.daddr=dadd; /* IP-адрес получателя */

Рис. 15.1. Начало атаки

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

case 3: if(!optflags [1]){

fprintf(stderr,"Сначала введите адрес хоста\п");

USleep(MENUSLEEP) ; break;

}

/* ICMP-сокет для доступа к протоколам нижнего уровня */ if((sock2 = socket(AF_INET,SOCK_RAW,IPPROTO_ICMP))<0) {

perror("\nHmmm.... проблема с сокетом\п"); exit (1) ;

}

printf("[число ICMP_ECHO запросов]-> ");

fgets(tmp,MENUBUF,stdin) ; if (! (icmpAmt=atoi(tmp)))break;

if(slickPing(icmpAmt,sock2,unreach)){ fprintf(stderr,"Хост недостижим...Выберите другой\п"); sleep(1) ;

Этот метод может использоваться в атаках отказа в обслуживании. Атакуемая система бомбардируется SYN-пакетами до тех пор, пока не потеряет возможность устанавливать новые соединения. В этом состоянии хакер может держать систему до тех пор, пока он не даст команду на прекращение отправки SYN-пакетов. Цель атаки Митника заключалась в блокировании одной стороны TCP-соединения, чтобы переключить это соединение с доверительными отношениями на свой хост.

Выявление доверительных отношений

Как Митник узнал, какую систему нужно заблокировать? Как он убедился в существовании доверительных отношений между двумя хостами? Многим тщательно подготовленным атакам предшествует предварительный сбор информации, или разведывательное зондирование (recon probes). Рассмотрим пример зондирования, приведенного в сообщении Цитому, которое было зарегистрировано с помощью tcpdump- анализатора пакетов, созданного в лаборатории Лоренса Ливермора (Lawrence Livermore) Министерства энергетики США.

“Атака с подменой IP-адреса отправителя началась примерно в 14:09:32 по тихоокеанскому времени 25.12.94. Первые пакеты поступили от toad.com” (информация из журналов регистрации пакетов).

14:09:32 toad.com# finger -1 ©target

14:10:21 toad.com# finger -1 ©server

14:10:50 toad.com# finger -1 rootSserver

14:11:07 toad.com# finger -1 @x-terminal

14:11:38 toad.com# showmount -e x-terminal 14:11:49 toad.com# rpcinfo -p x-terminal 14:12:05 toad.com# finger -1 root@x-terminal

Каждая из приведенных команд finger, showmount и rpcinfo предназначена для сбора информации о системе UNIX. Если вы работаете в UNIX и давно не пользовались этими командами, то, возможно, стоит изменить имена хостов вашей сети на target, server и x-terminal и посмотреть, какая информация будет выдана в результате приведенных выше команд.

■ Команда finger сообщает о пользователях, работающих в системе, а именно о том, когда пользователь вошел в систему, откуда, как долго он не выполняет никаких действий, адрес электронной почты и когда его день рождения (ладно, на счет дня рождения - шутка). Аналогичной командой для систем под управлением Microsoft Windows является команда nbtstat. finger Example:

[root@toad /tmp]# finger @some.host.net [some.host.net]

Login Name TTY Idle When Where

chap Bill Chapman X1568 pts/6 3:11 Tue 17:26 picard

chap Bill Chapman X1568 console 8:39 Mon 14:44 :0

[rootOtoad /tnp]#

я Команда showmount -e предоставляет сведения о файловых системах, смонтированных с помощью NFS (Network File System - сетевая файловая систе ма). Особый интерес для хакера представляют файловые системы, монтируемые с неограниченными правами для чтения и записи (т.е. доступные для всех пользователей). showmount Example:

[root@toad /tmp]# showmount -e some.host.net Export list for some.host.net:

/usr export-hosts

/usr/local export-hosts /home export-hosts

[root@toad /tmp]#

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

rpcinfo Example ,■

[root@toad /tmp]# rpcinfo -p some.host.net program vers proto port

100000 3 udp 111 rpcbind

100 000 2 udp 111 rpcbind

100003 2 udp 2049 nfs

100024 1 udp 774 status

100024 1 tcp 776 status

100021 1 tcp 782 nlockmgr

100021 1 udp 784 nlockmgr

100005 1 tcp 1024 mountd

100005 1 udp 1025 mountd

391004 1 tcp 1025

391004 1 udp 1026

100001 1 udp 1027 rstatd

100001 2 Udp 1027 rstatd

100008 1 udp 1028 walld

100002 1 udp 1029 rusersd

100011 1 udp 103 0 rquotad

10 0012 1 udp 1031 sprayd

10 0026 1 udp 1032 bootparam

В настоящее время на внешних брандмауэрах или фильтрующих маршрутизаторах большинства локальных сетей блокируются запросы к ТСР-порту 79 (finger), но все равно стоит проверить, например, учетную запись для своего домашнего компьютера. Не забудьте перед проверкой получить разрешение у своего провайдера. Также лучше проверить блокирование TCP/UDP-порта 111 (portmapper). Не очень давно появились так называемые “защищенные службы преобразования портов” (secure portmapper). Они предоставляются различными поставщиками, а также в виде пакета, созданного Витсом Винима (Wietse Venema). Этот пакет доступен по адресу f tp : //coast. es . purdue . edu/pub.

Исследование сетевых трассировок

Во время атаки Митника ни один из перечисленных портов заблокирован не был. Поэтому хакер (toad, сот) получил информацию, которой он воспользовался на следующем этапе своей атаки. Вот цитата из отчета Цутому:

“От apollo. it. lue . edu поступило двадцать запросов на установление соединения с x-terminal. shell. Цель этих попыток заключалась в определении принципа работы генератора порядковых номеров TCP-соединений хоста х-

terminal. Обратите внимание на то, что в полученных SYN-пакетах начальные порядковые номера увеличиваются на 1 для каждого нового соединения. Это означает, что они не были сгенерированы системным стеком TCP/IP. В ответ на каждый пакет с флагами SYN и АСК отправляется RST-пакет, и в результате очередь соединений на х- terminal не заполняется”.

При анализе следующей трассировки tcpdump обратите внимание на то, что пакеты сгруппированы по три: SYN-пакет от apollo к x-terminal, SYN/ACK-пакет (второй этап процедуры установки TCP-соединения) и пакет с флагом RESET для предотвращения наводнения SYN-пакетами хоста x-terminal.

История tcp/ip | Обнаружение нарушений безопасности в сетях | Как читать трассировки tcpdump


Обнаружение нарушений безопасности в сетях



Новости за месяц

  • Июнь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс