Код вируса на python

Код вируса на python

Можно. Но преимущественно, в учебных целях.

1) Логичнее писать трояны для программного обеспечения на Python или использующего Python как скриптовой язык для расширений и плагинов.

2) Написание червей теоретически возможно:
— либо червь должен таскать с собой стандартный интерпретатор,
— либо исходники должны быть приведены к эквивалентному коду на C/C++ и скомпилированы (см. python-компилятор Nuitka или язык программирования Cython).

Вирус в природе это кусочек генетического кода в специальной оболочке. Эта оболочка автоматически впрыскивает генетический код в живую клетку, где этот код встраивается в ДНК клетки,
и рибосомы клетки "исполняют" этот код.
В компьютерной среде, вирус — это кусочек нативного исполняемого кода (полезная нагрузка), + другой кусочек нативного исполняемого кода (загрузчик), который умеет записывать нативный код (в данном случае себя) прямо в exe файл не нарушая его структуру.
После этого, при запуске заражённой программы процессор выполняет инструкции, которые в нём присутствуют и в том числе и инструкции вируса

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

После этого, скрипты, которые используют наивность админов, у которых пароль в админке 123456, и которые просто пишут текст в текстовые файлы (всякие ваши php-вирусы) это просто детский сад.

Иван Корюков, о терминах спорить не буду, так как не ИБ-шник.

Тем не менее, две ремарки по последнему абзацу:

Во-первых. В Python через расширения на C/C++ можно прокинуть вызов любого низкоуровневого кода.

Во-вторых. Исходный код на Python можно разными способами сконвертировать в код на C/C++ и скомпилировать в обычный исполняемый файл. Правда не любой исходный код, не без возможных проблем и конечный вес файла может составить несколько мегабайт.

Python для образовательных целей и прототипирования — достаточно универсальный инструмент, особенно со знанием сей или плюсов.

Руслан Гильфанов, можно-то можно, но при работе на настолько низком уровне, каждый байт на счету. Загрузчик вируса может найти в исполняемом файле не очень большие свободные места, и поэтому он должен уметь разбить свой код на несколько частей, вставить их в разные места и дописать переходы от одной части к другой.
Вы можете написать на питоне скрипт, который прочитает исполняемый файл, найдёт там свободные места и. что он туда запишет? Текст собственного скрипта? Весь интерпретатор питона?

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

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

Но опять же — всё упирается в терминологию. Вы можете написать скрипт, который дописывает код в другие скрипты, и по принципу действия это даже вирус. Насколько сложна эта программа? Программа, которая пишет текст в текстовый файл. И как тогда смотреть в глаза человеку, который говорит "я пишу вирусы на питоне" ?))

Иван Корюков, давайте немного отойдём от классических вирусов и червей.

Исключительно в образовательных целях, на Python можно написать честный криптовымогатель с ассимитричным шифрованием, клиент-серверной архитектурой и сервером управляющим public/private ключами с onion-сервиса (Tor Hidden Service).

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

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

К тому же, прототипирование на Python и последующая реализация на Си или плюсах — довольно распространённая практика, что может использоваться и в образовательных целях.

Иван Корюков, в менеджерах установки пакетов, магазинах мобильных приложений, публичных репозиториях систем контроля версий и даже в собственных разработках IT-компаний порой обнаруживают подобные бомбы без взрывчатки — и они взрываются.

Читайте также:  Как включить планшет асер

Мне кажется из всего множества способов внедрения вредоносного ПО к конечному пользователю, не стоит зацикливаться на тех, что используют низкоуровневые особенности работы ОЗУ и ЦПУ.

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

Из полного текста вопроса видно, что автор явно объединяет черви и трояны в общее понятие "вирусы". То есть, вопрос логичнее читать как "Можно ли писать вредоносные программы на Python и какие именно?".

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

Иван Корюков, "Дело в том что вирус это код, который умеет записать себя в почти программу, которую найдет на диске."
Вообще нет.

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

Недавно был создан Remote Access Trojan (RAT), который использует протокол Telegram для кражи пользовательских данных через зараженное устройство. RAT написан в Python и в данный момент находится в свободном доступе для скачивания на порталах обмена кодами (Github).

Создатель RAT, утверждает, что целью создания RAT была исключительно оптимизация и улучшение выполняемой работы для RAT. Автор подчеркивает, что главная проблема с большей частью RAT в том, что они не используют шифрование и запрашивают включение переадресации порта на устройстве жертвы для контроля зараженных хостов. Разработчик предлагает его собственный инструмент, под названием RATAtack, который использует протокол Telegram для поддержки зашифрованного канала жертвы и создателя канала, и не требует переадресации портов, так как протокол Telegram предусматривает простой метод связи с целью без предварительной настройки порта.

RAT работает через ботов в Telegram

Перед появлением RATatack, пользователь RAT должен создать бота в Telegram, взять маркер этого бота и поместить его в конфигурационный файл RAT. После заражения жертвы RATAttack, все хосты соединяются с каналом бота. Владелец RATAttack может подключиться к тому же каналу и пользоваться простыми инструкциями для управления клиентами RATatack в зараженных хостах. В соответствии с нынешней версией RATAttack, поддерживаются следующие команды:

Интерфейс RAT в Telegram

Ниже указаны некоторые функции RATAttack, а также находящиеся в доработке:

  • Запуск кейлоггера на ПК цели;
  • Получение информации о ПК цели, а именно: версии Windows, процессоре, и т.д.;
  • Получение информации об IP адресе цели и её приблизительное расположение на карте;
  • Показать окно сообщений с пользовательским текстом в компьютере цели;
  • Список всех каталогов в компьютере цели;
  • Локальная загрузка любого файла с компьютера цели в фоновом режиме;
  • Загрузка локальных файлов на компьютер цели. Отправка изображений, документов pdf, exe, и любого другого файла боту Telegram;
  • Скриншоты компьютера цели;
  • Выполнение любого файла на компьютере цели.

Функции в разработке:

  • Самоуничтожение RAT на компьютере цели;
  • Снимки с вебкамеры (если имеется);
  • Удаление файлов на компьютере цели

RATAttack написан на Python 2.7, но автор обещал версию для Python 3.X.

Мистический «отказ от ответственности» будет держать плохих ребят подальше

Как и большинство «темных» разработчиков, которые создают RAT с двойным назначением, разработчик назвал свое творение Remote Administration Tool (Инструмент удаленного администрирования). Даже если часть функций, над которыми он в данный момент работает, обычно обнаруживается во вредоносных троянах. Они не являются легальными инструментами удаленного администрирования, такими как Teamviewer и другие.

Разработчик также не забыл исполнить старый номер, и обязательный «отказ от ответственности» в конце описания RATAttack, надеясь избежать последствий, к которым приведут злоумышленники, используя его код, который находится в свободном доступе для слежки за супругами, взлома компаний, или держать диссидентов под наблюдением. Предположительно, этот инструмент должен использоваться только в авторизированных системах. Любое неавторизированное использование данного инструмента без разрешения является нелегальным. Вопрос ПО с двойным назначением, используемым для легальных и преступных целей, недавно обсуждался в новостях.

Точка зрения в поддержку разработчиков RAT выражена в статье под названием «ФБР арестовало хакера, который никого не хакнул», пока журналист Infosec Брайан Кребс выдвинул контраргумент в виде статьи, под названием «Криминал и ПО с двойным назначением — это не так уж и ново». Обе статьи рекомендуются к прочтению, для понимания того, почему не стоит обманывать власти и органы правопорядка в частности, называя свой софт Инструментом удаленного администрирования, который содержит явные функции вредоносного ПО. Автор кода поделился своей разработкой на GitHub, так что, основываясь на печальном опыте, вопрос времени, когда мы увидим его в руках настоящих компаниях вредоносного ПО.

Читайте также:  Ножницы виндовс 10 горячие клавиши

Обновление (April 19, 2017, 03:55 ) : Ritiek Malhotra (@Ritiek) Удалил свой репозиторий на Github. На гитхабе уже успели сделать форки. Пользователь @mvrozanti даже начал расширение функционала.

CypherZ

Новорег

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

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

  • Оверврайтеры (Overwrite) — HLLO,
  • компаньоны (Companion) — HLLC, и
  • паразиты (Parasitic) — HLLP.

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

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

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

Так сохраняется код оригинальной программы, и при этом не привлекает лишнего внимания.

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

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

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

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

Но сначала выполняется команда

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

Читайте также:  Уменьшить глубину цвета tiff

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

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

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

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

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

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

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

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

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

В импорте у нас появилась библиотека 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:Windowsvirus.exe). А так как для дальнейших действий нам нужно только наименование файла, то мы вызываем os.path.split().

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

Ссылка на основную публикацию
Камера мвк 16 схема подключения
Вы сможете задать интересующий Вас вопрос, заполнив ниже приведенную форму. Мы обязательно ответим Вам и предоставим всю необходимую информацию. Видеокамеры...
Какие купюры принимает банкомат тинькофф
С момента создания банка Тинькофф в 2006 году он позиционировал себя исключительно как онлайн-банк – у него не было офисов...
Какой adsl модем лучше выбрать для ростелеком
Несмотря на ограничение максимальной скорости в 24 Мбит/с, ряд провайдеров продолжает использовать технологию ADSL. Редакция WiNetwork подготовила свой рейтинг роутеров,...
Клавиатура с пластмассовыми штырями преимущества и недостатки
электронный почта сканер клавиатура Клавиатура является одним из важнейших устройств, определяющим условия комфортабельной работы на РС. Главным элементом в клавиатуре...
Adblock detector