Как создать дешифратор файлов самому

Обновлено: 06.07.2024

Шифрование — это процесс кодирования информации, позволяющий только авторизованным сторонам получить к ней доступ.

Хотим поделиться с вами, как можно шифровать файлы, используя Python с помощью библиотеки cryptography, построенной на основе алгоритма AES. Возможно кому-то, также как и нам, такой способ покажется более простым для шифрования файла с данными.

В данном примере используется симметричное шифрование. Тот же ключ, который применяется для шифрования данных, можно использовать для их дешифрования.

Итак, установим библиотеку cryptography:

Открываем новый файл Python:

Создаем ключ и сохраняем его в файл, например, crypto.key:

Внимание! Сгенерированный ключ crypto.key необходимо хранить в надежном месте. В случае его потери невозможно будет расшифровывать данные, которые были зашифрованы этим ключом.

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

Создадим функцию для загрузки этого ключа:

Далее понадобится создать функцию для шифрования файла:

После инициализации объекта Fernet с заданным ключом прочитаем этот файл:

После этого, зашифровываем данные:

Запишем зашифрованный файл с тем же именем, чтобы он переопределил оригинал:

Теперь создадим функцию расшифровки файла:

И, наконец, проверим это на конкретном файле, разместив шифруемый файл и ключ в текущем каталоге.

Например, для шифрования файла с именем ‘report.csv’вызываем созданную функцию encrypt():

После шифрования будет видно, что размер файла ‘report.csv’увеличился, и мы не сможем прочитать содержимое этого файл.

Чтобы вернуть файл ‘report.csv’в исходную форму, вызовем функцию decrypt ():

Получаем исходный файл ‘report.csv’вместо ранее зашифрованного.

Обратите внимание на то, что при применении данного кода, размер файла не должен превышать объем оперативной памяти.

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

Как написать шифровальщик на 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. Подключаем их.

Функция, которая сообщает об атаке:

Сразу вызовем ее, чтобы понять, что программа отработала:

Обход директорий похож на тот, что мы делали в шифровальщике.

В теории мы могли бы таким же образом отравлять исходники и на других языках, добавив код на этих языках в файлы с соответствующими расширениями. А в Unix-образных системах скрипты на Bash, Ruby, Perl и подобном можно просто подменить скриптами на Python, исправив путь к интерпретатору в первой строке.

Вирус будет заражать файлы «вниз» от того каталога, где он находится (путь мы получаем, вызвав os.getcwd()).

В начале и в конце файла пишем вот такие комментарии:

Чуть позже объясню зачем.

Дальше функция, которая отвечает за саморепликацию.

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

Создание исполняемого файла

Как запустить вирус, написанный на скриптовом языке, на машине жертвы? Есть два пути: либо как-то убедиться, что там установлен интерпретатор, либо запаковать созданный нами шифровальщик вместе со всем необходимым в единый исполняемый файл. Этой цели служит утилита PyInstaller. Вот как ей пользоваться.

И вводим команду

Немного ждем, и у нас в папке с программой появляется куча файлов. Можете смело избавляться от всего, кроме экзешников, они будет лежать в папке dist.

Говорят, что с тех пор, как начали появляться вредоносные программы на Python, антивирусы стали крайне нервно реагировать на PyInstaller, причем даже если он прилагается к совершенно безопасной программе.

Я решил проверить, что VirusTotal скажет о моих творениях. Вот отчеты:

  • файл Crypt.exe не понравился 12 антивирусам из 72;
  • файл Locker.exe — 10 антивирусам из 72;
  • файл Virus.exe — 23 антивирусам из 72.

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

Итого

Итак, мы написали три вредоносные программы: локер, шифровальщик и вирус, использовав скриптовый язык, и упаковали их при помощи PyInstaller.

Безусловно, наш вирус — не самый страшный на свете, а локер и шифровальщик еще нужно как-то доставлять до машины жертвы. При этом ни одна из наших программ не общается с C&C-сервером и я совсем не обфусцировал код.

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

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

Программы-вымогатели становятся «флагманом» вредоносного ПО. За последний год мы зафиксировали рост числа атак шифрователей более чем в два раза (на 105%). Подобные вирусы блокируют доступ к файлам на компьютере, кодируя их и вымогая выкуп за предоставление кода для расшифровки.

Как расшифровать файлы бесплатно? Мы рады объявить о выпуске четырех инструментов для удаления программ-вымогателей и дешифровки файлов: Alcatraz Locker, CrySiS, Globe и NoobCrypt. Все дешифраторы для файлов доступны на нашей странице и являются бесплатными.

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

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

Ниже приведено краткое описание четырех новых видов программ-вымогателей, для удаления которых были разработаны новые бесплатные утилиты.

Alcatraz

