Когда 'a' не равно 'а'. По следам одного взлома

    Пренеприятнейшая история случилась с одним моим знакомым. Но насколько она оказалась неприятной для Михаила настолько же занимательной для меня.

    Надо сказать, что приятель мой вполне себе UNIX-пользователь: может сам поставить систему, установить mysql, php и сделать простейшие настройки nginx.
    И есть у него десяток-полтора сайтов посвященных строительным инструментам.

    Один из таких сайтов посвященный бензопилам плотненько сидит в ТОПe поисковиков. Сайт этот — некоммерческий обзорник, но кому-то поперек горла и повадились его атаковать. То DDoS, то брутфорс, то комменты напишут непотребные и шлют абузы на хостинг и в РКН.
    Неожиданно всё стихло и это затишье оказалось не к добру, а сайт начал постепенно покидать верхние строчки выдачи.

    image

    То была присказка, дальше сама админская байка.

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

    Далее пошло получасовое обсуждение которое кратко можно изложить так:

    • почва для взлома была вполне плодородной;
    • взломщик мог получить права суперпользователя;
    • атака (если она имела место) была целенаправленной и именно на этот сайт;
    • проблемные места исправлены и нужно только понять был ли факт проникновения;
    • взлом не мог коснуться кода сайта и баз данных.

    Касательно последнего пункта.

    image

    В мир смотрит только белый IP фронтенда. Между бакендами и фронтендом нет никакого обмена кроме http(s), пользователи/пароли разные, ключами не обменивались. На серых адресах все порты кроме 80/443 закрыты. Белые IP бакендов известны только двум пользователям, которым Михаил всецело доверяет.

    На фронтенде установлена Debian 9 и к моменту звонка система изолирована от мира внешним firewall'ом и остановлена.

    «Ok, давай доступы, — решаю отложить сон на часок. — Посмотрю своим глазом».

    Здесь и далее:

    $ grep -F PRETTY_NAME /etc/*releas*
    PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
    $ `echo $SHELL` --version
    GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)
    $ nginx -v
    nginx version: nginx/1.10.3
    $ gdb --version
    GNU gdb (Debian 8.2.1-2) 8.2.1
    

    В поисках возможного взлома


    Запускаю сервер, сначала в rescue-mode. Монтирую диски, пролистываю auth-логи, history, системные логи и т.п., по возможности проверяю даты создания файлов, хотя понимаю, что нормальный взломщик «подмел» бы за собой, да и Миша уже знатно «натоптал» пока искал сам.

    Стартую в нормальном режиме, особо пока не понимая что искать, изучаю конфиги. В первую очередь интересует nginx так как, в общем-то, на фронтенде кроме него и нет ничего.
    Конфиги небольшие, хорошо структурированые в десяток файлов, просматриваю их просто cat'ом по очереди. Вроде всё чисто, но мало-ли упустил какой-то include, сделаю-ка я полный листинг:

    $ nginx -T
    nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
    

    Не понял: «Где листинг-то?»

    $ nginx -V
    nginx version: nginx/1.10.3
    TLS SNI support enabled
    configure arguments: --with-cc-opt='-g -O2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module
    

    К вопросу о листинге добавляется второй: «Почему такая древняя версия nginx?»

    К тому же система считает, что версия установлена свежее:

    $ dpkg -l nginx | grep "[n]ginx"
    ii  nginx          1.14.2-2+deb10u1 all          small, powerful, scalable web/proxy server
    

    Звоню:
    — Миш, ты зачем пересобирал nginx?
    — Окстись, я даже не знаю как это сделать!
    — Ok, ну, спи…

    Nginx однозначно пересобран и вывод листинга по "-T" скрыт неспроста. Сомнений во взломе уже нет и можно это просто принять и (раз уж Миша всё-равно заменил сервер новым) посчитать проблему решенной.

    И действительно, раз уж некто получил права root'а, то имеет смысл делать только system reinstall, а искать, что там было набедокурено бесполезно, но в этот раз любопытство победило сон. Как же узнать что от нас хотели скрыть?

    Попробуем оттрассировать:

    $ strace nginx -T
    

    Просматриваем, в трассировке явно не хватает строк а-ля

    write(1, "/etc/nginx/nginx.conf", 21/etc/nginx/nginx.conf)   = 21
    write(1, "...
    write(1, "\n", 1
    

    Ради интереса сравниваем выводы

    $ strace nginx -T 2>&1 | wc -l
    264
    $ strace nginx -t 2>&1 | wc -l
    264
    

    Думаю, что часть кода /src/core/nginx.c

                case 't':
                    ngx_test_config = 1;
                    break;
    
                case 'T':
                    ngx_test_config = 1;
                    ngx_dump_config = 1;
                    break;
    

    была приведена к виду:

                case 't':
                    ngx_test_config = 1;
                    break;
    
                case 'T':
                    ngx_test_config = 1;
                    //ngx_dump_config = 1;
                    break;
    

    или

                case 't':
                    ngx_test_config = 1;
                    break;
    
                case 'T':
                    ngx_test_config = 1;
                    ngx_dump_config = 0;
                    break;
    

    поэтому листинг по "-T" не отображается.

    Но как же посмотреть наш конфиг?


    Если моя мысль верна и проблема только в переменной ngx_dump_config попробуем установить её c помощью gdb, благо ключик --with-cc-opt -g присутствует и надеемся, что оптимизация -O2 нам не помешает. При этом, раз я не знаю как ngx_dump_config могла быть обработана в case 'T':, не будем вызывать этот блок, а установим её используя case 't':

    Почему можно задействовать '-t' наравне с '-T'
    Обработка блока if(ngx_dump_config) происходит внутри if(ngx_test_config):
        if (ngx_test_config) {
            if (!ngx_quiet_mode) {
                ngx_log_stderr(0, "configuration file %s test is successful",
                               cycle->conf_file.data);
            }
    
            if (ngx_dump_config) {
                cd = cycle->config_dump.elts;
    
                for (i = 0; i < cycle->config_dump.nelts; i++) {
    
                    ngx_write_stdout("# configuration file ");
                    (void) ngx_write_fd(ngx_stdout, cd[i].name.data,
                                        cd[i].name.len);
                    ngx_write_stdout(":" NGX_LINEFEED);
    
                    b = cd[i].buffer;
    
                    (void) ngx_write_fd(ngx_stdout, b->pos, b->last - b->pos);
                    ngx_write_stdout(NGX_LINEFEED);
                }
            }
    
            return 0;
        }
    

    Конечно, если код изменен в этой части, а не в case 'T':, то мой способ не подойдет.

    Тестовый nginx.conf
    Уже решив проблему опытным путем было установлено, что для работы зловреда необходим минимальный конфиг nginx вида:

    events {
    }
    
    http {
    	include /etc/nginx/sites-enabled/*;
    }
    

    Его и будем для краткости использовать в статье.

    Запускаем отладчик
    $ gdb --silent --args nginx -t
    Reading symbols from nginx...done.
    (gdb) break main
    Breakpoint 1 at 0x1f390: file src/core/nginx.c, line 188.
    (gdb) run
    Starting program: nginx -t
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
    
    Breakpoint 1, main (argc=2, argv=0x7fffffffebc8) at src/core/nginx.c:188
    188     src/core/nginx.c: No such file or directory.
    (gdb) print ngx_dump_config=1
    $1 = 1
    (gdb) continue
    Continuing.
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    # configuration file /etc/nginx/nginx.conf:
    events {
    }
    
    http {
    map $http_user_agent $sign_user_agent
    {
    "~*yandex.com/bots" 1;
    "~*www.google.com/bot.html" 1;
    default 0;
    }
    
    map $uri $sign_uri
    {
    "~*/wp-" 1;
    default 0;
    }
    
    map о:$sign_user_agent:$sign_uri $sign_o
    {
    о:1:0 o;
    default о;
    }
    
    map а:$sign_user_agent:$sign_uri $sign_a
    {
    а:1:0 a;
    default а;
    }
    
    sub_filter_once off;
    sub_filter 'о' $sign_o;
    sub_filter 'а' $sign_a;
    
            include /etc/nginx/sites-enabled/*;
    }
    # configuration file /etc/nginx/sites-enabled/default:
    
    [Inferior 1 (process 32581) exited normally]
    (gdb) quit
    


    По шагам:

    • устанавливаем точку останова в функции main()
    • запускаем программу
    • изменяем значение переменной определяющей вывод конфига ngx_dump_config=1
    • продолжаем/завершаем программу

    Как видим реальный конфиг отличается от нашего, выделяем из него паразитный кусок:

    map $http_user_agent $sign_user_agent
    {
    "~*yandex.com/bots" 1;
    "~*www.google.com/bot.html" 1;
    default 0;
    }
    
    map $uri $sign_uri
    {
    "~*/wp-" 1;
    default 0;
    }
    
    map о:$sign_user_agent:$sign_uri $sign_o
    {
    о:1:0 o;
    default о;
    }
    
    map а:$sign_user_agent:$sign_uri $sign_a
    {
    а:1:0 a;
    default а;
    }
    
    sub_filter_once off;
    sub_filter 'о' $sign_o;
    sub_filter 'а' $sign_a;
    

    Рассмотрим по порядку что же здесь происходит.

    Определяются User-Agent'ы yandex/google:

    map $http_user_agent $sign_user_agent
    {
    "~*yandex.com/bots" 1;
    "~*www.google.com/bot.html" 1;
    default 0;
    }
    

    Исключаются служебные страницы wordpress:

    map $uri $sign_uri
    {
    "~*/wp-" 1;
    default 0;
    }
    

    И для тех, кто попал под оба вышеперечисленных условия

    map о:$sign_user_agent:$sign_uri $sign_o
    {
    о:1:0 o;
    default о;
    }
    
    map а:$sign_user_agent:$sign_uri $sign_a
    {
    а:1:0 a;
    default а;
    }
    

    в тексте html-страницы изменяется 'о' на 'o' и 'а' на 'a':

    sub_filter_once off;
    sub_filter 'о' $sign_o;
    sub_filter 'а' $sign_a;
    

    Именно так, тонкость только в том что 'а' != 'a' так же как и 'о' != 'o':

    image

    Таким образом боты поисковых систем получают вместо нормального 100%-кириллического текста модифицированный мусор разбавленный латинскими 'a' и 'o'. Не берусь рассуждать как это влияет на SEO, но вряд ли такая буквенная мешанина позитивно скажется на позициях в выдаче.

    Что сказать, ребята с фантазией.

    Ссылки


    Отладка с помощью GDB
    gdb(1) — Linux man page
    strace(1) — Linux man page
    Nginx — Module ngx_http_sub_module
    О пилах, бензопилах и электропилах
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 71

      +10
      Спасибо за статью. Очень интересно было. Только не было раскрыто — как получили root доступ?
        0
        Ну, если говорят что
        почва для взлома была вполне плодородной

        очевидно, устаревший софт какой-то торчал. Типа того, что какой-нибудь непатченный вордпресс/DLE/Drupal/Joomla, или дырявый плагин в нем, где можно получить локальный шелл, а потом повысить привилегии через какие-нибудь иные сплоиты.
          +2

          Но ведь на фронтенде кроме прокси ничего не было...


          взлом не мог коснуться кода сайта и баз данных.
            0
            тут может я не очень понимаю, что значит «взлом не мог коснуться кода сайта».
            ведь и не трогая код можно добавить какой-нибудь аттач kartinka.jpg.php в форму комментария, и потом выполнить его через /uploads/kartinka.jpg.php
            (если конечно там настолько странный софт стоит и права на папки аналогично странные)
              +4

              В статье подразумевается, что взломан был фронтенд-сервер. Автор пишет также, что доступа с бэкенда к фронтенду не было — даже если бы залились на бэкенд через уязвимое веб-приложение и подняли там привилегии, это не могло бы объяснить, как на фронтенде оказался пересобранный бинарник.

                –2

                Вполне можно подменить то, что клиент заливает. Админ. Мы ж MitM в обе стороны, причем доверенный посредник.

        +4
        Надо было им хитрее поступить, скомпилировать такую же версию, а вместо скрытия всего конфига, утаить только свою часть. Но интересно, как же рута получили. Вдруг дыра на сайте, и если даже дыра, бэкенд наверняка от обычного пользователя работает, то есть ещё и права подняли.
          0
          судя по схеме сервер только с нжинксом, бекенда там нет. то есть вломились через ссш/другой сервис ну или сам нжинкс.
          0
          auditd хотя бы на систему накатите, проще искать будет изменения
            –2

            Разве strace не показывает, к каким файлам было обращение? А скомпилированный конфиг было бы видно через strings.

              0

              Символы ведь совсем необязательно хранить в ascii. Да хотя бы поксорить их могли.

                0

                Да, я понял уже. Это несложно сделать. Другое странно: запилить такой изящный хак с подменой выдачи, и лопухнуться с версией nginx? Модифицировать ведь все равно какие исходники.
                И что хакеры не додумались strip нуть символы, странно как-то.

                  +4

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

                    +5
                    Как-то сложно и узкоспециализировано для готового решения. Если уж есть доступ к прокси, и хочется вмешиваться в отдаваемый контент, можно и не заморачиваться в скрытие рабочего конфига. Закодировать замену некоторых символов по некоторым условиям можно и прямо внутри кода nginx. Также (если тут действительно конкуренты замешаны) странно, что данные из формы заказа пилы не дублируются, например, в telegram-контакт конкурента.
                +3
                очевидно, конфиг был модифицирован в коде nginx, а не получен из файлов
                0
                Вопрос. Почему Вы не видели этих зловредных включений, когда просматривали конфиги через cat?
                Я припоминаю баг в bash-e нескольколетней давности, когда можно было скрыть содержимое скрипта при просмотре в консоли, но деталей не помню, если честно.
                  +27
                  вероятно эта часть была впилена в код нжинкса, хранить такой конфиг на диске было бы слишком заметно, + иначе не было бы особого смысла пересобирать
                  –1
                  Спасибо за статью.
                    0
                    Хорошая нетривиальная статья. Я тоже «вполне себе UNIX-пользователь», поэтому читать было интересно)
                      0
                      Как сервер могли взломать? Это nginx решето или что-то другое?
                        +2
                        nginx — достаточно безопасный и очень стабильный продукт. Да и серьезных багов в нем очень мало. Проблема в 9 случаев из 10 в Wordpress/Joomla/плагинах для них и т.д т.п.
                        Хакают через дырявые плагины, а потом заливают шелл и уже повышают привилегии.
                          +2
                          Можно пример такого хака в подробносятях?
                            +4
                            Только по тексту ВордПресс на другом сервере.
                              +2
                              Я как-то совсем не уверен на 100%, бэкэнды не затронуты, ну стоит оно на другом сервере, но вот по последней ссылке в статье, там есть каменты как минимум, значит есть динамика которая смотрит наружу, соотв возможно злоумышленники сломали бэк и уже с него пролезали на фронт. Как-то организована серая адресация между хостами, значит уже не только http/https их связывает, есть vpn либо это все на одном гипервизоре. Много недосказанного в статье, хочется подробностей )
                              +1
                              Позволю себе высказать свое мнение об ситуации. Полностью поддерживаю Ваши слова. Только вот, как сказали ниже, бекенд сайта был на другом хосте. Из-за этого мне история кажется странной. Как чтиво — очень понравилось. Но если на балансере торчали наружу только «обновленные» nginx и ssh, то гораздо целесообразнее было бы ломать именно сайт (поймать момент когда не вовремя обновят какие то плагины или библиотеки, таких мест на веб-сайтах обычно много), а это дало бы доступ до бекенда. И если правда история реальна, то информация о том, каким образом сломали именно фронтенд, мне кажется очень полезной.
                                0
                                В данном случае php обрабатывался на других двух серваках-бэкендах. Так что хакнули не через php. Скорей уж через дырявый exim, или любой другой торчащий наружу сервис с известным CVE. А то и вовсе пароль сбрутили(видел такое не раз, грустное зрелище), если к серваку был доступ по SSH по паролю. Ни стоит юзать парольный доступ к сервакам по SSH. Как и старые версии сервисов.
                                  0
                                  Достаточно просто ставить fail2ban ;)
                                    0
                                    Не верно. Видел случаи, когда и с настроенным fail2ban сервак брутили.

                                    Подбирали пароли с помощью ботнета, с одного IP пробовали несколько паролей, затем его банил fail2ban на время, в это время шли попытки подбора с других IP, их банило, но со временем разбанивало предыдущие IP, и так по кругу. Когда времени у атакующих вагон и маленькая тележка, пароль у root не сложный, и пул вовлечённых в ботнет IP огромен — брут пароля это всего лишь вопрос времени.

                                    Поэтому лучше пароль не юзать, если юзать то для отдельно созданного пользователя, не для root, брутить и пароль и логин уже куда сложнее. А по хорошему нужно использовать комплексный подход: ключи, разрешения в межсетевом экране для нужных IP и подсетей(или хотя-бы регионов) на подключение к ssh, а также port knoсking в случаях, когда нужен доступ к серваку с не доверенного IP или сетки…
                                      0

                                      В 99% случаев это все нафиг не нужно. Достаточно вообще отключить рутовый вход и входить под непривилегированным юзером, после чего делать su. Ботнет любого размера становится бесполезен, сбрутить пароль не зная логина становится невозможным, даже без fail2ban (но с ним всё же лучше).

                                        0
                                        Опять таки, всё это звучит верно, если не вдаваться в детали. А на практике очень часто если пользователь не root, то toor, admin, administrator или ещё что-то подобное(вроде admin777 и других таких же уродливых логинов). Видел китайские ботнеты, которые юзают словарь с наиболее популярными логинами, и довольно успешно находят нужный в не малом % случаев. Создаёте такого юзера — создавайте с абсолютно случайным именем(закончилась фантазия, так pwgen в помощь), а иначе можно сильно обломаться однажды.

                                        Если злоумышленникам удастся попасть на сервак от обычного юзера, будут уже с него пароль root брутить, а то и эксплоит заюзают(привет старым VPS-кам на давно EOL версиях Debina/Ubuntu/Centos). А иногда и без root можно столько беды натворить(майнеров позапускать, ddos-ить кого-то, IP сервака в блэклисты загнать запустив вредоноса), что мало не покажется.

                                        Ну и fail2ban — это в нашем мире необходимость, если сервер светит в белую сеть.

                                        И да, безопасности много не бывает. На практике, обычно даже у очень крутых контор безопасники за чем-то, да не углядели. А значит рано или поздно будет утечка данных, или их серваки просто красиво поимеют… Считайте что чёрные шляпы содействуют прогрессу :) Без них админы бы вообще расслабились, и толком ничего не настраивали для обеспечения мало-мальски приличного уровня безопасности.
                              +2
                              Интересно было бы узнать, у вашего друга этот сайт мониторился в Яндекс.Вебмастере или Google Search Console?
                              Просто такая абракадабра из букв могла бы рассматриваться как нарушение или даже критическое нарушение, могло бы отображаться какое-то предупреждение в этих инструментах…
                                +28
                                это СЕО статья для сайта о пилах, на который ссылка в самом конце — а вся история просто придумана ;)
                                  +8
                                  Может и не совсем придумана, но ссылка не просто так )) Сразу не обратил внимание на ссылки…
                                  По крайней мере в Яндексе и Google по запросу «site:opilah.com» в сниппетах и кэше я не нашел страниц с подмененными буквами a и o. Могло, конечно, много времени пройти уже и кэш обновился…
                                    0
                                    В вебархиве тоже не нашел.
                                      0
                                      А там не должно их быть в любом случае, исходя из
                                      Определяются User-Agent'ы yandex/google:

                                      Исключаются служебные страницы wordpress:

                                      И для тех, кто попал под оба вышеперечисленных условия
                                      ...
                                    +2
                                    Вполне возможно, и да, это круто!
                                    Стройматериалы, походу реально сверхконкурентная ниша,
                                    если там делают такие взломы, или даже если для получения ссылки, пишутся такие статьи.
                                      0
                                      Более того, могут анализироваться цены с сайтов магазинов-конкурентов для того, чтобы вовремя выставить более привлекательную цену в собственном магазине. Об этом была статья на хабре.
                                      +6
                                      всё оч подозрительно.
                                      Общий рейтинг 280: ↑280 и ↓0
                                        0
                                        Я тоже очень склоняюсь к этому варианту. Ниже немного рассуждений по этому поводу. IMHO так сказать.
                                        «Дружище я там слышал про Хабраэффект (а может и нет никакого друга?) — это же огромный траффик, некоторые из них задержатся после перехода — это плюсик к пользовательским факторам, тем более давай ссылку назовем не просто „Сайт-жертва“, а „О пилах, бензопилах и электропилах“ — как никак, а увесистая ссылочка с трастового домена с нужным анкором».

                                        то комменты напишут непотребные и шлют абузы на хостинг и в РКН

                                        Здесь еще интереснее. Открыл из выдачи гугла странички, что гугл предлагает из site:opilah.com — и ни в одной статье не было ни одного комментария. Совпадение? Не думаю.
                                        Ну и интересно было бы посмотреть статистику из гугл аналитики/яндекс метрики, как сайт «падал» из ТОПа поисковиков — а то выглядит как красивый детективный опус о поисках мальчика, а был ли мальчик?
                                        Но СЕО статья о пилах с такой задумкой на Хабре — это next level play
                                          0
                                          Вряд ли им это поможет. Поисковики уже давно научились определять контекст ссылки. Иными словами, размещать ссылку на рыболовный магазин на форуме о женском здоровье совершенно бесполезно :)
                                          0
                                          Помню, как лет 8 назад скачал кусок кода на C# с кириллическими о (не всеми, а 50/50 где-то) с какого-то сайта типа super-best-referaty.ru. Долго скомпилировать не мог, но все же нашлась проблема
                                          Долго ломал голову, зачем это сделано
                                          1) троллинг коллег-программистов, типа читать-читай, а писать код — свою голову имей)
                                          2) достижение уникальности контента для сео
                                          3) взят кусок кода из курсовой, которую готовили для прохождения системы антиплагиат
                                          теперь еще один вариант появился)
                                            +2
                                            Это ещё цветочки, а могут всякие управляющие символы нафигачить.
                                            Типа пробела нулевой ширины «a​b» — в кавычках 3 символа. Или типа Right to left mark (не хочу тут экспериментировать )). Была кстати, такая атака с подменой расширений файлов типа picturexe.gif примерно так (на самом деле файл был picturfig.exe)
                                            Поисковик такие «слова» тоже наверное забракует. А визуально вообще незаметно будет.
                                          +12
                                          Белые IP бакендов известны только двум пользователям
                                          и всем script kiddies, занимающимся их последовательным перебором
                                            +1

                                            Ну чисто технически — адреса могут быть и IPv6. Да и никто не запрешает настроить файрволл на бекендах так, чтобы они молчали в тряпочку для всех, кроме фронта.

                                              –2
                                              Я правильно понимаю, что перебор может вестись именно с фронта и тогда эта настройка файрволла не будет иметь смысла?
                                                +3

                                                С фронта не нужно ничего перебирать, он уже шлет трафик на бэки, достаточно глянуть нетстат или ss, или конфиги nginx.
                                                У бэкендов вообще не должно быть публичных адресов, по-хорошему. Что, конечно, не избавляет от настройки фаерволла на них.

                                            0
                                            Что посоветовал другу — в безопасности? Ведь коварные дядьки/тётьки наврятли остановятся…
                                              0
                                              Гораздо интересней, как отыскать этих дяденек и отомстить/подать в суд…
                                              Ведь явно конкуренты на местном рынке.
                                                –2
                                                В сфере стройматериалов практически везде конкуренция весьма живенькая. И методы борьбы с конкурентами торговцы стройматериалами, как и застройщики, частенько юзают на грани, и даже за гранью местного законодательства. Вот только поймать конкурента за руку не так просто: они же не с домашнего IP сервак ломали :) Да и ломал человек, которому скорей всего заплатили анонимно битками, и он даже не в курсе, кто его нанял. Не думаю, что топикстартер сможет довести подобное дело до суда.
                                              +3
                                              Как это про торт еще никто не написал? / sarcasm

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

                                                +17
                                                С учётом того, что ребята занимаются бензопилами, последствия могут быть достаточно болезненными.
                                                0
                                                Интересно, хоть и ссылка на бензопилы, но идея очень интересная. А есть какие-нибудь онлайн сервисы по определению наличия русских/латинских букв в тексте?
                                                  +1
                                                  антиплагиат
                                                    0
                                                    Погуглил «проверка на русские символы онлайн» — полно. На английские думаю тоже найдутся…
                                                      0
                                                      Могут еще вместо латинских и кириллических букв подсовывать вообще всякие Unicode-символы, визуально почти не отличимые от них.

                                                      Напрашивается, кстати, идея плагина для систем веб-мониторинга, проверяющая, что сайт отдает контент без подозрительных символов, да.
                                                        –1
                                                        Можно делать снапшоты страниц и сверять их, показывая дифф.
                                                  0
                                                  Что сказать, ребята с фантазией.

                                                  Прям Шерлок Холмс и Мориарти
                                                    +4

                                                    Сайт конечно далеко не некоммерческий обзорник, а вполне коммерческая SEO помойка, но статья познавательная! :)

                                                      –8

                                                      Сайты на Wordpress даже школьтники легко ломают с помощью Kali Linux.
                                                      https://www.youtube.com/watch?v=nF9TbnJvpJ0

                                                        +5
                                                        Если сайт создан таким же школьником ;)
                                                        0
                                                        Honeypot'ов то для хабровчан не забыли набросать?
                                                          0
                                                          Сайт этот — некоммерческий обзорник

                                                          А что это за сайт?
                                                            0
                                                            Познавательная статья. Особенно если вспомнить недавнюю историю со взломом баз РЖД. Вот что бывает, когда защита информации делается не профессионально и используется абы какое, часто устаревшее ПО.
                                                              0
                                                              Это старый прием. У меня такая же история была с модом Фотограф на Сталкер. Во многих скриптах буквы а, с, е вместо латинских были русские, и имена файлов тоже, часть латинскими и где то русская. Как будто кто то не хотел чтоб в эту игру можно было играть за рубежом. И так как у меня стоял чисто английский виндовс, и даже для DOS программ не было кодировки, скрипты есесьно не нашли файлы, а в логах появились надписи типа «can't find file l?rg?gun». И я по мере прохождения мода при каждом вылете заглядывал в лог, исправлял скрипт и переименовывал файл. Потому что было интересно чем кончится… )) Но как так можно перепутать — для меня загадка. Если специально — это не иначе как какой то терроризм, и если бы не вопросики в логах, я бы не понял в чем проблема.
                                                                –2
                                                                Если так заменены буквы, то запросы на страницы от описанных агентов должны получить код 404. И их количество в access.log должно увеличиться.
                                                                Вы меня навели на мысль, на сайтах в имеющейся статистике логов акцентировать внимание на этом факте.
                                                                  0
                                                                  Не, здесь русские буквы заменяются на английские, а они не участвуют в самой разметке, так что с чего бы 404 выдавать?
                                                                    0
                                                                    Спасибо. Уже понял. Подменяет всё содержимое, не только заголовки.
                                                                  0
                                                                  Наконец-то полезная статья, а не реклама. Спасибо.
                                                                    +1
                                                                    Чтобы вовремя найти такое надо регулярно загружать страницу из сервера c нужным userAgent и находить на странице ожидаемый текст — но это же автоматическое тестирование, а на него почему-то большинство забивает.
                                                                      0
                                                                      Что-то подобное было у моей бурной молодости, когда я работал «опером» в IT отделе.
                                                                      Был у нас доступ к безе Госкомстата — реестр зарегистрированных фирм на территории РФ. Как-то подходят ко мне и говорят: «Найди данные на фирму N». Я ищу и ничего не нахожу. Спрашиваю: «Фирма липовая?» — «Нет» — отвечают — «Точно фирма должна быть». Потратил дня два, пока не нашел по подстроке (часть названия выдавала слишком большой объем данных). Начал разбираться, почему не находил по полному названию, и выяснил, что в названии фирмы русская буква 'а', была заменена на английскую 'а'.
                                                                      Была ли это ошибка оператора Госкомстата или ??? Лихие 90-е.
                                                                        –4
                                                                        > Белые IP бакендов известны только двум пользователям, которым Михаил всецело доверяет.
                                                                        Nat — это не безопасность; как и «секретный» белый IP. Как занавеску вместо двери поставить.
                                                                        В криптографии принцип Керкгоффса есть на эту тему.

                                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                        Самое читаемое