HardHat C2
Кроссплатформенная, совместная платформа управления и контроля (C2), написанная на C#, предназначенная для red teaming и простоты использования

HardHat — это многопользовательская платформа управления и контроля (C2) на C# .NET, предназначенная для помощи в red team-мероприятиях и тестировании на проникновение. Она направлена на повышение качества жизни во время мероприятий, предоставляя надежную и простую в использовании C2-платформу.
HardHat состоит из трех основных компонентов:
- ASP.NET teamserver
- Blazor .NET клиент
- Встроенные импланты на C#
- Поддержка сторонних имплантов на других языках
Полная документация доступна на https://docs.hardhat-c2.net/.
ВАЖНО: HardHat находится в альфа-версии; в ней могут быть ошибки, отсутствующие функции и неожиданные ситуации. Спасибо за попытку использовать ее, пожалуйста, сообщайте о любых проблемах или отсутствующих функциях, чтобы их можно было исправить.
Сообщество
Присоединяйтесь к нашему сообществу Discord, чтобы обсудить HardHat C2, программирование, red teaming и общие темы кибербезопасности. Это также отличное место для получения помощи, отправки багов или запросов новых функций и получения информации о последних обновлениях.
Вклад в код приветствуется! Не стесняйтесь отправлять запросы на новые функции, pull request'ы или делиться своими идеями в Discord.
Возможности
Поддержка пользовательских ресурсов
- Ресурсы — это импланты и связанные с ними плагины для teamserver и клиента.
Чтобы увидеть доступные и узнать, как создать новые, посетите HardHat Toolbox
Teamserver и клиент
- Индивидуальные учетные записи операторов с управлением доступом на основе ролей (RBAC)
- Позволяет персонализировать учетные записи
- Позволяет ограничивать доступ к определенным функциям (например, роль гостя только для просмотра, одобрение OPSEC для лидера команды (в разработке))
- Менеджеры (слушатели)
- Динамическая генерация полезных нагрузок (EXE, DLL, shellcode, команда PowerShell)
- Создание и редактирование C2-профилей на лету в клиенте
- Настройка генерации полезных нагрузок
- Время сна/джиттер
- Дата окончания действия
- Рабочие часы
- Тип (EXE, DLL, shellcode, команда PowerShell)
- Включенные команды (в разработке)
- Опция запуска ConfuserEx
- Загрузка и скачивание файлов
- Графическое представление
- Графический интерфейс обозревателя файлов
- Журнал событий
- Логирование событий и задач в формате JSON
- Отслеживание трофеев
- Отслеживание индикаторов компрометации (IOC)
- Прокси-серверы для обхода (SOCKS 4a, пересылка портов)
- Хранилище учетных данных
- Автодополнение истории команд
- Детальная команда помощи
- Интерактивный bash-терминал (если клиент на Linux) или PowerShell (на Windows)
- Позволяет автоматически парсить и логировать команды терминала, такие как proxychains
- Постоянное хранение элементов teamserver в базе данных (учетные записи пользователей, менеджеры, инженеры, события, задачи, учетные данные, загрузки, выгрузки и т. д.)
- Отслеживание сущностей разведки (информация о пользователях/устройствах, случайные метаданные по мере необходимости)
- Общие файлы для некоторых команд (см. страницу teamserver для подробностей)
- Окно взаимодействия на основе вкладок для ввода команд
- Вывод в виде таблицы для некоторых команд (например,
ls, ps и т. д.)
- Автоматический разбор вывода Seatbelt для создания «сущностей разведки» для удобного обращения
- Темная и светлая 🤮 тема

Инженеры
- Имплант на C# .NET для Windows (пока только поддержка CLR/.NET 4)
- Пока только один имплант, но планируется добавить другие
- Может быть сгенерирован как EXE, DLL, shellcode или PowerShell-стажер
- RC4-шифрование памяти и кучи полезной нагрузки во время сна (только EXE/DLL)
- AES-шифрование всего сетевого трафика
- Интеграция с ConfuserEx для обфускации
- HTTP, HTTPS, TCP, SMB-связь
- TCP и SMB могут работать в одноранговом режиме (P2P) как в bind, так и в reverse конфигурациях
- Уникальный ключ на имплант, генерируемый во время компиляции
- Несколько URI обратного вызова в зависимости от C2-профиля
- Интеграция P/Invoke и D/Invoke для вызовов Windows API
- Поддержка SOCKS 4a
- Обратная пересылка портов и пересылка портов
- Все команды выполняются как асинхронные, отменяемые задания
- Опция синхронного выполнения команд, если необходимо
- Выполнение inline-сборок и inline-shellcode
- Внедрение DLL
- Выполнение сборок и интеграция Mimikatz
- Mimikatz не встроен в имплант, но отправляется при выполнении определенных команд
- Различные инструменты локальной и сетевой разведки
- Команды манипуляции токенами
- Кража токена (в разработке)
- Команды горизонтального перемещения
- Jump (psexec, wmi, wmi-ps, winrm, dcom)
- Удаленное выполнение (в разработке)
- Обход Antimalware Scan Interface (AMSI) и Event Tracing for Windows (ETW)
- Неуправляемый PowerShell
- Хранилище скриптов позволяет загружать несколько скриптов одновременно
- Spawn & Inject
- Run, execute и shell

Начало работы
Установка
Docker
- Установите Docker и Docker Compose
- Выполните
docker compose up -d
- При необходимости укажите переменные окружения
HARDHAT_ADMIN_USERNAME и/или HARDHAT_ADMIN_PASSWORD; если они опущены, при первом запуске имя администратора и случайно сгенерированный пароль будут записаны в логи teamserver
- Перейдите по адресу https://localhost:7096/ в браузере
Вручную
- Установите .NET 7 SDK от Microsoft
- Выполните
dotnet run из каталога .\TeamServer, чтобы собрать и запустить teamserver
- Выполните
dotnet run https://<TEAMSERVER_HOST>:<TEAMSERVER_PORT> из каталога HardHatC2Client
- Например, если teamserver работает на том же хосте и стандартном порту:
dotnet run https://127.0.0.1:5000
- Перейдите по адресу https://localhost:7096/ в браузере
Чтобы настроить адрес прослушивания teamserver (куда клиенты будут подключаться), отредактируйте .\TeamServer\Properties\LaunchSettings.json и измените "applicationUrl": "https://127.0.0.1:5000" на нужный адрес и порт.
Настройка
- Войдите в веб-интерфейс клиента, используя имя пользователя и пароль, заданные через переменные окружения или выведенные в STDOUT teamserver
- Перейдите на страницу настроек и создайте новую учетную запись
- В случае успеха появится сообщение; вы сможете войти с этой учетной записью для полного доступа к клиенту
Отслеживание релизов
- Альфа-версия 0.2 — 6 июля 2023 г.
- Альфа-версия — 29 марта 2023 г.