• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Статья Разработка Шифрующих Программ на C#: Механизм Самоудаления

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

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

Итак.
Шифрование будет обеспечено модулем, известным еще с моих предыдущих статей CryptoNote
Модуль Copy - открывающий файл и проводящий математические операции с каждым байтом. Очень шустрый. Его описание вы можете найти в тех же старых статьях.

upload_2017-12-11_11-51-55.png


!!! Обратите внимание на комментарии. !!! Если хотите получить шифровальщик без возможности расшифровки - вместо decodeString используйте Random()-функцию и в дальнейшем уберите ветку (CoderMode==false) - она отвечает за расшифровку.

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

upload_2017-12-11_11-56-57.png


Принцип простой: устанавливаем текущую директорию и всё что нашли грузим в стэк. Потом по этому стеку считаем кол-во папок и файлов:

upload_2017-12-11_11-58-3.png


Потом для каждого файла производим процедуру шифрования - выводим на экран список файлов, вызываем процедуру Copy:

upload_2017-12-11_13-4-25.png


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

upload_2017-12-11_13-14-0.png


С модулями разобрались. Осталось заставить это дело работать. Переходим к Main-блоку.

В нем видим следующее:
upload_2017-12-11_13-7-1.png


Закомментированная строка string result показывает как получить директорию Temp пользователя. Пригодится на будущее (в данный момент не используется).
Переменная curDir - будет содержать текущую папку и выведет её на экран. Эта фича для debug.

Закомментированная строка Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); отсылает нас в MSND Environment.GetFolderPath - эта функция позволяет получить очень много интересных целей, т.е. можно задать параметр и программа зашифрует все файлы в MyDocuments пользователя, т.о. можно зашифровать вообще весь текущий профиль юзера.

Мы в качестве примера указали просто string CoderPath = @"C:\users\admin\Desktop\test";
т.е. на рабочем столе пользователя admin есть папка test с неким содержимым. Этот параметр измените под себя, чтобы проверить!

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

Принцип модуля Odissey - в нужную нам папку распаковать файл с именем DeleteMe.exe и запустить его.

Сам модуль deleteme "компилируется" на лету из массива (его также можно зашифровать)
Записывается он используя функцию File.WriteAllBytes(outputFilePath, bytesmass);

Массив выглядит примерно так:
public static byte[] bytesmass = { 0x4D,0x5A,0x90,0x0,0x3,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xFF...}
По-сути это хорошо известный шелл-код, как в эксплойтах.

Сам модуль DeleteMe был написан отдельно и представляет из себя такой код:
upload_2017-12-11_13-19-42.png


Алгоритм такой: ждём несколько секунд пока завершится процесс шифрования и в папке, полученной при запуске программы, удаляем файл PackMan - так зовут нашего шифровальщика.

Скомпилированный код переведен в hex-опкоды отдельной утилитой, которая будет присутствовать отдельно (энтузиасты смогут найти её в теле PackMan). Утилиту OpcodeGen тоже поправьте под себя, т.к. в коде жестко зашита переменная для запуска.

Процесс работы выглядит примерно так:
в папке test у меня лежит несколько документов, которые прекрасно выглядят и читаются:
upload_2017-12-11_13-27-13.png


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

upload_2017-12-11_13-28-9.png


В итоге текстовый файл у нас больше не читается:
ґ¤ќЈњўљ¤d њ“љ–ўdњd—џ–ЈЏ– њ˜‰џd•¤љџ’‰Jwzwz1?2.?2U

С картинками тоже самое:
upload_2017-12-11_13-32-30.png


При этом размеры получившихся файлов не меняются.

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

На текущем этапе код вполне боеспособен, но как и всегда, чтобы его заставить работать, нужно отредактировать основные переменные. Иначе всё было бы слишком просто, а так у вас будет challenge :)

Вопросы пишите в комментарии :)

p.s. Да прибудет с вами сила и с наступающим Новым Годом!
(и в коде есть интересная ошибка. кто найдет - напишите :)
 

Вложения

  • upload_2017-12-11_13-39-14.png
    upload_2017-12-11_13-39-14.png
    1,5 КБ · Просмотры: 454
  • PackMan.rar
    PackMan.rar
    1,3 МБ · Просмотры: 726
Последнее редактирование модератором:
Скачал, отредактировал только пути, собрал все работает вроде как)), что там не так в коде то было?
Еще вопрос ты пишешь что можно зашифровать deleteme.exe как это возможно если он удалит pacman?
А еще вопрос дешифровка работает при повторном запуске это так должно быть?
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы