Не могу скопировать вирусы
Здравствуйте! В этом посте (первом) я покажу, как создавать вирус шутку через блокнот. Сразу прошу не бомбить и не писать гневные комменты типа: "Да такого миллион!", "Да что ты знаешь!", "Да пошел ты в жопу!" и т.д. Да, я знаю, что эти "вирусы" создавали давно. Но я к примеру открыл для себя это совсем недавно. Месяца 3 назад.
Ближе к делу: я буду рассказывать что эта шутка вообще делает, буду вставлять скрины и все объяснять. Напомню, это ознакомительный пост! В других постах я буду конкретно писать, как создать такой-то вирус.
Вирус-шутка это программа, которую создают в блокноте. Т.е. пишешь там команды и сохраняешь их определенных форматах. Если все правильно сделано, без ошибок, то вирус-шутка сработает. Кстати, "вирус-шутка" это условное название. В блокноте можно создать и игру, и крестики нолики, часы.
ПРЕДУПРЕЖДЕНИЕ. Перед созданием вируса отключите Анти-Вирус.
1) Создание вируса: Для начала откройте блокнот.
2) В блокноте начинайте писать команду. Для начала скопируйте этот текст туда:
msgbox"Ты не против, если я буду жить у тебя в компе?",32+4,"Вопрос"
msgbox"Ок, ты не против",64,"Я понял"
msgbox"Ок, ты не против",64,"Я понял"
msgbox"Это шутка, это НЕ вирус :) ХАХАХАХА",64,"Я пошутил"
msgbox"Или же нет. ",64,". "
Я НЕ ЖЕЛАЮ ВАМ ЗЛА! ЭТОТ ВИРУС НЕ МОЖЕТ ПРИНЕСТИ ВАМ И ВАШЕМУ КОМПУ ВРЕДА!
3) Сохраните ваш текст в формате .vbs Смотрите далее.
4) Теперь у вас на Рабочем столе должен появиться вот такой значок:
5) Заходите в него.
6) У вас должен открыться вирус-шутка. Если же не работает, то два варианта: либо у вас включен Анти-Вирус, либо ваш комп не поддерживает это.
7) НЕ ПУГАЙТЕСЬ! ВИРУС-ШУТКА НЕ ПРИНЕСЕТ ВРЕДА. Теперь вам осталось читать то, что там написано, и кликать по кнопкам (любым).
Вы можете изменить в команде вируса текст. Например вместо "Windows удалить?" можно написать "ставьте лайки!". Удачи вам, экспериментируйте со своими вирусами!
И так, как я обещал, это был ознакомительный пост. Вскоре я выложу пост, где подробно опишу все значения, как все делать и т.д. Отпишитесь в тапках как вам мой пост, киньте скрины своего вируса. Мне будет интересно :D
сука! у меня винда удалилась!
Не ври. Этот вирус-шутка и близко такого сделать не может.
ТС, у вас тоже снегопад? Занятия в школах отменили?
Да, отменили. Вот и сижу, "клавотюкаюсь".
Мне хочется узнать все подробно как это работает что обозначает msgbox, цифры 64; 32+4
"msgbox" - название команды, которая выводит стандартный диалог. Цифрами выбирается стиль отображения (иконка внутри диалога и воспроизводимый звук при открытии). Также стилем выбираются кнопки (их текст и количество)
Отображаемых иконок всего 4: ошибка, вопрос, восклицание и внимание. Столько-же звуков.
Кнопок в связке по более:
Ок
Ок, Отмена
Да, Нет
Да, Нет, Отмена
Повтор, Отмена
Пропустить, Повторить Отменить
Т.к. эти диалоги выдаются системой, то можно указать только заголовок и текст диалога. Свой текст кнопок или свою иконку Вы не сможете установить. Можно вывести диалог без иконки. Вроде ничего не забыл. Давно увлекался этим, потом перешел на норм. язык программирования.
Ой, а может поможете раз разбираетесь?
Хочу коллегу разыграть/ поздравить с днем рождения. Он в командировке сейчас. Хочу ему на почту файл бросить который в определенный день ему на принтер выведет поздравление. Как можно батник сделать, чтобы он себя в автозагрузку прописал и именно в определенный день сработал? Ну и удалился потом, чтоб он не догадался.
В инете поискал, там только на удаление доков батники) и определенного дня нельзя поставить.
Если хотите именно батник, то можно попробовать использовать планировщик Windows, но с батниками куча ограничений.
О поздравлялке: даже если Вы отправите эл. письмо с батником или exe-шником, то поздравление не сработает, пока его не скачают и не запустят. В некоторых случаях почтовый сервис может отправить письмо в папку "Спам" (пользователь его не увидит), либо при скачивании файл заблокирует антивирус, но это все маловероятно.
На счет печати принтером: это можно, но обязательно? Можно например вывести на экран красивый диалог, или картинку :)
Нет с программкой не тот эффект))) Да и вк нету.
Просто хотелось отправить на почту письмо, (его обязательно откроют, так как с этого адреса только по работе приходит, да и с чувством опасности у людей проблемы))), чтоб этот файл прописался в планировщик или в автозагрузку, а в нужный день отправил бы на печать текст. Там принтер ежедневно включают, так что по-любому бы удивил)))
Я батники когда-то давно делал. Даже похожий прикол видел, когда из планировщика каждый день на печать выходит "Ты умрешь через *** дней", "Ты умрешь завтра", "Это случится сегодня". Но там надо было за компом посидеть, чтоб настроить. А как это "дистанционно" через почту сделать я не знаю.
В любом случае спасибо.
Хм, думаю, что через батник хоть и сложно, но реально: батник запускает установщик Windows (msiexec.exe) с параметром, который скачает и установит программу и документ с текстом печати. Программа прописывается в автозапуск и следит за датой и временем системы. Как только дата начала наступает, программа запускает скрытый процесс Microsoft Office Word (winword.exe) с параметром начала печати нашего документа. Программа делает какую-нибудь отметку на каком-либо ресурсе (сайте или сервере), что она успешно отработала. Запускается msiexec.exe с параметром удаления нашей программы (программа удаляется с компьютера).
Несколько вопросов:
- на компьютере есть MS Office Word? Иначе придется создавать документ формата .rtf (поддерживается системой без доп. софта)
- проще изначально в письме использовать не батник, а именно приложение (exe-файл, т.к. не придется сначала создавать, а после скачивать установщик). Если нужно, то предоставлю исходный код приложения. Язык программирования - AutoIt 3. Его синтаксис очень напоминает рассматриваемые в посте скрипты. Так может лучше обойтись без батника?
- нужны дата запуска печати документа и текст поздравления
- желательно заранее знать, какая операционная система установлена на компьютере, где будет выполняться "поздравлялка" (XP, Vista, 7, 8, 8.1, 10 или серверные редакции систем Windows)?
Если из носа у вас течет, в этом, как правило, виноват вирус обычной простуды. К счастью, у нас имеется иммунитет, так что она быстро проходит. А вот с другими вирусами справиться куда сложнее! Какие бывают вирусы, чем они отличаются от бактерий и как с ними бороться, рассказывает Forskning.
Существуют лекарства против вирусов, но они не всегда эффективны. Поэтому если вирус проник в клетки организма, задача иммунной системы — очистить их.
И бактерии, и вирусы могут стать причиной болезни человека. Но при этом они очень разные.
Внутри бактериальной клетки есть все, что требуется для жизни. Бактерия способна питаться, размножаться и избавляться от ненужных ей веществ. А вот вирус этого не может. Он выживает только за счет других, просто-напросто заставляя чужие клетки работать на себя.
Вирус проникает в клетку. А затем начинает пользоваться ею, производя множество своих копий. Некоторые вирусы копируют себя в таких количествах, что клетка в итоге просто лопается и погибает. Из нее высвобождаются миллионы новых вирусов, готовых атаковать следующую клетку.
Клетка — очень сложная система. Вирус же, напротив, относительно примитивен. На самом деле он даже не выполняет все требования, сформулированные учеными, чтобы дать определение живого существа.
Вирусы ничего не поглощают и не выделяют. Все эти заботы они перекладывают на других.
Представьте себе вирус в виде маленькой коробочки. Внутри лежат его гены — своего рода инструкция, в которой описывается, как вирус работает.
Мы постоянно носим в себе множество вирусов. Они присутствуют повсюду. Но, к счастью, далеко не все вирусы опасны. Некоторые из них даже участвуют в очень важных процессах в природе.
Например, в чайной ложке воды — несколько миллионов вирусов! В море они убивают бактерии, обеспечивая питанием прочие организмы.
Большинство вирусов не вредят людям, ведь они атакуют лишь определенный тип клеток.
Некоторые вирусы нападают только на свиней, другие вызывают заболевания у растений. Третьи предпочитают бактерии. На земле существуют вирусы практически для всего живого.
Нынешний коронавирус изначально был вирусом животных. Вероятно, его носителями были летучие мыши.
Как вышло, что он перекинулся на людей?
В процессе создания копий вируса периодически случаются ошибки. Копия получается не совсем точной. Это называется мутацией.
Но изредка вирусы мутируют так, что, вместо того чтобы заражать животных, начинают атаковать клетки человека. Если в организм человека попадает такой вирус, это может стать началом нового опасного заболевания.
Клетка вырабатывает все, что нужно вирусу. Она становится вирусной фабрикой.
Готовые вирусы затем могут покинуть клетку и отправиться в путешествие по организму. Либо клетка настолько переполняется вирусами, что лопается и погибает. И тогда множество новых вирусов вырываются на волю и атакуют новые жертвы.
В организме поднимается тревога. Иммунитет выпускает своих агентов, чтобы они арестовали непрошеных гостей. В этот момент человек чувствует себя слабым и больным.
Вирусы гриппа и коронавирус атакуют и повреждают клетки легких.
У заболевших коронавирусом поднимается температура и начинается кашель. Когда мы болеем гриппом, мы тоже страдаем от насморка и кашля. Так организм реагирует на инфекцию и защищается от нее.
Коронавирус распространяется по воздуху в маленьких капельках жидкости, при кашле вылетающих изо рта человека. Вдохнуть эти капельки может кто угодно. Либо кто-то может прикоснуться к месту, где они осели, а затем дотронуться до рта. Таким образом вирус распространяется.
Поскольку вирус на самом деле не совсем живое существо, очень трудно найти против него эффективное лекарство, которое при этом не навредило бы клеткам.
От некоторых вирусов защищают вакцины. Когда мы прививаемся, наш иммунитет учится распознавать вирус. В таком случае он нападает на вирус настолько быстро, что тот просто не успевает наплодить множество копий.
Сейчас ученые одновременно разрабатывают и лекарства, и вакцины против коронавируса.
Такое случается, например, когда иммунная система не в состоянии отследить вирус. К подобному типу относится вирус герпеса.
О мире вирусов известно многое, но еще больше ученым только предстоит узнать.
Вирусы — мельчайшие и простейшие микроорганизмы из всех существующих на Земле.
Если представить, что клетка — это авианосец, то бактерия по сравнению с ней покажется обычной весельной лодкой. А вирус — бутылочной пробкой, качающейся на волнах поблизости.
Но на самом деле есть и вирусы побольше. Их обнаружили всего несколько лет назад. Самые большие вирусы даже крупнее, чем простые бактерии. У них гораздо больше генов, чем у остальных вирусов, и большая часть их генетического материала совершенно не изучена.
Ученые задаются вопросом, откуда взялись гигантские вирусы. Может, прежде чем стать паразитами, они относились к отдельному виду живых организмов, обитавших на планете давным-давно?
К счастью, нам не стоит особенно бояться этих гигантских вирусов, как свидетельствуют проведенные исследования. Похоже, они предпочитают жить за счет амёб — одноклеточных организмов.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Многие обладатели флешек иногда сталкиваются с вирусами,появившиеся вдруг на карте памяти.Эта карточка может автоматически заразить любой компьютер, к которому была подключена. Бывает и наоборот: вирусы могут копироваться с компьютера на ещё не зараженную флэшку.
Это происходит благодаря системе автозапуска. Обычно CD/DVD или флеш-носитель в корневом каталоге содержит файл autorun.inf, который выполняется системой автоматически при вставке CD/DVD в дисковод или при подключении флешки в USB-гнездо. Существует масса способов обнаружения и уничтожения вирусов. ПО, предлагаемое различными антивирусными компаниями, способно предотвратить проникновение вредоносных программ на компьютер.
А как же быть с флешкой?
Чтобы рассмотренный в данной статье метод стал более понятен, рассмотрим механизм проникновения и автозапуска вирусов с флешки.
Каждый уважающий себя зловред стремится:
а) скопировать себя на устройство;
б) записать себя в автозапуск, изменив или создав файл autorun. inf в корневой папке диска.
Отсюда вывод: если мы хотим защитить свою карту памяти от вирусов, мы должны запретить вирусам, если не копироваться, то хотя бы изменять/создавать файл автозапуска.
Для обеспечения самой простой защиты от заражения вирусами с зараженной флэшки следует в системе отключить автозапуск, который по умолчанию включен. Для этого ниже перечислены ветви реестра, где с помощью редактора реестра (Пуск > Выполнить > regedlt >Ok) следует изменить некоторые параметры. После чего эти ветви можно через меню Файл > Экспорт > Тип файла > Файлы реестра Win9x/NT4(*.reg) сохранить в файл и запускать после очередной переустановки ОС для выполнения данной настройки без редактирования реестра вручную. Автозапуск с CD-ROM отключается при помощи следующего REG-файла:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesCdrom] "AutoRun"=dword:00000000.
По умолчанию автозапуск отключен только для жёстких дисков. За включение и отключение автозапуска для разных типов носителем отвечает ключ реестра: [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer] "NoDriveTypeAutoRun"=clword :000000ff. Допустимые значения ключа NoDriveTypeAutoRun, описаны в КВ967715. Допустимые значения ключа:
0x1 - отключить автозапуск на приводах неизвестных типов
0x4 - отключить автозапуск сьемных устройств
0x8 - отключить автозапуск НЕсъемных устройств
0x10 - отключить автозапуск сетевых дисков
0x20 - отключить автозапуск CD-приводов
0x40 - отключить автозапуск RAM-дисков
0x80 - отключить автозапуск на приводах неизвестных типов OxFF - отключить автозапуск вообще всех дисков.
Следует отметить, что запрет автозапуска при помощи вышеприведённого ключа реестра не устраняет опасности заражения компьютера. Это связано с тем, что значение ключа влияет только на исполнение autorun.inf при определении системой подключенного носителя, но не запрещает исполнение при двойном клике на значке носителя.
Таким образом, даже если функция автозапуска отключена, заражение происходит при попытке пользователя открыть подключённый диск для просмотра. Компания Microsoft выпустила исправление, описанное в КВ967715 (http://support.microsoft.com/kb/967715/), полностью решающее данную проблему.
Также, можно воспользоваться альтернативным способом запрета обработки autorun.inf: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWi ndows NTCurrentVersionlniFileMappingAutorun.inf] @="@SYS:DoesNotExist”
Возможное решение запрета автостарта всех типов файлов (только автостарт! обработка двойного клика и контекстного меню будет произведена) [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerAutoplayHandlersCancelAutoplayFiles]
"*.*"=""
И всё же, сколько ни отключай автозапуск, хитрая зараза найдёт способ досадить. А вот сторож USB как раз и бдит такие случаи. Сидит себе в трее, но стоит вставить флэшку - тут же сканирует ее на вирусы! Тем самым избавляет вас от зловредов, что сильно расплодились через сменные носители.
Имеет бонусные функции вроде вывода списка программ в автозагрузке. Не конфликтует с другими защитными средствами. Поэтому для самых ленивых предлагаю скачать Инете прогу USB Drive Security.
Разумеется, можно воспользоваться специальными программами, которые обещают стопроцентную защиту съемного носителя. Но программы эти в основном или платные, или делают не совсем то, что нужно.
Будет логичным воспользоваться возможностями файловой системы NTFS, в которой можно задать права на доступ к любому файлу. Нас, понятное дело, интересует файл autorun, inf, кто не понял, почему именно он, рекомендую еще раз прочитать статью с начала.
Перед тем, как ограничить доступ к autorun.inf, следует убедиться, что файловая система флешки - именно NTFS. Для этого заходим "Мой компьютер" и щелкаем по значку флешки правой кнопкой мыши.Выбираем пункт "Свойствами смотрим, что написано в строке "Файловая система".
Если там NTFS, то можно сразу переходить к следующему шагу, если же FAT32 или FAT16, то необходимо выполнить следующие шаги:
1) запустить командную строку (Пуск > Выполнить > ввести cmd /к);
2) выполнить команду “Convert”: convert [буква диска:] /FS:NTFS Например, у меня диску флешки присвоена буква Н. Тогда синтаксис команды convert будет выглядеть так:
convert Н: /FS:NTFS /X ,где параметр /X нужен, чтобы закрыть все программы, работающие с диском в данный момент.
Должен начаться процесс конвертирования. Следует заметить, что данные при этом не удаляются, и все файлы на диске останутся на месте.
Теперь указываем права доступа. Открываем диск в Мой компьютер, находим или создаем файл autorun, inf. Чтобы создать файл в окне на пустом месте кликаем правой кнопкой мыши, в контекстном меню выбираем Создать > Текстовый документ, появится новый файл "Текстовый документ", который переименовываем в "autorun.inf".
Тут может возникнуть предупреждающее системное сообщение "После смены расширения имени файла этот файл может оказаться недоступным. Вы действительно хотите изменить расширение?". Нажимаем "Да".
Теперь но файлу autorun.inf щелкаем правой кнопкой, выбираем Свойства > закладка Безопасность. Если файловая система точно NTFS, а такого пункта нет, то в этом же окне Проводника идем в меню Сервис > Свойства Папки > закладка Вид и снимаем галочку с пункта "Использовать простой общий доступ к файлам".
Но не стоит расслабляться. То, что мы сделали - это лишь подготовка к главному шагу. В первую очередь удаляем все элементы из списка "Пользователи и группы".
Ни в коем случае не нажимайте после этого на OKI Иначе, если вы не владелец диска, сами не сможете его открыть. Добавьте в список 2 элемента: свою учетную запись и группу "Все". Для этого нажмите “Добавить” и введите сначала имя пользователя (свою учетную запись), а затем вновь "Добавить" и наберите "Все" .
Убедитесь, что выделено имя вашей учетной записи, и кликните "Дополнительно". Измените, владельца файла на себя.
Удалите все записи из подменю "Аудит" и снимите галочку с пункта "Наследовать от родительского объекта применимые к дочерним объектам элементы аудита, добавляя их к явно заданным в этом окне" (или "Заменить элементы аудита для всех дочерних объектов").
Пришло время перейти к установке разрешений. В списке "Разрешения" к этому времени должно остаться только две записи. Одна запись под вашим именем, а другая "Все". Выбирайте свою учётную запись и нажмите "Изменить". С вами все просто - выбираем "Полный доступ" и можно не беспокоить-_ ся - вы с этим файлом вольны делать все, что угодно. Теперь очередь остальных. Выбираем "Все" и удаляем все галочки, кроме -"Обзор папок/Выполнение файлов", "Содержание папки/Чтение данных", "Чтение атрибутов", "Чтение дополнительных атрибутов", "Чтение разрешений".
Закрываем окна нажатием ОК.Настройка окончена.Чтобы убедиться в правильности действий, попробуйте что-нибудь сделать с файлом автозапуска на другом компьютере или под другой учетной записью. Если попытки изменения успешны, значит, где-то выставлены неверные разрешения или вы что-то пропустили.
Пора подводить итоги. Выполненными действиями мы запретили вирусам автозапуск с флеш-носителя, но копироваться на него они по-прежнему могут и будут. Так что не забывайте регулярно проверять антивирусниками ваш компьютер,например, Kaspersky Antivirus 2014 на данный момент,дабы избежать появления вредоносных программ(вирусов).
Поговорим о компьютерных вирусах? Нет, не о том, что вчера поймал ваш антивирус. Не о том, что вы скачали под видом инсталлятора очередного Photoshop. Не о rootkit-e, который стоит на вашем сервере, маскируясь под системный процесс. Не о поисковых барах, downloader-ах и другой малвари. Не о коде, который делает плохие вещи от вашего имени и хочет ваши деньги. Нет, всё это коммерция, никакой романтики…
В общем, для статьи вполне достаточно лирики, перейдем к делу. Я хочу рассказать о классическом вирусе, его структуре, основных понятиях, методах детектирования и алгоритмах, которые используются обеими сторонами для победы.
Мы будем говорить о вирусах, живущих в исполняемых файлах форматов PE и ELF, то есть о вирусах, тело которых представляет собой исполняемый код для платформы x86. Кроме того, пусть наш вирус не будет уничтожать исходный файл, полностью сохраняя его работоспособность и корректно инфицируя любой подходящий исполняемый файл. Да, ломать гораздо проще, но мы же договорились говорить о правильных вирусах, да? Чтобы материал был актуальным, я не буду тратить время на рассмотрение инфекторов старого формата COM, хотя именно на нем были обкатаны первые продвинутые техники работы с исполняемым кодом.
Начнём со свойств кода вируса. Чтобы код удобней было внедрять, разделять код и данные не хочется, поэтому обычно используется интеграция данных прямо в исполняемый код. Ну, например, так:
Все эти варианты кода при определенных условиях можно просто скопировать в память и сделать JMP на первую инструкцию. Правильно написав такой код, позаботившись о правильных смещениях, системных вызовах, чистоте стека до и после исполнения, и т.д., его можно внедрять внутрь буфера с чужим кодом.
Исполняемый файл (PE или ELF) состоит из заголовка и набора секций. Секции – это выровненные (см. ниже) буферы с кодом или данными. При запуске файла секции копируются в память и под них выделяется память, причем совсем необязательно того объёма, который они занимали на диске. Заголовок содержит разметку секций, и сообщает загрузчику, как расположены секции в файле, когда он лежит на диске, и каким образом необходимо расположить их в памяти перед тем, как передать управление коду внутри файла. Для нас интересны три ключевых параметра для каждой секции, это psize, vsize, и flags. Psize (physical size) представляет собой размер секции на диске. Vsize (virtual size) – размер секции в памяти после загрузки файла. Flags – атрибуты секции (rwx). Psize и Vsize могут существенно различаться, например, если программист объявил в программе массив в миллион элементов, но собирается заполнять его в процессе исполнения, компилятор не увеличит psize (на диске содержимое массива хранить до запуска не нужно), а вот vsize увеличит на миллион чего-то там (в runtime для массива должно быть выделено достаточно памяти).
Флаги (атрибуты доступа) будут присвоены страницам памяти, в которые секция будет отображена. Например, секция с исполняемым кодом будет иметь атрибуты r_x (read, execute), а секция данных атрибуты rw_ (read,write). Процессор, попытавшись исполнить код на странице без флага исполнения, сгенерирует исключение, то же касается попытки записи на страницу без атрибута w, поэтому, размещая код вируса, вирмейкер должен учитывать атрибуты страниц памяти, в которых будет располагаться код вируса. Стандартные секции неинициализированных данных (например, область стека программы) до недавнего времени имели атрибуты rwx (read, write, execute), что позволяло копировать код прямо в стек и исполнять его там. Сейчас это считается немодным и небезопасным, и в последних операционных системах область стека предназначена только для данных. Разумеется, программа может и сама изменить атрибуты страницы памяти в runtime, но это усложняет реализацию.
Также, в заголовке лежит Entry Point — адрес первой инструкции, с которой начинается исполнение файла.
Необходимо упомянуть и о таком важном для вирмейкеров свойстве исполняемых файлов, как выравнивание. Для того чтобы файл оптимально читался с диска и отображался в память, секции в исполняемых файлах выровнены по границам, кратным степеням двойки, а свободное место, оставшееся от выравнивания (padding) заполнено чем-нибудь на усмотрение компилятора. Например, логично выравнивать секции по размеру страницы памяти – тогда ее удобно целиком копировать в память и назначать атрибуты. Даже вспоминать не буду про все эти выравнивания, везде, где лежит мало-мальски стандартный кусок данных или кода, его выравнивают (любой программист знает, что в километре ровно 1024 метра). Ну а описание стандартов Portable Executable (PE) и Executable Linux Format (ELF) для работающего с методами защиты исполняемого кода – это настольные книжки.
Если мы внедрим свой код в позицию точно между инструкциями, то сможем сохранить контекст (стек, флаги) и, выполнив код вируса, восстановить все обратно, вернув управление программе-хосту. Конечно, с этим тоже могут быть проблемы, если используются средства контроля целостности кода, антиотладка и т.п., но об этом тоже во второй статье. Для поиска такой позиции нам необходимо вот что:
- поставить указатель точно на начало какой-нибудь инструкции (просто так взять рандомное место в исполняемой секции и начать дизассемблирование с него нельзя, один и тот же байт может быть и опкодом инструкции, и данными)
- определить длину инструкции (для архитектуры x86 инструкции имеют разные длины)
- переместить указатель вперед на эту длину. Мы окажемся на начале следующей инструкции.
- повторять, пока не решим остановиться
Это минимальный функционал, необходимый для того, чтобы не попасть в середину инструкции, а функция, которая принимает указатель на байтовую строку, а в ответ отдает длину инструкции, называется дизассемблером длин. Например, алгоритм заражения может быть таким:
- Выбираем вкусный исполняемый файл (достаточно толстый, чтобы в него поместилось тело вируса, с нужным распределением секций и т.п.).
- Читаем свой код (код тела вируса).
- Берем несколько первых инструкций из файла-жертвы.
- Дописываем их к коду вируса (сохраняем информацию, необходимую для восстановления работоспособности).
- Дописываем к коду вируса переход на инструкцию, продолжающую исполнение кода-жертвы. Таким образом, после исполнения собственного кода вирус корректно исполнит пролог кода-жертвы.
- Создаем новую секцию, записываем туда код вируса и правим заголовок.
- На место этих первых инструкций кладем переход на код вируса.
Это вариант вполне себе корректного вируса, который может внедриться в исполняемый файл, ничего не сломать, скрыто выполнить свой код и вернуть исполнение программе-хосту. Теперь, давайте его ловить.
Думаю, не надо описывать вам компоненты современного антивируса, все они крутятся вокруг одного функционала – антивирусного детектора. Монитор, проверяющий файлы на лету, сканирование дисков, проверка почтовых вложений, карантин и запоминание уже проверенных файлов – все это обвязка основного детектирующего ядра. Второй ключевой компонент антивируса – пополняемые базы признаков, без которых поддержание антивируса в актуальном состоянии невозможно. Третий, достаточно важный, но заслуживающий отдельного цикла статей компонент – мониторинг системы на предмет подозрительной деятельности.
Итак (рассматриваем классические вирусы), на входе имеем исполняемый файл и один из сотни тысяч потенциальных вирусов в нем. Давайте детектировать. Пусть это кусок исполняемого кода вируса:
Как мы увидели, для быстрого и точного сравнения детектору необходимы сами байты сигнатуры и ее смещение. Или, другим языком, содержимое кода и адрес его расположения в файле-хосте. Поэтому понятно, как развивались идеи сокрытия исполняемого кода вирусов – по двум направлениям:
- сокрытие кода самого вируса;
- сокрытие его точки входа.
Сокрытие кода вируса в результате вылилось в появление полиморфных движков. То есть движков, позволяющих вирусу изменять свой код в каждом новом поколении. В каждом новом зараженном файле тело вируса мутирует, стараясь затруднить обнаружение. Таким образом, затрудняется создание содержимого сигнатуры.
Сокрытие точки входа (Entry Point Obscuring) в результате послужило толчком для появления в вирусных движках автоматических дизассемблеров для определения, как минимум, инструкций перехода. Вирус старается скрыть место, с которого происходит переход на его код, используя из файла то, что в итоге приводит к переходу: JMP, CALL, RET всякие, таблицы адресов и т.п. Таким образом, вирус затрудняет указание смещения сигнатуры.
Гораздо более подробно некоторые алгоритмы таких движков и детектора мы посмотрим во второй статье, которую я планирую написать в ближайшее время.
Рассмотренный в статье детектор легко детектирует неполиморфные (мономорфными их назвать, что ли) вирусы. Ну а переход к полиморфным вирусам является отличным поводом, наконец, завершить эту статью, пообещав вернуться к более интересным методам сокрытия исполняемого кода во второй части.
Читайте также: