Как написать шифровальщик на 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. Подключаем их.
Создадим три функции: сообщение, парсер, заражение.
Функция, которая сообщает об атаке:
Сразу вызовем ее, чтобы понять, что программа отработала:
Обход директорий похож на тот, что мы делали в шифровальщике.
Вирус будет заражать файлы «вниз» от того каталога, где он находится (путь мы получаем, вызвав os.getcwd()).
В начале и в конце файла пишем вот такие комментарии:
Дальше функция, которая отвечает за саморепликацию.
Теперь, думаю, стало понятнее, зачем нужны метки «старт» и «стоп». Они обозначают начало и конец кода вируса. Сперва мы читаем файл и построчно просматриваем его. Когда мы наткнулись на стартовую метку, поднимаем флаг. Пустую строку добавляем, чтобы вирус в исходном коде начинался с новой строки. Читаем файл второй раз и записываем построчно исходный код. Последний шаг — пишем вирус, два отступа и оригинальный код. Можно поиздеваться и записать его как-нибудь по-особому — например, видоизменить все выводимые строки.
Создание исполняемого файла
Как запустить вирус, написанный на скриптовом языке, на машине жертвы? Есть два пути: либо как-то убедиться, что там установлен интерпретатор, либо запаковать созданный нами шифровальщик вместе со всем необходимым в единый исполняемый файл. Этой цели служит утилита PyInstaller. Вот как ей пользоваться.
Немного ждем, и у нас в папке с программой появляется куча файлов. Можете смело избавляться от всего, кроме экзешников, они будет лежать в папке dist.
Говорят, что с тех пор, как начали появляться вредоносные программы на Python, антивирусы стали крайне нервно реагировать на PyInstaller, причем даже если он прилагается к совершенно безопасной программе.
Я решил проверить, что VirusTotal скажет о моих творениях. Вот отчеты:
Худший результат показал Virus.exe — то ли некоторые антивирусы обратили внимание на саморепликацию, то ли просто название файла не понравилось. Но как видите, содержимое любого из этих файлов насторожило далеко не все антивирусы.
Итого
Итак, мы написали три вредоносные программы: локер, шифровальщик и вирус, использовав скриптовый язык, и упаковали их при помощи PyInstaller.
Безусловно, наш вирус — не самый страшный на свете, а локер и шифровальщик еще нужно как-то доставлять до машины жертвы. При этом ни одна из наших программ не общается с C&C-сервером и я совсем не обфусцировал код.
Тем не менее уровень детекта антивирусами оказался на удивление низким. Получается, что даже самый простой вирус шифровальщик может стать угрозой. Так что антивирусы антивирусами, но скачивать из интернета случайные программы и запускать их не думая всегда будет небезопасно.
Источник статьи: http://spy-soft.net/ransomware-python/
Ядовитый питон. Пишем на Python простейшую малварь: локер, шифровальщик и вирус
Содержание статьи
Чаще всего Python применяют для создания бэкдоров в софте, чтобы загружать и исполнять любой код на зараженной машине. Так, в 2017 году сотрудники компании Dr.Web обнаружили Python.BackDoor.33, а 8 мая 2019 года был замечен Mac.BackDoor.Siggen.20. Другой троян — RAT Python крал пользовательские данные с зараженных устройств и использовал Telegram в качестве канала передачи данных.
Мы же создадим три демонстрационные программы: локер, который будет блокировать доступ к компьютеру, пока пользователь не введет правильный пароль, шифровальщик, который будет обходить директории и шифровать все лежащие в них файлы, а также вирус, который будет распространять свой код, заражая другие программы на Python.
Тема удаленного администрирования зараженных машин осталась за рамками этой статьи, однако ты можешь почерпнуть основу для кода со всеми объяснениями в статье «Reverse shell на Python».
Несмотря на то что наши творения не претендуют на сколько-нибудь высокий технический уровень, они в определенных условиях могут быть опасными. Поэтому предупреждаю, что за нарушение работы чужих компьютеров и уничтожение информации может последовать строгое наказание. Давай сразу договоримся: запускать все, что мы здесь описываем, ты будешь только на своей машине, да и то осторожно — чтобы случайно не зашифровать себе весь диск.
WARNING
Вся информация предоставлена исключительно в ознакомительных целях. Ни автор, ни редакция не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Настройка среды
Итак, первым делом нам, конечно, понадобится сам Python, причем третьей версии. Не буду детально расписывать, как его устанавливать, и сразу отправлю тебя скачивать бесплатную книгу «Укус питона» (PDF). В ней ты найдешь ответ на этот и многие другие вопросы, связанные с Python.
Дополнительно установим несколько модулей, которые будем использовать:
На этом с подготовительным этапом покончено, можно приступать к написанию кода.
Локер
Идея — создаем окно на полный экран и не даем пользователю закрыть его.
Теперь возьмемся за основную часть программы.
Здесь pyautogui.FAILSAFE = False — защита, которая активируется при перемещении курсора в верхний левый угол экрана. При ее срабатывании программа закрывается. Нам это не надо, поэтому вырубаем эту функцию.
Чтобы наш локер работал на любом мониторе с любым разрешением, считываем ширину и высоту экрана и по простой формуле вычисляем, куда будет попадать курсор, делаться клик и так далее. В нашем случае курсор попадает в центр экрана, то есть ширину и высоту мы делим на два. Паузу ( sleep ) добавим для того, чтобы пользователь мог ввести код для отмены.
Сейчас мы не блокировали ввод текста, но можно это сделать, и тогда пользователь никак от нас не избавится. Для этого напишем еще немного кода. Не советую делать это сразу. Сначала давай настроим программу, чтобы она выключалась при вводе пароля. Но код для блокирования клавиатуры и мыши выглядит вот так:
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Валерий Линьков
Дипломированный специалист Cisco, инструктор Cisco Networking Academy, основатель первой в Москве академии Cisco на базе предприятия, автор технических статей посвящённых национальной безопасности России, сисадмин, ИБшник, питонист, гик
Источник статьи: http://xakep.ru/2020/05/22/python-malware/
Все про вирусы-шифровальщики типа WannaCry и как от них защититься
О вирусах-вымогателях в криптосообщества активно заговорили в мае 2017 года. В это время вирус WannaCry быстро распространился по компьютерным сетям. Он заражали компьютеры на Windows, шифровал файлы на жестком диске ПК, а затем требовал выкуп в биткоинах за засшифровку.
Это краткий принцип действия шифровальщиков. В этой статье разберемся, что такое WannaCry, как лечить зашифрованные компьютеры и что рассказывает source code вируса.
Каналы заражения
Есть два термина: «вымогатель» и «шифровальщик». Это описывает функцию вредоносного ПО, которая заключается в вымогательстве денег за расшифровку файлов. Вирус должен получить доступ к файлам или системе. Это происходит посредством заражения или векторов атаки.
Технически, вектор атаки или заражения — это средство, с помощью которого вымогатели получают доступ. Самые популярные:
- прикрепленный файл на бизнес-почту (резюме, инвойсы, приглашения),
- сообщения в соцсетях с вложениями,
- всплывающие окна с различными «подсказками», которые в итоге ведут к заражению.
Феномен WannaCry
Несколько факторов привлекли внимание к WannaCry. В первую очередь из-за того, что он заразил крупнейшие компании. В их числе Британская национальная служба здравоохранения. Вирус-шифровальщик эксплуатировал уязвимость Windows, которая была впервые обнаружена Агентством национальной безопасности США. Symantec и другие исследователи безопасности связывали его с Lazarus Group — организацией, которая занимается киберпреступностью и может быть связана с правительством Северной Кореи.
Как создан WannaCry и другие шифровальщики?
WannaCry Ransomware состоит из нескольких компонентов. Он попадает на зараженный компьютер в форме дроппера. Это отдельная программа, которая извлекает встроенные в нее компоненты приложения. Эти компоненты включают в себя:
- приложение, которое шифрует и дешифрует данные,
- файлы, содержащие ключи шифрования,
- копию Tor.
Исходный код несильно запутан, так что его смогли проанализировать специалисты по безопасности. После запуска шифровальщик WannaCry пытается получить доступ к жестко запрограммированному URL (так называемая «Кнопка уничтожения»). Если ему не удается, он продолжает поиск и шифрование файлов. Он шифрует множество форматов, от файлов Microsoft Office до MP3 и MKV. Файлы становятся недоступны для пользователя. Когда процесс завершен, вирус уведомляет о выкупе. WannaCry требовал 300 долларов в BTC за расшифровку файлов.
Как WannaCry выбирает компьютеры?
Вектор атаки для WannaCry более интересен, чем сам шифровальщик. Уязвимость, которую использует WannaCry, заключается в реализации Windows протокола SMB. Он помогает различным узлам сети взаимодействовать, а реализацию Microsoft можно обмануть специально созданными пакетами для выполнения любого кода.
Считается, что Агентство национальной безопасности США обнаружило эту уязвимость уже давно. Вместо того, чтобы сообщить общественности, оно разработало код под названием EternalBlue. Этот эксплойт, в свою очередь, был похищен группой хакеров. Shadow Brokers, название этой группы, создали пост 8 апреля 2017 на Medium (это сообщение полно политики, в нем заявлена позиция этой группы. Мы не будем переводить текст, там есть и отрывок про отношение к России, так как опасаемся, что это будет звучать экстремистски).
В Microsoft обнаружили уязвимость за месяц до этого и выпустили патч. Тем не менее это не помешало WannaCry, который опирался на EternalBlue, быстро распространиться по устройствам. После этого Microsoft обвинила правительство США, что оно не поделилось информацией об этой уязвимости раньше.
Даже если компьютер уже заражен, WannaCry не обязательно начнет шифрование файлов. Он сначала пытается получить доступ к очень длинному, бессмысленному URL, прежде чем приступить к работе. Если он получает доступ к этому домену, WannaCry отключается. Не совсем понятно, какова цель этой функции. Некоторые исследователи полагали, что создатели вредоносного ПО должны были остановить эту атаку. Тем не менее, Маркус Хатчинс, британский исследователь безопасности, который обнаружил этот URL, считает, что это должно затруднить анализ кода. Многие исследователи запускают вредоносное ПО в среде «песочницы», из которой любой URL или IP-адрес будет казаться доступным.
Хатчинс не только обнаружил жестко запрограммированный URL-адрес, но и заплатил 10,96 долларов и открыл там сайт. Это помогло замедлить распространение вредоносного ПО. Вскоре после того, как его признали героем, Хатчинс был арестован за то, что предположительно разрабатывал вирусы в 2014 году.
Symantec считают, что код вируса может иметь северокорейское происхождение. WannaCry бродил по сети в течение нескольких месяцев, прежде чем началась эпидемия. Это более ранняя версия вредоносного ПО, получившая название Ransom.Wannacry. Она использовала украденные учетные данные для запуска целевых атак. Использованные методы похожи на Lazarus Group.
Lazarus Group является хакерской группировкой, которая связана с Северной Кореей. В 2009 году они проводили DDoS-атаки на правительственные компьютеры Южной Кореи, затем атаковали Sony и банки.
Но так как исходный код вируса был открыт, нельзя точно приписать атаку кому-либо.
WannaCry source code
Немного технических деталей.
Имя вируса: WannaCrypt, WannaCry, WanaCrypt0r, WCrypt, WCRY
Вектор: Все версии Windows до Windows 10 уязвимы, если не исправлены для MS-17-010.
Выкуп: от 300 до 600 долларов. В вирусе есть код для удаления файлов.
Backdooring: червь проходит через каждый сеанс RDP в системе, чтобы запустить вымогателя от имени этого пользователя. Он также устанавливает бэкдор DOUBLEPULSAR. Это делает восстановление труднее.
Kill switch: если сайт www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com доступен, вирус выходит вместо заражения хоста. Не будет работать, если есть прокси.
Каждое заражение генерирует новую пару ключей RSA-2048:
- Открытый ключ экспортируется как BLOB-объект и сохраняется в 00000000.pky.
- Закрытый ключ шифруется с помощью открытого ключа вымогателя и сохраняется как 00000000.eky
Каждый файл зашифрован с AES-128-CBC, с уникальным ключом AES на файл. Каждый ключ AES генерируется CryptGenRandom.
Ключ AES зашифрован с использованием пары ключей RSA, уникальной для каждого. Открытый ключ RSA, используемый для шифрования приватного ключа, встроен в DLL и принадлежит авторам вируса.
- https://haxx.in/key1.bin (pubkey, используемый для шифрования закрытого ключа пользователя)
- https://haxx.in/key2.bin (privkey для дешифрования dll)
- https://pastebin.com/aaW2Rfb6 и https://pastebin.com/xZKU7Ph1 — дадут больше информации о вымогателе.
Три адреса для выкупа жестко запрограммированы в программе:
- https://blockchain.info/address/13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94
- https://blockchain.info/address/12t9YDPgwueZ9NyMgw519p7AA8isjr6SMw
- https://blockchain.info/address/115p7UMMngoj1pMvkpHijcRdfJNXj6LrLn
Как лечить WannaCry — патч
По иронии судьбы, патч, который защищает от WannaCry, был уже доступен до начала атаки. Microsoft в обновлении MS17-010, что вышло 14 марта 2017 года, исправил реализацию протокола SMB для Windows. Несмотря на критическое обновление, многие системы все еще не обновились до мая 2017 года. Больше повезло Windows 10, так как функция автоматического обновления сработала. То есть решение, как защититься от вируса-шифровальщика, уже было, но халатность на местах заставила компании поплатиться.
Для тех систем не было дешифровщика и выхода, кроме восстановления файлов из безопасной резервной копии. Хотя те, кто следит за кошельками биткоина, что указаны в сообщении от вируса, говорят, что некоторые платят выкуп. При этом мало доказательств того, что они вновь получили доступ к файлам.
Эта атака заставила Microsoft выпустить патч даже для XP, что поддержка прекращена. Большинство заражений было на Windows 7.
Источник статьи: http://zen.yandex.ru/media/crypto_fox/vse-pro-virusyshifrovalsciki-tipa-wannacry-i-kak-ot-nih-zascititsia-5d88e2805d636200adfc03cb