Некоторые технологии, использующиеся в вирусах
Вирусы предъявляют к своему создателю жётские требования по части технических знаний, сообразительности, вдохновения, фантазии и настойчивости. Все эти качества присутствуют у талантливых людей с нетривиальным мышлением, которые могут сотворить что-то действительно редкое и необычное. Изучение вирусов помогает посмотреть на нестандартные программистские трюки, которые могут быть (и должны быть!) использованы при решении более «мирных» задач, на оптимизацию, например. Сложность вирусов возрастает, их структура становится всё более запутанной, и тем интереснее разобраться, как же они всё-таки работают.
Структуры вируса Boot/Brain.A (1984 г.) и червя W32/Bagle.AG (2004 г.) Метаморфизм Это метод для изменения вида кода, сохраняющая его оригинальный алгоритм работы. Мусорные инструкцие при этом если и добавляются, то очень редко. Метаморфизм можно встретить и в обычных программах при их компиляции с ключом максимальной оптимизации. Рассмотрим пример на ассемблере, в регистрах EAX и EBX хранятся числа: cmp eax, ebx ja @@further: mov eax, ebx @@further: ... sub ebx, eax sbb ecx, ecx and ecx, ebx add eax, ecx ... Неоптимизированный и оптимизированный варианты для нахождения максимума из двух чисел с помещением результата в EAX Такой метод позволяет уменьшить время выполнения участка кода (в частности, за счёт избавления от условных переходов), кроме того, это один из способов существенно увеличить время, требующееся исследователю на понимание алгоритма работы вируса. Полиморфизм Этот метод также изменяет вид кода, но не оптимизирует алгоритм его работы, а, напротив, «разбавляет» участок программы мусорным кодом, то есть кодом, не влияющим на результат работы, а также добавляет инструкции, выполняющие некоторые действия медленнее, чем это можно сделать при оптимизированном варианте. Рассмотрим пример. Есть ассемблерная инструкция “mov dx, 1234h”. Над ней можно «извратиться» самыми разными способами, как то:
“push 1234h; pop dx”, “mov dh, 11h; inc dh; mov dl, 35h; dec dl”, “mov dh, 15h; in ax, 40h; push ax; pop bx; mov dl, bl; xor dl, bl; inc dl; mov cx, 1234h; xchg cx, dx” Помимо очевидного минуса (увеличение времени выполнения участка кода за счёт мусорных инструкций) этот способ позволяет не только затруднить исследование алгоритма работы вируса и его обнаружение, но и с помощью написания полиморфных генераторов сделать так, что две копии вируса будут содержать совершенно разные инструкции, несмотря на один и тот же результат их выполнения. Самомодифицирующийся код Этот метод изменяет код в процессе его выполнения. В следующем примере в коде присутствует инструкция “sub si, ax”, но в процессе выполнения она будет заменена на “mul si”: xchg sp, dx mov sp, offset @@modify_above mov di, 0e6f7h push di xchg sp, dx Sub si, ax @@modify_above: В дизассемблере будет виден приведённый выше код, но не всё, что написано, будет выполнено. Разумеется, чтобы понять, что именно происходит, можно использовать отладчик, но если напичкать программу антиотладочными приёмами, то анализировать такой код станет в разы тяжелее. Исторические примеры Вирус CIH («Чернобыль») работает только под Windows 95/98 и заражает Portable Executable файлы (PE-файлы). Имеет довольно небольшую длину - около 1Кб. Был обнаружен "в живом виде" на Тайване в июне 1998 - автор вируса заразил компьютеры в местном университете. Через некоторое время зараженные файлы были разосланы в местные Интернет-конференции, и вирус выбрался за пределы Тайваня: за последующую неделю вирусные эпидемии были зарегистрированы в Австрии, Австралии, Израиле и Великобритании. Затем вирус был обнаружен и в нескольких других странах, включая Россию.
Примерно через месяц зараженные файлы были обнаружены на нескольких американских Web-серверах, распространяющих игровые программы. Этот факт, видимо, и послужил причиной последовавшей глобальной вирусной эпидемии. 26 апреля 1999 года (примерно через год после появления вируса) сработала «логическая бомба», заложенная в его код. По различным оценкам, в этот день по всему миру пострадало около полумиллиона компьютеров - у них оказались уничтожены данные на жестком диске, а на некоторых плюс к тому испорчено содержимое микросхем BIOS на материнских платах. Данный инцидент стал настоящей компьютерной катастрофой - вирусные эпидемии и их последствия никогда до того не были столь масштабными и не приносили таких убытков. Видимо, по тем причинам, что вирус нёс реальную угрозу компьютерам во всем мире и дата срабатывания вируса (26 апреля) совпадает с датой аварии на Чернобыльской атомной электростанции, вирус получил свое второе имя – «Чернобыль». При запуске зараженного файла вирус инсталлирует свой код в память Windows, перехватывает обращения к файлам и при открытии PE-файлов записывает в них свою копию. Содержит ошибки и в некоторых случаях завешивает систему при запуске зараженных файлов. В зависимости от текущей даты стирает Flash BIOS и содержимое дисков. После успешного стирания Flash-памяти вирус переходит к другой деструктивной процедуре: стирает информацию на всех установленных винчестерах. При этом вирус использует прямой доступ к данным на диске и тем самым обходит встроенную в BIOS стандартную антивирусную защиту от записи в загрузочные сектора. При заражении файлов вирус ищет в них «дыры» (блоки неиспользуемых данных) и записывает в них свой код. Присутствие таких «дыр» обусловлено структурой PE-файлов: позиция каждой секции в файле выравнена на определенное значение, указанное в PE-заголовке, и в большинстве случаев между концом предыдущей секции и началом последующей есть некоторое количество байт, которые не используются программой. Вирус ищет в файле такие неиспользуемые блоки, записывает в них свой код и увеличивает на необходимое значение размер модифицированной секции. Размер заражаемых файлов при этом не увеличивается.
Если в конце какой-либо секции присутствует «дыра» достаточного размера, вирус записывает в нее свой код одним блоком. Если же такой «дыры» нет, вирус дробит свой код на блоки и записывает их в конец различных секций файла. Таким образом, код вируса в зараженных файлах может быть обнаружен и как единый блок кода, и как несколько несвязанных между собой блоков. Вирус также ищет неиспользуемый блок данных в PE-заголовке. Если в конце заголовка есть «дыра» размером не менее 184 байт, вирус записывает в нее свою startup-процедуру. Затем вирус изменяет стартовый адрес файла: записывает в нее адрес своей startup-процедуры. В результате такого приема структура файла становится достаточно нестандартной: адрес стартовой процедуры программы указывает не в какую-либо секцию файла, а за пределы загружаемого модуля - в заголовок файла. Однако Windows 95 не обращает внимания на такие "странные" файлы, грузит в память заголовок файла, затем все секции и передает управление на указанный в заголовке адрес - на startup-процедуру вируса в PE-заголовке. Вирус Downadup (Conficker, Kido) сам не выполняет никаких вредоносных действий, кроме скачивания вредоносных программ (для дальнейшей рассылки вируса, атак, нацеленных на отказ в обслуживании и др.). Разработчики не размещали файлы на каком-то жёстко зафиксированном сервере. Вместо этого вирус получает дату на нескольких популярных ресурсах (adobe.com, disney.go.com, ebay.co.uk, facebook.com, rapidshare.com, torrentz.com, yahoo.com, youtube.com и др.) и по ней генерирует список из 250 доменов, используя специальный алгоритм. Задача хозяев вируса – заблаговременно зарегистрировать эти домены и разместить там файлы для загрузки. Противостоять этому не сложно, но дорого. Этот вирус блокирует доступ к серверам, содержащим обновления антивирусных баз и операционных систем, в доменное имя которых входят слова: avast; avg.; avira; comodo; eset; f-prot; f-secure; gdata; k7computing; kaspersky; malware; mcafee; microsoft; nod32; norman; norton; panda; rootkit; sophos; symantec; virus; windowsupdate и др. Собственно процесс инфицирования происходит следующим образом: 1) создаются собственные копии:
• %все папки общего доступа% \RECYCLER\S-%Число%\%случайная буквенная комбинация%.vmx • %ProgramFiles%\Internet Explorer\%случайная буквенная комбинация%.dll • %ProgramFiles%\Movie Maker\%случайная буквенная комбинация%.dll • %SYSDIR%\%случайная буквенная комбинация%.dll • %TEMPDIR%\%случайная буквенная комбинация%.dll • %ALLUSERSPROFILE%\Application Data\%случайная буквенная комбинация%.dll
2) создаются файлы: – %все папки общего доступа%\autorun.inf Файл является безвредным текстовым файлом со следующим содержимым: • %random comments% shellexecute rundll32.exe %Пути с именами файлов к копиям вредоносного ПО%,%случайная буквенная комбинация% %random comments% – %SYSDIR%\%случайная комбинация из двух букв%.TMP
3) вирус пытается установить соединение с другим компьютером для дальнейшего распространения На момент января 2009 года в ботнете, собранном с помощью данного вируса, было более 10 миллионов компьютеров. Их можно использовать для проведения атак, направленных на отказ в обслуживании, для массовой рассылки писем, то есть спама, и для многих других целей. Естественно, сдавая этот ботнет в аренду, можно получить немалую прибыль, так что выгода при написании вирусов заключается не только в умственных упражнениях, но и в экономической составляющей. Компьютерное пиратство Для начала, чтобы понять причины и предпосылки к возникновению такого явления, как компьютерное пиратство, совершим некоторый исторический экскурс. Пиратство, как вид криминальной деятельности, возникло на заре цивилизации, много веков назад, когда человек только научился делать примитивные лодки и суда, и стал использовать их для набегов и грабежа братьев по разуму. Наибольшего расцвета морское пиратство достигло в средние века, в период развития и совершенствования кораблестроения, дерзких путешествий и открытий, освоения новых земель и территорий. Испания, Португалия, Франция и Англия отправляли огромные морские экспедиции к неизведанным берегам в поисках славы и богатств, колонизируя земли и народы, и оспаривая друг у друга право на звание страны-владычицы морей и океанов. В борьбе между собой эти государства активно использовали пиратов, в основном, соплеменников, присваивая им за захваты и грабежи судов враждующей стороны высокие чины и титулы. Постепенно пиратство как вид разбоя, в силу различных причин и обстоятельств, прекратило свое существование, изредка напоминая о себе исчезновением кораблей где-то в морях и проливах стран Юго-Восточной Азии и в районе Сомали. И, тем не менее, бесследно термин «пиратство» не исчез. Со временем он стал применяться к нарушению позже сформулированных авторских прав, поэтому, чтобы дать адекватную оценку этому явлению, необходимо определить понятие авторского права и список действий, это право нарушающих.
Подход к определению авторского права на Западе и у нас, в Советском Союзе, во времена существования этого самого Союза существенно различался. Если на капиталистическом Западе программы всегда были товаром и охранялись авторским правом, то во времена СССР проблем с нелегальным использованием компьютерных программ в нашей стране вообще никаких не было. Сами программы были, но они в принципе не признавались товаром, т. е. продуктом, предназначенным для продажи. В общественном сознании они ассоциировались с бесплатными (причем обязательными!) приложениями к ЭВМ. Мысль о том, что «программа — это тоже продукт» звучала почти как призыв к свержению существующего строя. Об авторских правах и говорить нечего. В тогдашнем Законе «О изобретательской деятельности» говорилось однозначно: «В качестве объекта авторского права не рассматриваются алгоритмы и вычислительные программы». На этой почве и возникали различные конфликты, например, когда в конце 60-х годов наши разработчики скопировали и архитектуру, и программное обеспечение для своего ЕС ЭВМ (у американцев она называлась IBM OS/360), а в 70-х — для СМ ЭВМ и «Электроники» (американское семейство PDP-11 фирмы DEC). Собственно проблема по защите прав обозначилась в начале 80-х годов с появлением персональных компьютеров и взрывообразным расширением круга их пользователей. В конце 80-х годов ситуация с пиратством в нашей стране начала коренным образом изменяться, когда «де-факто» программы уже стали реальным товаром. В начале 90-х голос «рыночников» был подкреплен решительным нажимом международного сообщества: без юридического права на интеллектуальную собственность ни о каком рынке не может быть и речи, и без соответствующих гарантий западные фирмы не хотели с нами иметь дело. Государство было вынуждено принять соответствующие меры, и ряд законов об охране авторского права вступил в силу. Итак, что же такое «авторское право»? Если дословно, то «авторское право», или «copyright», означает «право создания копий». В широком смысле это подотрасль гражданского права, регулирующая правоотношения, связанные с созданием и использованием произведений науки, литературы или искусства, то есть объективных результатов творческой деятельности. Программы для ЭВМ и базы данных, приравниваемые к литературным произведениям и сборникам соответственно, также охраняются авторским правом. Таким образом, под нарушением авторского права, или, как принято говорить, пиратством, подразумевается правонарушение, суть которого составляет использование произведений науки, литературы и искусства, охраняемых авторским правом, без разрешения авторов или правообладателей или с нарушением условий договора об использовании таких произведений. Если обратиться к истории, то можно увидеть, что авторское право получило достаточно долгое развитие. К самым первым законам об охране авторского права можно отнести запрещение публикации произведения без согласия его автора в 1545 году вВенеции и указ королевы Мария Тюдор о наделении британской типографской гильдии (Stationers Company) монополией на книгопечатание и книготорговлю в стране в 1557 году в Англии. За ними последовали конвенция в Берне «Об охране литературных и художественных произведений» (1886) и всемирная конвенция об авторском праве в Женеве (1952). При этом программа ЭВМ была зарегистрирована как объект правовой охраны лишь в 1961 году, в США. Как итог правовой деятельности в 1978 году Всемирная организация интеллектуальной собственности (ВОИС), основанная в 1967, одобрила и приняла Типовые положения по охране программного обеспечения ЭВМ. Итак, основные положения законодательства об авторском праве в отношение ПО: ü программы для ЭВМ относятся к объектам авторского права; ü право авторства презюмируется и не требует регистрации; ü автору или иному правообладателю принадлежит исключительное право осуществлять и/или разрешать выпуск в свет, воспроизведение, распространение и иное использование программы для ЭВМ; ü имущественные права на программные продукты могут быть переданы кому-либо только по договору; ü лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе осуществлять ее запись в память одной ЭВМ или одного пользователя в сети, если иное не предусмотрено договором с правообладателем. Таким образом, мы вплотную подошли к определению круга действий, которые можно считать нарушением авторских прав. Как вы могли уже заметить, в определение «пиратства» включают его самые разнообразные виды. Это видео – и аудиопиратство, литературное пиратство, и, конечно, то, о чем мы собственно и поведем весь дальнейший разговор: компьютерное пиратство. Под компьютерным пиратством понимается незаконное копирование и распространение программных продуктов. Включает в себя снятие разнообразных программных защит. Для этого существует специальный класс программного обеспечения — от специальных патчей до генераторов ключей для программного продукта, которое снимают с него ограничения, связанные с встроенной защитой от нелегального использования. Компьютерное пиратство принимает самые различные виды. Остановимся на некоторых из них поподробнее.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|