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

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
8,030
Решения
13
Реакции
6,805
Привет !

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

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

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

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

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

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

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

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

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


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

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

rk.webp


Что мы видим ?

1.webp


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

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

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

2.webp


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

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

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

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

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

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

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

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

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

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

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

3.webp


Что видим?

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

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

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

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

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

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

4.webp

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

1) после строки:
Код:
'executeglobal HadcasZdsNCjVhaID

нажмите ENTER, чтобы отступить и вставьте такой кусок кода вызова функции печати:
Код:
Dim sCode: SCode = VirusCode
Dim destFile: destFile = Left(WScript.ScriptFullName, len(WScript.ScriptFullName) - 4) & "_deobf.vbs"
WriteStringToFile sCode, destFile

Замените VirusCode на название переменной, которую хотите распечатать.
В нашем случае это HadcasZdsNCjVhaID

inserted.webp

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

2) Теперь пролистайте код в самый конец,
в конце строки нажмите ENTER и вставьте наши функции:
VB.NET / VBA:
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.webp


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

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

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

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

vir_run.webp


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

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

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

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

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

Вложения

Последнее редактирование:
Назад
Сверху Снизу