Здравствуйте, увлекаюсь информационной безопасностью. Выбрал это направление, только по тому что,
hacking, очень интересует меня. Тем не менее, я не собираюсь становиться известнейшим хакером,
я хочу быть программист, который создает антивирусы, тестит различные сайты, приложения и онлайн игры на уязвимости и т.д. И так как я учу python, мне интересно можно ли написать вирус на python. В тостере пишут что на чем умеют на том и пишут, перечисляют C,C++,JS,Assembler, но про python, я ничего не слышал.
Никто пока что не перечислил python. И возник вот такой вопрос, можно ли писать вирусы на python, если да то какие (трояны, черви)? Спасибо заранее за ответы!
Можно. Для этого нужно еще раз почитать определение вируса - оно заключается в том, что вирус должен уметь размножаться, то есть сам себя копировать.
Проблема в том, что непросто взять и запустить на удаленной машине скрипт на питоне, особенно если там не установлен интерпретатор питона, поэтому вирус на нем будет размножаться очень плохо, и писать вирусы на питоне имеет смысл ну наверное только в образовательных целях.
1) Логичнее писать трояны для программного обеспечения на Python или использующего Python как скриптовой язык для расширений и плагинов.
2) Написание червей теоретически возможно:
- либо червь должен таскать с собой стандартный интерпретатор,
- либо исходники должны быть приведены к эквивалентному коду на C/C++ и скомпилированы (см. python-компилятор Nuitka или язык программирования Cython).
Я увлекся пайтоном может с 2 месяца назад. Я написал на нем себе для компьютера ассистента с распознаванием речи(очень глупого, но все же он облегчает мне жизнь), написал парсер погоды(и встроил в ассистента), хотел поиграться с нейронными сетями, но понял что 2 месяца - это довольно короткий срок, и решил лучше подучить как пайтон, так и всякую теорию, которая может пригодиться программисту. Думал про написание вирусов, но даже не приступил, потому что вспомнил, что питон не компилируется, и получается вирус должен всегда носить с собой интерпритатор, который много весит(для вируса). Я думаю пайтон больше подходит для частного пользования, всяких научных исследований и других полезных штуках, чем для написания вирусов. Для вирусописания лучше использовать языки из семейства Си, т.к. в мире много компов с операционной системой Windows.
Если что неправильно написал, не бейте сильно, я еще маленький программист.
Из скриптового чаще всего пишут на перле, bat, vb
Пишут на питоне мало, потому что нужно тянуть в инсталяторе интерпритатор питона, а он не сильно маленький
Вирус - только на компилируемых в нативный машинный код языках. В основном на ассемблере и си. Дело в том что вирус это код, который умеет записать себя в почти программу, которую найдет на диске. И записать код в exe файл это совсем не то же самое что дописать скрипт на php или python.
Руслан Гильфанов, когда кто-то говорит "вирус" - это принципиально. Люди обычно склонны называть вирусами любые вредоносные программы. На самом деле разница между основными типами вредоносных программ кроется в их названиях. Вирус - как и в природе, не является чем-то полноценным и может работать только внедрившись в организм.
Вирус в природе это кусочек генетического кода в специальной оболочке. Эта оболочка автоматически впрыскивает генетический код в живую клетку, где этот код встраивается в ДНК клетки,
и рибосомы клетки "исполняют" этот код.
В компьютерной среде, вирус - это кусочек нативного исполняемого кода (полезная нагрузка), + другой кусочек нативного исполняемого кода (загрузчик), который умеет записывать нативный код (в данном случае себя) прямо в exe файл не нарушая его структуру.
После этого, при запуске заражённой программы процессор выполняет инструкции, которые в нём присутствуют и в том числе и инструкции вируса
Червь - ползает по сети, посылает специальный набор данных в открытые порты в надежде на то, что где-то этот набор данных приведёт к переполнению, и можно будет выполнить кусочек собственного кода.
Троян - притворяется не тем кем является. Обычно трояном является полезная нагрузка вируса/червя, которая запускается отдельно и маскируется под системную программу.
После этого, скрипты, которые используют наивность админов, у которых пароль в админке 123456, и которые просто пишут текст в текстовые файлы (всякие ваши php-вирусы) это просто детский сад.
Иван Корюков, о терминах спорить не буду, так как не ИБ-шник.
Тем не менее, две ремарки по последнему абзацу:
Во-первых. В Python через расширения на C/C++ можно прокинуть вызов любого низкоуровневого кода.
Во-вторых. Исходный код на Python можно разными способами сконвертировать в код на C/C++ и скомпилировать в обычный исполняемый файл. Правда не любой исходный код, не без возможных проблем и конечный вес файла может составить несколько мегабайт.
Python для образовательных целей и прототипирования -- достаточно универсальный инструмент, особенно со знанием сей или плюсов.
Руслан Гильфанов, можно-то можно, но при работе на настолько низком уровне, каждый байт на счету. Загрузчик вируса может найти в исполняемом файле не очень большие свободные места, и поэтому он должен уметь разбить свой код на несколько частей, вставить их в разные места и дописать переходы от одной части к другой.
Вы можете написать на питоне скрипт, который прочитает исполняемый файл, найдёт там свободные места и... что он туда запишет? Текст собственного скрипта? Весь интерпретатор питона?
Вирусы обычно не пишут на даже плюсах, т.к. из-за его высокоуровневости не хватает контроля над конечным кодом. При написании вируса вы должны точно знать в какие инструкции скомпилируется ваш код. Поэтому проще всего сразу писать эти инструкции.
Даже если вы как-то решите эти проблемы, то смысла от того что вы пишете на питоне будет не много. Вам всё-равно надо знать ассемблер для внедрения, и раз вы решили вышеописанные проблемы - то вы знаете его лучше чем родной язык)
Но опять же - всё упирается в терминологию. Вы можете написать скрипт, который дописывает код в другие скрипты, и по принципу действия это даже вирус. Насколько сложна эта программа? Программа, которая пишет текст в текстовый файл. И как тогда смотреть в глаза человеку, который говорит "я пишу вирусы на питоне" ?))
Иван Корюков, давайте немного отойдём от классических вирусов и червей.
Исключительно в образовательных целях, на Python можно написать честный криптовымогатель с ассимитричным шифрованием, клиент-серверной архитектурой и сервером управляющим public/private ключами с onion-сервиса (Tor Hidden Service).
Образовательный смысл высокоуровневой и тяжеловесной реализации на готовых библиотеках -- наглядная демонстрация целого класса зловредов, без погружения в низкоуровневые детали реализации.
Понятно, что для боевого применения, реализация малопригодна. Но, для обучения основам информационной безопасности, высокоуровневые реализации криптовымогателей, кейлоггеров, ботнетов и пр. -- должны иметь право на существования.
К тому же, прототипирование на Python и последующая реализация на Си или плюсах -- довольно распространённая практика, что может использоваться и в образовательных целях.
Руслан Гильфанов, ага, отличная разминка для пальцев. Проблема в том, что в этом криптовымогателе не будет того от чего надо защищаться) Это как делать бомбу без взрывчатки и тренировать собак искать её по запаху.
Иван Корюков, в менеджерах установки пакетов, магазинах мобильных приложений, публичных репозиториях систем контроля версий и даже в собственных разработках IT-компаний порой обнаруживают подобные бомбы без взрывчатки -- и они взрываются.
Мне кажется из всего множества способов внедрения вредоносного ПО к конечному пользователю, не стоит зацикливаться на тех, что используют низкоуровневые особенности работы ОЗУ и ЦПУ.
Думаю статистически, социальная инженерия в том или ином виде -- наиболее популярный и успешный способ проникновения в пользовательские системы. И было бы странно, если бы специалисты по ИБ это полностью игнорировали.
Из полного текста вопроса видно, что автор явно объединяет черви и трояны в общее понятие "вирусы". То есть, вопрос логичнее читать как "Можно ли писать вредоносные программы на Python и какие именно?".
И тут Ваш предыдущий комментарий можно считать почти исчерпывающим ответом, если считать вирусами только те вредоносные программы, что для вирусного распространения используют низкоуровневые особенности ОЗУ, ПЗУ и ЦПУ.
Иван Корюков, "Дело в том что вирус это код, который умеет записать себя в почти программу, которую найдет на диске."
Вообще нет.
Особенность вируса - в размножении. А каким образом он это делает - влезает в бутсектор, в экзешник, используя уязвимость проникает через сеть прямо в память и оттуда уже записывает себя в виде отдельного исполняемого файла/библиотеки, или банально добавляет автозапуск в реестре или ярлык в папку автозапуска - дело вторичное. Даже умение добавить себя как плагин, чтобы автоматически запускаться с каким-то софтом - это уже тоже вирус.
Иван Корюков, "можно-то можно, но при работе на настолько низком уровне, каждый байт на счету."
При каком низком уровне?
В современных программах внутрь прячут полноценные 3д-игры. .exe это не .com файл с ограничением в 64 кбайта, туда можно запихнуть что угодно и никто не заметит.
Плюс не забывайте про ntfs потоки.