Комментарии 25
НЛО прилетело и опубликовало эту надпись здесь
В модулях ОС Windows большое количество различных функций. Каждая функция ведет себя особым образом, в зависимости от переданных параметров и окружения. Эмулятор должен предусмотреть все возможные пути выполнения функций их результат. Корректно проэмулировать все функции (ладно, не все, но большинство) может, разве что, Microsoft Security Essentials (где-то читал, что у него один из самых крутых эмуляторов — оно и понятно, у разработчиков есть вся необходимая информация по внутреннему устройству Windows).
>>не реализуют должным образом описанные функции?
Мне кажется Вы не совсем четко понимаете работу эмуляторов. Дело в том, что эмуляторы реализуют поведение той или иной API функции по мере необходимости. Как только встречается в «дикой природе», т.е. у пользователей файл который содержит API-функцию, которая не реализована и мешает «детектировать» файл, то только тогда и «докручивается» эмулятор.
Ровно этим же самым путем движется любой проект подобного рода, к примеру Wine. Да и если присмотреться вообще к разработке, она движется точно также. Есть проблема, значит надо оценить ее критичность и только потом уже браться за работу. ;)
Мне кажется Вы не совсем четко понимаете работу эмуляторов. Дело в том, что эмуляторы реализуют поведение той или иной API функции по мере необходимости. Как только встречается в «дикой природе», т.е. у пользователей файл который содержит API-функцию, которая не реализована и мешает «детектировать» файл, то только тогда и «докручивается» эмулятор.
Ровно этим же самым путем движется любой проект подобного рода, к примеру Wine. Да и если присмотреться вообще к разработке, она движется точно также. Есть проблема, значит надо оценить ее критичность и только потом уже браться за работу. ;)
А когда в контексте антивирусов говорят про «запуск в песочнице», обычно подразумевают такой эмулятор или всё-таки некую виртуальную машину?
>>всё-таки некую виртуальную машину?
На мой взгляд, а я могу и ошибаться, это виртуальная машина. Однако хитрая вирт.машина. Ее цель это дальнейшее сопровождение процесса с возможностью отката тех действий, что сотворил бинарь. Ведь после того как файл был «обнюхан» и во время этого процесса не было вердикта «вирус», то антивирусу ничего не остается кроме как признать файл чистым до тех пор пока не проявится вредоносная функциональность. Возникает вопрос: Как вернуться к тому состоянию, чтобы было до работы файла? То что пользователя предупредили о вреде это конечно хорошо, но вот спасли? Помогли?
Я могу и ошибаться в предположениях работы «песочницы», но на мой взгляд это оно и есть ;) В любом случае, описанные мною действия имеют место быть ;)
На мой взгляд, а я могу и ошибаться, это виртуальная машина. Однако хитрая вирт.машина. Ее цель это дальнейшее сопровождение процесса с возможностью отката тех действий, что сотворил бинарь. Ведь после того как файл был «обнюхан» и во время этого процесса не было вердикта «вирус», то антивирусу ничего не остается кроме как признать файл чистым до тех пор пока не проявится вредоносная функциональность. Возникает вопрос: Как вернуться к тому состоянию, чтобы было до работы файла? То что пользователя предупредили о вреде это конечно хорошо, но вот спасли? Помогли?
Я могу и ошибаться в предположениях работы «песочницы», но на мой взгляд это оно и есть ;) В любом случае, описанные мною действия имеют место быть ;)
Уточнил, то что описал выше в 00:00 это не совсем песочница. Термин того что я описал уже не помню, но функционал является сейчас основным для АВ. Что такое посочница почитайте тут на хабре
Виртуальные машины/песочницы и эмулятор — несколько разные вещи. Они работают по-разному, и у них стоят разные задачи.
То что эти понятия разные конечно же понимаю, именно поэтому дополнил словами:
>>это не совсем песочница.
Это была попытка, сказать, что на мои слова не стоит опираться.
И еще: Не смотря на то что эти понятия отчетливо понимаю я все же предпочитаю говорить «не понимаю», т.к. не могу сформулировать, чтобы их пояснить. В виду того что эти понятия довольно важные, мне так кажется, у меня к Вам просьба их описать, хотя бы кратко. Мне очень хочется видеть формулировку этих понятий не из под пера маркетолога, а из головы непосредственно вирусного аналитика.
>>это не совсем песочница.
Это была попытка, сказать, что на мои слова не стоит опираться.
И еще: Не смотря на то что эти понятия отчетливо понимаю я все же предпочитаю говорить «не понимаю», т.к. не могу сформулировать, чтобы их пояснить. В виду того что эти понятия довольно важные, мне так кажется, у меня к Вам просьба их описать, хотя бы кратко. Мне очень хочется видеть формулировку этих понятий не из под пера маркетолога, а из головы непосредственно вирусного аналитика.
Песочница — программа, реально исполняющая целевую программу в среде с искусственнми ограничениями.
Эмулятор — программа, которая эмулирует исполнение целей программы. Т.е. в эмуляторах (как правило) машинные коды исполняются не на реальном процессоре, а обрабатываются программным кодом.
Эмулятор — программа, которая эмулирует исполнение целей программы. Т.е. в эмуляторах (как правило) машинные коды исполняются не на реальном процессоре, а обрабатываются программным кодом.
>> машинные коды исполняются не на реальном процессоре, а обрабатываются программным кодом.
Не уверен что полностью каждую маш. команду в терминах других, т.к. это бы вызвало «дикие тормоза» ;) Вероятно все-таки на реальном процессоре с подрузкой очередной порции кода…
Не уверен что полностью каждую маш. команду в терминах других, т.к. это бы вызвало «дикие тормоза» ;) Вероятно все-таки на реальном процессоре с подрузкой очередной порции кода…
это бы вызвало «дикие тормоза»
Почитайте описание OllyDbg. В частности, про механизмы трассировки.
Почитайте описание OllyDbg. В частности, про механизмы трассировки.
>>Почитайте описание OllyDbg. В частности, про механизмы трассировки.
Вы хотите меня по учить техникам эмуляции? :))) Забавно! Но прежде чем это сделать, настоятельно рекомендую:
0) Написать элементарный test.cpp проект в котором реализовать небольшую логику на базе мультитредности, для простоты можно взять расчет информационной энтропии переданного в тред как аргумент куска памяти.
1) Взять VMProtect, его загуглить не сложно
2) Защитить им этот самый test.exe
3) Запустить эмуляцию с помощью вашего OllyDbg.
4) Запустить какой нить профайлер в Intel-тулзах их не мало!
Я не пытаюсь вам показать насколько я крут или не крут, просто увидел что вы Линуксоид(на аватарке тукс изображен) и следовательно к экспериментам привычный человек, вот и привел вам тему эксперимента благодаря которому можно получить практическое понимание вопроса.
Вот после того как этот элементарнейший пример посмотрите на практике и увидите как собственно его эмулит OllyDbg, тогда почитайте на авер-сайтах:
1) Как часто используются современные протекторы? Т.е. VmProtect, AsProtect, Themida, etc. (Тут скажу что они(авер-эмуляторы) не все протекторы подобного уровня эмулят, иногда просто тупо по сигнатуре или еще каким методам детектят, но многие самплы(вирье) по броне не сильно-то и уступают им)
2) Затем подумайте а стоит ли эмулировать команду через другие или все же куда эффективней на живом процессоре?
Вы хотите меня по учить техникам эмуляции? :))) Забавно! Но прежде чем это сделать, настоятельно рекомендую:
0) Написать элементарный test.cpp проект в котором реализовать небольшую логику на базе мультитредности, для простоты можно взять расчет информационной энтропии переданного в тред как аргумент куска памяти.
1) Взять VMProtect, его загуглить не сложно
2) Защитить им этот самый test.exe
3) Запустить эмуляцию с помощью вашего OllyDbg.
4) Запустить какой нить профайлер в Intel-тулзах их не мало!
Я не пытаюсь вам показать насколько я крут или не крут, просто увидел что вы Линуксоид(на аватарке тукс изображен) и следовательно к экспериментам привычный человек, вот и привел вам тему эксперимента благодаря которому можно получить практическое понимание вопроса.
Вот после того как этот элементарнейший пример посмотрите на практике и увидите как собственно его эмулит OllyDbg, тогда почитайте на авер-сайтах:
1) Как часто используются современные протекторы? Т.е. VmProtect, AsProtect, Themida, etc. (Тут скажу что они(авер-эмуляторы) не все протекторы подобного уровня эмулят, иногда просто тупо по сигнатуре или еще каким методам детектят, но многие самплы(вирье) по броне не сильно-то и уступают им)
2) Затем подумайте а стоит ли эмулировать команду через другие или все же куда эффективней на живом процессоре?
Вот только проблема что вирус описатели тоже не спят, и при детектировании одной апи функции, они добавят еще одну (которых уж точно в запасе пара десятков), и все по кругу. И волки сыты (вирусы) и овцы целы (пользователи с подпиской на обновления). Круговорот малвари в природе [улыбка]
НЛО прилетело и опубликовало эту надпись здесь
А нельзя в IDA просто для функции задать имя? Я просто не знаком лично.
Допустим, находим функцию, понимаем назначение, называем ее как-то. Теперь во всех местах она отображается понятным именем… ПРОФИТ.
Допустим, находим функцию, понимаем назначение, называем ее как-то. Теперь во всех местах она отображается понятным именем… ПРОФИТ.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Ну вашу первоначальную идею отметать нельзя, пиар он такой пиар) Но тем не менее общий принцип обхода вирт. машин антивирусов предельно понятен. Теперь я больше не верю в песочницы)))
В том то и дело, что делать функцию экспортируемой в EXE, вызывать её, да ещё и называть antiemu — по меньшей мере странно. Вряд ли это несёт какой-то определённый смысл, скорее это было сделано просто, чтобы посмеяться.
НЛО прилетело и опубликовало эту надпись здесь
Все понятно, что написано в статье…
Непонятно, как Лаборатория Касперского борется с подобными антиотладчиками, антипесочницами и т.д...?! Вcе просматриваете «глазками»?! Так как Вы описываете подобный пример, то это означает, что эвристический анализатор текущей версии антивируса не справляется с подобными способами антиотладки и возможен только сигнатурный метод обнаружения малваре?!
Непонятно, как Лаборатория Касперского борется с подобными антиотладчиками, антипесочницами и т.д...?! Вcе просматриваете «глазками»?! Так как Вы описываете подобный пример, то это означает, что эвристический анализатор текущей версии антивируса не справляется с подобными способами антиотладки и возможен только сигнатурный метод обнаружения малваре?!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
AV vs FakeAV