Страницы

среда, 29 августа 2007 г.

Обсуждение способов защиты от ДДоС

Тема ДДоС в конкурентной борьбе стала острой и злободневной. Многие столкнулись , многие получили опыт и навыки борьбы. Пора обменятся знаниями.

6 комментариев:

  1. Предлагаю завести блог на хабре, или каком-либо другом ресурсе.
    У меня есть несколько наработок по этой теме.

    ОтветитьУдалить
  2. делюсь: http://eldarmurtazin.livejournal.com/37175.html?thread=648247#t648247

    ОтветитьУдалить
  3. Все верно. Это основной способ расследования. Только нужно не ограничиватся поиском irc, а еще проанализировать http соединения.

    ОтветитьУдалить
  4. начинаю расследование с целью поиска атакующих. для начала создал такое письмо :-)

    Добрый день, %ОФИЦИАЛЬНОЕ ИМЯ ПРОВА%

    Вас беспокоит администрация сайта ********.*** (ip сервера ***********).

    Хотим вам сообщить, что %КОЛИЧЕСТВО IP% компьютеров вашей сети ВЗЛОМАННЫ ЗЛОУМЫШЛЕННИКАМИ, ЗАРАЖЕНЫ ВИРУСАМИ
    и ВОЗМОЖНО НАХОДЯТСЯ ПОД ИХ КОНТРОЛЕМ. Это позволяет использовать их для совершения ДДОС-атак вместе с
    другими зараженными компьютерами по всему миру, обьеденённых в бот-сеть(по нашим подсчётам около 80 000 компьютеров).


    За последние 5 дней мы обнаружили около %КОЛИЧЕСТВО ЗАПРОСОВ% запросов со следущих IP вашей сети:
    %СПИСОК IP%

    Мы предполагаем, что эти компьютеры Вашей сети используются для атаки не только нашего сервера.
    Будем вам крайне признательны если вы поможете нам, проведёте анализ траффика с целью выяснения IP управляющего сервера.


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

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

    Будем рады сотруднчать с вами в этом вопросе.

    С уважением адмнистрация ********

    ОтветитьУдалить
  5. Вторым делом написал PHP скрипт, который выдирает имя и email провайдера с сайта nic.ru, который владеет IP. Список IP берётся с файла blocked.ips, итоговая информация сохраняется в blockedipsandmail.php. Я за час скриптом обработал около 20 000 IP и получил необходимые данные для связи с провайдером.



    $fw=fopen("blockedipsandmail.php", "w") or die("cannot open blockedipsandmail.ips");
    $ips=file("blocked.ips");

    $providers=array();

    $ii=0;
    while(list($vn,$vv) = each($ips))
    {
    $ii++;
    $vv=trim($vv);
    echo "process $vv ... \n";
    $content="";
    $content=get_page("https://www.nic.ru/whois/?query=$vv");


    if(preg_match_all("/([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*)/sm", $content, $arr))
    {
    $total=0;
    $arr[0] = array_unique($arr[0]);
    $emails="";

    $name="Provider";
    if(eregi("OrgName:([^<]*)",$content, $namearr)) $name=$namearr[1];
    elseif(eregi("descr:([^<]*)",$content, $namearr)) $name=$namearr[1];
    $name=eregi_replace("(  )*","",$name);
    $name=eregi_replace(",*","",$name);

    foreach($arr[0] as $key => $value) $emails.="$name<$value>, ";


    $providers[$vv]=$emails;




    $code=md5($emails);
    $email[$code]['ip']=$vv;
    if(!isset($email[$code]['ips'])) $email[$code]['ips']='';
    $email[$code]['ips'].=$vv.", ";
    $totalarr=explode(",",$email[$code]['ips']);
    $total=sizeof($totalarr);
    $email[$code]['total']=$total-1;
    $email[$code]['name']=$name;
    $email[$code]['emails']=$emails;





    //if($ii>5) break;
    }
    }




    while(list($vn,$vv) = each($email))
    {
    $strtofile=
    "
    \$email[$vn][ip]=\"".$vv['ip']."\";
    \$email[$vn][ips]=\"".$vv['ips']."\";
    \$email[$vn][total]=\"".$vv['total']."\";
    \$email[$vn][name]=\"".$vv['name']."\";
    \$email[$vn][emails]=\"".$vv['emails']."\";
    ";
    fwrite($fw,"$strtofile \n\n\n\n");
    }

    fclose($fw);


    print_r($email);

    function get_page($url)
    {

    $params = "";

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    // curl_setopt($ch, CURLOPT_SSL_VERIFYRESULT, 0);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    // curl_setopt($ch, CURLOPT_GET, 1);
    // curl_setopt($ch, CURLOPT_POSTFIELDS, $params);

    $result=curl_exec($ch);
    curl_close($ch);
    return $result;
    }

    ОтветитьУдалить