Виявлення і видалення вірусів на сайті

Як виявляти та вилучати віруси на сайті? Алгоритм і методика роботи.

Веб-сайти масово атакують зловмисники, експлуатуючи діри безпеки та вразливості CMS, заливаючи на них трояни, експлойти, бекдори. Проблема має масовий характер. Увесь український фріланс наповнений оголошеннями “Видалити вірус”, “Знайти вірус”, “Лікування вірусів на сайті” і т.д. Класичні антивірусні сканери не допомагають – вони не бачать вірусів, тому що шкідливий код застосовує різні техніки обфускації і алгоритми шифрування. Хостинг-провайдери як правило допомогти користувачам не можуть, а власники сайтів не завжди помічають зловмисну дію скриптів, адже як правило такі віруси спрацьовують при певному сценарії. Отже, пропонуємо покрокову інструкцію з виявлення та вилучення вірусів на веб-сайтах.

Що таке веб-вірус? Типи і види веб-вірусів

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

Найпоширеніші типи вірусів:

  • 🔴 Вірус-редирект (malware redirect) — шкідливий скрипт, який змушує браузер користувача автоматично перенаправлятися з легітимного сайту на сторонній ресурс. Це може бути фішинговий сайт, дорвей або реклама. Цей тип вірусу зазвичай інтегрується у вихідний код файлів сайту або в MySQL базу даних через вразливості й програмується за сценарієм. Наприклад, вірус може виконуватися лише за умови, що користувач переходить на сайт не по прямому посиланню, а з результатів видачі пошукової системи, або з конкретного браузера (User-Agent), пристрою (mobile/Desktop), країни (IP address). Користувачам також може присвоюватися персональні cookie, на основі яких у подальшому цей вірус буде їх відсіювати від решти та виконуватися тільки для них. Алгоритмів спрацювання може бути безліч, вірус використовує функції веб-сервера та PHP, за рахунок чого може використовувати різноманітні функції (eval, include, preg_replace) і шифруватись (base64_decode, encoded), тому недосвідченим користувачам досить важко його виявити. Власне, це і робиться задля того, щоби власник сайту нічого не підозрював. На сьогодні існує величезна кількість модифікацій та різновидів віруса-редиректора.
  • 🔴 Вірус-попап (malware popup/iframe) — шкідливий скрипт, який створює небажані спливаючі вікна (popups), які можуть на фоні сайту показувати сторонні баннери, фрейми та інші види шкідливого вмісту.
  • 🔴 Вірус-спамбот (web spambot) — шкідливий скрипт, який здійснює несанкціоновану публікацію спамного контенту з метою “Black-Hat SEO” або електронну email-розсилку.
  • 🔴 Вірус-майнер (web miner) — шкідливий скрипт, який починає використовувати ресурси сервера на якому розміщений веб-сайт, або навіть комп’ютера користувача, який переходить на нього, задля майнінгу криптовалюти, що призводить до значного уповільнення роботи і сайту, і пристрою.
  • 🔴 Вірус-завантажувач (malware downloader) — шкідливий скрипт, який призначений для завантаження та встановлення шкідливого програмного забезпечення на комп’ютері жертви, яка відкрила заражений сайт.
  • 🔴 Вірус-ботнет (botnet) — шкідливий скрипт, який інфікує веб-сервери, перетворюючи їх на частину мережі зомбі-комп’ютерів (ботнету), якими зловмисники можуть дистанційно керувати для здійснення різних шкідливих дій, наприклад DDoS-атак або розсилки спаму.
  • 🔴 Вірус-бекдор (backdoor) — шкідливий скрипт, який являє собою програмну закладку у вихідному коді сайту чи CMS-системи для подальшого розгортання та налагодження несанкціонованого доступу.
  • 🔴 Вірус-шелл (shell) — шкідливий php-скрипт, який зловмисники впроваджують на сайт для встановлення несанкціонованого доступу до сервера. Цей скрипт дозволяє виконувати команди на сервері через веб-інтерфейс файлового менеджера, надаючи зловмиснику повний або частковий доступ до файлової системи.
  • 🔴 Вірус-шпигун (spyware) — шкідливий скрипт, який непомітно виконується на сайті, збираючи різноманітну статистику і аналітику про відвідувачів і користувачів сайту, перехоплювати їх дані, наприклад їх IP-адреси, кукі, введені паролі та багато іншого.

