Вторник, 19.09.2017, 18:20 Приветствую вас Гость | Группа "Гости" 


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: Волк-1024, Anton93, xXxSh@dowxXx 
delfcode » Delphi » Вирусология Delphi » Отличить "Виртуальную машину" от основной
Отличить "Виртуальную машину" от основной
HTTqpДата: Четверг, 19.02.2015, 21:05 | Сообщение # 1
Частый гость
Зарегистрирован: 08.10.2014
Группа: Пользователи
Сообщений: 57
Статус: Offline
Вобщем вопрос указан в теме) Как отличить "Виртуальную машину" от основной, есть масса вариантов в поисковике но там получается что для каждой программы (будь то VirtualBox, VMware Fusion и т.п.) отдельная функция, нет ли единого способа, потому что например авиры порой при проверки программы запускают их как раз в "Виртуальных машинах" чтобы посмотреть действия, как этого избежать, писать все функции в программу, для каждой отдельной "Виртуальной машины"?
 
Волк-1024Дата: Четверг, 19.02.2015, 22:15 | Сообщение # 2
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 467
Статус: Offline
Первое, что приходит в голову - это замерять время исполнения какого-то ресурсоёмкого участка кода. Под виртуальной машиной он будет в разы дольше исполняться, чем на реальной. И да, у антивирусов нет виртуальных машин в том виде, в котором ты подразумеваешь.

Pascal, C\C++, Assembler, Python
 
HTTqpДата: Четверг, 19.02.2015, 22:38 | Сообщение # 3
Частый гость
Зарегистрирован: 08.10.2014
Группа: Пользователи
Сообщений: 57
Статус: Offline
не просто некоторые антивирусы при отправке например им файла тестят путем эмуляции запуска в своей среде или что то подобное) я вот это имел ввиду
 
xXxSh@dowxXxДата: Четверг, 19.02.2015, 22:46 | Сообщение # 4
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
Цитата HTTqp ()
не просто некоторые антивирусы при отправке например им файла тестят путем эмуляции запуска в своей среде или что то подобное) я вот это имел ввиду

Согласен с Волк-1024, в антивирях немного иной вид виртуализации\эмуляции (песочницы), но по общим признакам я думаю можно что то накопать, если конечно разобраться более детально как они это проворачивают.

PS: кстати говоря тема интересная, сам как то об этом подумывал, нужно будет поковыряться.
 
Anton93Дата: Пятница, 20.02.2015, 17:40 | Сообщение # 5
Продвинутый
Зарегистрирован: 06.01.2010
Группа: Модераторы
Сообщений: 320
Статус: Offline
с wm av такой вариант находил

Код
program Project2;

{$APPTYPE CONSOLE}

uses
     Windows;

procedure TrueEntryPoint;
begin
     MessageBoxW(0, 'Hello World', '', MB_OK);
end;

procedure AntiEmul;
var
     lpSystemTime: _SYSTEMTIME;
asm
     push 0
     popfd
     lea eax, lpSystemTime
     push eax
     call GetSystemTime
     pushfd
     pop eax
     add eax, offset TrueEntryPoint
     sub eax, $00000246
     call eax
end;

begin
     AntiEmul;
end.


в TrueEntryPoint нужный код.
когда происходит эмуляция апи - результат в eax, а он не учитывает регистр флагов

так же есть вариант опять поиграться с апи и вызвать функцию с "необычными" под эмулятором и реальной средой значения будут разные.
в Sality использовался многократный вызов FreeLibrary с несуществующими хендлами библиотек.

например так
Код

FreeLibrary(h1);
FreeLibrary(h2);
FreeLibrary(h3);


после анализировались полученные занчения.

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

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


ICQ: 41896
 
HTTqpДата: Пятница, 20.02.2015, 18:19 | Сообщение # 6
Частый гость
Зарегистрирован: 08.10.2014
Группа: Пользователи
Сообщений: 57
Статус: Offline
Цитата Anton93 ()
и наконец классика - шифруем участки кода. ключ берем из "необычных" мест, которые в эмуляторе обычно забиваются ерундой. в результате ав никгда не расшифрует в витруалке код программы

а необычны места это какие)? хоть примерчик, чтобы знать куда копать
 
Волк-1024Дата: Пятница, 20.02.2015, 18:39 | Сообщение # 7
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 467
Статус: Offline
Можно попробовать посовокупляться с SSE4 . Не думаю, что антивирусы умеют его эмулировать.

Цитата HTTqp ()
а необычны места это какие)?

Оверлей например. Между секций можно что-то запихать. В PE заголовок тоже можно.


Pascal, C\C++, Assembler, Python
 
delfcode » Delphi » Вирусология Delphi » Отличить "Виртуальную машину" от основной
Страница 1 из 11
Поиск:

delfcode.ru © 2008 - 2017 Хостинг от uCoz