company_banner

Как я собирал статистику по брутфорсу наших серверов и лечил их


    Мы разместили 5 ханипотов, в дальнейшем просто «серверов», чтобы собрать статистику по брутфорсу RDP в наших сетях.

    Один сервер находился в Лондоне, другой в Цюрихе, один в защищенной сети в M9, два других в дата-центре Rucloud в защищенной и незащищенной сетях. IP адреса каждого из серверов находятся в разных подсетях, каждый IP адрес отличается первым октетом. Если попытаться измерить «расстояние» скана между IP адресами по формуле:

    ((Первый октет подсети №1) – (Первый октет подсети №2)) * (2^24),

    Если сканировать 0.0.0.0/0, атакующему придется пролистать как минимум 771751936 IP адресов, чтобы найти два самых «ближайших» друг к другу сервера. Вдобавок, ни один из серверов не отвечал на ICMP и каждый IP адрес не использовался никем в течение 3 месяцев, все 5 серверов открыли порты в одно и то же время. Все серверы были подключены к AD.

    Разноцветные графики


    Начинаем с интересного и заканчиваем значительным.



    Начало было хорошим. Первый брутфорсер сел на сервер в Rucloud в первый же час, как порт был открыт. На всех остальных дата-центрах сервер был обнаружен только на второй час.

    Как видно на графиках, сила перебора не сильно менялась изо дня в день. А если посмотреть по времени суток? Вот графики. Разные цвета это разные сутки.


    График по времени суток дц ZUR1.


    График по времени суток в защищенной подсети M9.


    График по времени суток в дц LD8.


    График по времени суток в защищенной подсети Rucloud.


    График по времени суток в Rucloud.

    Достаточно скучная картина, можно сказать, что картина не меняется в зависимости от времени суток.

    Посмотрим на эти же графики по времени суток, но уже суммарно по всем дата-центрам.


    График по времени суток с накоплением.


    График по времени суток.

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


    Статистика неудачных попыток входа по каждому адресу по одной незащищенной подсети Rucloud.

    Всего, в переборе за целую неделю на одной из незащищенных подсетей Rucloud поучаствовали 89 IP адресов. 10 IP адресов набили 50% из 114809 попыток.


    Статистика неудачных попыток входа по каждому адресу по всем дата-центрам.

    Этот же самый блин, но только со статистикой по всем дата-центрам. 50% всей статистики набили 15 IP адресов. Попыток по всем пяти серверам было более полумиллиона. А насколько разными были атакующие?



    По всем сетям было замечено 143 IP адресов и лишь 29 IP адресов было замечено на всех 5 серверах. Меньше половины из всех атакующих брутили 2 или более сервера. Значит, расстояние сканирования между IP адресами имеет значение. Значит, данные об открытых портах атакующие получали с помощью nmap, сканируя IP адреса один за другим.

    Считаем ботнеты


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

    Предположим, что это все разные ботнеты с разными словарями, тогда, я насчитал N ботнетов. Вот словари каждого из них:

    admin, administrator, administrador, administrateur, admin, administrator, administrador, administrateur, ADMIN, USER, USER1, TEST, TEST1, ADMINISTRATOR, USER1, USER2, USER3, USER4, USER5, USER6, USER7, USER8, USER9, HP, ADMIN, USER, PC, DENTAL

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

    1, 12, 123, 1234, 12345, 13, 14, 15, 19, 1C, CAMERA, СAMERA, ADMIN, USERL8, GVC, ADMINISTRATEUR, IPAD3, USR_TERMINAL, JEREMY, ADMINISTRATOR, ADM, ALYSSA, ADMINISTRATOR, ATELIER, CAMERA, СAMERA, ADMIN, USERL8, GVC, ADMINISTRATEUR, USR_TERMINAL, JEREMY, IPAD3, USR_TERMINAL, JEREMY, ADMINISTRATOR, ADMIN, ADM, SERGEY, OLEG, IRINA, NATASHA, SYSTEM, SERVICE, GVC, ADMINISTRATEUR, IPAD3, USR_TERMINAL, JEREMY, ADMINISTRATOR, ADMIN, ADM, SERGEY, OLEG, IRINA, NATASHA и так далее, включая даже китайские логины.

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

    SHENZHEN, TIANJIN, MANDARIN, CHONGQING, SHENYANG, XIAN, CONS, CHINA, TECHNOLOGY, ISPADMIN, BEIJING, SHANGHAI

    Так же были единичные IP адреса пытающиеся перебирать эти логины. Вероятно, просто дети играются:

    USR1CV8, ADMINISTRATOR
    ADMI, NIMDA, ADMS, ADMINS

    Бывает просто тупой перебор паролей, перебор паролей по словарю, а есть более-менее интересный перебор. У атакующих есть возможность получить имена пользователей, SMB шар, иногда даже хэши паролей, имена компьютеров, имя домена AD или WorkGroup.

    Специалисты по ИБ знают о BloodHound, о ней знают и хакеры. Если мы оставим AD в дефолтном её состоянии, то можно похитить имя домена, имя компьютера, даже хэши паролей юзеров. На хабре уже писали о векторах атаки на AD и об этой тулзе. Я рекоменду к прочтению этот блестящий материал.

    Кстати, первая атака с применением имени сервера и домена началась через 13 часов после открытия портов, но взломщик быстро отстал, попытавшись ворваться всего 138 раз. Вторая такая атака с этим же словарем повторилась через 3 дня, но тоже долго не продлилась.

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

    А это проблема?


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

    Подозрения на инфраструктуру быстро исчезли, когда наши немногочисленные клиенты на Windows Server 2008, те не могли зайти на RDP в принципе. Посмотрев в журнал безопасности, мы фиксировали рекордные показатели атак, более 36 тысяч попыток за 24 часа.

    Как оказалось, брутфорс достаточной интенсивности способен либо целиком положить RDP, либо вызывать постоянные разрывы.

    Генез проблемы до конца неясен. Либо RDP кладется всей сворой, либо каким-то одним атакующим. Воспроизвести дисконнекты и зависание картинки с помощью скрипта и mstsc.exe не удалось.

    То ли брутфорс превращается в DDoS, толи у какого-то из атакующих как-то по-особому реализована брутилка, что вызывает и проблемы. Единственное что ясно, что время разрыва соединение совпадает с неудачными попытками входа в систему.

    Самые зверские атаки проходили этим летом в июне, тогда наша поддержка фиксировала наибольшее количество лагов и разрывов RDP. К сожалению, мы тогда еще не собирали статистику.


    Источник: Kaspersky

    Решение?


    Да.
    Все что нужно сделать чтобы защититься, это закрыться брандмауэром. Но я ощущаю ту же самую лень, что и вы, поэтому сделал эти модули.

    Модули работают на Windows Powershell 5.1 и Powershell Core 7. Ссылка на гитхаб проекта находится тут. Теперь взглянем на функции.

    Protect-Bruteforce


    Пока что модуль называется так. Изменяет правило брандмауэра, добавляя все успешно залогиненые IP адреса в правило. Удобно для использования вместе со статическим IP адресом, упрощает деплой серверов удаленных рабочих столов в связке с VPN шлюзом.



    Unprotect-Bruteforce


    Сбрасывает RemoteAddress для дефолтных правил брандмауэра.



    Stop-Bruteforce


    Просматривает журнал событий на предмет неудачных входов и блокирует IP адреса из списка отдельным правилом «Stop-Bruteforce».



    Get-Bruteforce


    Возвращает массив объектов статистики по каждому IP адресу. Именно этой функцией собиралась статистика для графиков выше.



    Опрос


    Мы в RUVDS считаем, что операционная система должна доставляться пользователю в предельно неизмененном состоянии. Мы думаем, что в идеальном мире, операционная система должна предоставляться так, какой она была в своем стоковом состоянии при первом запуске. Но ведь функции, такие как генерация паролей из ЛК, не только упрощают жизнь, просто необходимы многим нашим клиентам. Хотим знать ваше мнение о подобного рода quality of life штуках. Голосуйте и комментируйте.




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

    Считаете ли вы интеграцию подобного QOL штук в стоковые образы целесообразной?

    • 46,3%Да31
    • 28,4%Нет19
    • 25,4%Узнать результат17
    RUVDS.com
    VDS/VPS-хостинг. Скидка 10% по коду HABR

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

      0
      А вот вопрос. Допустим для брута используется ботнет, в этом ботнете умный чайник/пылесос/вибратор человека Н. У этого человека пускай будет статическйи айпи и все его умные штуки подключены к одному маршрутеризаторы. И вот злодей начинает атаку на сервак какого-то сайта — сайт его айпи блокирует. В итоге человек лешился доступа даже не зная об атаке
        0
        Простите, а где вопрос?
          0
          Сорри, вопрос — происходит ли так? Имеет ли права человек востановить доступ? И вообще какую реакцию вызывает такая ситуация
            +1
            Да, происходит именно так(если у него «белый» ip)
            Насчет восстановления доступа, можно попробовать написать админам сайта.
            Но не факт, что они отреагируют.
            Когда у нас в фирме сидела какая-то зараза, нам пришло несколько абузов на то, что с нашего адреса идет атака. Пришлось потом извинятся :)
              0
              На самом деле страшно, так из-за лампочки можно потерять доступ теоритически ко всем существующим ресурсам
                +1
                Просто не надо пускать во вне все подряд.
                  0

                  бан обычно не перманентный, а на 20-180 минут, иногда сутки… так что не все так страшно

                  0
                  хуже, если будут забанены несколько динамических ip… в таком случае часть сайтов будут то работать, то не работать, в зависимости от того, какой ip вам сейчас выдали
            +2
            > Так же были единичные IP адреса пытающиеся перебирать эти логины.
            > Вероятно, просто дети играются:
            > USR1CV8

            Это дефолтовый логин для 1С. Возможны варианты типа USR1CV82, USR1CV83.
              0

              Это дефолтное имя учетки, под которой работает сервер 1С. Но у нормального админа у этой учетки никогда не будет RDP доступа.

              0
              Ссылка на гитхаб проекта находится тут.
              А ссылка где?
                0
                Мне тоже интересно. Где ссылка?
                  0
                  Ссылка добавлена.
                +2

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


                В Tempesta FW есть специальное правило для блокировки переборщиков паролей. Например,


                http_resp_code_block 401 403 10 3

                заблокирует IP клиента, если его запросы сгенерировали 10 ответов с кодами 401 или 403 за 3 секунды.


                Так же, таки блокировки можно делать и на ModSecurity.

                  –1
                  RDP висел на дефолтном порту? Так вообще еще кто-то делает? Интереснее было бы, если использовались случайные порты >1000.
                    0
                    Сделайте и убедитесь сами, что особо без разницы. Это касается и RDP, и SSH, и SIP. Возможно чего-то ещё. Приемлемый вариант защиты для RDP и SSH, чтобы не банить ничего не подозревающих пользователей с «умной» лампочкой и иметь чистые логи — port knoking. К сожалению, к SIP не применим — там только >N ошибок регистрации — баним IP (лично я на сутки).
                      0
                      Странно, но у меня при смене порта количество подборов заметно уменьшалось. Особенно оно уменьшается, если использовать порт какого-то другого сервиса, почему-то боты не удосуживаются узнать что за ним висит и, получая от ssh отлуп, т.к. шлют неверные пакеты, довольно быстро забивают на сервер.

                      Статистику не собирал, сужу чисто визуально по логам.
                      +2
                      Разницы нет. Общераспространённые протоколы типа RDP находятся на любом порту. Это уж совсем защита от школьников. Где-то на Хабре была цифра, что сканирование возможно со скоростью 10 млн. портов в секунду. Весь интернет перебирается за несколько минут.
                          0

                          Спасибо, но нет (хотя неважно, суть одна и та же).
                          Вот, нашёл:


                          Masscan — отличный сканер, и может сканировать со скоростью 10М портов в секунду. А в интернете всего 4 миллиарда IPv4. Соответственно, все 3306-ые порты в интернете находятся за 7 минут.

                          https://m.habr.com/ru/post/446772/

                      0
                      а можете объяснить про «защищенную» сеть. Что подразумевается под защищенной сетью если на нее тоже шли атаки?
                        0
                        Защищенная от DDoS атак сеть. Фильтрует флуд и некоторые атаки на HTTP сервера, поэтому так и называется.
                        0
                        Я посмотрел вашу утилиту на Гитхабе.
                        Получается, что она не работает, как сервис, а требует, чтобы админ запускал эти команды, что-то там соображал.

                        Я себе поставил вот эту утилиту, работает как сервис, всё делает сама на полном автомате:
                        github.com/digitalruby/ipban
                        Отслеживает несколько зафейленных логинов, а добавляет IP в firewall.
                          0
                          Да, запускать такие сервисы на клиентской машине мы никогда не будем. Конечный пользователь должен сам принять решение. Как человек писал выше, если твоя лампочка начала брутить твой сервер, ты просто на свой сервер по RDP не войдешь.
                          Другая идея заключается в том, что ~50% брутфорса можно отсеивать сразу, т.к. боты.
                          А. Брутят весь дата-центр или несколько подсетей.
                          Б. Имеют в PTR записи тирп HOST, SERVER, STATIC.
                          Чтобы отсеять 50% всех атак и облегчить жизнь всем, достаточно занести их в блэкхол на уровне сети ДЦ.
                            0
                            Да, запускать такие сервисы на клиентской машине мы никогда не будем. Конечный пользователь должен сам принять решение.


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

                            Как человек писал выше, если твоя лампочка начала брутить твой сервер, ты просто на свой сервер по RDP не войдешь.


                            Для такого случая IP адреса внутренней сети можно записать в white list.
                            Ну а вообще — если в вашей внутренней сети уже работает бот / малварь, то перебор RDP паролей — это уже ваша не самая большая проблема.

                            Это как в том анекдоте:
                            — У нас дыра в безопасности!
                            — Ну хоть что-то у нас в безопасности.
                          0
                          А обязательно, чтобы наружу торчал голый RDP? Почему не сделать подключение к RDP через OpenVPN, wireguard, etc.
                          0

                          Сейчас в тренде CVE-2020-1472 aka Zerologon. Его мониторить не пробовали?

                            0
                            А, так вот что было с виндовс-машиной, когда через некоторое время RDP ложился напрочь

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

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