Відомі веб-віруси:

  • 🔴 Ballada Injector — небезпечний скрипт-редирект, який через вразливі плагіни проникає на WordPress-сайти і навіть може забезпечувати їх віддалене керування. Вірус вразив більше 1 мільйона сайтів і досі активно розповсюджується.
  • 🔴 Japanese/Chinese Hack — скрипт, який змінює контент сайту, вставляючи текст на японській або китайській мовах з метою “Black-Hat SEO”.
  • 🔴 Pharma Hack — скрипт який відображає спам у сніппетах сайту у пошуковій видачі. Сайт може працювати нормально, і ви не помічаєте нічого незвичайного, але якщо ввести назву свого сайту в пошуковику Google, то побачите в сніппетах текст з назвами різних фармацевтичних препаратів. Зловмисники використовують цей хак для “Black-Hat SEO” та монетизації кліків.
  • 🔴 WordPress SoakSoak Favicon Backdoor — скрипт, який замасковує шкідливий код (бекдор) у файлі favicon.ico, що відповідає за піктограму сайту. Ця дозволяє хакерам через бекдор отримати несанкціонований доступ до сайту.
  • 🔴 MosQUito — шкідливий скрипт, який робить підміну всіх мініфікованих файлів jQuery, а далі стежить за трафіком, випадково обирає деяких відвідувачів і редиректить їх на сумнівні сайти, які знаходяться під контролем зловмисників. Як правило, ці сайти наповнені рекламою, яка приносить їм прибуток.
  • 🔴 TimThumb Exploit — шкідливий скрипт, який вражає сайти на WordPress, інфікуючи службовий файл timthumb.php, що відповідає за зміну розміру зображення.
  • 🔴 Mal/IFrame — являє собою невеличкий або прихований iframe на веб-сторінці, який намагається підвантажити шкідливий вміст із віддаленого веб-сайту.
  • 🔴 WSO Shell — являє собою зловмисний php-скрипт, який створює графічну оболонку у вигляді файлового менеджера з просунутими функціями керування сервером.

Phishing WhatsApp example
Приклад вірусу-завантажувача, який пропонує відвідувачам сайту завантажити шкідливий файл.
Приклад веб-оболонки шелла WSO на зараженому сайті.

Як віруси проникають на сайт: механізми та методи зараження

  • Публічні витоки даних. Часто-густо конфіденційні дані, такі як логіни та паролі до сайтів, передаються випадковим людям незахищеними каналами комунікації (через електронну пошту, месенджери), або публікуються у відкритому доступі в інтернеті (форуми, соцмережі, дошки оголошень, дошки задач Trello, Telegram-канали і т.д.), що зумовлює подальший витік інформації у публічну площину.
  • Стандартні логіни і слабкі паролі. Використання стандартних облікових записів (напр., “admin”) і слабких паролів (напр., “qwerty”) значно полегшує злом сайту. Хакери можуть застосовувати методи автоматичного підбору даних авторизації.
  • Фішинг і соцінженерія. Зловмисники можуть обманним шляхом отримати дані для входу, видаючи себе за довірених осіб, використовуючи підроблені веб-сайти (фішинг) або застосовуючи різноманітні техніки перехоплення даних (наприклад, Man-in-the-Middle Attack, MITM).
  • Помилки конфігурації. Неправильне технічне налаштування, неналежні права доступу, помилки в конфігурації створюють додаткові ризики й вразливості, які будуть використані зловмисниками.
  • Відсутність системи безпеки. Наприклад, відсутня фільтрація вхідних запитів, дані які поступають на сайт – не перевіряються. Форми і веб-елементи незахищені капчею. Заголовки безпеки не налаштовані, що дає зловмисникам можливість провести SQL/PHP/XSS-ін’єкції та інші атаки.
  • Бекдори. Власники сайтів часто звертаються до неперевірених спеціалістів чи компаній, які залишають шкідливий код у вихідному коді сайту з метою подальшої експлуатації.
  • Застарілі або невідомі компоненти. Плагіни, теми, модулі, програмне забезпечення, яке довгий час не оновлюється на сайті має властивість застарівати, внаслідок чого з часом з’являються вразливості, які приводять до зламу та зараження. Деякі компоненти можуть свідомо містити вірус, тому рекомендується завантажувати їх лише з перевірених офіційних джерел від авторитетних розробників.
  • Помилки конфігурації. Неправильно налаштований сайт або сервер може привести до численних прогалин у безпеці, які будуть використані зловмисниками. Регулярне адміністрування – важлива запорука безпеки будь-якого сайту.
  • Незахищений хостинг. Зазвичай, типові віртуальні shared-хостинги мають слабку архітектуру і не забезпечують повну ізоляцію клієнтів, тому віруси можуть мігрувати між сайтами, які розташовані на одному сервері (хоча й на різних акаунтах). На жаль, це стається через відсутність додаткових заходів безпеки на боці хостера. Навіть, якщо вірус видалити, то через деякий час він може з’явитися повторно. Єдине, що можна зробити у такому випадку – це перенести сайт на захищений хостинг, наприклад самотужки розгорнути приватний VPS на HETZNER.
