Как создать вирус который может заражать других

Обновлено: 23.04.2024

Вирусы стали неотъемлемой частью нашей компьютерной (и не только) жизни. На написание данной статьи меня подтолкнуло то, что, на мой взгляд, в Сети маловато информации, наиболее полно раскрывающей весь процесс написания вируса. Совсем недавно мне необходимо было написать простую самораспространяющуюсю программу, которая не производила бы каких-либо вредных для системы действий, но в то же время использовала бы вирусные механизмы распространения. Скажу, что все-таки в Интернете есть информация на эту тему. И даже встречаются исходники подобных программ. Но во всем приходится долго и упорно разбираться, если хочешь сделать что-то сам. Итак, в чем-то более-менее разобравшись, я хочу поделиться с вами - читателями - информацией.

В данной статье будет рассмотрен процесс написания простого вируса, заражающего исполняемые файлы формата PE (Portable Executable) EXE. Также напишем программу-доктора, которая ищет в указанной директории и во всех поддиректориях файлы, зараженные нашим вирусом.

Данная самораспространяющаяся программа не содержит в себе никакого вредоносного кода, но ее с легкостью можно дописать до вполне боевого вируса. Поэтому хочу заметить, что
ВСЕ ПРИВЕДЕННОЕ В ЭТОЙ СТАТЬЕ МОЖЕТ БЫТЬ ИСПОЛЬЗОВАНО ТОЛЬКО В УЧЕБНО-ПОЗНАВАТЕЛЬНЫХ ЦЕЛЯХ. Автор не несет никакой ответственности за любой ущерб, нанесенный применением полученных знаний.

Если вы с этим не согласны, то, пожалуйста, прекратите чтение этой статьи и удалите ее со всех имеющихся у вас носителей информации.

Кратко о формате PE

Поскольку наш вирус будет заражать именно PE-файлы, мы, естественно, должны иметь представление об этом формате. Это формат исполняемых в операционной системе Windows файлов. Кстати, раз уж мы заговорили об ОС, то заметим, что наш вирус должен нормально исполняться на как можно большем числе ОС данного семейства. Программа тестировалась на работоспособность в Win
9x\Me\NT\2000\XP\2K3.

Итак, если заглянуть внутрь типичного исполняемого файла, мы увидим следующую структуру в упрощенном виде:


PE-файл в самом своем начале (MZ-заголовок) содержит программу для ОС DOS. Эта программа называется stub и нужна для совместимости со старыми ОС. Если мы запускаем PE-файл под ОС DOS или OS/2, она выводит на экран консоли текстовую строку, которая информирует пользователя, что данная программа не совместима с данной версией ОС. Программист при линковке может указать любую программу DOS, любого размера. После этой DOS-программы идет структура, которая называется IMAGE_NT_HEADERS (PE-заголовок). Эта структура описывается следующим образом:

Первый элемент IMAGE_NT_HEADERS – сигнатура PE-файла. Для PE-файлов она должна иметь значение "PE\0\0". Далее идет структура, которая называется файловым заголовком и определенная как IMAGE_FILE_HEADER. Файловый заголовок содержит наиболее общие свойства для данного PE-файла. После файлового заголовка идет опциональный заголовок - IMAGE_OPTIONAL_HEADER32. Он содержит специфические параметры данного PE-файла. После опционального заголовка начинается таблица секций (Object Table). В ней содержится информация о каждой секции. После таблицы секций идут исходные данные для секций. В конец PE-файла можно записать любую информацию и от этого функционирование программы не изменится (если там не присутствует проверка контрольной суммы или что-то подобное).

Способы заражения PE

До сих пор мы ничего не сказали о том, каким способом будем заражать файл, ведь их несколько:

  • Внедрение в PE-заголовок
  • Расширение последней секции
  • Добавление новой секции

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

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


Вычисляем дельта-смещение

Итак, мы приняли решение дописываться в конец исполняемого файла. Прежде, чем приводить код, отмечу, что для начала нам нужно найти адреса необходимых API-функций. Разберемся сейчас с наиболее важными понятиями: Virtual Address (VA) и Relative Virtual Address
(RVA).

VA - это адрес чего-нибудь в оперативной памяти. RVA - это смещение на что-то относительно того места, куда проецирован файл. А если просто сказать, то VA = RVA + база.

Чтобы наш вирус работал, он должен быть написан в базонезависимом коде. В связи с этим появляется еще одно понятие - дельта-смещение.

Что это такое? Все очень просто. Когда вирус находится в чистом виде (так называемое первое поколение), т.е. не записан еще ни в какой файл, когда он работает, он обращается к переменным как есть относительно прописанного в его заголовке адреса, куда файл проецирован системой. Теперь представим, что наш вирус заразил программу. И там начинает работать. Но теперь он работает не там, куда его загрузил загрузчик, а из того места, где находится загруженная зараженная программа. Получается, что переменные теперь указывают на абсолютно другое место. Поэтому обратившись к своим данным по заданным адресам, вирус прочитает совсем не те данные, которые ему необходимы. Для того, чтобы решить эту проблему, вычисляется
дельта-смещение. Это смещение относительно начала вируса, а не той программы, которая была им заражена.

Как видим, при входе в вирусный код мы вызываем call. Но call после вызова помещает в стек адрес возврата. Вычитаем из него адрес метки VirDelta и получаем нужное нам смещение относительно начала файла. Далее сохраняем дельта-смещение для дальнейшего использования (прибавляя его к адресам переменных, последние принимают корректные значения).

Ищем адреса API-функций

Следующая проблема состоит в поиске этих самых адресов. Но для начала нужно найти адрес библиотеки kernel32.dll в памяти, т.к. самые необходимые функции находятся именно в ней. Если нам потребуется использовать функции из других библиотек, мы просто используем LoadLibrary и GetProcAddress, которые находятся в kernel32.dll.

Существует множество методов поиска базы kernel32, один из которых - использование механизма структурной обработки исключений SEH (Structured Exception
Handling).

SEH представляет собой цепочку обработчиков - ячейки памяти, в которых содержатся адреса на процедуры обработки исключений. Эта цепочка начинается с fs:0000 и заканчивается последним обработчиком, который содержит значение 0FFFFFFFFh. Ну и что это нам дает? А то, что адрес последнего обработчика - это и есть адрес kernel32.dll в памяти.

Итак, дельта-смещение мы определили. Приведем теперь код поиска базы kernel32:

Здесь мы сканируем память (с того адреса, который мы только что получили) на наличие сигнатуры MZ (4D5Ah). Если она присутствует, значит, все сделано верно. Далее по смещению 3Ch находится смещение начала PE-заголовка. Сравниваем значение 2х байтов по этому смещению на сигнатуру PE (5045h) (на случай, если мы чисто случайно попали на ту область памяти, где нам встретились символы MZ). Если значение этих байт равно PE, то kernel32.dll несомненно найдена.

Теперь рассмотрим некоторые поля PE-заголовка, необходимые нам:


Чтобы найти адрес необходимой нам API-функции в kernel32, нам нужно добраться до секции экспорта этой библиотеки. По смещению 78h от начала PE-заголовка находится RVA адрес этой секции. Но не забудем, что нам нужен не RVA, а VA. Для этого нужно сложить этот RVA со значением Image Base (адрес в области памяти, куда файл проецирован системой). Тогда мы получим реальный адрес секции экспорта.

Наверняка при просмотре таблицы может возникнуть вопрос: а что это за поле Win32VersionValue? Это поле загрузчиком не используется вообще, поэтому мы можем считать его резервным и записывать какую-то информацию. В дальнейшем будем использовать данное резервное поле для записи сигнатуры нашего вируса, чтобы не заражать уже зараженные нашим вирусом программы.

Теперь нам нужно получить адрес таблицы экспорта из секции экспорта. Рассмотрим некоторые интересные нам поля секции экспорта:


Первое поле содержит базу ординалов функций. Второе поле содержит число указателей на имена. Третье поле содержит RVA таблицы экспорта. Эта таблица содержит адреса экспортируемых функций (их точки входа) или данных в формате DWORD RVA (по 4 байта на элемент). Четвертое поле - RVA таблицы указателей на имена. Последнее поле - RVA на таблицу ординалов. Для доступа к данным используется ординал функции с коррекцией на базу ординалов (Ordinal
Base).

Итак, теперь мы знаем адрес таблицы имен и адрес таблицы адресов всех функций библиотеки kernel32.dll. Чтобы найти адрес конкретной функции, мы должны сравнить ее имя с каждым именем в таблице имен экспортируемых функций, и если очередное сравниваемое имя совпало с искомым, мы смотрим в таблицу ординалов по соответствующему индексу и извлекаем таким образом адрес функции. Далее нам этот адрес остается где-то сохранить (в нашем случае – в стеке) для дальнейшего использования и перейти к поиску адреса другой нужной нам функции и так далее.

Чтобы не хранить в коде вируса имена функций (ведь они бывают иногда длинные), нам достаточно хранить 4-байтовые хеш-значения имен. Заодно и при просмотре тела вируса в HEX-редакторе не бросаются в глаза имена функций, содержащиеся в коде вируса:

А при поиске нужной нам функции мы будем сравнивать не имена, а хеш-значения имен (подсчитав предварительно это значение для каждой нужной нам функции). Т.е., допустим, что мы нашли какое-то имя в таблице имен kernel32. Вычисляем хеш-значение этого имени и сравниваем это значение с искомым из нашей таблицы хешей HashTable. Если совпадают – значит, нашли. Если нет – ищем
дальше:

Но как нам вычислить заранее хеш-значение определенного имени? Для этого я написал небольшую программку на Visual C++ с ассемблерной вставкой, ссылку на которую можно найти в конце статьи (с исходником).

После выполнения приведенного кода адреса всех функций будут находиться в стеке:

Общая структура вирусного кода

Все вышесказанное было лишь прелюдией в процессе написания нашего вируса. Теперь начнется самое интересное. Будем писать вирус на MASM. Почему я отдаю предпочтение этому пакету? Просто он мне нравится.

Напишем общий файл main.asm, который будет включать отдельные части кода:

В файле start_code.inc содержится весь приведенный ранее код по определению дельта-смещения, поиску базы kernel и адресов функций. Содержимое остальных файлов будет ясно из дальнейшего изложения. Но в любом случае в конце статьи есть ссылки с полностью рабочими примерами и исходниками.

Смотря на этот код, можно задать как минимум два вопроса:

  • зачем нам макрос szText?
  • зачем подключать библиотеку kernel32.lib и вызывать функцию ExitProcess перед начальной меткой?

Хитрый макрос позволяет нам не хранить текст в переменной, а сразу заталкивать его адрес в стек перед вызовом какой-либо функции, имеющей одним из своих параметров текстовую строку. Например, в функцию
LoadLibrary:

Что же касается вызова функции ExitProcess, то здесь проблема кроется в системах старше Windows XP (Win9x\Me\NT\2000). При попытке запустить код без такого вызова программа попросту не запускалась в перечисленых системах. Причем молча. Скорее всего, это связано с тем, что в данных системах загрузчик не хочет загружать программы без секций импорта. Не будем отвлекаться от нашей темы, поскольку исследование данного вопроса выходит за рамки этой статьи.

wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 12 человек(а).

Вам когда-нибудь хотелось создать собственный вирус, возможно для обучения или для забавы? На создание вируса уйдет время и потребуются знания, но на это способен каждый человек, если захочет. Создание вируса может научить вас основам программирования на определенном языке, а также знаниям операционных систем и сетевой безопасности. Посмотрите Шаг 1, чтобы начать.

Изображение с названием Create a Virus Step 1

  • Mac OS X и Linux считаются более защищенными от вирусных атак (связано с работой прав доступа и архитектурой операционной системы). 95% всех вирусов нацелены на пользователей Windows.

Изображение с названием Create a Virus Step 2

Изображение с названием Create a Virus Step 3

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

Изображение с названием Create a Virus Step 4

Изображение с названием Create a Virus Step 5

  • Если вы хотите создать исполняющие вирусы, то поищите курсы C и C++ в интернете.
  • Если вы хотите создать макро вирусы, то выучите язык макросов для нужной программы, например, Microsoft Office.
  • Visual Basic может быть использован для создания вредоносных программ для пользователей Windows.

Изображение с названием Create a Virus Step 6

  • Узнайте о полиморфном коде. Это изменит код вашей программы после каждой реплики, скрывая вирус от антивирусных программ. Полиморфный код будет довольно продвинутым шагом, который создается различными способами в разных языках программирования.

Изображение с названием Create a Virus Step 7

Узнайте о способах спрятать ваш код. Кроме полиморфного кода, существуют способы спрятать ваш вирус. Шифрование является очень популярным инструментом среди разработчиков вирусов. На это уходит много времени и чтения, но в результате вы сможете защитить и продлить жизнь вашему вирусу.

  • Постарайтесь проводить тесты в закрытой сборке так, чтобы избежать случайного попадания вашего вируса в сеть. Поставьте тестовые машины в отдельную сеть и протестируйте распространение вируса.
  • Улучшайте код вашего вируса по ходу тестирования. Работайте над ошибками вашего кода.

Изображение с названием Create a Virus Step 9

Выпустите ваш вирус. Если вы удовлетворены работой вашего вируса, то настало время его выпустить. Но до того, подумайте, готовы ли к последствиям, которые возможны из-за вашего вируса. Возможно вам стоит использовать ваши знания и работать над другими проектами. [2] X Источник информации


Как уже говорилось в предыдущей части — вирусы это неотъемлемая часть мира компьютерных технологий и Интернета. Они бывают разные: забавные и безвредные, большие и сложные, быстрые и разрушительные, шпионские и даже диверсионные. Создатели этих программ явно обладают светлым умом, но не всегда чистой совестью. Сегодня мы познакомимся с вирусами, которые не вошли в подборку предыдущей части. Поехали.



Возможно первая программа, которая может именоваться интернет червем. Была обнаружена в начале 70-ых, а распространялась через ARPANET (предшественник современного Интернета).

История создания и даже самого существования Creeper окутана тайнами, теориями и неточностями. Кто-то говорит, что программа вышла в мир в начале 70-ых, а кто-то считает, что еще в конце 1960-ых. Известно, что Creeper была написана Бобом Томасом. Он также был автором подсистемы RSEXEC ОС Tenex, на базе которой Creeper и действовал.

Далее Рэй Томлинсон, коллега Боба Томаса, написал программу REAPER, задачей которой был поиск и уничтожение Creeper. Таким образом появилась первая программа-нематода — простыми словами, вирус, который уничтожает другой вирус.

Еще один представитель ранних форм вирусов. Был написан Ричардом Скрента, парнем 15 лет, специально под Apple II.

Elk Cloner: The program with a personality

It will get on all your disks
It will infiltrate your chips
Yes it's Cloner!

It will stick to you like glue
It will modify ram too
Send in the Cloner!



If you install [this] on a microcomputer…
then under terms of this license you agree to pay PC Cyborg Corporation in full for the cost of leasing these programs…

In the case of your breach of this license agreement, PC Cyborg reserves the right to take legal action necessary to recover any outstanding debts payable to PC Cyborg Corporation and to use program mechanisms to ensure termination of your use…

These program mechanisms will adversely affect other program applications…

You are hereby advised of the most serious consequences of your failure to abide by the terms of this license agreement; your conscience may haunt you for the rest of your life… and your [PC] will stop functioning normally…

You are strictly prohibited from sharing [this product] with others…

ATTENTION I have been elected to inform you that throughout your process of :collecting and executing files, you have accdientally (sic) ¶HÜ¢KΣ► [PHUCKED] :yourself over: again, that's PHUCKED yourself over. No, it cannot be; YES, it CAN be, :a √ìτûs [virus] has infected your system. Now what do you have to say about that? :HAHAHAHAHA. Have ¶HÜÑ [PHUN] with this one and remember, there is NO cure for

AIDS (огромным шрифтом).

CIH фактически имел два варианта исхода своей деятельности, оба активировались 26 апреля. В первом случае вирус перезаписывал жесткий диск, начиная с сектора 0, используя бесконечную петлю, пока система полностью не упадет. Второй вариант — атака на Flash BIOS и попытка повреждения хранимых там данных, что приводило к тому, что ничего не отображалось, когда компьютер запускался. Жертвами вируса были машины под ОС Windows 95, 98 и ME.

Жертвами вируса CIH стало огромное число компьютеров и компаний. В Корее пострадало около 1 миллиона ПК, а ущерб составил $250 миллионов. Также пострадали и Бостонский Университет (данные учащихся были удалены прямо перед экзаменами), 200 компьютеров в Сингапуре, 100 в Гонг Конге, 10 крупных компаний в Индии и другие.

CIH так сильно распространился, что даже некоторые программы, поставляемые на рынок, были им заражены, включая игру Wing Commander, обновления драйверов для CD-R400 от компании Yamaha, и даже компьютеры Aptiva от компании IBM вышли на рынок с пре-установленным вирусом.