Вирус-шифрователь (программа-вымогатель) Alcatraz

В отличие от большинства видов шифрователей, программа Alcatraz не имеет заданного списка расширений файлов, на которые она нацелена. Иными словами, программа шифрует все, что может. Чтобы предотвратить нанесение ущерба операционной системе, Alcatraz Locker шифрует только файлы в каталоге %PROFILES% (обычно C:\Users).

Вымогатель шифрует файлы, используя встроенные функции Windows (API-интерфейс шифрования):

Вирус-шифрователь (программа-вымогатель) Alcatraz

  1. Создается 256-битовый массив, заполняемый шестнадцатеричным значением 0x36.
  2. К первым 160 битам этого массива с начальным 160-битовым хэшем SHA1 применяется функция XOR.
  3. Рассчитывается SHA1 массива, к которому была применена функция XOR (назовем это Hash1).
  4. Создается 256-битовый массив, заполняемый шестнадцатеричным значением 0x5C.
  5. К первым 160 битам этого массива с начальным 160-битовым хэшем SHA1 применяется функция XOR.
  6. Рассчитывается SHA1 массива, к которому была применена функция XOR (назовем это Hash2).
  7. 160 битов Hash1 и 96 битов Hash2 объединяются.

Получившийся объединенный хэш используется в качестве исходного ключа для AES256.

После выполнения шифрования AES-256 программа-вымогатель также кодирует уже зашифрованный файл с помощью позиционной системы счисления с основанием 64 (BASE64), в результате чего зашифрованный файл приводится к типичной модели:

Вирус-шифрователь (программа-вымогатель) Alcatraz

CrySiS

Программа CrySiS (известная также как JohnyCryptor и Virus-Encode) известна с сентября 2015 года. Использует сильные алгоритмы шифрования AES и RSA. Также особенность заключается в том, что она содержит список файловых расширений, которые не подвергаются блокировке.

Хотя идентификационный номер и адрес электронной почты меняются довольно часто, есть только три различных имени расширений, которые, используются до сих пор:

.xtbl, .lock и .CrySiS.

В результате имена зашифрованных файлов могут выглядеть так:

Каждый подобный элемент содержит все данные, которые необходимы для его расшифровки. Файлы размером менее 262 144 байта зашифровываются полностью, а в окончании находится код, содержащий зашифрованный ключ AES вместе с остальными данными, такими как исходное имя файла, что позволяет выполнить полную расшифровку. Стоит отметить, что файлы, размер которых превышает 262 144 байта, шифруются лишь частично, однако и в этом случае использовать их не удастся. Такой способ работы вымогателя приводит к тому, что крупные файлы после шифрования еще больше увеличиваются в размере.

Вирус-шифрователь (программа-вымогатель) CrySis

Вирус-шифрователь (программа-вымогатель) CrySis

Globe

Данная программа, существующая примерно с августа 2016 года, написана на языке Delphi и обычно упакована UPX. Некоторые варианты также упакованы при помощи установщика Nullsoft:

  • bc4c0b2f6118d36f4d476db16dbd6bcc0e393f2ad08429d16efe51f3d2870d58
  • fdc8de22653ebcf4cb8f5495b103e04079b0270efa86f713715f0a81f1b2e9b0

Вирус-шифрователь (программа-вымогатель) Globe

В распакованном бинарном виде программа представляет собой глобальный интерфейс «настройки», в которой автор вымогателя может вносить некоторые изменения в ее характеристики:

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

Примечательно, что программа-вымогатель имеет режим отладки, который может быть включен при помощи следующей настройки реестра:

Вирус-шифрователь (программа-вымогатель) CrySis

Вирус блокирует файлы при помощи алгоритмов RC4 или BlowFish. Когда программа-вымогатель настроена на шифрование имен файлов, она выполняет его при помощи того же алгоритма, который использовался в отношении самого файла. Затем название шифруется при помощи собственной реализации кодирования Base64.

Вот несколько примеров созданных расширений, которые могут быть расшифрованы при помощи утилиты Avast:

Как правило, данная программа-вымогатель создает файлы с именем «Read Me Please.hta» или «How to restore files.hta», которое отображается после входа пользователя в систему.

Вирус-шифрователь (программа-вымогатель) CrySis

Не платите вымогателям! Используйте дешифратор для файлов Globe.

NoobCrypt

Вирус-шифрователь (программа-вымогатель) NoobCrypt

Вирус-шифрователь (программа-вымогатель) NoobCrypt

Чтобы расшифровать файлы, программа NoobCrypt предлагает «код разблокировки», который необходимо купить. В Twitter мной были опубликованы бесплатные ключи для удаления всех известных версий программы NoobCrypt (примеры: 1, 2, 3). Однако определять, какой из них следует использовать, приходилось вручную. Благодаря нашему инструменту для дешифровки вам уже не придется гадать, какой код нужно применить.

