IrisC2

Post-Exploitation v0.4.1 · 07.09.2026 активный

Модульный C2-фреймворк с Client, Server, Beacon, Stager и встроенным MCP-сервером для управления агентом.

v0.4.1
07.09.2026 current

Установка
git lfs install
git clone https://github.com/onedays12/Iris.git
cd IrisC2
git lfs pull
показать оригинал переведено ИИ

IrisC2

Язык: Китайский | Английский

IrisC2 — это C2-фреймворк, предназначенный для авторизованного тестирования безопасности, учений красной команды, экспериментов по атаке и защите и внутренних исследований. Проект состоит из Client, Server, Beacon, Stager и системы плагинов и построен вокруг управления Listener, генерации Payload, диспетчеризации задач Beacon, передачи файлов, создания скриншотов, проброса туннелей, расширенного выполнения BOF/PostEx, структурированных событий и синхронизации событий в реальном времени.

Данный проект разрешается использовать только в среде с явно полученным разрешением. Запрещается развертывать, подключать, тестировать или запускать любые компоненты на неавторизованных системах, учетных записях, сетях или активах третьих сторон.

Статус проекта

Основной каркас уже построен, и основные возможности, запланированные на раннем этапе, в целом реализованы. Дальнейший план:

  • v0.4.x — дальнейшее улучшение удобства использования Client / Server, Beacon пока остается без изменений.
  • v0.5 — разработка фреймворка для написания плагинов, инструментов извлечения учетных данных, закрепления и т.д. Эти инструменты обладают высокой деструктивностью и временно не будут публиковаться вместе с Release; сообществу предлагается самостоятельно писать плагины на основе существующей системы плагинов, при реальной необходимости можно связаться в личных сообщениях.
  • Технологии, связанные с обходом средств защиты Beacon, я выложу в открытый доступ полностью и без ограничений.

В настоящее время Server публикуется только в виде бинарных файлов через Releases, исходный код временно не публикуется — после того как проект наберет 200 star, я открою исходный код Server.

Состав проекта

IrisC2/
├── C-Beacon/           C 语言 Beacon 源码、构建脚本和 reflective stub patch 工具
├── Go-Beacon/          Go 语言跨平台 Beacon 源码(Windows / Linux / macOS)
├── client/             Client 源码(Wails 3:Go + Vue/TypeScript 前端)
├── stager_shellcode/   Windows x64/x86 stager 源码、构建脚本和 patch 工具
├── images/             README 演示图片与视频
├── CHANGELOG.md
├── README.md
└── README.en.md

Исходный код Client находится в client/ и собран на основе Wails 3 (Go + Vue/TypeScript). Server предоставляется только в виде релизных пакетов через GitHub Releases, исходного кода в репозитории нет. Исходный код Beacon и stager находится внутри репозитория, достаточно собрать и обновить шаблоны согласно README в соответствующих каталогах.

Принцип работы

  • Client отвечает за пользовательский интерфейс, выдачу задач, просмотр результатов и точки входа плагинов, а также встраивает MCP Server, Agent может напрямую управлять слушателями, Beacon, командами, файлами и событиями.
  • Server отвечает за аутентификацию, Listener, Payload, задачи, файлы, скриншоты, туннели и синхронизацию событий.
  • Beacon работает в авторизованной целевой среде, связывается с Listener согласно C2 Profile и выполняет задачи.
  • Stager используется в сценариях staged payload, сначала загружает stage, а затем запускает Beacon stage.
  • Плагины предоставляют через Client расширенные действия, такие как BOF/OBJ и PostEx DLL, которые централизованно отправляются на выполнение в Beacon.

Демонстрация

Страница репозитория GitHub может не предпросматривать напрямую большие LFS-видео. Можно напрямую открыть демо-видео или скачать его для просмотра на странице Release.

Скриншоты интерфейса

仪表盘与命令控制台

Listener 配置

Beacon 右键菜单与插件入口

Payload 生成器

Особенности

