В рамках моей работы исследователем безопасности в Cybereason мне пришлось провести анализ вредоносных программ для Windows. Я анализировал образец вредоносной программы, использующей хост скриптов Windows на одном из этапов своего заражения. Этим образцом вредоносного ПО является JS_POWMET, который также был проанализирован TrendMicro.

На этом этапе вредоносной программы (этап 2) использовался скриптлет Windows, написанный на JScript, который был загружен regsvr32 как скрытый способ сбросить двоичные файлы на машину.

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

Поскольку у меня нет опыта отладки JScript (такие языки сценариев мне никогда не нравились), я начал с поиска в Google подходящих отладчиков JScript. К сожалению, большинство результатов, которые я получил, указывали на дорогие и чрезмерно популярные продукты, которые мне действительно не нужны. Затем я решил попробовать использовать собственный отладчик Chrome.

Поскольку Chrome является веб-браузером, он не будет отлаживать этот скрипт как есть, и нужно было сделать небольшую адаптацию - поместите этот скрипт в html-файл, как если бы это был обычный фрагмент javascript!

Поскольку скриптлет заключен в XML-файл, нам нужно начать с удаления всех XML-тегов и размещения вместо них HTML-тегов:

Важное примечание. Фактический вредоносный код внутри исходного XML-файла был заключен в тег CDATA, что означает, что он не интерпретируется как часть XML-файла. Поскольку сейчас мы конвертируем этот файл в обычный HTML-файл, эти теги тоже должны исчезнуть. В отличие от других тегов XML, тег CDATA имеет другой синтаксис, который выглядит следующим образом:

После того, как мы очистили файл от всех остатков XML, он должен выглядеть так:

На этом этапе мы можем сохранить этот файл как файл HTML, открыть Chrome (НА ВМ ИЛИ НА ОТДЕЛЬНОМ МАШИНЕ, ПРЕДНАЗНАЧЕННОЙ ДЛЯ АНАЛИЗА ВРЕДОНОСНОГО ПО)

Как видите, когда мы открываем файл в Chrome, мы ничего не получаем от пустой страницы, потому что на этой странице нет ничего, что предполагало бы отображать какой-либо текст (это не ваш обычный HTML-файл, помните?) Но какой бы JScript-код in там на самом деле выполняется внутри браузера.

Теперь давайте откроем Инструменты разработчика Chrome (используйте Ctrl + Shift + I или Cmd + Opt + I на Mac) и посмотрим, что у нас есть:

Как видно на скриншоте, теперь открыты инструменты разработчика. Теперь давайте щелкнем и свернем блок «head» (да, хотя мы не создали блок «head» в нашем html, хром делает вид, что он есть. После того, как мы свернем блок head, мы увидим, что он также блок скрипта - здесь находится наш вредоносный блок JScript:

Давайте также щелкнем и свернем блок скрипта:

Чтобы действительно начать процесс отладки, нам нужно теперь переключиться со средства просмотра элементов на средство просмотра исходных текстов, нажав кнопку «Источники»:

Поскольку этот сценарий запутан, Chrome по какой-то причине не отображает его правильно (перенос слов, похоже, нарушен), однако Chrome достаточно умен, чтобы предложить нам «красиво распечатать» код:

Мы можем включить красивую печать, нажав кнопку фигурных скобок в нижней части экрана:

И вот, теперь у нас есть красивый отладчик:

Установить точку останова так же просто, как щелкнуть номер строки, которую вы хотите отладить, и обновить страницу.

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

Я надеюсь, что вы нашли этот пост информативным. Удачной отладки!

Не стесняйтесь обращаться к twitter: @ 0xAmit