Один из самых распространенных вирусов середины 90-ых. После заражения вирус устанавливал себя в Master boot record загрузочного диска. Инфицировал память компьютера при загрузке ОС, после чего перехватывал прерывание INT 21h. При каждом запуске ПК, вирус шифровал 2 дорожки на жестком диске.

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

OneHalf является представителем стелс-вирусов, поскольку использовал полиморфные методы распространения, что не давало возможности большинству антивирусов его обнаружить.

Когда в свет вышла ОС Windows 95 и более новые версии, вирус OneHalf практически вымер.

Morris worm



Роберт Таппан Моррис

Скандально известный сетевой червь. Был зафиксирован первый раз 2 ноября 1988 года, за что получил свое альтернативное название — Internet worm of November 2, 1988. Наделал немало шума в период своего существования.

Творцом червя стал Роберт Таппан Моррис, аспирант Корнеллского университета. Роберт не собирался заражать весь ARPANET, он думал, что его творение будет инфицировать только VAX-компьютеры с операционными системами 4BSD и Sun 3. Но у червя был портируемый Си-код, что дало ему возможность распространяться и на других машинах.

Как действовал червь. Для начала он проводил сканирование компьютера, пытаясь выяснить заражен ли он уже или нет. Потом случайным образом перезаписывал себя для того, чтобы обеспечить свою незаметность. Основой деятельности червя была уязвимость в почтовом сервере Sendmail, сервисах Finger, rsh/rexec с подбором паролей по словарю. Данный словарь состоял из 400 ключевых слов, всего лишь. А учитывая, что в те времена мало кто уделял должное внимание безопасности, логин и пароль частенько совпадали. Чтобы скрыть свой след Morris worm удалял свои исполняемые файлы, переименовывал свой процесс в sh.

Ирония заключается в том, что отцом Роберта, автора червя, был компьютерный эксперт АНБ. Он посоветовал сыну сдаться властям, что последний и сделал. Так случилось первое в истории судебное дело по статье Computer Fraud and Abuse Act (1986). Роберту грозило 5 лет тюрьмы и 250 000 долларов штрафа. Но за счет того, что он сам себя сдал, ему присудили 3 года условно, 10 000 штрафа и 400 часов общественных работ.

Red October


Любители фильмов про Джеймса Бонда и все шпионское, этот пункт для вас. В октябре 2012 года антивирусная компания Kaspersky Lab обнаружила шпионскую вредоносную программу.

Исследователи данного вируса заявили, что он активно функционировал по всему миру в течении 5 лет, прежде чем его обнаружили. Вирус собирал и передавал своим создателям информацию различного характера (секретную, дипломатическую, государственную, персональную и т.д.). Вирус распространялся через электронное письмо с зараженным файлом, и использовал для своего дальнейшего распространения уязвимости в Microsoft Word и Excel. Позднее была обнаружена веб-страничка, которая использовала уязвимость плагина Java.

После разоблачения, доменные регистраторы и хостинг-компании по всему миру прикрыли порядка 60 доменных имен, которые использовались вирусом Red October. Сами же злоумышленники после такого поворота событий прекратили распространение Red October.

До сих пор неизвестно кто является автором Red October и какие именно цели он (или они) преследовали.

Cookie Monster

Конечно же, Cookie Monster нельзя назвать вирусом (хотя многие источники именно так его и называют), поскольку у него нет механизма репликации и распространения. Но, все же, Cookie Monster можно отнести с программам вредоносного характера, хоть и вреда особо не было.


Не просто один вирус, а целое семейство вирусов под названием Ontario, первый представитель которого был обнаружен еще в июле 1990 года — Ontario.512.

Также вирус содержал зашифрованный текст:

С появлением ОС Windows распространение вирусов Ontario начало уменьшатся. И уже к 2006 году они фактически вымерли.


В одной из версий вируса (их было две: a и b) присутствовало послание автора следующего содержания:

Delphi-the best. Fuck off all the rest. Neshta 1.0. Made in Belarus. Прывiтанне ўсiм ~цiкавым~ беларус_кiм дзяўчатам. Аляксандр Рыгоравiч, вам таксама. Восень — кепская пара… Алiварыя — лепшае пiва! Best regards 2 Tommy Salo. [Nov-2005] yours [Dziadulja Apanas]

Вирус Neshta так сильно подпортил всем нервы, что правоохранительные органы Белоруссии обьявили охоту на его автора, но, как известно, безрезультатно.

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

