Как снять шифрование тела VBscript

Тема в разделе "Борьба с типовыми зловредами", создана пользователем Dragokas, 11 июл 2014.

  1. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.307
    Привет !

    В этой теме я покажу как не имея знаний в области языков IT
    расшифровать тело VBScript-a для получения возможности его дальнейшего анализа.

    Ремарка:
    Есть множество способов запутать код.
    Но способ, приведенный ниже - один из самых распространенных.​

    1. Для начала обзаведитесь чем-нибудь по приличней, чем блокнот Windows, например
    Notepad++ или AkelPad.
    Я буду, как всегда, работать в мод. версии AkelPad с особой темой подсветки.
    Все это только ради удобства и чтобы быстрее ориентироваться.

    2. Запомните, с вирусами работаем только в виртуальной машине (например, Oracle VirtualBox или VMware Workstation) или песочнице (например, SandBoxie).

    Те же люди, кто не боится риска и у кого крепкие сами знаете что ;)
    могут это делать вне виртуалки. Но ответственность за убытки в этом случае лежит только на Вас.

    Я например, как раз буду работать на своей основной системе, чего Вам не рекомендую.

    3. Теперь скачиваем сам демо-вирус Чернобыль.rar.
    Пароль: virus

    Распаковка должна производится с отключенным антивирусом.
    (тем не менее данный демо-вирус по понятным причинам не детектируется ни одним антивирусом)
    ______________________________________

    Article: Прелесть скриптов с шифрованным (кодированным) телом в том,
    что алгоритм и ключ к их дешифровке находится внутри них самих.


    А поэтому самый простой способ их расшифровать - запустить вирус.
    Еще не испугались?
    Значит именно это мы сейчас и будем делать :D

    Но сначала, залезем внутрь файла VBS. Правая кнопка мыши по файлу => Изменить.

    rk.PNG

    Что мы видим ?

    ч1.png

    А ничего !!! Пусто ! :eek:

    Где же оно, спросил доктор Ватсон ?

    Не беспокойтесь, сударь, все предельно просто, ответил Холмс,
    и запустил свой AkelPad, указывая доктору на номер строки:

    ч2.png

    Итак, что имеем перед глазами ?
    А вообщем, какая разница ?
    Мы же все равно ничего не понимаем в VBScript (по условиям этой статьи). :)

    Вот эти белые буквы - djKFAFksZASakdsdakoincdCD - переменная,
    которую с целью запутать код переименовали во что-то непонятное.

    Называется - обфускация.

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

    Здесь переменная = огромному куску непонятных символов.
    Вот это и есть основное тело скрипта. Оно зашифровано.


    Немного теории:

    Чтобы вирус мог выполнить зашифрованный код внутри себя,
    ему сначала требуется это тело расшифровать и либо:

    1) куда-то распаковать;
    либо
    2) запустить сразу на исполнение.

    Второй метод наиболее часто используют.

    За выполнение в памяти кода, сохраненного в переменной,
    отвечает команда execute а также executeglobal

    Откроем поиск в редакторе по нашему файлу Ctrl + F либо Правка -> Найти.
    и вводим фразу executeglobal

    ч3.png

    Что видим?

    Оператор executeglobal, который выполняет код, находящийся в переменной HadcasZdsNCjVhaID

    Вот как раз, что хранится в этой переменной нам и нужно узнать,
    а еще лучше распечатать ее в файл.

    Давайте это сделаем.

    Но сначала обезопасим себя:
    - нужно изолировать эту расшифрованную часть вредоносного кода
    от выполнения на нашей машине.

    Для этого вставляем знак комментария ' (кавычка) перед командой executeglobal.
    Кто не знает: ' - знак кавычки находится под буквой "э", если переключиться на английский язык.

    Должно получится так:

    ч4.png
    Теперь добавляем код, который распечатает нам исходник:

    1) после строки:
    Код (Text):
    'executeglobal HadcasZdsNCjVhaID
    нажмите ENTER, чтобы отступить и вставьте такой кусок кода вызова функции печати:
    Код (Text):
    Dim sCode: SCode = VirusCode
    Dim destFile: destFile = Left(WScript.ScriptFullName, len(WScript.ScriptFullName) - 4) & "_deobf.vbs"
    WriteStringToFile sCode, destFile
    Замените VirusCode на название переменной, которую хотите распечатать.
    В нашем случае это HadcasZdsNCjVhaID

    inserted.png
    Article: Убедитесь поиском, что во вредоносном коде не используются наши переменные
    sCode и destFile. Иначе, их придется переименовать.

    2) Теперь пролистайте код в самый конец,
    в конце строки нажмите ENTER и вставьте наши функции:
    Код (vb.net):
    Function WriteStringToFile(varStr, file)
        With CreateObject("ADODB.Stream")
            .Type = 1: .Open: .Position = 0
            .Write StringToByteArray(varStr)
            .SaveToFile file, 2: .Close
        end with
    End function

    Function StringToByteArray(sText)
        Dim BS: Set BS = CreateObject("ADODB.Stream")
        BS.Type = 1 'adTypeBinary
        BS.Open
        Dim TS: Set TS = CreateObject("ADODB.Stream")
        With TS
            .Type = 2: .Open: .WriteText sText: .Position = 0: .CopyTo BS: .Close
        End With
        BS.Position = 0: StringToByteArray = BS.Read()
        BS.Close: Set BS = Nothing: Set TS = Nothing
    End Function
    ins2.png

    3) Сохраните файл с расширением VBS (если не меняли, оно так и есть).

    4) Запустите этот модифицированный вирусный файл (можно прямо из редактора Akelpad - Ctrl + F5)

    Рядом будет создан одноименный файл с постфиксом _deobf.vbs

    Вот и наш расшифрованный партизан. :)

    vir_run.png

    _________________________________
    Пару слов о безопасности:

    Конечно же, перед тем как запускать неизвестный код описанным способом,
    я просматриваю все команды распаковщика. Они не зашифрованы.

    Предмет моих поисков - любые вредоносные команды:
    - работа с сервером;
    - скачивание файлов;
    - модификация и удаление файлов.

    Если ничего этого нет, я могу спокойно выполнять этот скрипт,
    изолировав команду execute / executeglobal.

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

    Вложения:

    • h01dw.rar
      Размер файла:
      3,1 КБ
      Просмотров:
      31
    Последнее редактирование: 11 июл 2014
    tzrb, Alex1983, Phoenix и 6 другим нравится это.

Поделиться этой страницей