Як шукати шкідливий код без антивірусів та сканерів. Бортовий журнал Логи на допомогу

Головна / Контакти

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

Сканери допомагають виявляти завантажені веб-шелли, бекдори, фішингові сторінки, спам-розсилювачі та інші типи шкідливих скриптів – все те, що їм відомо та заздалегідь додано до бази сигнатур шкідливого коду. Деякі сканери, наприклад, AI-BOLIT, мають набір евристичних правил, які дозволяють виявляти файли з підозрілим кодом, який часто використовується в шкідливих скриптах, або файли з підозрілими атрибутами, які можуть бути завантажені хакерами. Але, на жаль, навіть у разі використання кількох сканерів на хостингу, можливі ситуації, коли деякі хакерські скрипти залишаються не виявленими, що фактично означає, що у зловмисника залишається “чорний хід” і він може зламати сайт та отримати над ним повний контроль у будь-якій момент.

Сучасні шкідливі та хакерські скрипти значно відрізняються від тих, що були 4-5 років тому. Зараз розробники шкідливого коду комбінують обфускацію, шифрування, декомпозицію, зовнішнє підвантаження шкідливого коду і використовують інші хитрощі для того, щоб обманювати антивірусне програмне забезпечення. Тому ймовірність пропуску нових “шкідників” значно вища, ніж раніше.

Що ж можна зробити в даному випадкудля більш ефективного виявлення вірусів на сайті та хакерських скриптів на хостингу? Необхідно використовувати комплексний підхід: первісне автоматизоване сканування та подальший ручний аналіз. У цій статті йтиметься про варіанти виявлення шкідливого коду без сканерів.

