Вниз по RogueAV и Blackhat SEO кроличья нора (часть 2)

В этом дневнике я продолжу анализ PHP-скрипта, который RogueAV используют на своих веб-серверах. Вы можете прочитать первый дневник на http://isc.sans.edu/diary.html?storyid=9085 ,

Теперь, когда мы понимаем, как работает отравление поисковых систем, мы можем увидеть некоторые особенности PHP-скрипта, который используют злоумышленники. Как я сказал в первом вопросе, сценарий был запутан, но все еще можно было понять, что они делают. Фрагменты кода, которые я буду показывать в этом и следующих дневниках, были на самом деле «украшены» и их было легче читать.

Заражение всего сайта

После взлома сайта злоумышленники устанавливают свой сценарий в любой каталог, предпочтительно в каталог, к которому нет прямого доступа из Интернета, поскольку им не требуется прямой доступ к нему.
Следующим шагом злоумышленников является заражение всех (и я имею в виду все!) Файлов PHP на скомпрометированном веб-сайте. Если это общий веб-сайт, а права доступа настроены неправильно, они фактически заразят абсолютно все веб-сайты, размещенные на этом компьютере.

Заражение состоит из вставки одной строки в начале каждого файла PHP, как показано ниже:

Заражение состоит из вставки одной строки в начале каждого файла PHP, как показано ниже:

Эта строка (которую я намеренно сократил) содержит небольшой PHP-скрипт, который просто закодирован в Base64. Таким образом, при доступе к любой веб-странице на скомпрометированном веб-сайте сценарий PHP атакующего запускается первым! Ниже приведен расшифрованный скрипт:

Ниже приведен расшифрованный скрипт:

Декодированная часть показывает, что делают злоумышленники:

  1. Если глобальная переменная msfn не установлена ​​и существует функция ob_start (это стандартная функция PHP), выполняется следующий код.
  2. Глобальная переменная настроена так, чтобы указывать на основной скрипт PHP (тот, о котором мы говорим - в этом примере он называется style.css.php). Обратите внимание, что он может находиться в любом месте на диске, если к нему имеет доступ процесс Apache.
  3. Если файл существует, он включен. Это приводит к выполнению основного сценария PHP и выполнению основной обработки. Я расскажу об этом процессе выполнения в следующих дневниках.
  4. Если основной PHP-скрипт работает правильно, он определит функции gml и dgobh, чтобы можно было выполнить последнюю строку. Это та часть, которая фактически отображает исходные веб-сайты и, если необходимо, добавляет ссылки на поисковые системы - я рассмотрел это в предыдущем дневнике.

Таким образом, злоумышленники позаботились о том, чтобы их скрипт выполнялся при каждом обращении к другому скрипту PHP на взломанном веб-сайте. Это дает им неограниченную свободу в использовании различных URL-адресов для отравления поисковых систем, но для перенаправления пользователей на сайты, обслуживающие RogueAV (или любое другое вредоносное ПО). Очистка веб-сайта после такого заражения не слишком сложна - все, что вам нужно сделать, это удалить первую строку, но, как и при любом заражении или компрометации, я бы порекомендовал вам восстанавливать файлы из резервных копий (вы делаете их, верно?).

Если вам интересно, как злоумышленники вставляют эту строку в каждый отдельный файл PHP, ответ прост - об этом позаботится специальная функция в главном сценарии PHP. Он рекурсивно обходит все каталоги, находит любые файлы PHP и, если он может их изменить, вставляет строку в начале. После того, как злоумышленники установят основной скрипт PHP (style.css.php), все, что ему нужно сделать, это вызвать скрипт с правильным параметром, как вы можете видеть на скриншоте ниже:

php), все, что ему нужно сделать, это вызвать скрипт с правильным параметром, как вы можете видеть на скриншоте ниже:

Этот интерфейс защищен паролем, поэтому вы не можете получить к нему прямой доступ без предварительной аутентификации. Для любопытных есть также функция, которая очищает весь сайт (параметр dgr = 1, возможно, для удаления), но доступ к нему также защищен паролем.

Боишься других нападающих?

Мастер PHP-скрипт состоит из десятков функций, которые выполняют различные задачи. Сегодня я расскажу о первых двух строчках, которые исполняются, поскольку они относительно интересны. Вы можете увидеть код PHP ниже:

Вы можете увидеть код PHP ниже:

Этот код делает что-то интересное. Он принимает содержимое суперглобальных $ _GET, $ _POST и $ _COOKIE, которые содержат параметры запроса и (конечно) содержимое cookie. Затем код немного перетасовывает содержимое, преобразует его во все строчные буквы и выполняет для него urldecode. Это нормализует любой контент (например,% 61 будет преобразован в нижний регистр a).

Наконец, код сравнивает это содержимое с любой строкой в ​​строке 12: «base64», «user_pass», «substring (», «or id =», «eval (», «nutch», «_ users», «union») all ',' mid ('. Если какое-либо из этих совпадений совпадает, сценарий немедленно завершается!

Это интересно, так как кажется, что автор сценария попытался реализовать очень простую систему обнаружения вторжений - обратите внимание, как она содержит строки SQL-инъекции или части кода PHP. Это не имеет большого смысла (особенно сопоставление SQL-инъекций), так как, например, основной сценарий PHP вообще не использует базу данных, поэтому мне интересно, была ли она частью другой программы, которую автор только что использовал.

И этим мы подходим к концу второго дневника. В следующем дневнике я расскажу о некоторых расширенных функциях PHP-скрипта, таких как автообновление, а также интерфейс администратора. Конечно, вы всегда можете связаться с нами, если у вас есть какие-либо вопросы.

-
Боян
INFIGO IS

Я буду учить следующее: Тестирование проникновения веб-приложений и этический взлом - SANS Эр-Рияд, апрель 2019 г.

Html?
Вы делаете их, верно?
Боишься других нападающих?