Вірус Japanese SEO Hack: як виявити і позбутись від цього шкідливого скрипта

Вірус Japanese SEO Hack: як виявити і позбутись від цього шкідливого скрипта

Власник сайту відкриває Google та вводить назву свого домену і бачить у видачі суцільні японські ієрогліфи. Сторінки виглядають як інтернет-магазин різних товарів, переважно це годинники, сумки, взуття — і все це японською мовою. Але варто зайти на сайт напряму — і все виглядає нормально, без жодних ознак злому. Саме так проявляє себе Japanese SEO Hack — один з найпоширеніших і найпідступніших видів веб-зловмисного ПЗ, який може роками паразитувати на репутації та SEO вашого сайту, залишаючись непоміченим для власника.


Що таке Japanese SEO Hack?

Japanese SEO Hack (також відомий як Japanese Keyword Hack, Japanese SEO Spam або Japanese Symbol Spam, японський seo-вірус) — це різновид чорного SEO, при якому зловмисники використовують ваш сайт для просування сторонніх ресурсів у пошукових системах. Зокрема, вони генерують тисячі сторінок з японськомовним контентом та афілійованими посиланнями на фейкові інтернет-магазини, що продають підроблені брендові товари.

Ключова особливість цієї атаки — клоакінг (cloaking): звичайним відвідувачам сайт виглядає нормально, а ось пошукові роботи (Googlebot) бачать зовсім інший контент — сторінки, набиті японськими ключовими словами та спамними посиланнями. Саме тому власники сайтів часто дізнаються про зараження із запізненням на тижні або навіть місяці.

За даними дослідників, лише між травнем 2022 і груднем 2024 року було виявлено понад 690 000 фейкових інтернет-магазинів, пов'язаних з кампаніями чорного SEO, включно з Japanese Keyword Hack.


Хто в зоні ризику?

Атака не є суто «вордпресівською» проблемою. Вразливими є сайти на будь-якій CMS, якщо вони:

  • Використовують застарілі версії WordPress, Joomla, OpenCart, Drupal, Magento, PrestaShop
  • Мають невстановлені оновлення для плагінів, модулів або тем
  • Знаходяться на спільному хостингу поряд із зараженими сайтами
  • Мають слабкі паролі або відкриту адмін-панель
  • Використовують nulled (зламані) теми та плагіни

Особлива небезпека спільного хостингу: якщо сусідній сайт на тому ж сервері заражений WordPress або Joomla, вірус може перекинутись на ваш OpenCart чи Drupal через спільну файлову систему. Один скомпрометований акаунт в такому середовищі — і під загрозою всі сайти на сервері.


Як працює вірус зсередини

Розберемо механіку атаки покроково — те, що насправді відбувається у вашій файловій системі.

1. Точка входу

Зловмисники проникають на сайт через одну з типових вразливостей:

  • незахищена адмін-панель (брутфорс або credential stuffing)
  • вразлива версія плагіну чи теми
  • вразливість у самій CMS
  • заражений плагін з нульованою ліцензією
  • крос-контамінація через сусідній сайт на хостингу

2. Завантаження шелів і бекдорів

Після першого проникнення зловмисник завантажує PHP-шели — файли з обфускованим (зашифрованим) кодом, які дають повний доступ до файлової системи. Ці файли маскуються під легітимні:

wp-cron.php
wp-blog-header.php
goods.php
class-wp-locale.php
xmlrpc.php (підмінений)

Типовий шел містить вбудований файловий менеджер, через який зловмисник може переглядати, завантажувати, редагувати та видаляти будь-які файли на сервері — прямо через браузер.

Всередині такого файлу ви побачите щось подібне:

<?php
$_F=__FILE__;$_X='base64_decode';
eval($_X('...довгий рядок base64...'));
?>

Або складніше обфускування через комбінацію eval(), base64_decode(), gzinflate(), str_rot13(), gzuncompress() — кілька шарів шифрування, щоб уникнути виявлення антивірусами.

3. Модифікація .htaccess

Це один з найважливіших кроків. Зловмисник вносить зміни у файл .htaccess, щоб реалізувати клоакінг — різний контент для ботів і людей:

RewriteCond %{HTTP_USER_AGENT} (Googlebot|bingbot|Yahoo)
RewriteRule .* /spam-sitemap.xml [L]

Також у .htaccess додаються правила для:

  • динамічних токенів верифікації Google Search Console (щоб зловмисник зміг підтвердити права на ваш сайт)
  • перенаправлень користувачів на шахрайські сторінки
  • генерації спам-сторінок за певними URL-патернами

Додатково може з'явитися php.ini зі зміненими директивами безпеки:

safe_mode = Off
disable_functions = NONE
open_basedir = OFF
exec = ON
shell_exec = ON

Це відключає ключові захисні механізми сервера.

4. Ін'єкція в робочі скрипти

Зловмисник модифікує основні PHP-файли вашого сайту — index.php, category.php, header.php та інші — додаючи на початку зашифрований код:

<?php if(!function_exists('_verifyUser')){function _verifyUser(){...}} ?>

Цей код обробляє запити від пошукових ботів і повертає їм згенерований спам-контент, тоді як звичайний відвідувач бачить оригінальну сторінку.

5. Генерація спам-сторінок і sitemap

Вірус створює власний sitemap.xml (наприклад, sitemap_japan.xml або sm_index.xml), наповнений тисячами URL на кшталт:

https://yoursite.com/セール-時計/
https://yoursite.com/ブランド-バッグ-激安/
https://yoursite.com/ferfsedf/fdsfdferc.html

Цей sitemap автоматично надсилається до Google Search Console (якщо зловмисник встиг додатися туди як власник). В результаті Google швидко індексує тисячі спам-сторінок, прив'язаних до вашого домену.

6. Закріплення доступу

Щоб не втратити доступ після "прибирання", зловмисник:

  • розкидає бекдори у десятках папок (включно з uploads, cache, tmp)
  • додає себе як адміністратора WordPress/Joomla
  • підтверджує себе як власника в Google Search Console
  • налаштовує cron-задачі для автоматичного відновлення видалених шелів

Як виявити зараження

Ознаки в пошуковій видачі

Перевірте результати Google за запитом site:yourdomain.com. Якщо бачите:

  • Заголовки сторінок японськими ієрогліфами
  • Незнайомі URL зі спецсимволами або випадковими рядками
  • Різке збільшення кількості проіндексованих сторінок

Ваш сайт, скоріш за все, заражений.


Перевірка через Google Search Console

  • Розділ Security Issues — пряме попередження від Google «Hacked content detected»
  • Розділ Coverage — підозріло велика кількість проіндексованих URL
  • Розділ Users and permissions — незнайомі власники або користувачі
  • Розділ Sitemaps — невідомі sitemap-файли, які ви не додавали

Пошук змінених файлів через SSH

# Файли, змінені за останні 30 днів
find /var/www/html -type f -name "*.php" -mtime -30 | sort

# Пошук характерних сигнатур шкідливого коду
grep -rl "base64_decode" /var/www/html --include="*.php"
grep -rl "eval(gzinflate" /var/www/html --include="*.php"
grep -rl "str_rot13" /var/www/html --include="*.php"

# PHP-файли в папці uploads (там їх не повинно бути)
find /var/www/html/wp-content/uploads -name "*.php"

# Пошук підозрілих .htaccess файлів
find /var/www/html -name ".htaccess" | xargs grep -l "RewriteCond.*User-Agent"

Онлайн-сканери

  • Sucuri SiteCheck — sucuri.net/website-security-platform/sitecheck
  • Google Safe Browsing — transparencyreport.google.com/safe-browsing/search
  • VirusTotal — virustotal.com (сканування URL)
  • Unmask Parasites — unmaskparasites.com

