• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Криптолокер за 24 часа для чайников

PokemonGo

PokémonGo
Пользователь
Регистрация
10.04.2019
Сообщения
13
Реакции
54
Пожалуйста, обратите внимание, что пользователь заблокирован
tflkZVf.png


С чего начать?
Как правило стоит начать с изучения ЯП, но и его незнание не помешает вам собрать проект из исходников, и поправить некоторые константы. Ну а на самом деле нам стоит определиться с алгоритмом шифрования, и режимом шифрования. Описание алгоритмов шифрования, их стойкость к брутфорсу итд вы можете посмотреть в википеди.

А тепеь про методы шифования. Возьмём саамые основные режимы шифрования, это ECB и CBC.


ECB
ECB - это шифрование методом простой замены в блоках.
66CsiFA.png

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

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

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

Более подробно про методы шифрования вы можете прочитать в википедии:

Начало работы
Мы определились с алгоритмом и методом шифрования, теперь надо начать писать.
В данной статье я не буду рассматривать конкретный ЯП. К статье приложу исходники криптолокера, написанного нашей командой на C++.

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

Для выдачи заданий воркерам будем использовать аналог BlockingQueue (из Java).
C++:
#include <mutex>
#include <condition_variable>
#include <deque>

template <typename T>
class queue
{
private:
    std::mutex              d_mutex;
    std::condition_variable d_condition;
    std::deque<T>           d_queue;
public:
    void push(T const& value) {
        {
            std::unique_lock<std::mutex> lock(this->d_mutex);
            d_queue.push_front(value);
        }
        this->d_condition.notify_one();
    }
    T pop() {
        std::unique_lock<std::mutex> lock(this->d_mutex);
        this->d_condition.wait(lock, [=]{ return !this->d_queue.empty(); });
        T rc(std::move(this->d_queue.back()));
        this->d_queue.pop_back();
        return rc;
    }
};

При запуске нашего локера стоит сразу же создать N'ое кол-во воркеров. На один воркер - 1 поток. Воркер будет брать задания из нашего стека, и выполнять их. Если заданий нету, то ждать другие.

Для того чтобы воркер понял, что заданий нету, в стек надо добавить N'ое (по кол-ву воркеров) количество данных (например текст EXIT), который будет означать, что задания закончились, и воркер должен завершить работу.

Примеров рекурсивного поиска файлов в сети полно, стоит взглянуть на stackoverflow, и вы найдёте кучу примеров рекурсивного поиска файлов. Все нужные нам файлы (с нужным расширением) добалвяем в стек. В конце программы (перед return) добавляем ожидания завершения потоков (воркеров) чере Join (или аналог для вашего ЯП).

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

И так, вывод. Основные модули для работы криптолокера:
- Рекурсивный поиск файлов (с отдачей путей до нужных файлов в воркер)
- Воркер, который принимает список заданий (пути до файлов) и выполняет их (шифрует)
- Модуль криптографии для шифрования

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

!! Внимание
На NTFS файловых системах существует такое понятие как "фрагментация", и ваш файл будет записан в любое место на диске, а удаление старого не удалит его. Единственный выход из такой ситуации - заполнение всего диска рандомными файлами, но в большинстве случаев куски файлов перезаписываются, и старые не зашифрованные файлы становится невозможно восстановить.

Ссылки:
[CLIKE]Проект на гитхабе: [/CLIKE]
Для сборки нужна Visual Studio 2017. В проекте используется C++17 для поиска файлов (std::filesystem)


КРАЙНЕ НЕ СОВЕТУЮ ИСПОЛЬЗОВАТЬ ДАННЫЙ СОФТ И СТАТЬЮ В ПРОТИВОЗАКОННЫХ ЦЕЛЯХ. СТАТЬЯ НАПИСАНА В ОЗНАКОМИТЕЛЬНЫХ ЦЕЛЯХ, ДЛЯ ПОНИМАНИЕ РАБОЫТ КРИПТОЛОКЕРОВ.

(с) PokemonGo Team https://pokemongo.icu/
XanFqqX.png
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Про winapi не слышали, да?
не пойму смысла вашего хейта. Использовать WinAPI везде где можно смысла не вижу, ибо есть более удобные решения.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Каждый кодит как он хочет. По больше бы статей про кодинг малвари ...
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Каждый кодит как он хочет. По больше бы статей про кодинг малвари ...

Согласен! Мало кто для общаества делает, респект ребятам +
 
Вот и набежали флудеры. Нормальный? Вы издеваетесь? Это мусор, а не вирус. Использовать симметричный алгоритм для шифрования - дилетантский бред, который моментально расшифруют.

Вот пример неплохого криптолокера :

Клац

Софт даже рядом с гандкрабом не стоял, не говоря уже и о выше выложенном. Покемон хакинг тим, бл#ть.

Извините, горит.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Критика, не более. ТС выложил откровенный мусор.

будь умней, напиши лучше и отдай в народ!
 
будь умней, напиши лучше и отдай в народ!

Зачем? Я не занимаюсь благотворительностью. Если человек выкладывает что-то - он ожидает критики. Выше и есть критика.
 
Зачем? Я не занимаюсь благотворительностью. Если человек выкладывает что-то - он ожидает критики. Выше и есть критика.
К слову софт был хуже до того момента, как на экспе его обосрали реверсеры через час-два после создания топика "партнерки"...)
Он ломал еще и файлы 4гб+ и вообще много всяких приколов было. Просто пофиксили. Так что.... Ну и еще гугл говорит, что на него есть декриптор, выпущенный 6 часов назад...

google.com -> Cryptopokemon decrypt

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

P.S.
По поиску нашел, критика Ladon:
раз
два

Cryptopokemon критика:

Забавно, что выкладывали сорцы в обоих случаях после разъеба при попытках продажи :D
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
что на него есть декриптор
Декриптор работает, только если на машине был выключен интернет, и ключ сгенерировался локально.
В других случаях ключ можно поставлять с сервера клиенту, и тогда его сбрутить будет просто невозможно.
 
PokemonGo, Luciferus, прошу прекратить массовые взаимные дизлайки, иначе вынужден буду блокировать ваши аккаунты за набив. Спасибо.
 
PokemonGo, Luciferus, прошу прекратить массовые взаимные дизлайки, иначе вынужден буду блокировать ваши аккаунты за набив. Спасибо.

Поставил лишь 1 дизлайк, а Покемон обиделся и начал крутить их мне пачками. Грусть-печаль.
 
Софт ни о чем, но хейт к STL/CRT не понятен, так или иначе придеться написать фреймворк аля STL/CRT, который будет использоваться в малваре вами.
Хейтеры могут поделиться, потокобезопасной очередью задач на winapi ?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
но хейт к STL/CRT не понятен
На форуме просто собрались эксперты чистого С и ASM.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх