- Сообщения
- 8,030
- Решения
- 13
- Реакции
- 6,805
Привет !
В этой теме я покажу как не имея знаний в области языков IT
расшифровать тело VBScript-a для получения возможности его дальнейшего анализа.
1. Для начала обзаведитесь чем-нибудь по приличней, чем блокнот Windows, например
Notepad++ или AkelPad.
Я буду, как всегда, работать в мод. версии AkelPad с особой темой подсветки.
Все это только ради удобства и чтобы быстрее ориентироваться.
2. Запомните, с вирусами работаем только в виртуальной машине (например, Oracle VirtualBox или VMware Workstation) или песочнице (например, SandBoxie).
Те же люди, кто не боится риска и у кого крепкие сами знаете что
могут это делать вне виртуалки. Но ответственность за убытки в этом случае лежит только на Вас.
Я например, как раз буду работать на своей основной системе, чего Вам не рекомендую.
3. Теперь скачиваем сам демо-вирус Чернобыль.rar.
Пароль: virus
Распаковка должна производится с отключенным антивирусом.
(тем не менее данный демо-вирус по понятным причинам не детектируется ни одним антивирусом)
______________________________________
А поэтому самый простой способ их расшифровать - запустить вирус.
Еще не испугались?
Значит именно это мы сейчас и будем делать
Но сначала, залезем внутрь файла VBS. Правая кнопка мыши по файлу => Изменить.
Что мы видим ?
А ничего !!! Пусто !
Где же оно, спросил доктор Ватсон ?
Не беспокойтесь, сударь, все предельно просто, ответил Холмс,
и запустил свой AkelPad, указывая доктору на номер строки:
Итак, что имеем перед глазами ?
А вообщем, какая разница ?
Мы же все равно ничего не понимаем в VBScript (по условиям этой статьи).
Немного теории:
Чтобы вирус мог выполнить зашифрованный код внутри себя,
ему сначала требуется это тело расшифровать и либо:
1) куда-то распаковать;
либо
2) запустить сразу на исполнение.
Второй метод наиболее часто используют.
За выполнение в памяти кода, сохраненного в переменной,
отвечает команда execute а также executeglobal
Откроем поиск в редакторе по нашему файлу Ctrl + F либо Правка -> Найти.
и вводим фразу executeglobal
Что видим?
Оператор executeglobal, который выполняет код, находящийся в переменной HadcasZdsNCjVhaID
Вот как раз, что хранится в этой переменной нам и нужно узнать,
а еще лучше распечатать ее в файл.
Давайте это сделаем.
1) после строки:
нажмите ENTER, чтобы отступить и вставьте такой кусок кода вызова функции печати:
Замените VirusCode на название переменной, которую хотите распечатать.
В нашем случае это HadcasZdsNCjVhaID
2) Теперь пролистайте код в самый конец,
в конце строки нажмите ENTER и вставьте наши функции:
3) Сохраните файл с расширением VBS (если не меняли, оно так и есть).
4) Запустите этот модифицированный вирусный файл (можно прямо из редактора Akelpad - Ctrl + F5)
Рядом будет создан одноименный файл с постфиксом _deobf.vbs
Вот и наш расшифрованный партизан.
_________________________________
Пару слов о безопасности:
Конечно же, перед тем как запускать неизвестный код описанным способом,
я просматриваю все команды распаковщика. Они не зашифрованы.
Предмет моих поисков - любые вредоносные команды:
- работа с сервером;
- скачивание файлов;
- модификация и удаление файлов.
Если ничего этого нет, я могу спокойно выполнять этот скрипт,
изолировав команду execute / executeglobal.
В скриптах, которые усложнены обфускацией так сильно, что тяжело читать
логику в целом, я сначала снимаю обфускацию и тоже делаю это вручную.
Это довольно просто. Расскажу в следующей статье.
В этой теме я покажу как не имея знаний в области языков IT
расшифровать тело VBScript-a для получения возможности его дальнейшего анализа.
Ремарка:
Есть множество способов запутать код.
Но способ, приведенный ниже - один из самых распространенных.
Есть множество способов запутать код.
Но способ, приведенный ниже - один из самых распространенных.
1. Для начала обзаведитесь чем-нибудь по приличней, чем блокнот Windows, например
Notepad++ или AkelPad.
Я буду, как всегда, работать в мод. версии AkelPad с особой темой подсветки.
Все это только ради удобства и чтобы быстрее ориентироваться.
2. Запомните, с вирусами работаем только в виртуальной машине (например, Oracle VirtualBox или VMware Workstation) или песочнице (например, SandBoxie).
Те же люди, кто не боится риска и у кого крепкие сами знаете что
могут это делать вне виртуалки. Но ответственность за убытки в этом случае лежит только на Вас.
Я например, как раз буду работать на своей основной системе, чего Вам не рекомендую.
3. Теперь скачиваем сам демо-вирус Чернобыль.rar.
Пароль: virus
Распаковка должна производится с отключенным антивирусом.
(тем не менее данный демо-вирус по понятным причинам не детектируется ни одним антивирусом)
______________________________________
Прелесть скриптов с шифрованным (кодированным) телом в том,
что алгоритм и ключ к их дешифровке находится внутри них самих.
что алгоритм и ключ к их дешифровке находится внутри них самих.
А поэтому самый простой способ их расшифровать - запустить вирус.
Еще не испугались?
Значит именно это мы сейчас и будем делать
Но сначала, залезем внутрь файла VBS. Правая кнопка мыши по файлу => Изменить.
Что мы видим ?
А ничего !!! Пусто !
Где же оно, спросил доктор Ватсон ?
Не беспокойтесь, сударь, все предельно просто, ответил Холмс,
и запустил свой AkelPad, указывая доктору на номер строки:
Итак, что имеем перед глазами ?
А вообщем, какая разница ?
Мы же все равно ничего не понимаем в VBScript (по условиям этой статьи).
Вот эти белые буквы - djKFAFksZASakdsdakoincdCD - переменная,
которую с целью запутать код переименовали во что-то непонятное.
Называется - обфускация.
Зеленым цветом в редакторе подсвечиваются все значения.
Т.е. то, что имеет особую смысловую нагрузку.
Здесь переменная = огромному куску непонятных символов.
Вот это и есть основное тело скрипта. Оно зашифровано.
которую с целью запутать код переименовали во что-то непонятное.
Называется - обфускация.
Зеленым цветом в редакторе подсвечиваются все значения.
Т.е. то, что имеет особую смысловую нагрузку.
Здесь переменная = огромному куску непонятных символов.
Вот это и есть основное тело скрипта. Оно зашифровано.
Немного теории:
Чтобы вирус мог выполнить зашифрованный код внутри себя,
ему сначала требуется это тело расшифровать и либо:
1) куда-то распаковать;
либо
2) запустить сразу на исполнение.
Второй метод наиболее часто используют.
За выполнение в памяти кода, сохраненного в переменной,
отвечает команда execute а также executeglobal
Откроем поиск в редакторе по нашему файлу Ctrl + F либо Правка -> Найти.
и вводим фразу executeglobal
Что видим?
Оператор executeglobal, который выполняет код, находящийся в переменной HadcasZdsNCjVhaID
Вот как раз, что хранится в этой переменной нам и нужно узнать,
а еще лучше распечатать ее в файл.
Давайте это сделаем.
Но сначала обезопасим себя:
- нужно изолировать эту расшифрованную часть вредоносного кода
от выполнения на нашей машине.
Для этого вставляем знак комментария ' (кавычка) перед командой executeglobal.
Кто не знает: ' - знак кавычки находится под буквой "э", если переключиться на английский язык.
Должно получится так:
Теперь добавляем код, который распечатает нам исходник:- нужно изолировать эту расшифрованную часть вредоносного кода
от выполнения на нашей машине.
Для этого вставляем знак комментария ' (кавычка) перед командой executeglobal.
Кто не знает: ' - знак кавычки находится под буквой "э", если переключиться на английский язык.
Должно получится так:
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
Убедитесь поиском, что во вредоносном коде не используются наши переменные
sCode и destFile. Иначе, их придется переименовать.
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
3) Сохраните файл с расширением VBS (если не меняли, оно так и есть).
4) Запустите этот модифицированный вирусный файл (можно прямо из редактора Akelpad - Ctrl + F5)
Рядом будет создан одноименный файл с постфиксом _deobf.vbs
Вот и наш расшифрованный партизан.
_________________________________
Пару слов о безопасности:
Конечно же, перед тем как запускать неизвестный код описанным способом,
я просматриваю все команды распаковщика. Они не зашифрованы.
Предмет моих поисков - любые вредоносные команды:
- работа с сервером;
- скачивание файлов;
- модификация и удаление файлов.
Если ничего этого нет, я могу спокойно выполнять этот скрипт,
изолировав команду execute / executeglobal.
В скриптах, которые усложнены обфускацией так сильно, что тяжело читать
логику в целом, я сначала снимаю обфускацию и тоже делаю это вручную.
Это довольно просто. Расскажу в следующей статье.
Вложения
Последнее редактирование: