Cleantalk Malware Scanner - Эвристический Анализ Кода

Мы уже говорили о запуске службы безопасности для WordPress в предыдущая статья .

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

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

Найти вредоносный код можно самостоятельно, но это большая работа, и большинство пользователей WordPress не обладают необходимыми навыками для поиска и удаления ненужных строк кода.

Зачастую авторы вредоносного кода маскируют его, что затрудняет его идентификацию по сигнатурам.

Сам вредоносный код может располагаться в любом месте сайта, например, обфусцированный PHP-код в файле logo.png, а сам код вызывается одной невидимой строкой в index.php. Поэтому использование плагинов для поиска вредоносного кода предпочтительнее.

CleanTalk при первом сканировании сканирует все файлы ядра, плагинов и тем WordPress. При повторном сканировании удаляются только те файлы, которые были изменены с момента последнего сканирования.

Это экономит ресурсы и увеличивает скорость сканирования.



Как работает эвристический анализ

Одним из основных недостатков эвристического анализа является то, что он достаточно медленный, поэтому мы используем его только тогда, когда это действительно необходимо.

Первым делом разбиваем исходный код на токены (минимальная языковая конструкция) и удаляем всё лишнее:

  1. Космические персонажи.

  2. Комментарии различных типов.

  3. Не PHP-код (вне теги)
Далее рекурсивно упрощаем код до тех пор, пока не останется «сложных структур»:
  1. Выполняем конкатенацию строк.

  2. Подстановка переменных в переменные.

  3. И так далее
Также в процессе упрощения кода мы отслеживаем происхождение переменных и многое другое.

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

Очень важно, что мы получаем код не в виде строки, а в виде лексем.

Таким образом, мы знаем, где находится строковый токен с искомым текстом, а где токен функции.

В смысле поиска «плохого дизайна» eval для нас есть разница:

  
   

<Эphp echo 'eval("echo \"some\"")'; ?>

— в этом случае токена T_EVAL не будет, будет токен T_CONSTANT_ENCAPSED_STRING 'eval("echo \"eval\"")'

<Эphp eval('echo "some"'); ?>

- и оно будет здесь.

И именно этот вариант мы откроем.

Мы ищем такие структуры и разбиваем их на уровни критичности:

  1. Критический:
    • оценивать
    • включать* и требовать*
      • с плохим расширением файла
      • несуществующие файлы (будут удалены в будущих версиях)
      • подключение удаленных файлов
  2. Опасный
    • система
    • пройти
    • proc_open
    • руководитель
    • включать* и требовать*
      • с оператором подавления ошибок (будет удалено в будущих версиях)
      • с переменными, зависящими от POST или GET.
  3. Подозрительный
    • base64_encode
    • str_rot13
    • системный журнал
  4. И другие.

Мы постоянно совершенствуем этот анализ: добавляем новые конструкции поиска, уменьшаем количество ложных срабатываний и оптимизируем упрощение кода.

Планируется научить его обнаруживать и декодировать строки, закодированные в URL, BASE64 и других.

Сам плагин доступен в Каталог WordPress .

Теги: #wordpress #плагины WordPress #CMS #wordpress

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.