ЧИТАЙТЕ ТАКОЖ:  Pegasus Spyware — кіберзброя нового покоління. Як розпізнати і захиститися?

Симптоми зараження веб-сайту вірусом

  • Поява підозрілих перенаправлень (редиректів) на сторонні ресурси сумнівної тематики.
  • Поява сторонніх облікових записів на сайті, незвичні спроби входу в адмін-панель.
  • Проблеми з входом в адмін-панель сайту, часте розлогінення.
  • Підозрілі зміни в контенті сайту, наприклад зміна зображень або тексту.
  • Поява гіперпосилань на неперевірені сайти.
  • Поява у пошуковій видачі підозрілих сторінок веб-сайту з незрозумілим спамним контентом (наприклад китайськими чи японськими літерами).
  • Поява стороннього веб-коду в різних частинах сайту.
  • Підміна контенту на деяких веб-сторінках.
  • Підозріла активність на сервері, поява нових файлів і каталогів.
  • Повільне завантаження сторінок сайту, зменшення продуктивності, нестача оперативної пам’яті і дискового простору на сервері.
  • Попередження з боку пошукових систем або хостинг-провайдера про вірус на сайті.
Офіційний лист від Google адресований власнику з повідомленням про те, що на сайті виявлені технічні проблеми і показ реклами Google Ads тимчасово призупинено.
Google Search Console malware detected
Повідомлення про вірус в панелі вебмайстра Google Search Console
Попередження браузера Google Chrome про небезпеку відвідування інфікованого сайту.

Чим небезпечні віруси на сайті?

  • Падіння відвідуваності (трафіка) і репутації сайту, зниження позицій у пошукових системах.
  • Погіршення користувацького досвіду, втрата довіри користувачів.
  • Вилучення сторінок сайту з індексу пошукових систем.
  • Попередження про небезпеку в Google Search Console.
  • Призупинення рекламних кампаній в Google Ads.
  • Призупинення заробітку на показі реклами в Google AdSense.
  • Блокування хостингу через несанкціоновані дії на сайті (розсилка спаму, атаки на інші сайти).
  • Втрата конфіденційних даних (логінів, паролів, фінансової інформації).
  • Маніпуляція даними сайту (створення, видалення, зміна).
  • Несанкціонований доступ до сайту і сервера.
  • Знищення продуктивності і ефективності сайту.
  • Крадіжка облікових даних. Шкідливе програмне забезпечення викрадає дані відвідувачів і користувачів, кукі, паролі та пересилає їх зловмисникам тощо.
  • Отримання несанкціонованого доступу. Зловмисники отримують доступ до сервера і з допомогою підвищення привілеїв використовують його ресурси для своїх цілей.
  • Монетизація трафіка. Шкідливий скрипт переспрямовує користувачів на фішингові веб-сайти і сторінки з токсичною рекламою, що приносить зловмисникам заробіток на партнерці.
  • “Чорне” SEO. Зловмисники розміщують зворотні посилання та спам по ключовим словам на веб-сайтах, що впливає на рейтинг та просування їх дорвеїв.
  • Конкуренція. Недобросовісні конкуренти в ніші з метою нанесення економічної шкоди та усунення з пошукової видачі своїх суперників зламують та інфікують сайти.
  • Помста, шантаж, покарання. Буває так, коли хтось хоче звести рахунки або поквитатися, й таким чином запускає вірус та зламує ресурс, демонструючи акт помсти, чи то покарання.
  • Розвага, спостереження, самоствердження. Взламуючи вразливі ресурси та заливаючи на них різні віруси, зловмисники таким чином відточують та вдосконалюють свої навички, тренуються, розважаються, самостверджуються, аналізують і тестують різноманітні методики роботи, тактики, стратегії. Вразливі користувацькі веб-сайти для них як полігон. Вони дотримуються принципу: “Все що незахищено – буде зламано”.

Перші дії при виявленні вірусу. Чек-ліст.