Для своего распространения Nimda использовал не один метод, а целых 5:

  • Электронная почта;
  • Открытые общие сетевые ресурсы;
  • Зараженные веб-сайты;
  • Уязвимости в IIS;
  • Бэкдоры, оставленные в системах червями-предшественниками Code Red II и sadmind/IIS

Зараженные сайты

На зараженном червем сайте имеется код JavaScript, который заставляет браузер скачивать файл README.EML, содержащий червя:

Файл README.EML откроется в уменьшенном окне, если пользователь использует браузер Explorer 5.5 с Service Pack 1 (или более ранние версии пакетов обновлений). Есть вероятность, что таким методом червь не может заразить системы Windows NT или Windows 2000.

Электронная почта

Локальные сети

В случае подключения к локальной сети с зараженным ПК, машина-жертва получит файл RICHED20.DLL, размещенный в любой из папок с файлами расширения .doc или .eml. Эти файлы будут скрыты.

Червь Nimda (admin задом наперед) заражал персональные компьютеры на системах Windows 95, 98, NT, 2000 или XP и серверы на Windows NT и Windows 2000.

CryptoLocker


Тут пойдет речь не просто о вредоносном ПО, а о целой кибератаке, произведенной с его помощью. В период с 5 сентября 2013 года по май 2014 многие пользователи ОС Windows стали жертвами вымогателей.

В ноябре 2013 года творцы CryptoLocker пошли еще дальше в своей наглости и уверенности в безнаказанности. Они открыли онлайн-центр, где жертвы могли выплатить выкуп за свои данные, даже если прошел дедлайн (в таком случае цена увеличивалась до 10 биткойнов).

2 июня 2014 года было официально заявлено о проведении ранее операции Tovar, в результате которой был ликвидирован ботнет Gameover Zeu, использованный для распространения CryptoLocker. Одним из обвиняемых стал российский хакер по имени Евгений Богачёв. По данным, собранным исследователями атаки, хакеры-вымогатели обогатились на 3 миллиона долларов.


Червь года 2004, если можно так выразиться.

Текст письма содержал следующее:

You were successful in the auction.

(где **** **** **** — набор случайных цифр)

A detailed description about the product and the bill
are attached to this mail.
Please contact the seller immediately.

prod_info_04155.bat
prod_info_04650.bat
prod_info_33462.cmd
prod_info_33967.cmd
prod_info_42313.pif
prod_info_42314.pif
prod_info_42818.pif
prod_info_49146.exe
prod_info_49541.exe
prod_info_54234.scr
prod_info_54235.scr
prod_info_54739.scr
prod_info_33325.txt.exe.zip
prod_info_33543.rtf.scr.zip
prod_info_34157.htm.exe.zip
prod_info_43631.doc.exe.zip
prod_info_43859.htm.scr.zip
prod_info_47532.doc.scr.zip
prod_info_54433.doc.exe.zip
prod_info_55761.rtf.exe.zip
prod_info_56474.txt.exe.zip
prod_info_56780.doc.exe.zip
prod_info_65642.rtf.scr.zip
prod_info_77256.txt.scr.zip
prod_info_87968.htm.scr.zip

При открытии зараженного файла вирус создавал мьютекс, предотвращающий запуск более чем одной копии червя, который копировал себя в папку Windows под именем Services.exe. Далее Netsky добавлял в реестр специальную запись, позволяющую ему запускаться при включении компьютера. Еще одной, весьма забавной, особенностью червя было удаление им записей Taskmon и Explorer из реестра ключей, которые были там оставлены другим червем Mydoom.

doom2.doc.pif
sex sex sex sex.doc.exe
rfc compilation.doc.exe
dictionary.doc.exe
win longhorn.doc.exe
e.book.doc.exe
programming basics.doc.exe
how to hack.doc.exe
max payne 2.crack.exe
e-book.archive.doc.exe
virii.scr
nero.7.exe
eminem — lick my pussy.mp3.pif
cool screensaver.scr
serial.txt.exe
office_crack.exe
hardcore porn.jpg.exe
angels.pif
porno.scr
matrix.scr
photoshop 9 crack.exe
strippoker.exe
dolly_buster.jpg.pif
winxp_crack.exe

Результатом деятельности червя было сильное замедление, а порой и падение, работы компьютеров, что, в свою очередь, привело к колоссальным финансовым потерям. Они составили примерно от 25,6 до 31,3 миллиардов долларов по всему миру.

