
HardHat C2
Кроссплатформенный, совместный фреймворк Command & Control, написанный на C#, предназначенный для красных команд и простоты использования

HardHat — это многопользовательский фреймворк Command & Control (C2) на основе C# .NET, предназначенный для поддержки операций красных команд и тестирования на проникновение. Его цель — улучшить качество работы во время операций за счёт предоставления надёжного и простого в использовании фреймворка C2.
HardHat состоит из трёх основных компонентов:
- Teamserver на основе ASP.NET
- Клиент на основе Blazor .NET
- Встроенные импланты на C#
- Поддержка сторонних имплантов на других языках
Полная документация доступна по адресу https://docs.hardhat-c2.net/.
ЗАМЕТКА: HardHat находится на стадии альфа-релиза; в нём могут быть ошибки, отсутствующие функции и неожиданные ситуации. Спасибо, что пробуете его, и пожалуйста, сообщайте о любых обнаруженных проблемах или отсутствующих функциях, чтобы их можно было устранить.
Сообщество
Присоединяйтесь к нашему Discord, чтобы обсуждать HardHat C2, программирование, операции красных команд и общие темы кибербезопасности. Это также отличное место, чтобы запросить помощь, сообщить об ошибках или предложить новые функции, а также быть в курсе последних обновлений.
Вклад в код приветствуется! Не стесняйтесь отправлять запросы на добавление функций, 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 могут работать по модели peer-to-peer (P2P) в конфигурациях bind или reverse
- Уникальный ключ для каждого импланта, генерируемый во время компиляции
- Несколько URI обратного соединения в зависимости от C2-профиля
- Интеграция P/Invoke и D/Invoke для вызовов Windows API
- Поддержка SOCKS 4a
- Обратное перенаправление портов и перенаправление портов
- Все команды выполняются как асинхронные, отменяемые задачи
- Опция выполнения команд синхронно, если требуется
- Выполнение встроенного ассемблерного кода и встроенного shellcode
- Инъекция DLL
- Выполнение ассемблерного кода и интеграция с Mimikatz
- Mimikatz не встроен в имплант, а загружается при выполнении определённых команд
- Различные инструменты для локального и сетевого перечисления
- Команды манипуляции токенами
- Кража маски токена (в разработке)
- Команды бокового перемещения
- Jump (psexec, wmi, wmi-ps, winrm, dcom)
- Удаленное выполнение (в разработке)
- Исправление интерфейса сканирования антивирусом (AMSI) и трассировки событий для Windows (ETW)
- Неуправляемый PowerShell
- Хранилище скриптов позволяет загружать несколько скриптов одновременно
- Создание и инъекция
- Создание процесса настраиваемо

Начало работы
Установка
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
- Перейдите на страницу настроек и создайте новую учетную запись пользователя
- В случае успеха появится сообщение; после этого можно войти с этой учетной записью, чтобы получить доступ к полному клиенту
Отслеживание релиза
- Релиз Alpha 0.2 — 07.06.23
- Релиз Alpha — 29.03.23