Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Крис Касперски
Настоящая статья – попытка систематизировать и классифицировать существующие алгоритмы внедрения в PE32/PE64-файлы, способы визуальной идентификации потенциально опасного кода и методы его удаления. Публикация рассчитана на широкий круг читателей, знакомых с языком Си и имеющих опыт системного программирования на операционных системах семейства Windows 9x и Windows NT.
Механизмы внедрения в PE-файлы весьма разнообразны, но довольно поверхностно описаны в доступной литературе. Имеющиеся источники либо катастрофически неполны, либо откровенно неточны, да к тому же рассеянны по сотням различных FAQ и tutorial. Приходится, выражаясь словами Маяковского, перелопачивать тонны словесной руды, прежде чем обнаружится нечто полезное. Данная работа представляет собой попытку систематизации и классификации всех известных способов внедрения.
Статья будет интересна не только специалистам по информационной безопасности, занимающихся идентификацей и удаленем вирусов, но и разработчикам навесных защит конвертного типа и упаковщиков. Что касается вирусописателей. Если человек задался целью написать вирус, то он его напишет. Публикации подобного рода на это никак не влияют. Автор ни к чему не призывает и ни от чего не отговаривает. Это – прерогатива карательных органов власти, религиозных деятелей, ну и моралистов наконец. Моя же задача намного скромнее – показать, какие пути внедрения существуют, на что обращать внимание при поиске постороннего кода и как отремонтировать файл, угробленный некорректным внедрением.
Понятие X-кода и другие условные обозначения
Код, внедряющийся в файл, мы будем называть X-кодом. Под это определение попадает любой код, внедряемый нами в файл-носитель (он же подопытный файл или файл-хозяин от английского host-file), например, инструкция NOP. О репродуктивных способностях X-кода в общем случае ничего не известно, и для успокоения будем считать X-код несаморазмножающимся кодом. Всю ответственность за внедрение берет на себя человек, запускающий программу-внедритель (нет, не «вредитель», а «внедритель» от слова «внедрить»), которая, предварительно убедившись в наличии прав записи в файл-носитель (а эти права опять-таки дает человек) и его совместимости с выбранной стратегией внедрения, записывает X-код внутрь файла и осуществляет высокоманевренный перехват управления, так что подопытная программа не замечает никаких изменений.
Для экономии места в статье используется ряд общепринятых сокращений, перечисленных ниже:
n FA: File Alignment – физическое выравнивание секций;
n SA, OA: Section Alignment или Object Alignment – виртуальное выравнивание секций;
n RVA: Relative Virtual Address – относительный виртуальный адрес;