Пошук вірусів на сайті

  1. Зафіксувати будь-які несанкціоновані зміни на сайті: зробити скріншоти і відеофіксацію будь-яких симптомів, шкідливихд дій, помилок, пошкоджень, редиректів, логів і т.д.
  2. За можливості тимчасово обмежити публічний доступ до сайту.
  3. Зробити комплексну резервну копію сайту: файлів і бази даних.
  4. Створити новий обліковий запис Адміністратора та вилучити інші, зв’язавши їх зміст з новим.
  5. Очистити кеш та cookie сайту. Видалити папки зберігання кешу і тимчасові файли в робочій директорії.
  6. Якщо сайт на WordPress, перевірити файли конфігурації, зокрема wp-config.php, зокрема: оновити Salt Keys, заборонити редагування файлів з адмін-панелі: define( 'DISALLOW_FILE_EDIT', true );
  7. Деактивувати усі плагіни (якщо у вас WordPress, можна просто перейменувати всю папку plugins). Перевірити вихідний код всіх компонентів. Порівняти оригінальні файли зі зміненими.
  8. Вилучити або деактивувати усі теми, крім стандартної теми по замовчуванню.
  9. Перевстановити всі компоненти: CMS-систему, (для WordPress – перевірити каталоги wp-admin, wp-includes), тему (template), плагіни.
  10. Відмовитись від використання застарілих або ламаних (nulled) компонентів.
  11. Змінити усі паролі: хостинг, адмінка, база даних, доступ до сервера по SSH/FTP/SMTP/MySQL.
  12. Вилучити неактивні або підозрілі серверні компоненти. Оновити всі службові компоненти, зокрема версію PHP (не використовувати PHP нижче 7.4).
  13. Перевірити та закрити на сервері: зайві сесії, з’єднання, процеси, завдання (cron), відкриті порти (tcp/udp).
  14. Вилучити зайві символьні лінки на сервері (symbol links): find . -type l -exec unlink {} \;
  15. Виставити коректні права доступу на усі файли і папки веб-сайту (папки – 755 або 750, файли – 644 або 640). Уникайте прав доступу – 777, які дають право кожному виконувати, завантажувати, перезаписувати файли. Прикрад автоматичного виправлення прав доступу для CMS WordPress:
    1. find /path/to/your/WordPress/install/ -type d -exec chmod 750 {} \;
    2. find /path/to/your/WordPress/install/ -type f -exec chmod 640 {} \;
    3. chmod 400 /path/to/your/WordPress/install/wp-config.php
  16. Перевести домен на CDN Cloudflare.
  17. Пернести сайт на захищений VPS-хостинг.
  18. Встановити фаєрвол на рівні сервера (CSF/UFW, IPtables, Fail2ban, Snort) і веб-додатка (для WordPress – Wordfence Security, Sucuri Security, GOTMLS, AntiVirus).

Інструкція як швидко знайти вірус на сайті

Malware Analysis

1. Перевірити вихідний код на розповсюджені паттерни malware, які є індикаторами шкідливих скриптів (Indicators of Compromise, IoC):

  • document.write
  • document.location
  • document.createElement
  • base64_decode
  • eval
  • add_action
  • <script
  • <iframe
  • <?php include
  • $encoded
  • preg_replace
  • gzdecode
  • fromCharCode
  • dns_get_record
  • ini_set
  • file_get_contents
  • lzw_decompress
  • gzuncompress
  • gzinflate
  • ob_start
  • str_rot13
  • auth_pass
  • shell_exec
  • passthru
  • _0x
  • <script>var o=String;eval(o.fromCharCode

👉 Більше паттернів дивись тут.

2. Скористатися командами пошуку консолі Linux:

  • find /path-of-www -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r — ця команда виведе список останніх змінених файлів сайту.
  • find /path-of-www -type f -iname "*" -mtime -7 — пошук файлів, які були змінені за останні 7 днів.
  • find /path-of-www -cmin -60 — ця команда знайде всі файли в кореневому каталозі і його підкаталогах, чиї атрибути змінювалися протягом останніх 60 хвилин. Це може включати зміну власника файлу, прав доступу або інших метаданих.
  • find /path-of-www -mmin -60 — ця команда знайде всі файли в кореневому каталозі і його підкаталогах, вміст яких змінювався протягом останніх 60 хвилин. Це корисно для відстеження нещодавно змінених файлів.
  • find /path-of-www -amin -60 — ця команда знайде всі файли в кореневому каталозі і його підкаталогах, до яких здійснювався доступ (читання) протягом останніх 60 хвилин. Це корисно для відстеження нещодавніх доступів до файлів.
  • find ./path-of-www -name "*.php" | xargs grep "eval" --color -w — шукає всі файли всі файли php у заданому каталозі і перевіряє, чи містять вони рядок eval, підсвічуючи знайдені рядки у результатах.
  • find . -type f -exec grep -Ho '<.php.*eval[(]base64_decode[(].*=.[)][)]\;' {} \; — виконує пошук у всіх файлах у поточному каталозі та його підкаталогах, щоб знайти рядки шкідливого коду.
  • cat /www/jquery-2.1.1.min.js | grep "document.write" — знайти зазначений рядок коду у заданому файлі і вивести на екран.
  • egrep -rns --color @eval — рекурсивний пошук вмісту з шаблоном @eval у всіх файлах, починаючи з поточного каталогу і його підкаталогів.
  • grep -r "document.write" /path-of-www — пошук зазначеного коду у всіх файлах папки з виводом вмісту файлу.
  • grep -rl "document.write" /path-of-www — пошук зазначеного коду у всіх файлах папки, тільки з виводом місця розташування файлу, без вмісту файлу.
  • grep -iRs “iframe” * — пошук файлів, які містять фрейми.
  • grep -iRs “eval” * — пошук файлів, які містять функцію eval.
  • grep -iRs “file_get_contents” * — пошук файлів, які містять функцію file_get_contents.
  • grep -iRs “base64_decode” * — пошук файлів, які містять функцію шифрування коду в base64.
  • grep -iRs “var div_colors” * — пошук файлів, які містять функцію зміни кольорів.
  • grep -iRs “var _0x” * — пошук файлів, які містять зазначену функцію.
  • grep -iRs “CoreLibrariesHandler” * — пошук файлів, які містять зазначену функцію.
  • grep -iRs “pingnow” * — пошук файлів, які містять зазначений шкідливий код.
  • grep -iRs “serchbot” * — пошук файлів, які містять зазначений шкідливий код.
  • grep -iRs “km0ae9gr6m” * — пошук файлів, які містять зазначений маркер шкідливого коду.
  • grep -iRs “c3284d” * — пошук файлів, які містять зазначений маркер шкідливого коду.
  • find /path -type f -iname ‘*.jpg’ | xargs grep -i php — пошук файлів зображень, які можуть містити шкідливий код, бекдор.
  • find . -type f -name ‘*.php’ | grep -i ‘<iframe’ — пошук файлів php, які можуть містити шкідливий фрейм.
  • find . -type f -ls | grep 'Jul 28 16:11' — пошук файлів за вказаною датою і часом останньої модифікації.
  • find . -type f -name "filename.php" -exec rm -f {} \; — пошук конкретного файлу в каталогах сайту.
ЧИТАЙТЕ ТАКОЖ:  Caido - новітній "Burp Suite" з мозгами

3. Звернути увагу на поширені типи і назви файлів:

  • index.php, index.html
  • header.php, footer.php, install.php, update.php, wp-blog-header.php
  • .htaccess
  • wp-config.php, wp-load.php, wp-include.php, wp-settings.php, functions.php, 
  • xmlrpc.php
  • /wp-admin/, /wp-content/, /wp-includes/, /uploads/, /themes/
  • 404.php, 503.php
  • jQuery (jquery-migrate.min.js, jquery-2.1.1.min.js)
  • JavaScript (wp-emoji-release.min.js)
  • PHP (.php, .phtml, .ph*)
  • HTML (теги <iframe>, <script>, <noscript>, <head> і ін.)
  • XML
  • css.php, style.php, style.css.php
  • upd.php, info.php, profile.php, access.php, counts.php, file.php, load.php, nda.php
  • wso.php, wso2.php, r57.php, adminer.php, webadmin.php, cmd.php, php-reverse-shell.php, shell.php, phpinfo.php
  • wtf.php, wphap.php, php5.php, data.php, 1.php, p.php, satan.php
  • bak.php, image.php, test.php, code.php, dir.php, diff.php
  • .zip, .rar, .phar
  • flash, swf, java
  • .bat, .exe, .sh
  • .ico

4. Проаналізувати системні логи – події та журнали сайту/сервера:

  • access.log — логи доступу до сайті, можуть містити URL-адреси.
  • errors.log — логи помилок.
  • journalctl — журнал системних повідомлень на сервері.
  • cronjob — завдання серверного планувальника.

Можна скористатися командою Linux для пошуку POST або GET запитів: cat access.log | grep POST --color

Виявлення підозрілих GET-запитів з токсичних IP-адрес до службових сторінок сайту у системних логах.

5. Протестувати завантаження сайту з різних:

6. Проаналізувати завантаження сайту з та без JavaScript. В цьому допоможуть такі розширення і аддони як: View Rendered Source, NoJS Side-by-Side, Web Developer тощо.

Виявлення проблем зі сторінкою в Google Inspection Tool
Тестування доступності сайта з допомогою Screaming Frog Spider

7. Якщо сайт на WordPress – перевірити вихідний код усіх файлів ядра, теми і плагіни. Допомогти прискорити цей процес можуть плагіни-сканери WordPress: Wordfence, GOTMLS, AntiVirus.

8. Перевірити результати пошукової видачі веб-сайту, наприклад з допомогою оператора site:example.com:

Japanese Hack
Приклад виявлення у пошуковій видачі Google заражених веб-сторінок вірусом Japanese/Chinese hack.

9. Провести аналіз HTTP-з’єднань з веб-сайтом.

Це можна зробити через панель розробника у браузері або з допомогою проксі Burp Suite:

  • проаналізувати усі з’єднання з зовнішніми ресурсами.
  • проаналізувати усі з’єднання з внутрішніми ресурсами.
  • звернути детально увагу на HTTP-заголовки і коди відповідей сервера.
  • проаналізувати GET/POST запити.
Виявлення шкідливого коду в файлі jQuery, який здійснює несанкціоноване з’єднання з шкідливим сайтом cdn34.com
Шкідливий код в jQuery
Виявлення закодованого шкідливого коду-редиректу з методом document.write у файлі бібліотеки jQuery

10. Аналіз DNS також може допомогти виявити проблеми.

Зловмисники можуть здійснювати атаки на рівні DNS-зони: DNS Spoofing, DNS Cache Poisoning, ARP Spoofing та багато інших. Важливо перевірити, щоб не було помилок у конфігурації. З цим впораються такы онлайн-сервіси як: DNS Checker, Cache Check OpenDNS та інші, а також утиліти командного рядка – dig, nslookup, host.

11. Здійснити пошук по MySQL базі даних:

  • пошук по слову через веб-інтерфейс PhpMyAdmin;
  • пошук по слову через перегляд дампу бази даних (наприклад, в текстових редакторах SciTE, SublimeText, Notepad++, Visual Studio);
  • позачергово перевірити вміст таблиць wp_options, wp_posts;
  • з допомогою команд UPDATE, SET та REPLACE провести заміну шкідливого коду.
Пошук шкідливого коду з функцією add_action через пошук по заданому слову в PhpMyAdmin
Виявлення шкідливого коду в таблиці бази даних через веб-інтерфейс PhpMyAdmin

BONUS: Bash-скрипт для вилучення вірусів типу eval(base64_decode) з усіх php-файлів сайту:

#!/bin/bash

# Оголошення змінної virus
virus='eval(base64_decode("Quxxxxx_example="));'

# Екранування спеціальних символів для sed
safe_virus=$(printf '%s' "$virus" | sed 's/[.[\*^$/]/\\&/g')

# Пошук і заміна у PHP-файлах
find . -type f -name '*.php' -exec sed --in-place -e "s/$safe_virus//g" '{}' \;

Після того як вірус буде вилучено з сайту, рекомендуємо подати сайт на переіндексацію в Google. Якщо у вас було попередження від Google Ads чи Adsense, необхідно вручну підтвердити, що проблему вже вирішено. Будьте готові, що це може зайняти деякий час (від 1 дня до 1 тиждня або навіть місяця) – необхідно, щоб оновився глобальний кеш і вступила в дію переіндексація.

👉 Додаткові керівництва:

Інструменти для виявлення і аналізу вірусів

  • 🔍 Online PHP and Java Script Decoder — онлайн-сервіс для декодування шкідливого JavaScript коду;
  • 🔍 DenCode: Unicode Escaper (Decoder/Encoder) — онлайн-сервіс для декодування unicode;
  • 🔍 Base64 Decode and Encode — онлайн-сервіс для декодування та кодування даних в base64;
  • 🔍 Cybergordon — сервіс для перевірки онлайн-репутації веб-ресурсів;
  • 🔍 URLSCAN — сервіс для аналізу веб-ресурсів;
  • 🔍 Quttera — онлайн-сканер для поверхневого сканування веб-сайтів на наявність malware;
  • 🔍 Hybrid Analysis — онлайн-пісочниця для тестування і аналізу HTTP-з’єднання з ресурсами;
  • 🔍 Joe SandBox — ще одна онлайн-пісочниця;
  • 🔍 ANY RUN — онлайн-пісочниця для тестування HTTP-з’єднання з різних операційних систем;
  • 🔍 VirusTotal — онлайн-сервіс для аналізу шкідливих файлів і веб-ресурсів;
  • 🔍 Publicwww — система для пошуку сайтів по вказаному коду. З її допомогою можна знайти інші заражені сайти;
  • 🔍 Linux Malware Detect (LMD) — утиліта консолі Linux для виявлення та видалення шкідливого коду;
  • 🔍 PHP Malware Scanner — утиліта консолі Linux для виявлення шкідливого коду в файлах php;
  • 🔍 PHP Malware Finder — аналізатор PHP-коду для виявлення шкідливих фрагментів та загроз;
  • 🔍 Retire.js — інструмент статичного аналізу коду JavaScript;
  • 🔍 ClamAV — антивірусне програмне забезпечення для Unix-подібних операційних систем;
  • 🔍 Yara — інструмент для ідентифікації та аналізу шкідливого програмного забезпечення (yara rules, pressidium yara rules, awesome yara rules);
  • 🔍 Immunify360 — комерційний антивірусний продукти для безпеки веб-додатків, сайтів, серверів.
  • 🔍 Bcompare — програмне забезпечення для порівняння версій: вмісту файлів, папок, тексту.
  • 🔍 Webpagetest — онлайн-сервіс для тестування з’єднання та завантаження веб-сайту;
  • 🔍 EICAR AnatiMalware Tesrfile — спеціальний файл для перевірки роботи антивірусних систем.
  • 🔍 Cuckoo Sandbox – відкрита автоматизована система для аналізу шкідливого програмного забезпечення (малварі) у безпечному ізольованому середовищі.
  • 🔍 CAPEv2 – ефективна та гнучка пісочниця для дослідження малварі.
  • 🔍 Intezer — хмарна платформа для аналізу шкідливого програмного забезпечення (малварі) та реагування на кіберзагрози.
ЧИТАЙТЕ ТАКОЖ:  Операційна безпека: фундаментальні поради, рекомендації, правила
Приклад декодування шкідливого коду з base64.
Приклад шифрування шкідливого PHP-скрипту в Base64. Код містить умову, за якої на зараженому сайті буде виведено iframe з вмістом стороннього сайту.
Publicwww search sites
Пошук інфікованих сайтів в кіберпошуковій системі Publicwww за вказаним паттерном шкідливого коду

Рекомендації щодо захисту сайтів від вірусів

Рекомендації захисту сайту від вірусів

  • Встановити фаєрвол на сайт, наприклад WAF Wordfence для WordPress (блокуватиме підозрілі HTTP-запити, захистить від атак на рівні CMS, заборонить несанкціоноване виконання php-коду).
  • Підключити CDN Cloudflare для моніторингу і фільтрації трафіку, блокування токсичних IP-адрес і User-Agent, захисту від атак.
  • Встановити плагін безпеки Sucuri для WordPress, який заблокує виконання php-скриптів і сповіщатиме на email про усі входи на сайт, зміни в файлах і т.д.
  • Налаштувати двофакторну авторизацію для входу в систему, зокрема до адмін-панелі. Обмежити доступ до адмінки через додаткову преавторизацію htpasswd.
  • Підключити систему захисту Сaptcha. Усі форми, кнопки дії, поля для відправки даних на сайті мають бути захищені від ботів.
  • Встановити правильні права доступу до усіх файлів і папок сайту.
  • Оптимізувати файл конфігурації веб-сервера .htaccess, обмежити доступ до всіх службових каталогів сайту.
  • Отимізувати файл конфігурації WordPress wp-config.php, перенести його на рівень вище основної кореневої директорії.
  • Обмежити публічний доступ до xmlrpc.php та REST API (wp-json) для WordPress.
  • Оновити усі системні компоненти, зокрема версію PHP. Старі версії містять вразливості.
  • Не використовувати протокол FTP – він є застарілим й вразливим, при з’єднанні з ним дані не шифруються. Замість нього використовуйте захищений sFTP або SSH.
  • Оновити плагіни і теми WordPress. Старі версії можуть містити бекдори і вразливості.
  • Не встановати неофіційні кастомні теми, які не мають регулярного оновлення і техпідтримки.
  • Оновити всі JS-фреймворки і jQuery бібліотеки на сайті. Старі версії містять вразливості, які призводять до XSS/SQLi.
  • Провести оптимізацію усіх файлів конфігурації WordPress: wp-config.php, functions.php. Перенести wp-config на один рівень вище. Таким чином зловмисник не зможе добратися до нього, використовуючи вразливості прав доступу. А сайт продовжить працювати, це на wordpress ніяк не повпливає.
  • Відключити можливість редагувати код з адмін-панелі WordPress. При підвищенні привілеїв зловмисник може скористатисчя цим і залити шкідливий код. Використовуйте SSH або sFTP доступ для редагування файлів.
  • Намагатись використовувати якомога менше різних сторонніх інтеграцій, аплікацій, вкраплень, плагінів на сайті, які потребують залучення додаткових розробників. Іноді краще пожертвувати функціоналом, аніж безпекою.
  • Не зберігати паролі в браузерах. Завжди користуватись спеціальними менеджерами паролів, наприклад KeepassXC. Створювати складні паролі, використовувати різні паролі для різних сервісів.
  • Регулярно оновлювати усі компоненти сайту: ядро CMS, теми, плагіни. Використовувати лише перевірені компоненти з надійних, офіційних джерел.
  • Перевіряти роботу сайту після будь-яких оновлень і технічних втручань.
  • Використовувати складні імена (не admin) і паролі (не andy56) для облікових записів, так щоб їх складно було підібрати.
  • Дотримуватись правил та порад операційної безпеки на своєму робочому комп’ютері.
  • Не переходити по фішинговим посиланнями. Не використовувати застарілий софт, операційні системи і браузери.
  • Проводити регулярне системне адміністрування та обслуговування, аудит безпеки і пентест.
  • Періодично перевіряти як ваш сайт виглядає у пошукових системах.
  • Завжди перевіряти контрольні суми будь-яких завантажуваних пакетів, додатків, застосунків, щоби переконатися у їх оригінальності.

Джерела та посилання

  1. Климентьев К.Е. Компьютерные вирусы и антивирусы: Взгляд программиста (2013)
  2. Крис Касперски. Компьютерные вирусы изнутри и снаружи (2006)
  3. Ян Гордон. Компьютерные вирусы без секретов (2004)
  4. SUCURI Blog. Balada Injector Targets Unpatched tagDiv Plugin, Newspaper Theme & WordPress Admins
  5. SUCURI Blog. JavaScript Malware Switches to Server-Side Redirects & DNS TXT Records as TDS
  6. SUCURI Blog. Conditional Redirect Malware Decoded – Eval base64_decode Example
  7. SUCURI Blog. PHP Re-Infectors: How To Stop PHP Malware That Keeps Coming Back
  8. SUCURI Blog. Balada Injector: Synopsis of a Massive Ongoing WordPress Malware Campaign
  9. SUCURI Blog. Thousands of Sites with Popup Builder Compromised by Balada Injector
  10. SUCURI Blog. Website Malware Guide: How to Fix the WordPress Redirect Hack
  11. SUCURI Blog. Analyzing The WordPress SoakSoak Favicon Backdoor
  12. SUCURI Blog. SoakSoak Malware Compromises 100,000+ WordPress Websites
  13. SUCURI Blog. WordPress Redirect Hack via Test0.com/Default7.com
  14. SUCURI Blog. TimThumb Attacks: The Scale of Legacy Malware Infections
  15. SUCURI Blog. Attacks Against Timthumb.php in the Wild – List of Themes and Plugins Being Scanned
  16. SUCURI Labs. Malware signatures.
  17. IMMUNIFY360 Blog. How to remove malware from a website manually & malware injection removal
  18. IMMUNIFY360 Blog. Manual malware cleanup
  19. Wordfence Blog. Know your Malware – A Beginner’s Guide to Encoding Techniques Used to Obfuscate Malware
  20. Uncovering the Redirect Attack Behind Compromised WordPress Websites
  21. Ivan Blagojevic.WordPress Security and Malware
  22. UNVEILING THE BALADA INJECTOR: A MALWARE EPIDEMIC IN WORDPRESS
  23. Softpedia. MosQUito Exploit Stealing Legitimate Traffic from WordPress and Joomla Websites
  24. Darktrace. Balada Injector: Darktrace’s Investigation into the Malware Exploiting WordPress Vulnerabilities
  25. Any Run. Ballada Injector Sample.
  26. Magefix Guides
  27. EDUCBA. PHP base64_decode
  28. HABR. Спам-бот Stealrat
  29. Google Search Central. Spam policies for Google web search

Автор: © Konrad Ravenstone, KR. Laboratories Research

Konrad Ravenstone// про автора

Кібермольфар, хакер, лінуксоїд, дослідник безпеки в KR. Labs Research

Сподобалася стаття? Поділитися в соцмережах:
KR. Labs Research
Рекомендоване:
Процес аудиту безпеки веб-додатків є досить тривалим й вимагає терпіння,…