Client

  • Поддержка релизных пакетов для трех платформ: Windows, Linux, macOS.
  • Подключение к Iris Server с входом в систему, поддержанием сессии и получением событий в реальном времени.
  • Управление Listener, Payload, Beacon, задачами, файлами, скриншотами, туннелями.
  • Поддержка контекстного меню Beacon по правому клику и точек входа для действий плагинов.
  • Поддержка действий плагинов BOF/OBJ и PostEx (включая spawn-dll / inject-dll, выбор DLL по архитектуре, manifest lint).
  • Плагин PoolParty: варианты инъекции в пул потоков 2–8 (семь действий BOF).
  • Поддержка отображения структурированных frame PostEx, таких как metadata / progress / artifact / error, artifact интегрирован со страницей загрузок.
  • Встроенный MCP Server, Agent может напрямую управлять слушателями, Beacon, командами, файлами и событиями.
  • Нижняя панель рабочего стола BottomDock: консоль, события и передачи собраны внизу окна.
  • Предпросмотр удаленных файлов: любой файл можно открыть как текст (с селектором кодировки), передача через память без записи на диск.
  • Заметки и группировка Beacon, пакетное удаление выбранных; файловый браузер поддерживает выполнение, нативную загрузку перетаскиванием и панель передач текущего Beacon.
  • Вход поддерживает запоминание пароля (запись происходит только при успешном входе).

Подробности сборки см. в client/README.md.

Server

  • Аутентификация по логину/паролю + JWT; вход с единым паролем в стиле CS, с занятием имени пользователя и льготным периодом при разрыве соединения.
  • REST API + канал событий WebSocket.
  • HTTP/HTTPS Listener и External TCP Listener; для TCP можно включить SSL/TLS согласно конфигурации.
  • Управление поведением Beacon через C2 Profile: sleep, jitter, sleep obfuscation, HTTP transforms, stager и т.д.
  • Поддержка генерации stagerless и staged payload, поддержка двух типов шаблонов Beacon: C/Go.
  • Сохранение задач, восстановление pending-задач, отслеживание статуса задач, возврат результатов.
  • PostEx spawn_dll / inject_dll, события структурированных frame, загрузка artifact.
  • Предпросмотр удаленных файлов: сохранение исходных байтов, без ограничений по тексту/изображениям, передача через память без записи на диск, изменения в Beacon не требуются.
  • API для заметок сессии, группировки, пакетного удаления; снимок сверки передач GET /transfers/active.
  • Загрузка файлов / скачивание файлов Beacon / поблочная передача / скриншоты / проброс туннелей.
  • Совместимый с Windows 7 fallback шифров TLS; локальное хранение SQLite; базовые маскирующие ответы.

Server публикуется через GitHub Releases, каждый пакет для платформы содержит необходимые для запуска config.yaml, c2profile/ и static/:

Iris-Server-windows-x64.zip
Iris-Server-linux-x64.tar.gz

Beacon

Исходный код Beacon находится в C-Beacon/, текущие возможности:

  • Связь C2 по HTTP/HTTPS и External TCP (TCP поддерживает Raw TCP или TLS over TCP).
  • Регистрация при первом подключении, обновление heartbeat, обновление ключа сессии.
  • sleep time / jitter / sleep obfuscation (none / ekko / zilean / gargle).
  • Выполнение команд, файловая система, передача файлов, просмотр файлов, процессы/задачи/учетные данные, сетевая информация, скриншоты.
  • Косвенный вызов syscall: recycled / halos gate, рандомизация invoke.
  • Подмена PPID: имя целевого процесса или PID прописывается в profile, TSCF может включать/выключать syscall.
  • Туннели: SOCKS / проброс портов, tunnel start / control / data / close.
  • Расширенное выполнение: загрузка BOF/OBJ, релокация, выполнение, возврат вывода, отмена задач.
  • PostEx: spawn-dll / inject-dll, опрос асинхронных job, возврат frame metadata/progress/artifact/error.
  • Каскадная передача: два типа internal beacon — TCP и SMB (именованные каналы), родительский Beacon устанавливает многоуровневые цепочки через connect / link (например, HTTP → TCP → SMB); после разрыва internal beacon автоматически возвращается в режим прослушивания.

Подробности сборки и развертывания шаблонов см. в C-Beacon/README.md.

Начиная с v0.2.0, все шаблоны C-Beacon / Go-Beacon единообразно именуются как beacon_{proto}_{external|internal}_{os}_{arch}.{ext}.

Go-Beacon

Исходный код Go-Beacon находится в Go-Beacon/, реализован на Go, поддерживает три платформы: Windows, Linux, macOS.

  • Связь C2 по HTTP/HTTPS.
  • Сборка для трех платформ: Windows x64, Linux x64, macOS ARM.
  • Windows и Linux поддерживают BOF loader:
    • Windows x64: формат COFF, VirtualAlloc + NtCreateThreadEx, с восстановлением после сбоев VEH.
    • Linux x64: формат ELF, mmap + прямой вызов, с разрешением внешних символов GOT/trampoline.
  • Конфигурация записывается в формате TSCF v2 TLV и генерируется инструментом tools/patch_profile.go.
  • Туннели выровнены с C-Beacon, поддерживается пакетный возврат.
  • Сборка для Windows выполнена как программа без окна, при запуске консоль больше не всплывает.

Подробности сборки и развертывания шаблонов см. в Go-Beacon/README.md.

Stager

Исходный код Stager находится в stager_shellcode/ и используется в сценариях staged payload.

  • Поддержка Windows x64/x86.
  • Поддержка загрузки stage по HTTP/HTTPS, поддержка игнорирования ошибок сертификата.
  • Поддержка режимов выхода thread / process.
  • Использует блок конфигурации STG2, параметры обратного соединения записываются Server или tools/patch_stager_config.

Подробности сборки и patch см. в stager_shellcode/README.md.

Быстрый старт

1. Получение проекта или релизного пакета

Пакет Server скачивается из GitHub Releases. Клиент необходимо собрать из исходного кода — после клонирования репозитория следуйте инструкциям в client/README.md, требуются Go, Node.js и Wails 3 CLI.

Репозиторий использует Git LFS для управления большими файлами, такими как демонстрационные видео, перед первым клонированием установите и включите его:

git lfs install
git clone <repo-url>
cd IrisC2
git lfs pull

2. Настройка и запуск Server

После распаковки пакета Server перейдите в каталог, отредактируйте config.yaml (обязательно измените пароль учетной записи по умолчанию и jwt_secret, в рабочей среде замените на собственный TLS-сертификат), затем запустите в каталоге server/:

# Windows
.\TeamServer.exe
# Linux
chmod +x ./TeamServer && ./TeamServer

Адрес сервиса по умолчанию определяется параметрами host и port в config.yaml, например https://127.0.0.1:8080.

3. Запуск Client и вход

Собранные файлы Client находятся в client/bin/. После запуска введите адрес Server, имя пользователя и пароль для входа. Учетная запись по умолчанию определяется файлом server/config.yaml. Подробные шаги сборки см. в client/README.md.

4. Создание Listener и Payload

После входа создайте Listener в Client (HTTP/HTTPS или External TCP, для TCP можно включить SSL/TLS), затем на странице Payload выберите Listener, целевую платформу, архитектуру, формат вывода и C2 Profile для генерации Payload. Генерация Payload поддерживает beacon_type (c / go); комбинация go + external tcp будет отклонена сервером.

Источники шаблонов:

  • stagerless payload: server/static/beacon_templates/
  • staged payload: server/static/stager_templates/

Плагины

Плагины поставляются вместе с пакетом Client и поддерживают два типа действий — BOF/OBJ и PostEx DLL. Инструкции по написанию плагинов, поля plugin.json, типы параметров и полный пример см. в client/plugins/README.md.

Встроенные примеры плагинов:

client/plugins/
├── execution-injection/
├── linux-elf-bof/
├── poolparty/
└── postex-template/

C2 Profile

C2 Profile находится в каталоге server/c2profile/ пакета Server:

server/c2profile/
├── http-default.yaml
├── http-stager.yaml
└── tcp-default.yaml

Профиль управляет поведением Beacon: sleep, jitter, обфускация sleep, HTTP-трансформации (расположение, кодирование, prefix/suffix для metadata / stage_output / server_output), stager и т. д. Для sleep_obf_technique доступны варианты 0 none / 1 ekko / 2 zilean / 3 gargle. Конкретные поля определяются файлами c2profile внутри пакета.

Шаблоны сборки

Шаги по сборке, патчингу и развертыванию шаблонов Beacon и stager см. в README соответствующих подкаталогов:

Заявление об ответственности

IrisC2 — это инструмент для авторизованного тестирования безопасности и внутренних исследований. Пользователь обязан убедиться, что цели тестирования, учетные записи, сеть, payload, артефакты плагинов и собираемые данные находятся в рамках явно полученного разрешения. Сопровождающие проекта не несут ответственности за последствия любого несанкционированного использования.

Войдите, чтобы оставить комментарий