Вирусы под наркозом


Компьютерные вирусыОх уж эти малвари! Что бы мы без них делали? Тормоза системы, вызванные работой антивируса, компенсируются умиритворённым состоянием духа от слепой уверенности, что с компьютером всё в порядке и в системе нет всякой нечисти. Человеку свойственна наивность! Если антивирус говорит, что он ничего не нашёл, то и понимать его следует буквально - значит, плохо искал!

В наше время, можно с уверенностью утверждать, что 90% всех компьютеров в сети в той или иной степени заражены (вне зависимости от того, охраняется периметр антивирусом или нет). Пожалуй, только контроллеры, управляющие лифтами да микроволновыми печами избавлены от этой напасти, но сколько такое спокойствие ещё продлится, сказать невозможно. Микроволновые печи, управляемые через Интернет, уже появились. Осталось добавить в них поддержку Java-апплетов и вирусы захватят ещё один ареал обитания.

Думаю эта тема тревожит многих из нас, поэтому предлагаю её обсудить. Ведь только досконально зная вирусы "в лицо", методы их работы, способы проникновения на компьютер и заражения операционных систем, можно выстроить эффективную систему защиты и профилактики против их вредоносного воздействия.

 

Введение

Для начала, попробуем разобраться в ряде специфических терминов, чтобы в дальнейшем не возникало недопониманий и разночтений, а также попробуем понять, как появились компьютерные вирусы, кто их пишет, и кто такие хакеры.

 

Вирусы прошлого

На заре развития вирусописательства вирусы были весьма простые и примитивные. Они легко вычислялись по сигнатурам антивирусными программами. Окунемся в историю и рассмотрим алгоритмы работы некоторых компьютерных вирусов. Также коснемся дальнейшего развития вирусописательской мысли - стелс-вирусы, ставшие новым поколением вирусов, способные постоянно изменять свою сигнатуру и различными способами маскировать свое присутствие в системе.

 

Файловая система NTFS

Чем сложнее устройство, тем большим функционалом оно обладает, но, при этом, появляется и больше возможностей для его выхода из строя. Так и с файловыми системами. NTFS получила гораздо большие возможности по сравнению с FAT/FAT32, но, при этом, предоставила новые инфструменты для вирусов, позволяющие более эффективно скрывать свое присутствие в системе - процессы и потоки (stream). Попробуем понять, как вирусы используют этот функционал для маскировки своей деятельности.

 

Вирусы настоящего

Рассмотрим понятие вирусного кода, его цели и задачи, способы внедрения и плавно перейдем от теории к практике. Рассмотрим подробно формат PE-файла (Portable Executable) - формат исполняемых файлов, объектного кода и динамических библиотек, используемый в 32- и 64-битных версиях операционной системы Microsoft Windows.

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

 

Антивирусы

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

 

Вирус своими руками

Инъекция NOTEPAD'у. Написать приличную программу в одиночку - практически нереально, поэтому хакеры предпочитают модифицировать уже существующие. Например, можно выпустить "новую" версию Notepad Pro, и выложить на варезный сайт, которую тут же утянет голодный народ. Конечно же, это не руководство к действию, а скорее предостережение. Чтобы научиться разоблачать троянизированные приложения, необходимо научиться троянизировать самому. Сухая теория никого не радовала. Хочешь научиться самообороне - учись драться!

Наши эксперименты будут носить невинный характер. Мы возьмём стандартный блокнот XP и будем над ним издеваться. Для начала нам надо понять, куда именно мы будем внедрять наш код.

Тёмные переулки NTFS-потока. Немного теории, которая понадобится нам в дальнейшем развитии нашей зверушки. А именно - в маскировке от антивируса.

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

Пишем свой загрузчик. Обычно, загрузчик несёт в себе функцию передачи управления на нужный участок программного кода. Можно ограничится однобайтовой командой JMP, но не в нашем случае, т.к. JMP действует только в адресном пространстве запускаемого процесса. Если открыть в HEX-редакторе файл с вложенным потоком (:stream), то мы не увидим там никаких потоков, откуда следует вывод, что поток запускается в своём адресном пространстве и к своему носителю никакого отношения не имеет. По этой причине, мы решили запускать поток на выполнение через API-функцию CreateFileW.

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

 

Сетевые технологии

С момента появления MS-DOS и до сегодняшних дней вирусам и прочей нечисти пришлось преодолеть нелёгкий путь. В результате естесственного отбора большая часть из них отправилась к своим праотцам. Но, им на смену большими потоками поступают всё новые и новые экземпляры, впитавшие в себя все лучшие стороны своих предшественников.

В наш век компьютерных техногий, когда мир окутан паутиной сетей и информация облетает Земной шар за несколько секунд, вирусы используют эти потоки в виде транспорта. Перехватив поток, хакеру ничего не стоит определить откуда/кем и куда пересылается информация.

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

Рассмотрим следующие темы:

 

Потомки Джеймса Бонда, ... или шпионы в сети

В этом материале мы поговорим о письмах с вложениями. Вернее, это даже не вложения, а обычная "ссылка на картинку". Большинство пользователей недооценивают их, и даже не подозревают на что они способны... А способны они на следующее:

  • подтвердить открытие письма жертвой;
  • установить точное время открытия письма;
  • определить IP-адрес жертвы;
  • определить наличие Proxy-сервера у жертвы;
  • определить наличие кэширующего Proxy-сервера у провайдера жертвы;
  • определить используемое программное обеспечение, с точностью до версии;
  • определить наличие спам-фильтров и антивирусов;
  • выявить анонимайзеры, контентные фильтры и другие локальные утилиты.

Схема работает так: внедряем в HTML-письмо ссылку на картинку, расположенную на подконтрольном хакеру Web-сервере и отправляем письмо жертве. В момент просмотра письма, почтовый клиент обращается к хакерскому Web-серверу, передавая в заголовке запроса огромное количество интимных деталей. Обращаю внимание читателя на то, что во всех описанных случаях, ответа получателя на хакерское письмо не требуется! Вполне достаточно просто открыть его для чтения. Чуть позже мы попрактикуемся, а пока разберёмся, как это работает?!

 

Устанавливаем домашний сервер

Сервер для хакера - дом родной! Чтобы рыскать по сети в поисках информации об очередной жертве необходимо иметь свой сервер, т.к. именно он будет обрабатывать все GET-запросы. Вариантов с установкой, конечно же, много и каждый описывает установку по-своему, но мы поступим чуть иначе... и создадим виртуальный сервер, а также привяжем домен к домашнему серверу.