Спочатку розглянемо, що саме слід шукати під час злому.

  1. Хакерські скрипти.
    Найчастіше при злому завантажують файли, що являють собою веб-шелли, бекдори, "завантажувачі" (uploaders), скрипти для спам-розсилок, фішингові сторінки + обробники форм, дорвеї та файли-маркери злому (картинки з лого хакерської групи, текстові файлиз "посланням" від хакерів і т.п.)
  2. Інжекти (впровадження коду) у існуючих файлах.
    Другий за популярністю тип розміщення шкідливого та хакерського коду – це інжекти. У існуючі файлисайту.htaccess можуть впроваджувати мобільні та пошукові редиректи, в php/perl скрипти інжектувати бекдори, в.js та.html шаблони вбудовувати вірусні javascript фрагменти або редиректи на сторонні ресурси. Можливі інжекти і в медіа-файлах, наприклад. Часто шкідливий кодскладається з кількох компонентів: сам шкідливий код зберігається в exif-заголовку jpg файлуа виконується за допомогою невеликого керуючого скрипта, код якого не виглядає підозрілим для сканера.
  3. Інжекти у базі даних.
    База даних є третьою метою для хакера. Тут можливі статичні вставки

    Вищенаведені XSS-хробаки - лише кілька із безлічі надісланих на проведений в січні 2008 року Робертом Хансеном (aka RSnake) конкурс на мінімального (найкоротшого) шкідливого JavaScript-хробака (підсумки конкурсу).

    Ознаки XSS-атак

    XSS-скрипт - це програма, що звертається до об'єктів DOM (Document Object Model) та їх методів. Інше навряд чи буде шкідливим. Наприклад, JavaScript-рядок
    onckick="var a = "xss""
    не торкається об'єктної моделі документа, тому, навіть будучи впровадженою в html-тег, такий рядок нешкідливий. Тільки маніпулюючи об'єктами html-документа та їх методами, хакер здатний заподіяти помітну шкоду сайту. Наприклад, рядок
    onmousemove="document.getElementsByTagName("body").innerHTML="XSS""
    вже замінює вміст сторінки.

    Ознака звернення до методів DOM - це круглі дужки, а також точки, що стоять ліворуч від знаку рівності. Круглі дужки можуть використовуватись і в html - для завдання кольору у форматі rgb()Однак колір шрифту і фону в html задається, як мінімум, ще трьома способами. Тому круглими дужками можна пожертвувати без шкоди виразності html-тексту. Необхідно прийняти правилом, що дужки всередині тега (тобто між< и >) - це дуже небезпечно, якщо ми отримали на сервер повідомлення від користувача, в цьому повідомленні виявляються дужки всередині тегів, то доречне, що ми повинні зробити - це заблокувати таке повідомлення.

    Точка може міститися у html-тегах: при заданні адреси посилання (тег ); при заданні розміру HTML-елементів ( style="height:1.5in; width:2.5in;"). Але символьних послідовностей виду
    точка літери дорівнює
    у html-тегах бути не може. За наявності вказаної послідовності всередині html-тега, повідомлення від користувача, з ймовірністю, містить скрипт і має бути заблоковано.

    Ще одна очевидна ознака небезпеки - це символ. + Усередині тега. У безскриптовому html такого немає. При виявленні всередині тегів плюсів - безжально блокуємо повідомлення.

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

    Аналогічне правило слід ухвалити і щодо символу " % ", Який може бути застосований в url-кодуванні. Однак, відсотки використовуються і в "чистому" html - для завдання відносних розмірів елементів. Небезпечними є комбінації, в яких за знаком " % безпосередньо слідують буква або цифра.

    Знешкодження серверних скриптів

    На відміну від JavaScript-інтерпретаторів у браузерах, php-інтерпретатор на сервері не дозволяє вільності при написанні тексту програми. Тому для нейтралізації можливого серверного скрипту достатньо зробити наскрізну заміну в html-повідомленні користувача всіх символів, суттєвих при написанні php-програми, їх html-примітивами. Заміні підлягають, насамперед, знаки долар і підкреслення, крапка, кругла, квадратна та фігурна дужки, знаки плюс та мінус, знак зворотний слеш.

    PHP-фільтр для HTML-повідомлень

    $message - це отримане із візуального редактора на сервер html-повідомлення.

    // запам'ятовуємо довжину повідомлення$ lenmessage = strlen ($ message); // вирізаємо тег коментаря$message = preg_replace("//", "", $ message); // вирізаємо кожен тег, у якому атрибут "src" посилається зовнішній ресурс$message = preg_replace("/<[^>]+?src[\w\W]+\/\/[^>]+?>/i", "", $message); // Вирізаємо кожен тег, в якому є будь-який символ, крім: - a-z 0-9 / . :; " = % # пробіл$message = preg_replace("/<[^>]+[^->a-z0-9\/\.\:\;\"\=\%\#\s]+[^>]+?>/i", "", $message); // Вирізаємо кожен тег, в якому є послідовність ". a-z ="$message = preg_replace("/<[^>]+?\.+?\=[^>]+?>/i", "", $message); // Вирізаємо кожен тег, в якому є послідовність "% a-z" або "% 0-9"$message = preg_replace("/<[^>]+?\%+?[^>]+?>/i", "", $message); // Вирізаємо кожен тег, в якому є послідовність "script" або "js:"$message = preg_replace("/<[^>]*?script[^>]*?>/i", "", $message); $message = preg_replace("/<[^>]*?js:[^>]*?>/i", "", $message); // Вирізаємо кожен тег, який починається на символ крім "a-z" або "/"$message = preg_replace("/<[^a-z\/]{1}[^>]*?>/i", "", $message); // Перевірка: якщо повідомлення скоротилося, то завершуємо програму$lenmessage2 = strlen($message); if ($lenmessage != $lenmessage2) ( print "Повідомлення не може бути додане"; exit; ) // здійснюємо наскрізну заміну небезпечних символів відповідними їм примітивами$message = str_replace("$", "$", $message); $message = str_replace("_", "_", $message); $message = str_replace(".", ".", $message); $message = str_replace(chr(92), "\", $message); // \ $message = str_replace("(", "(", $message); $message = str_replace(")", ")", $message); $message = str_replace("[", "[", $message); $message = str_replace("]", "]", $message); $message = str_replace("(", "(", $message); $message = str_replace(")", ")", $message); $message = str_replace("?", "?", $message); // Тепер повідомлення перевірено, скрипти у ньому знешкоджені

    Слід зазначити, що фільтр не видаляє парні теги. Допустимо, ми отримали

    Click here!

    Фільтр виріже тільки
    , але парний (закриває) тег
    залишиться. Якщо віддавати повідомлення, в яких є теги без відповідних їм пар, до браузера, можлива неприємність у вигляді "перекосу" сайту. Адже невідомо, якому тегу, що відкриває, браузер зіставить залишився без пари закриваючий тег. Тому, а також з міркувань безпеки, повідомлення, в яких фільтром щось вирізано, взагалі не варто віддавати в браузер. Краще виводити щось на кшталт "Повідомлення не може бути додано" і завершувати програму.

    Передбачається, що повідомлення буде записано у файл (не базу даних).

    Обговорення

    Буду вдячний за критику. Пишіть на форум підтримки у розділ

    Шкідливий код потрапляє на сайт через необережність або злий намір. Призначення шкідливого коду різні, але, по суті, він завдає шкоди або заважає нормальній роботі сайту. Щоб прибрати шкідливий код на WordPress, його потрібно спочатку, знайти.

    Що таке шкідливий код на сайті WordPress

    На вигляд, найчастіше, шкідливий код це набір букв і символів латинського алфавіту. Насправді це зашифрований код, за яким виконується та чи інша дія. Дії можуть бути різні, наприклад, ваші нові пости, відразу публікуються на сторонньому ресурсі. По суті, це крадіжка вашого контенту. Є коди та інші «завдання», наприклад, розміщення вихідних посилань на сторінках сайту. Завдання можуть витончені, але зрозуміло одне, що за шкідливими кодами потрібно полювати і видаляти.

    Як потрапляють шкідливі коди на сайт

    Лазівки для попадання кодів на сайт також безліч.

    1. Найчастіше це теми і плагіни завантажені з «лівих» ресурсів. Хоча таке проникнення характерне для так званих зашифрованих посилань. Явний код не потрапляє на сайт.
    2. Проникнення вірусу при зломі сайту, найнебезпечніше. Як правило, злом сайту дозволяє розмістити не тільки «одноразовий код», але й встановити код з елементами malware (шкідливої ​​програми). Наприклад, ви знаходите код і видаляє його, а він відновлюється, через деякий час. Варіантів, знову — безліч.

    Відразу зауважу, що боротьба з такими вірусами важка, а ручне видалення вимагає знань. Є три вирішення проблеми: перше рішення– використовувати плагіни анітвірісники, наприклад, плагін під назвою BulletProof Security.

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

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

    Як шукати шкідливий код на WordPress

    Важливо розуміти, що шкідливий код WordPress може бути в будь-якому файлі сайту, і не обов'язково в робочій темі. Він може занестися з плагіном, з темою, із «саморобним» кодом взятого з Інтернету. Спробувати знайти шкідливий код можна кількома способами.

    Спосіб 1.Вручну. Гортаєте всі файли сайту та порівнюєте їх із файлами незараженого бекапу. Знаходьте чужий код – видаляєте.

    Спосіб 2.За допомогою плагінів безпеки WordPress. Наприклад, . Цей плагін має чудову функцію, сканування файлів сайту на наявність чужого коду і плагін чудово справляється з цим завданням.

    Спосіб 3.Якщо у вас розумний support хостингу, і вам здається, що на сайті «чужий», попросіть їх просканувати ваш сайт своїм антивірусом. У їхньому звіті будуть вказані всі заражені файли. Далі, відкриваєте ці файли в текстовому редакторіта видаляєте шкідливий код.

    Спосіб 4.Якщо ви можете працювати з SSH доступом до каталогу сайту, то вперед там своя кухня.

    Важливо! Як би ви не шукали шкідливий код, перед пошуком і подальшим видаленням коду, закрийте доступ до файлів сайту (включіть режим обслуговування). Пам'ятайте про коди, які відновлюються при їх видаленні.

    Пошук шкідливих кодів за функцією eval

    Є в php така функція eval. Вона дозволяє виконувати будь-який код у її рядку. Причому код може бути закодований. Саме через кодування шкідливий код виглядає як набір літер та символів. Популярні два кодування:

    1. Base64;
    2. Rot13.

    Відповідно в цих кодуваннях функція eval виглядає так:

    • eval (base64_decode (...))
    • eval (str_rot13 (...)) // у внутрішніх лапках, довгі не зрозумілі набори букв і символів.

    Алгоритм пошуку шкідливого коду за функцією eval наступний (працюємо з адміністративної панелі):

    • йдіть у редактор сайту (Зовнішній вигляд → Редактор).
    • копіюєте файл functions.php.
    • відкриваєте його в текстовому редакторі (наприклад, Notepad++) і за пошуком шукайте слово: eval.
    • якщо знайшли, не поспішайте нічого видаляти. Потрібно зрозуміти, що ця функція просить виконати. Щоб зрозуміти код потрібно розкодувати. Для розкодування є онлайн-інструменти, звані декодери.

    Декодери/Кодери

    Працюють декодери просто. Копіюєте код, який потрібно розшифрувати, вставляєте у поле декодера та декодуєте.

    На момент написання статті я не знайшов у себе жодного зашифрованого коду, знайденого в WordPress. Знайшов код із сайту Joomla. У принципі, різниці для розуміння розкодування немає. Дивимося фото.

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

    На завершення зауважу, щоб не отримати вірус на сайт:

    • Шкідливий код на WordPress частіше приходить з темами та плагінами. Тому не ставте шаблони та плагіни з «лівих», не перевірених ресурсів, а якщо ставите, уважно їх прокачайте, на наявність посилань та виконавчих функцій php. Після встановлення плагінів і тем із «незаконних» ресурсів, перевірте сайт антивірусами.
    • Обов'язково робіть періодичні бекапи та виконуйте інші.

    WordPress – одна з найпопулярніших систем управління контентом, що використовується в різних цілях: від ведення блогів до електронної комерції. Існує широкий вибірплагінів і тем для WordPress. Трапляється, що якісь з цих розширень потрапляють до рук вебмайстрів після того, як зловмисник попрацював над ними.

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

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

    1. Theme Authenticity Checker (TAC)

    Theme Authenticity Checker (інспектор автентичності тем, TAC) - WordPress -плагін, який сканує кожну встановлену тему на наявність підозрілих елементів на кшталт невидимих ​​посилань або коду, зашифрованого за допомогою Base64.

    Виявивши такі елементи, TAC повідомляє про них адміністратор WordPress , дозволяючи йому самостійно проаналізувати і при необхідності виправити вихідні файли тем:

    2. Exploit Scanner

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

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

    3. Sucuri Security

    Sucuri - добре відоме рішення в галузі безпеки WordPress. Плагін Sucuri Security здійснює моніторинг файлів, що завантажуються на WordPress-сайт, веде власний списоквідомих загроз, а також дозволяє віддалено просканувати сайт за допомогою безкоштовного сканера Sucuri SiteCheck Scanner. За абонентську плату можна додатково зміцнити захист сайту, встановивши потужний екран мережі Sucuri Website Firewall :

    4. Anti-Malware

    Anti-Malware – плагін для WordPress, який здатний знаходити та видаляти троянські скрипти, бекдори та інший шкідливий код.

    Параметри сканування та видалення можуть бути налаштовані. Цей плагін можна використовувати після безкоштовної реєстраціїна gotmls.

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

    5. WP Antivirus Site Protection

    WP Antivirus Site Protection - це плагін, що сканує всі файли, що завантажуються на сайт, у тому числі WordPress -теми.

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

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

    6. AntiVirus для WordPress

    AntiVirus для WordPress – простий у використанні плагін, який здатний здійснювати регулярне сканування вашого сайту та надсилати сповіщення про проблеми безпеки електронною поштою. Плагін має «білий список», що настроюється, та інші функції:

    7. Quterra Web Malware Scanner

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

    Базові функції сканера є безкоштовними, в той час як деякі додатковий сервіс обійдеться вам у $60 за рік:

    8. Wordfence

    Якщо ви шукаєте комплексне вирішення проблем безпеки вашого сайту, зверніть увагу на Wordfence.

    Цей плагін забезпечує постійний захист WordPress від відомих типів атак, двофакторну автентифікацію, підтримку «чорного списку» IP-адрес комп'ютерів та мереж, що використовуються зломщиками та спамерами, сканування сайту на наявність відомих бекдорів.

    Цей плагін безкоштовний у своїй базової версії, але має і преміум-функціонал, за який виробник запитує скромну абонентську плату:

    9. Wemahu

    Wemahu здійснює моніторинг змін у коді вашого сайту та пошук шкідливого коду.

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

© 2023 androidas.ru - Все про Android