Борьба с WordPress-червём GetMama

    Привет!
    Подлый вирус GetMama пожрал кучу сайтов на вордпрессе. В том числе несколько моих. И я вам расскажу, как это почистивать сущность в виде гномика.

    Началось с того, что некоторые сайты начали открываться очень долго. Причём только те, что на вордпрессе.
    Я долго не мог понять, что же за беда приключилась. Обновил полностью всё ПО на сервере (думал, можнт wp какую-нибудь хитрую срань использует). Но это не помогло.
    Тогда я стал искать, какая же функция выполняется так, сука, долго.
    Для этого я использовал xhprof.

    Выяснилось, что это curl_exec.

    image

    Курл_экзек вызывался функцией с каким-то арабским названием «ahfudflfzdhfhs»

    image

    А эта функция в свою очередь вызывала определённое количество сранья, включая GetMama

    image

    Именем этой функции и называется вирус.
    Гет мама стучится на свой сервер и качает оттуда код, который выполняется уже в коде сайта.

    Чобы временно спасти ситуацию, я просто добавил в начало каждого index.php моих вордпрессовских сайтов «function GetMama(){}». Это дало мне время на поиски реальной угрозы.

    Никакой поиск не дал результатов. Ни «GetMama», ни «ahfudflfzdhfhs» в коде найдено не было. Это конечно не удивительно. Но удивительно, что base64_decode тоже не попадался в неположенных местах.
    Пришлось гуглить. По словам товарищей по беде getmama начиналась словами «/*god_mode_on*/», но и это вхождение я не смог найти ни в одном файле.
    Я долго ломал голову, глядя на файлы, и не мог понять, где же заражённый участок.

    Оказалось, что везде. Реально каждый php файл вордпресса был заражён, а я не мог этого заметить.
    Когда я понял, как им это удалось, мне стало немного стыдно.
    В самом начале. После «<?php» ребята добавляли туеву кучу пробелов, а только потом подписывали вредоносный код.

    Вот он: http://pastebin.com/vER6azvS

    Теперь эта фигня ещё и /*god_mode_on*/ зашифровывала.

    Но в итоге проблема решилась одним маленьким скриптом:

    find . -type f -name "*.php" -print | xargs perl -pi -e's/\/\*[a-z0-9]{32}_on\*\/.*\/\*[a-z0-9]{32}_off\*\///gi' *.php

    Пройтись по всем php файлам в каталоге с вордпрессом и удалить вирус.

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

    More
    Ads

    Comments 40

      0
      Спасибо! Проверился — ничего нету. А через что проникает?
        +1
        Вот неизвестно.
        Была информация, что проникает через timthumb.
        Его используют темы от elegantthemes.
        Если какие-нибудь плагины используют его старые версии, то лучше отказаться, или обновиться на последнюю версию.
        Мне хочется думать, что это была естественная дырка в моих сайтиках.
          +1
          Подлый вирус GetMama пожрал кучу сайтов на вордпрессе.


          Мы очень активно работаем с WordPress, ни одного сайта у нас никто не «пожрал», мне стало интересно, погуглил по запросу GetMama, кроме темы на хабре очень сложно что-то найти, если поискать подольше можно найти аж 4 обращения на официальном форуме WordPress.

          Эпидемия, не меньше.
            0
            Посты с сообщениями о заразе стали появляться в конце марта – середине апреля. Я какое-то время не придавал значения тому, что вордпресс стал работать на полсекунды дольше, чем обычно.
            Очень хорошо, если заражение будет минимальным.
            0
            В elegantthemes эту дыру закрыли еще пол года назад, всех тех у кого были лицензионные версии — просили обновится. Если не ошибаюсь этот вирус еще и права на файлы менял?
            –1
            И я вам расскажу, как это почистивать сущность в виде гномика.


            All you base are belong to us!
            +1
            Я долго не мог понять, что же за беда приключилась.

            Для этого бывает полезно подключить яндекс.метрику или аналогичную следилку от гугла, который будет по электронке сообщать о вредоносном коде на сайте.
              +12
              К сожалению, яндекс.метрика скажет мне о наличии вредоносного яваскрипт кода. А если пхпшный код спамит напропалую, то на фронтэнде это никак не отразится к сожалению, и яндекс тут не поможет.
                0
                У меня вот яндекс орёт-орёт на вп, а косяков я так найти и не могу…
                  +3
                  Друг, яндекс ругается на наличие вредоносного кода в html-страничке. Ищи косяки в яваскрипт-файлах.
                  0
                  rsync (к примеру) поможет определить.
                    0
                    Для него, наверное всё-таки нужен полный бэкап?
                    У меня его, к сожалению нет.
                      0
                      Нет, тут как раз не полный, а инкрементальный нужен. В первый раз он сделает полную копию, а в остальные разы будет получать только модифицированные и новые файлы (обычно с каждой новой датой в новую папку).
                      Хотя, вот этот вариант мне больше нравится. Git в самый раз.
                  0
                  можно поставить мониторинг времени открытия сайта — и как только станет в 2-3 раза больше обычного (в течение периода больше чем 5 минут, например, можно сразу алертить). WEBO Pulsar так умеет.
                +13
                Вывод тупей некуда:
                Не храните скрипты с правами того же пользователя и группой от которой они запускаются.
                Залили себе вп, човн, и запускаем. Тогда никакая гетмама не запишет в ваши файлы ничего, тупо не сможет.
                  –1
                  И тогда ничего не получится залить\отредактировать через админку.

                  Юзеры будут в восторге!
                    0
                    шаблоны оставьте, а вот пхп скриптам стоит поменять права точно. Или там шаблоны использут нативный пхп код?
                      0
                      Там — не знаю. Могу сказать про MODx Revo — у него есть возможность выносить все что угодно в файлы. Но по умолчани шаблоны и прочее лежит в БД.

                      А юзерам в директории надо заливать картинки, возможно редактировать css. Мне как программисту регулярно нужно и по *.php полазить.

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

                      Вообще, это хорошая мысль на продакшене на *.php права менять — надо приучиться. Но нужно смотреть на движок и конкретную ситуацию, как используется сайт, и кем.
                        +1
                        Для вас, как для программиста, есть фтп, а на картинки и цсс это никак не распространяется, я про исполняемые файлы говорил
                          0
                          >Мне как программисту регулярно нужно и по *.php полазить.
                          Система контроля версий и настроенный деплой.
                          +1
                          Используют, да.
                          В целом нефиг через админку править файлы с кодом, по моему скромному мнению.
                    • UFO just landed and posted this here
                        +5
                        Деобфусцированный код: http://pastebin.com/wU8drdrG
                          +4
                          Эх, чуть-чуть опередили…

                          image
                            –10
                            Ага, чуть-чуть. 30минут разницы ))
                            <img src="" alt=«image»/>
                            +2
                            Радует функция с именем «opanki»
                            0
                            У товарища был случай, зараза проникала (какая-то другая) через SFTP клиент, в момент выгрузки. Заразен был исполняемый файл FTP клиента WinSCP.
                              –1
                              Больше интересует, каким образом, через какое место wp был заражен? Если это реальная дырка в безопасности, то это повториться.
                              +12
                              Используйте систему контроля версий, сразу будете знать что где случилось и сможете восстанавливать работоспособность + повестье не крон реагирование если вдруг какой-то файл на продакшн изменился или не под системой контроля оказался
                                0
                                Вот именно. Причем время на поиск изменений ноль целых одна секунда. Особенно с использованием веб-морд к svn.
                                  0
                                  Тоже думаю, что это правильное решение. Если не сложно пример скрипта для крона выложите пожалуйста.
                                    +2
                                    MAILTO=who@should.get
                                    * */4 * * * (cd /var/www/site; git status --porcelain)
                                  0
                                  Как прошло само заражение сайтов?
                                • UFO just landed and posted this here
                                  • UFO just landed and posted this here
                                      0
                                      есть один хороший плагин для wordpress:
                                      wordpress.org/extend/plugins/wordpress-file-monitor-plus/

                                      он следит за изменениями файлов и в случае обнаружения изменений — алертит вам на почту какие файлы были изменены и когда. можно настроить и исключения. запускается с выбранной периодичностью. имел дело со взломами сайта на теме от elegant themes — пришлось немного стать параноиком в этом вопросе)
                                        0
                                        на днях имел подобную проблему, но мне нужно было несколько сайтов вылечить. Плагин WP File Monitor мне на глаза вовремя не попался и я написал подобную тулзу сам: blog.nkuznetsov.me/2012/11/wpdiff-tool-for-wordpress-comparison.html

                                        лежит на гитхабе. представляет из себя отдельную либу, можно встроить куда надо: хоть в плагин к WP, хоть из консоли использовать. показывает diff-ы в виде html с подсветкой

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