Pull to refresh
64
0
Сергей Прилуцкий @BoogerWooger

Software Researcher

Send message
Клево, использование кодов возврата API для генерации — прикольно, спасибо!

Была еще интересная тема — ключ вообще нигде не хранился. Каждый раз при надобности ключ подбирался bruteforce-ом — вирус себе может позволить такую задержку, у него времени много, а вот эмулятору это очень напряжно.
Точняк. Только в терминологии статьи инструкции анализирует не эвристик, а эмулятор.

Подумал еще, что наверное, на RISC архитектурах (регистров больше, а инструкций меньше), где свободы в генерации инструкций существенно меньше, метаморфные генераторы должны быть либо совсем тупыми и простыми (sse, mmx), либо генерировать весьма непростой в плане оценки «мусорности» микс.
Я же на это и жалуюсь в конце, а ничего нового и нет. В плане исполняемого кода все замерло лет шесть-семь назад уже. Может какая-нибудь новая аппаратная платформа стартанет новый виток развития

Попробую в следующих статьях что-нибудь нестандартное обмозговать
Это я видимо правил ссылку в первой части и забыл «Опубликовать», исправил, спасибо.
Спасибо, отличный пост. Must read всем причастным
Люди, пожалуйста, уберите Амиго, Гварды и Яндекс бары из обсуждений — они вообще не из этой оперы и не имеют к статье ну ни малейшего отношения. Я не собираюсь их обсуждать, я реально про них ничегошеньки не знаю, зачем вы это сюда пишете!
Метаморфизм — это случай полиморфизма, когда программа в каждом новом поколении генерирует код, отличающийся от предыдущего поколения. Я обязательно про него подробно расскажу.

Действительно, виртуальная машина это в общем-то метаморфный генератор, если научить её каждый раз на основе одного и того-же «базового» кода порождать различные варианты исполняемого
Статья в основном описывает внедрение кода внутрь существующего исполняемого файла и детектирование факта таких внедрений. Насколько я понял, гвард себя не встраивает внутрь исполняемых файлов, и не ищет вирусы по сигнатурам, поэтому никакая информация из данной статьи не применялась при разработке данного ПО.

А можно пояснить фразу «для того, чтобы установить на свой ПК guard и прочие прелести, достаточно подключить чужой винтчестер к своему ПК, на котором Guard уже есть»? Я слегка не уловил смысл
С бут сектором попробую выкрутиться — это то же самое, только инфицируется не файл, а операционная система целиком. Если считать ОС — носителем, то такой вирус подходит под мою классификацию.

Ну а про ортогональные характеристики: для перехода ко второй статье мне достаточно именно этой одной характеристики — полиморф, не полиморф. Грубо говоря, я рассматриваю вирус, который вообще ничего не делает, кроме как открывает исполняемые файлы (мне все равно каким образом) и записывает себя в них. Я оставляю только такой узкий набор для того, чтобы не отклоняться в сторону и провести больше аналогий с коммерческими защитами, в которых некоторые техники (например антиотладка) представлены более ярко.
Ну по простому коду, который сам себя «не трогает» такие ошибки должны быть очень и очень редкими (например для того, чтобы не сработала сигнатура достаточно просто «сдвинуть» код — просто добавив что-нибудь безобидное в исходник)
А если вы и в самом деле пишете самомодифицирующийся код, на который кидается эвристик антивируса, то на машинный код вы точно можете влиять, понимаете что происходит и вполне в состоянии заниматься «нетривиальным секасом»
Статья есть статья, кому надо найдет её поиском. А карму компании я с удовольствием повышу, от Mail.Ru в моей лично жизни я ничего плохого не видел. И про Guard я, правда, не могу поддержать дискуссию, у меня он никогда не стоял, и я про него реально вообще ничего не знаю.
Спасибо, обязательно взгляну. Я имел в виду, что доля таких «более-менее вменяемых» невысока. Может я и неправ, и если кто нибудь из антивирусной компании будет читать этот пост, был бы рад услышать комментарии (если это не секрет, конечно).
Да напишу обязательно, многое в статье повисло «в воздухе».

Правда эволюция к сожалению в этом вопросе далеко не ушла, самым продвинутым вирусным движкам уже много лет, многое было сделано в области коммерческих защит. Доступный коннект с сайтом разработчика софта и эти техники делает уже непопулярными — зачем защищать код внутри исполняемого файла, если его можно хранить на стороне разработчика. В общем постараюсь поскорее разродиться
Именно это я и собирался сделать — сузить определение вируса до соответствующего биологическому определению, т.е. объекта, который способен порождать свои копии, и которому для работы и размножения необходима клетка-носитель.
Резидент, стелс, буткит — термины, описывающие лишь способы, при помощи которых вирус ищет новые объекты для инфицирования и прячет себя. Ваш вариант с «буткит+резидентный модуль» это все равно вирус, т.к. ему для распространения необходимо положить свое тело (упакованное или нет) в исполняемый файл и потом получить управление на другой машине и развернуться там. И он тоже — либо полиморф, либо нет.
Я вообще считаю что термин «компьютерный вирус» стали использовать неправильно, тупо называя им все нехорошие программы. Если проводить биологическую аналогию дальше, то трояны, руткиты и малварь, которые представляют собой совершенно самостоятельные программные модули, можно сравнить с бактериями — это полноценные клетки, которые способны существовать без носителя.
Печально, конечно, что корпоративный блог так портит впечатление. Надеюсь, большинство все таки поверит, что я ни в коей мере не старался «предложить отвлечься от наших же Guard-ов», а просто постарался написать хорошую статью.
Как юзер, наверное неохотно, но соглашусь.

Хотя мне очень не нравится наличие самомодифицирующегося кода или признаков, указывающих на вирус в коде «очень популярной программы»
Я имел в виду, что если файл чист, а антивирь его забанил (false positive) — это не так страшно, как если файл заражен, а антивирь его пропустил (false negative).

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

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

Про угрозы, с которыми Mail.Ru имеет дело я не смогу написать, т.к. не работаю в отделе безопасности, сам бы почитал с удовольствием
Уважаемые читатели, не хочу обидеть ничьих чувств к моей любимой компании. Ваши комментарии очень классные и остроумные, но я бы предпочел комментарии от программистов.
причем тут вообще Guard.Mail.ru?

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity