Хакеры SolarWinds размазали свои байты в HTTP-трафике через регулярные выражения


    Валидная цифровая подпись на DLL со встроенным бэкдором

    Практически по всем профильным СМИ прошла новость о взломе программного обеспечения SolarWinds в рамках глобальной кампании кибершпионажа. Здесь нужно понимать масштаб атаки: этот софт для мониторинга IT-инфраструктуры (CPU, RAM, сеть) используют тысячи частных компаний и государственных учреждений, включая АНБ, Пентагон, Госдеп и проч. В общей сложности 300 000 клиентов по всему миру (данная страница уже удалена с официального сайта SolarWinds, по ссылке — копия из веб-архива).

    Самое интересное в этой атаке: 1) внедрение бэкдора внутрь обновлений SolarWinds и 2) оригинальный механизм сокрытия данных в служебном HTTP-трафике программы SolarWinds. В двух словах расскажем о методе стеганографии (covert signaling), который здесь применялся.

    Отдельные подробности об атаке опубликовала компания FireEye в отчёте от 13 декабря 2020 года. Эта американская компания должна защищать сети своих клиентов от подобных диверсий, но в итоге и сама пострадала от взлома вместе с ними.

    Некоторые из клиентов SolarWinds:



    Основные факты


    • Бэкдор обнаружен спустя семь месяцев после начала атаки, ему присвоено кодовое название SUNBURST. Учитывая масштаб заражения, это серьёзный фейл антивирусных компаний.
    • Заражённая DLL распространялась с обновлениями платформы SolarWinds Orion, которая служит для мониторинга корпоративной сети.


      Платформа SolarWinds Orion

    Валидная цифровая подпись


    Бэкдор обнаружен в библиотеке SolarWinds.Orion.Core.BusinessLayer.dll, которая подписана действительной цифровой подписью компании SolarWinds Worldwide, LLC (скриншот выше).

    В частности, инфицирован ряд обновлений программы SolarWinds Orion за март-май 2020 года, которые распространялись с действительной цифровой подписью.

    Это был стандартный файл Windows Installer Patch со всеми обычными ресурсами, включая заражённую библиотеку SolarWinds.Orion.Core.BusinessLayer.dll. После установки библиотека нормально загружалась в память штатным экзешником SolarWinds.BusinessLayerHost.exe.

    Специалисты Microsoft пояснили, что злоумышленники «использовали локальный взлом [on-premises compromise], чтобы получить доступ к доверенному сертификату подписи SAML-токенов организации [SolarWinds]. Это позволило им подделать токены SAML для всех существующих пользователей и аккаунтов организации, включая высокопривилегированные». Судя по всему, речь о физическом проникновении в офис компании (on-premises compromise).

    Уникальные особенности


    • Алгоритм Domain Generation Algorithm (DGA) для генерации поддоменов и изменения DNS-запросов. Троян отправлял запрос на резолв поддомена avsvmcloud[.]com, а в DNS-ответе содержалась запись CNAME с указанием командного сервера.
    • Весь трафик маскировался под сетевой трафик по служебному протоколу Orion Improvement Program (OIP) через SolarWinds API. Таким образом, антивирусы и файрволы не могли отличить активность бэкдора от настоящей активности программы SolarWinds.
    • Программный код бэкдора внедрялся в стандартные программные компоненты.

    Стеганография


    А вот самая интересная часть — как именно бэкдор маскировал пакеты в обычном сетевом трафике:

    Для получения данных зловред использовал запросы HTTP GET или HTTP HEAD, и для отправки — HTTP PUT или HTTP POST. Метод PUT использовался, когда полезная нагрузка меньше 10000 байт; в противном случае используется POST. HTTP-заголовок If-None-Match содержит заксоренное представление userID, вычисленного ранее, с добавлением случайного массива байтов той же длины.

    Полезная нагрузка JSON в запросах HTTP POST и PUT содержит ключи userId, sessionId и steps. Сообщения с данными для отправки на сервер сжаты DEFLATE и однобайтовым XOR. Каждое сообщение отдельно кодируется Base64.

    В наблюдаемом трафике тела HTTP-ответов скрываются под доброкачественные XML, связанные со сборками .NET. Но на самом деле данные распределены по многим строкам GUID и HEX. Команды извлекаются из тел HTTP-ответов путём поиска hex-строк с использованием следующего регулярного выражения: \{[0-9a-f-]{36}\}"|"[0-9a-f]{32}"|"[0-9a-f]{16}. Командные данные распределены по нескольким строкам, замаскированным под строки GUID и HEX. Все совпадающие подстроки в ответе фильтруются на наличие символов не-HEX, объединяются вместе и декодируются HEX. Первое значение DWORD показывает фактический размер сообщения, за которым сразу же следует сообщение, а затем необязательные мусорные байты. Извлечённое декодируется однобайтным XOR с использованием первого байта сообщения, а затем разархивируется DEFLATE. Первый символ — это целое число ASCII, которое соответствует команде JobEngine с необязательными дополнительными аргументами, разделёнными пробелами.

    Заказчик


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

    Например, в 2010 году были повреждены иранские установки для обогащения урана. Очень продвинутый зловред Stuxnet слегка менял скорость вращения установок — и в конце концов вывел их из строя. Соответственно, логично предположить, что заказчиками и разработчиками зловредров были спецслужбы США и Израиля, поскольку эти страны планомерно пытаются помешать изготовлению ядерного оружия в Иране, действуя не всегда дипломатическими методами.

    Что касается бэкдора SUNBURST, то его приписывают скорее российским хакерам из группировки APT29 (Cozy Bear), исходя из хитроумности применяемых техник, выбора целей и физического проникновения в офис жертвы. Хотя достоверно заказчик и исполнитель не известны.

    Правила Snort для обнаружения и блокировки трафика SUNBURST опубликованы в свободном доступе.


    GlobalSign
    Company

    Comments 23

      +2

      Интересно, какая череда событий и децствий привела к обнаружению бекдора

        +16
        Админ наконец-то прошел уровень и решил глянуть логи?
        • UFO just landed and posted this here
            +17
            Действительно любопытно, почему упорно не рассматривается версия (банально в соответствии с бритвой Оккама), что этот «троян» распространялся с ведома и одобрения самих SolarWinds — например, в рамках какой-нибудь «программы сотрудничества с правоохранительными органами». А когда все вскрылось, начались сказки про on-premises compromise и русских хакеров.
              +1
              Ваша правда. Кто сделал не так важно, важно кто подписал. И тот кто подписал не сможет доказать, что это не он его сделал.
            +5
            … это серьёзный фейл антивирусных компаний...
            Хм, а них, типа, есть специальный хрустальный шар, который различает якобы «легальный» трафик якобы «обновлений» и якобы «телеметрии» от «зловредного».
            … невозможно установить разработчиков программы...
            Хм, ЭЦП на что? Типа, чья подпись тот и нехороший человек! Того бы и в кутузку (если б не презумпция невиновности в уголовном праве). Но… ущерб точно с них, весь, до последней копеечки!
              0
              Хм, а них, типа, есть специальный хрустальный шар, который различает якобы «легальный» трафик якобы «обновлений» и якобы «телеметрии» от «зловредного».

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

                0
                И как антивирусам узнать, что новая библиотека заражена, если она не проявляет явной вирусной активности и ведёт себя в рамках рабочего функционала программы?
                  +2

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

                    0
                    будет очень много ложных срабатываний на теже игровые лаунчеры и автобновляторы программ
                      +1
                      Возможно я неправ, но для компаний уровня SolarWinds можно было бы и специально антивирус настроить пожёстче, тем более если он установлен на сервере с файлами обновлений их софта.
                      0

                      А если делать так?

                +2
                российским хакерам из группировки APT29 (Cozy Bear), исходя из… физического проникновения в офис жертвы.

                Это наиболее непонятно. Почему именно APT29, если есть физическое проникновение?
                  +3

                  О том, что виновата APT29, заявил Washington Post "со ссылкой на собственные источники". И 18 декабря Помпео сказал "он верит, что это были русские".


                  Касательно "физического проникновения" — мне кажется, это переводчик ошибся. В статье Microsoft перечислен краткий список того, что делали атакущие. Первый пункт — вторжение через Orion, второй


                  Once in the network, the intruder then uses the administrative permissions acquired through the on-premises compromise to gain access to the organization’s global administrator account and/or trusted SAML token signing certificate.

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


                  И это к тому же про атаки уже на клиентов SolarWinds. Про внедрение вредоносного кода в саму библиотеку там написано


                  research indicates that the attackers might have compromised internal build or distribution systems of SolarWinds…. Microsoft security researchers currently have limited information about how the attackers compromised these platforms.
                    +11
                    Ну они же не могут сказать «мы обосрались», нужно найти крайних. А злые «русские хакеры» на эту роль подходят как нельзя лучше. Кста вполне могло случится так, что физического проникновения и не было, просто какой-то рукастый админ оставил внутренний сервис голой жопой наружу, а уже через него утащили приватник для подписи файлов. Кто знает…
                      +1

                      Собственно от FireEye, от Microsoft или самих SolarWinds я такого утверждения не нашёл. Так что мне кажется, что про "злых русских" придумали политики. Демократам сейчас это в тему.


                      А Трамп намекает на Китай))

                        0

                        "Утащить приватник" мало, надо еще подписанное внедрить в легитимные пайплайны распространения.

                          +2
                          В habr.com/ru/news/t/533324 пишут что некоторое время назад SolarWinds банально выкатили пароли в гитхаб. Ну а уж о том что пароль solarwinds123 слабоват я вообще молчу.
                            0
                            Данные авторизации взломанного «русскими хакерами» SolarWinds нашли на GitHub еще в 2019 году
                            habr.com/ru/news/t/533324
                          +1
                          Зачем нам админы умные, нам нужен сервис который обо всём позаботится, ведь там же професионалы, а значит пусть их софт что хочет то и делает… Сэкономили называется.
                          • UFO just landed and posted this here
                              0
                              Пока «хакеры» не выставять на всеобщее обозрение парочку вкусных «трофеев» с публичной доказуемостью, остаётся считать это лишь инсценировкой и политической игрой на публику. Когда ломанули Эквифакс, эти доказательства были.
                                0
                                Регулярные выражения — это гнусный инструмент хакеров! нужно немеджленно их запретить! особенно такие вероломные, как \{[0-9a-f-]{36}\}, ишь чего удумали, ууиды выбирать

                                Only users with full accounts can post comments. Log in, please.