Интересуясь информационной безопасностью, я часто имею дело с зараженными сайтами, содержащими фреймы на эксплоиты, шифрованный javascript, запутанные редиректы… Для облегчения работы я использую open source программу Malzilla. К сожалению на русских просторах интернета очень мало информации об этой тулзе, поэтому я хочу перевести официальный мануал к ней. Всего в нем 6 частей, ниже следует перевод первой из них.
Давайте взглянем на следующую картинку:
Это содержимое страницы, ссылка на которую была прислана мне вместе со спамом.
Чтобы получить прямые ссылки на вредоносное ПО, мы будем иметь дело с 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 на скриншоте не что иное как прямая ссылка на зараженный файл!
- Сайт проекта: malzilla.sourceforge.net
- Загрузка: malzilla.sourceforge.net/downloads.html
Часть 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 на скриншоте не что иное как прямая ссылка на зараженный файл!