Как стать автором
Обновить

Вскрываем эксплоиты, шифрованный javascript, вредоносные iframe — русский мануал Malzilla

Время на прочтение3 мин
Количество просмотров5.6K
Интересуясь информационной безопасностью, я часто имею дело с зараженными сайтами, содержащими фреймы на эксплоиты, шифрованный javascript, запутанные редиректы… Для облегчения работы я использую open source программу Malzilla. К сожалению на русских просторах интернета очень мало информации об этой тулзе, поэтому я хочу перевести официальный мануал к ней. Всего в нем 6 частей, ниже следует перевод первой из них.



Часть 1



Давайте взглянем на следующую картинку:


Это содержимое страницы, ссылка на которую была прислана мне вместе со спамом.
Чтобы получить прямые ссылки на вредоносное ПО, мы будем иметь дело с JavaScript функцией: unescape(). Это вовсе не проблема, нюанс
лишь в том, что не все данные переданные этой функции  должны быть ею обработанными. Так как мы лично займемся этим, нужно
позаботиться о том, какая часть должна быть пропущена а какая нет.
    Нажмите кнопку "Send script to Decoder", теперь в активной вкладке Decode нажмите "Run script":


В нижней панели мы можем увидеть результат — для загрузки вредоносных файлов используется VBScript.
В следующем примере мы имеем дело со скриптом, который пишет данные прямо в бинарный файл, минуя загрузку.


Так как он написан на VBScript, движок SpiderMonkey не в состоянии его от интерпретировать, поэтому мы воспользуемся другими функциями Malzilla.
Во-первых нужно скопировать исходный текст скрипта во вкладку "Misc Decoders tab":


Если вы взглянете на первую картинку из текущего примера, вы заметите что MZ сигнатура записывается в файл на первом шаге, а все остальные данные на втором. Мы же сделаем обе операции за дин шаг. На предыдущем скриншоте я добавил \u4D5A в начало кода, что являеться словом MZ в ASCII кодировке. Теперь нужно выставить значение "Override default delimiter" в \u, поскольку следующая функция будет ожидать значение %u, но не \u.
После нажатия кнопки "UCS2 To Hex" мы получим такой результат:


Теперь нажмем "Hex To File" и сохраним результат на наш жесткий диск.
Результат проверки файла на VirusTotal.com:


Следующий пример использует более сложные преобразования и математику, функции для расшифровки данных.
Функция eval() используется для выполнения результата расшифровки, коим также является скрипт:




;

Мы изменим eval() на функцию document.write(), для того чтобы увидеть исходный код скрипта а не выполнить его. Результатом будет VBScript:


Как вы видите, мы имеем последовательность UNICODE кодов которые нужно преобразовать.
Давайте скопируем этот код во вкладку "Misc Decodres tab" и воспользуемся функцией Decode UCS2:





Результатом преобразования будет шеллкод, а также мы видим адрес загрузки вредоносного файла.

Следующий пример немного сложнее, чем в предыдущие.
Тут используется скрипт известный как dF (после названия переменных часто используется в этом сценарии, который меняется на zX в нашем примере):


После нажатия Send Script To Decoder и выполнения скрипта мы увидим следующее:


Лишь первая часть скрипта расшифрована (выделено на скриншоте). Теперь выделите у себя расшифрованный скрипт (без тэгов <script>):



И вставьте его поверх оригинального скрипта, в ту часть которая теперь расшифрована:



Запустим весь скрипт еще раз и взглянем на результат:


Очистите всю верхнюю вкладку с оригинальным скриптом и вставьте туда полученный код:



Опять нажимает Run Script:


Прокрутив чуток вниз мы увидим уже знакомые UNICODE символы:


Расшифровываем их как показано в предыдущем примере:


 В результате у нас еще один шеллкод с прямой ссылкой на малвару.

Напоследок еще один пример использования:



Расшифровка такого кода вручную займет очень много времени и сил… В Malzilla вы можете просто нажав Send Script To Decoder отправить скрипт на вкладку Decode, выполнить его, и получить результат:


URL на скриншоте не что иное как прямая ссылка на зараженный файл!
Теги:
Хабы:
+75
Комментарии19

Публикации

Истории

Работа

Ближайшие события