Автором сего творения считается Свен Яшан (Sven Jaschan), студен из Германии. Он также является автором червя Sasser (о нем в следующем блоке). Свен был пойман и осужден к 21 месяцу условно и 30 часам общественных работ.

Еще одно творение Свена Яшана. Датируется 2004 годом. Наделал немало шума и вреда в финансовом эквиваленте, хотя изначально не имел такой цели.

Червь распространялся, используя уязвимость в службе LSASS Microsoft Windows, при этом не требовал никаких действий со стороны пользователя-жертвы для активации.

Sasser создавал FTP сервер на порту 5554 для своего распространения. На диске С червь создавал файл под рутом с именем win.log, который содержал IP адрес компьютера, который червь пытался заразить в последнее время. Также червь использовал Windows API для проверки IP адреса системы, чтобы в дальнейшем на его основе сгенерировать новый адрес. в 25% случаев первые 2 цифры сгенерированного адреса совпадают с хостом, когда последние 2 случайны. Есть вероятность в 23%, что только первая цифра будет совпадать, и вероятность в 52%, что сгенерированный IP будет абсолютно случаен. Процесс выбора случайного адреса использует 128 потоков, что может значительно ухудшить производительность зараженной машины.

Исходом работы червя была постоянная перезагрузка компьютера с выводом на экран ошибок процесса lsass.exe. Однако этого хватило, чтобы многие компании понесли огромные потери. В общей сложности ущерб от Sasser составил примерно 18 миллиардов долларов. Всего заражено было около 250 000 машин.

Как упоминалось ранее, Свен был, в последствии, наказан за свое творение. Если бы в его действиях выявили корыстные намерения, то наказание было бы гораздо суровее.

Anna Kournikova

В 2001 году датский программист Ян де Вит создал червь Anna Kournikova. Пользователь-жертва получал письмо с якобы фотографией известной теннисистки Анны Курниковой. Фотки там естественно не было, но был червь, который заражал компьютер, если файл его содержащий открывался. Имя фала было таковым AnnaKournikova.jpg.vbs. Причина, по которой пользователь мог не задумываясь открыть файл в стандартных настройках Windows, которые скрывали расширение файла. Таким образом пользователь видел следующее — AnnaKournikova.jpg. Далее червь сканировал базу адресов почты в Microsoft Outlook и рассылал себя всем контактам.

В полицию Ян де Вит пришел сам. Адвокаты настаивали на том, что де Вит не желал никому зла и создал червя без оглядки на последствия. Однако ФБР предоставили доказательства того, что вред все же был, и не маленький, больше 166000 долларов. В итоге, Ян был осужден к 150 часам общественных работ или 75 дням лишения свободы.


Компьютерный червь, поставивший на уши Пентагон. В 2008 году флешка, зараженная червем agent.btz, была вставлена в ноутбук на военной базе США в Среднем Востоке. Компьютер был подключен к Центральному командованию вооружённых сил США (USCENTCOM). Червь распространился по всем системам, включая секретные. Он делал это путем создания файла AUTORUN.INF в руте каждого из дисков. Также мог сканировать компьютер на наличие бэкдоров, которые использовал для дальнейшего распространения.

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

Вокруг этого червя было много спекуляций и теорий заговора. Кто-то считал, что его разработал хакер-одиночка. А Пентагон стал лишь случайной жертвой в числе многих. Другие же заверяли, что червь — продукт диверсионной деятельности России или Китая.


Троян, ставший оружием в руках мошенников. Впервые был обнаружен в 2007 году.

Некоторые версии Zeus маскировались, используя цифровую подпись Kaspersky Lab, которая в следствии изучения была признана поддельной. Также большей распространенности служило то, что троян мог инфицировать не только компьютеры под управлением Windows, но и мобильные устройства с ОС BlackBerry или Android.

В 2010 году, 1 октября, ФБР заявило о проведении одной из самых масштабных операций по поимке преступников, которые были причастны к краже порядка 70 миллионов долларов со счетов жертв трояна Zeus. Было арестовано около 100 человек: 90 в США, остальные в Великобритании и Украине.



Пара вступительных слов

Итак, давай погрузимся в мрачный лабиринт кибернетического мира, ряды обитателей которого скоро пополнятся еще одним зловредным созданием. Внедрение вируса в исполняемый файл в общем случае достаточно сложный и мучительный процесс. Как минимум для этого требуется изучить формат PE-файла и освоить десятки API-функций. Но ведь такими темпами мы не напишем вирус и за сезон, а хочется прямо здесь и сейчас. Но хакеры мы или нет? Файловая система NTFS (основная файловая система Windows) содержит потоки данных (streams), называемые также атрибутами. Внутри одного файла может существовать несколько независимых потоков данных.

WARNING

Вся информация в этой статье предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи. Помни, что неправомерный доступ к компьютерной информации и распространение вредоносного ПО влекут ответственность согласно статьям 272 и 273 УК РФ.

Файловая система NTFS поддерживает несколько потоков в рамках одного файла

Файловая система NTFS поддерживает несколько потоков в рамках одного файла

Имя потока отделяется от имени файла знаком двоеточия (:), например my_file:stream . Основное тело файла хранится в безымянном потоке, но мы также можем создавать и свои потоки. Заходим в FAR Manager, нажимаем клавиатурную комбинацию Shift + F4 , вводим с клавиатуры имя файла и потока данных, например xxx:yyy , и затем вводим какой-нибудь текст. Выходим из редактора и видим файл нулевой длины с именем xxx .

Почему же файл имеет нулевую длину? А где же только что введенный нами текст? Нажмем клавишу и… действительно не увидим никакого текста. Однако ничего удивительного в этом нет. Если не указать имя потока, то файловая система отобразит основной поток, а он в данном случае пуст. Размер остальных потоков не отображается, и дотянуться до их содержимого можно, только указав имя потока явно. Таким образом, чтобы увидеть текст, необходимо ввести следующую команду: more < xxx:yyy .

Будем мыслить так: раз создание дополнительных потоков не изменяет видимых размеров файла, то пребывание в нем постороннего кода, скорее всего, останется незамеченным. Тем не менее, чтобы передать управление на свой поток, необходимо модифицировать основной поток. Контрольная сумма при этом неизбежно изменится, что наверняка не понравится антивирусным программам. Методы обмана антивирусных программ мы рассмотрим в дальнейшем, а пока определимся со стратегией внедрения.

Алгоритм работы вируса

Закрой руководство по формату исполняемых файлов (Portable Executable, PE). Для решения поставленной задачи оно нам не понадобится. Действовать будем так: создаем внутри инфицируемого файла дополнительный поток, копируем туда основное тело файла, а на освободившееся место записываем наш код, который делает свое черное дело и передает управление основному телу вируса.

Работать такой вирус будет только на Windows и только под NTFS. На работу с другими файловыми системами он изначально не рассчитан. Например, на разделах FAT оригинальное содержимое заражаемого файла будет попросту утеряно. То же самое произойдет, если упаковать файл с помощью ZIP или любого другого архиватора, не поддерживающего файловых потоков.

Архиватор RAR способен сохранять файловые потоки в процессе архивации

Архиватор RAR способен сохранять файловые потоки в процессе архивации

Теперь настал момент поговорить об антивирусных программах. Внедрить вирусное тело в файл — это всего лишь половина задачи, и притом самая простая. Теперь создатель вируса должен продумать, как защитить свое творение от всевозможных антивирусов. Эта задача не так сложна, как кажется на первый взгляд. Достаточно заблокировать файл сразу же после запуска и удерживать его в этом состоянии в течение всего сеанса работы с Windows вплоть до перезагрузки. Антивирусы просто не смогут открыть файл, а значит, не смогут обнаружить и факт его изменения. Существует множество путей блокировки — от CreateFile со сброшенным флагом dwSharedMode до LockFile/LockFileEx .

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

Мы будем действовать так: внедряемся в файл, ждем 30 секунд, удаляем свое тело из файла, тут же внедряясь в другой. Чем короче период ожидания, тем выше шансы вируса остаться незамеченным, но и тем выше дисковая активность. А регулярные мигания красной лампочки без видимых причин сразу же насторожат опытных пользователей, поэтому приходится хитрить.

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

Продолжение доступно только участникам

Вариант 2. Открой один материал

Крис Касперски

Известный российский хакер. Легенда ][, ex-редактор ВЗЛОМа. Также известен под псевдонимами мыщъх, nezumi (яп. 鼠, мышь), n2k, elraton, souriz, tikus, muss, farah, jardon, KPNC.

Читайте также: