Pull to refresh

Comments 25

UFO just landed and posted this here
В модулях ОС Windows большое количество различных функций. Каждая функция ведет себя особым образом, в зависимости от переданных параметров и окружения. Эмулятор должен предусмотреть все возможные пути выполнения функций их результат. Корректно проэмулировать все функции (ладно, не все, но большинство) может, разве что, Microsoft Security Essentials (где-то читал, что у него один из самых крутых эмуляторов — оно и понятно, у разработчиков есть вся необходимая информация по внутреннему устройству Windows).
>>не реализуют должным образом описанные функции?
Мне кажется Вы не совсем четко понимаете работу эмуляторов. Дело в том, что эмуляторы реализуют поведение той или иной API функции по мере необходимости. Как только встречается в «дикой природе», т.е. у пользователей файл который содержит API-функцию, которая не реализована и мешает «детектировать» файл, то только тогда и «докручивается» эмулятор.
Ровно этим же самым путем движется любой проект подобного рода, к примеру Wine. Да и если присмотреться вообще к разработке, она движется точно также. Есть проблема, значит надо оценить ее критичность и только потом уже браться за работу. ;)
А когда в контексте антивирусов говорят про «запуск в песочнице», обычно подразумевают такой эмулятор или всё-таки некую виртуальную машину?
>>всё-таки некую виртуальную машину?
На мой взгляд, а я могу и ошибаться, это виртуальная машина. Однако хитрая вирт.машина. Ее цель это дальнейшее сопровождение процесса с возможностью отката тех действий, что сотворил бинарь. Ведь после того как файл был «обнюхан» и во время этого процесса не было вердикта «вирус», то антивирусу ничего не остается кроме как признать файл чистым до тех пор пока не проявится вредоносная функциональность. Возникает вопрос: Как вернуться к тому состоянию, чтобы было до работы файла? То что пользователя предупредили о вреде это конечно хорошо, но вот спасли? Помогли?

Я могу и ошибаться в предположениях работы «песочницы», но на мой взгляд это оно и есть ;) В любом случае, описанные мною действия имеют место быть ;)
Уточнил, то что описал выше в 00:00 это не совсем песочница. Термин того что я описал уже не помню, но функционал является сейчас основным для АВ. Что такое посочница почитайте тут на хабре
Виртуальные машины/песочницы и эмулятор — несколько разные вещи. Они работают по-разному, и у них стоят разные задачи.
То что эти понятия разные конечно же понимаю, именно поэтому дополнил словами:
>>это не совсем песочница.
Это была попытка, сказать, что на мои слова не стоит опираться.

И еще: Не смотря на то что эти понятия отчетливо понимаю я все же предпочитаю говорить «не понимаю», т.к. не могу сформулировать, чтобы их пояснить. В виду того что эти понятия довольно важные, мне так кажется, у меня к Вам просьба их описать, хотя бы кратко. Мне очень хочется видеть формулировку этих понятий не из под пера маркетолога, а из головы непосредственно вирусного аналитика.
Песочница — программа, реально исполняющая целевую программу в среде с искусственнми ограничениями.
Эмулятор — программа, которая эмулирует исполнение целей программы. Т.е. в эмуляторах (как правило) машинные коды исполняются не на реальном процессоре, а обрабатываются программным кодом.
>> машинные коды исполняются не на реальном процессоре, а обрабатываются программным кодом.
Не уверен что полностью каждую маш. команду в терминах других, т.к. это бы вызвало «дикие тормоза» ;) Вероятно все-таки на реальном процессоре с подрузкой очередной порции кода…
это бы вызвало «дикие тормоза»

Почитайте описание OllyDbg. В частности, про механизмы трассировки.
>>Почитайте описание OllyDbg. В частности, про механизмы трассировки.

Вы хотите меня по учить техникам эмуляции? :))) Забавно! Но прежде чем это сделать, настоятельно рекомендую:

0) Написать элементарный test.cpp проект в котором реализовать небольшую логику на базе мультитредности, для простоты можно взять расчет информационной энтропии переданного в тред как аргумент куска памяти.
1) Взять VMProtect, его загуглить не сложно
2) Защитить им этот самый test.exe
3) Запустить эмуляцию с помощью вашего OllyDbg.
4) Запустить какой нить профайлер в Intel-тулзах их не мало!

Я не пытаюсь вам показать насколько я крут или не крут, просто увидел что вы Линуксоид(на аватарке тукс изображен) и следовательно к экспериментам привычный человек, вот и привел вам тему эксперимента благодаря которому можно получить практическое понимание вопроса.

Вот после того как этот элементарнейший пример посмотрите на практике и увидите как собственно его эмулит OllyDbg, тогда почитайте на авер-сайтах:
1) Как часто используются современные протекторы? Т.е. VmProtect, AsProtect, Themida, etc. (Тут скажу что они(авер-эмуляторы) не все протекторы подобного уровня эмулят, иногда просто тупо по сигнатуре или еще каким методам детектят, но многие самплы(вирье) по броне не сильно-то и уступают им)
2) Затем подумайте а стоит ли эмулировать команду через другие или все же куда эффективней на живом процессоре?
Вот только проблема что вирус описатели тоже не спят, и при детектировании одной апи функции, они добавят еще одну (которых уж точно в запасе пара десятков), и все по кругу. И волки сыты (вирусы) и овцы целы (пользователи с подпиской на обновления). Круговорот малвари в природе [улыбка]
UFO just landed and posted this here
А нельзя в IDA просто для функции задать имя? Я просто не знаком лично.
Допустим, находим функцию, понимаем назначение, называем ее как-то. Теперь во всех местах она отображается понятным именем… ПРОФИТ.
UFO just landed and posted this here
UFO just landed and posted this here
Ну вашу первоначальную идею отметать нельзя, пиар он такой пиар) Но тем не менее общий принцип обхода вирт. машин антивирусов предельно понятен. Теперь я больше не верю в песочницы)))
UFO just landed and posted this here
В том то и дело, что делать функцию экспортируемой в EXE, вызывать её, да ещё и называть antiemu — по меньшей мере странно. Вряд ли это несёт какой-то определённый смысл, скорее это было сделано просто, чтобы посмеяться.
UFO just landed and posted this here
Название функции видно, так как она экспортируемая. Отладочных символов, увы, нету.
Все понятно, что написано в статье…
Непонятно, как Лаборатория Касперского борется с подобными антиотладчиками, антипесочницами и т.д...?! Вcе просматриваете «глазками»?! Так как Вы описываете подобный пример, то это означает, что эвристический анализатор текущей версии антивируса не справляется с подобными способами антиотладки и возможен только сигнатурный метод обнаружения малваре?!
Вы нас недооцениваете, описанные способы антиэмуляции мы успешно обрабатываем. И да, мы часто смотрим внуть файлов, чтобы дорабатывать наши технологии.
Sign up to leave a comment.