Покрокове видалення

⚠️ Важливо: перед будь-якими змінами зробіть повний бекап сайту і бази даних.

Крок 1. Ізоляція

Якщо є підозра на активне зараження — тимчасово переведіть сайт в режим обслуговування або обмежте доступ через .htaccess, щоб вірус не поширювався далі і не перезаражував очищені файли.

Крок 2. Видалення несанкціонованих користувачів

Google Search Console: Settings → Users and permissions → видаліть всіх невідомих власників і користувачів.

WordPress: Users → All Users → видаліть підозрілих адмінів.

Разом з цим з .htaccess видаліть токени верифікації — рядки виду:

google-site-verification: [token]

Крок 3. Очищення .htaccess

Замініть всі .htaccess файли чистими версіями за замовчуванням. Для WordPress достатньо зайти в Settings → Permalinks і натиснути «Save Changes» — система сама перегенерує коректний .htaccess.

Перевірте наявність php.ini у корені сайту — якщо є, видаліть або відновіть до стандартного вигляду.

Крок 4. Видалення шкідливих файлів

# Знайти всі PHP у папці uploads і видалити
find /var/www/html/wp-content/uploads -name "*.php" -delete

# Знайти файли з типовими іменами шелів
find /var/www/html -name "goods.php" -o -name "wp-cron.php" -newer /var/www/html/wp-includes/version.php

Порівняйте файли ядра CMS з оригінальними дистрибутивами:

  • WordPress: завантажте свіжу версію з wordpress.org, порівняйте файли
  • OpenCart: порівняйте з оригінальним дистрибутивом вашої версії
  • Joomla: використайте вбудований Joomla Extension Manager для перевстановлення ядра

Крок 5. Очищення ін'єкцій у робочих файлах

Відкрийте підозрілі PHP-файли в текстовому редакторі. Зверніть особливу увагу на початок файлів — зловмисники зазвичай вставляють код саме там. Шукайте:

<?php eval(base64_decode('...'));
<?php @eval($_POST['...']);
<?php if(isset($_POST[...

Якщо бачите обфускований код перед <?php оригінального файлу — видаляйте його.

Крок 6. Перевірка бази даних

У phpMyAdmin виконайте пошук по таблицях:

-- Пошук японських символів у контенті
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%セール%';

-- Пошук eval у контенті
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%eval(%';

-- Пошук підозрілих мета-полів
SELECT * FROM wp_postmeta WHERE meta_value LIKE '%base64%';

Крок 7. Зміна всіх паролів і ключів

  • Паролі всіх адміністраторів та FTP-акаунтів
  • Паролі бази даних (і оновіть wp-config.php / config.php)
  • Секретні ключі WordPress (Settings → General або вручну в wp-config.php)
  • Пароль хостинг-панелі

Крок 8. Видалення спам-URL з Google

У Google Search Console:

  1. Removals → Temporary Removals → введіть URL або префікс папки з спамом
  2. Security Issues → після підтвердження очищення → Request a review

Якщо зловмисник створив спам-папку (наприклад, yourdomain.com/spam-products/), скористайтесь опцією «Remove all URLs with this prefix».

Крок 9. Перевстановлення ядра CMS і плагінів

Не намагайтесь «вичистити» кожен рядок вручну — краще перевстановіть ядро CMS з чистого дистрибутиву. Те саме — для всіх плагінів і тем (тільки з офіційних джерел).

Крок 10. Повторне сканування і моніторинг

Після всього вищезазначеного запустіть кілька незалежних сканерів (Sucuri, Wordfence, AI Bolit). Лише переконавшись у чистоті — подавайте sitemap до Google та надсилайте запит на перегляд в Search Console.


Профілактика: як не потрапити вдруге

Оновлення — ваш головний захист

Переважна більшість заражень відбувається через незакриті вразливості у плагінах і темах. Включіть автоматичне оновлення або перевіряйте наявність оновлень щотижня.

Розділення сайтів на хостингу

Якщо у вас кілька сайтів — тримайте їх у окремих DirectAdmin/cPanel акаунтах з окремими FTP-юзерами. Один зламаний акаунт не повинен мати доступ до файлів інших сайтів.

Захист папки uploads

Забороніть виконання PHP у директорії для завантажень. Для Apache додайте до uploads/.htaccess:

<Files "*.php">
  deny from all
</Files>

Двофакторна автентифікація

Увімкніть 2FA для всіх адмін-акаунтів. Це суттєво знижує ризик брутфорсу.

Web Application Firewall (WAF)

Cloudflare (навіть безкоштовний план) або Sucuri Firewall блокує значну частину атак ще до того, як запит досягає сервера.

Моніторинг цілісності файлів

Налаштуйте сповіщення про зміни у файловій системі. Для WordPress — плагіни Wordfence або iThemes Security. Для серверного рівня — інструменти на кшталт AIDE або Tripwire.

Регулярні бекапи

Автоматичний щоденний бекап з ротацією — обов'язково. Зберігайте копії поза сервером (Google Drive, S3, окремий FTP).


Особливості для OpenCart

Якщо ваш OpenCart розміщений на спільному хостингу з WordPress або Joomla — ризик перехресного зараження дуже реальний. Специфічні моменти:

  • Перевіряйте папки system/cache, system/storage, image/cache на наявність .php файлів
  • Захистіть admin/ через IP-whitelist в .htaccess або в налаштуваннях сервера
  • Видаліть або перейменуйте стандартний шлях адмінки (/admin) на унікальний
  • Моніторте файли index.php і catalog/controller/common/header.php — перші кандидати для ін'єкцій
  • Перевірте config.php та admin/config.php на цілісність

Непомітний, але шкідливий, паразитний веб-вірус

Japanese SEO Hack — це добре організована бізнес-схема, яка побудована на шкідливих скриптах. Зловмисники паразитують на SEO-репутації тисяч сайтів по всьому світу, будуючи мережі афілійованих посилань на сумнівний товар. Їх інструменти постійно еволюціонують: нові методи обфускації, нові вектори атак, нові способи закріплення.

Але більшість заражень трапляється з банальних причин — застарілий плагін, слабкий пароль, nulled тема. Технічна захищеність на 90% складається з елементарної гігієни: оновлення, сильні паролі, окремі акаунти, моніторинг.

Якщо ваш сайт вже заражений — не панікуйте. Дотримуйтесь наведеного алгоритму послідовно, не поспішайте, і переконайтесь у повноті очищення перед тим, як сигналізувати Google про відновлення. Найгірше, що можна зробити — це "прибрати" видимі симптоми, залишивши бекдор, через який зловмисник повернеться наступного дня.

Інші статті

Порівняння SSD Samsung 870 EVO та Kingston A400
Порівняння SSD Samsung 870 EVO та Kingston A400

Ми провели порівняння двох моделей SSD, яке базується на бенчмарках UserBenchmark, Versus та Pangoly..

Як перевірити правильність налаштування Google Consent Mode v2
Як перевірити правильність налаштування Google Consent Mode v2

Cпособи перевірки правильності налаштування cookie Google Consent Mode v2, перевірка налаштування зг..

Anthropic запустили десктопний додаток Claude Desktop для Mac і Windows
Anthropic запустили десктопний додаток Claude Desktop для Mac і Windows

Компанія Anthropic офіційно представила Claude Desktop - повноцінний десктопний додаток свого популя..

Як створити вебхук Monobank для відстеження руху коштів по рахунку
Як створити вебхук Monobank для відстеження руху коштів по рахунку

Інструкція про те як створити вебхук Monobank для відстеження руху коштів по рахунку. Правильна реал..

Коментарі

Написати коментар