Вскоре после публикации кодов, исследователь программ-вымогателей с сетевым именем xXToffeeXx сообщил нам о создании новой версии NoobCrypt, которая рекламировалась во множестве магазинов в сетях Darknet. Стоимость этой версии, находящейся в продаже, составляет $300.

Вирус-шифрователь (программа-вымогатель) NoobCrypt

Вирус-шифрователь (программа-вымогатель) NoobCrypt

Автор даже подготовил демонстрационное видео, демонстрирующее функции, которые представлены как новые, в том числе использование «шифрования военного уровня» и «невозможность обнаружения антивирусами (кроме AVG)», что является обманом: многие антивирусы способны обнаружить эту программу.

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

Вирус-шифрователь (программа-вымогатель) NoobCrypt

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

Ознакомьтесь с описанием программы NoobCrypt и инструментом для дешифровки на нашем сайте.

Как не стать жертвой программы-вымогателя

Прежде всего убедитесь, что на всех ваших устройствах установлен антивирус, например Avast (даже смартфоны могут быть заражены программой-вымогателем). Антивирус сможет заблокировать программы-вымогатели еще до того, как они причинят ущерб.

Необходимо также выполнять регулярное и правильное резервное копирование своих данных. Храните резервные копии данных удаленно, иначе они могут также быть заблокированы вредоносным ПО.

Если вам не повезло и вы стали жертвой программ-вымогателей, попробуйте наши инструменты для дешифровки и проверьте, сможем ли мы помочь вам вернуть свои файлы!

Выражаю благодарность своим коллегам, Ладиславу Зезуле (Ladislav Zezula ) и Петру Щепански (Piotr Szczepanski), за подготовку дешифраторов, а также Яромиру Горейши (aromír Hořejší) за его анализ программы Alcatraz Locker.

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

Тем не менее, если вы столкнулись с заражением шифровальщиком, не стоит паниковать. И даже не думайте платить выкуп. Сохраняя спокойствие и хладнокровие, проделайте следующие шаги:

1. Запустите антивирус или антивирусный сканер для удаления трояна

Запустите антивирус или антивирусный сканер для удаления трояна

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

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

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

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

2. Попробуйте расшифровать файлы с помощью бесплатных утилит

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

“Лаборатория Касперского”, Avast, Bitdefender, Emsisoft и еще несколько вендоров поддерживают веб-сайт No More Ransom!, где любой желающий может загрузить и установить бесплатные средства расшифровки.

Первоначально рекомендуется использовать инструмент Crypto Sheriff, который позволяет определить ваш тип шифровальщика и проверить, существует ли для него декриптор. Работает это следующим образом:

Как удалить шифровальщики и восстановить данные – Crypto Sheriff

Crypto Sheriff обработает эту информацию с помощью собственной базы данных и определит, существует ли готовое решение. Если инструменты не обнаружены, не стоит отчаиваться. Одни из декрипторов все-равно может сработать, хотя вам придется загрузить и протестировать все доступные инструменты. Это медленный и трудоемкий процесс, но это дешевле, чем платить выкуп злоумышленникам.

Инструменты дешифрования

Следующие инструменты дешифрования могут расшифровать ваши файлы. Нажмите ссылку (pdf или инструкция) для получения дополнительной информации о том, с какими вымогателями работает инструмент:

Количество доступных декрипторов может изменяться с течением времени, мы будем регулярно обновлять информацию, проверяя веб-сайт No More Ransom!

Запустить средство дешифрования файлов совсем несложно. Многие утилиты поставляются с официальной инструкцией (в основном это решения от Emsisoft, Kaspersky Lab, Check Point или Trend Micro). Каждый процесс может немного отличаться, поэтому рекомендуется предварительно ознакомиться с руководством пользователя.

Рассмотрим процесс восстановления файлов, зашифрованных трояном-вымогателем Philadelphia:

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

Как восстановить данные – Philadelphia

Как восстановить данные – Philadelphia

  • После завершения работы, вы получите ключ дешифрования для восстановления доступа ко всем заблокированным шифровальщикам файлам.

Как восстановить данные – Philadelphia

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

Если есть резервная копия: очистите систему и восстановите бэкап

Шаги 1 и 2 будут эффективны только при совместном использовании. Если они не помогут, то используйте следующие рекомендации.

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

Самостоятельно или делегировав задачу системному администратору, выполните полный сброс системы и восстановите ваши файлы из резервной копии. Защита от действия шифровальшиков – это важная причина использования инструментов резервного копирования и восстановления файлов.

Пользователи Windows могут использовать полный сброс системы до заводских настроек. На официальном сайте Microsoft доступны рекомендации по восстановлению зашифрованных троянами файлов.

Читайте также: