
HTTP-клиент с нулевым доверием и анти-форензикой. Уничтожает секреты. Обрывает следы. CPR в стелс-танке. 👻
HTTP-клиент с нулевым доверием и антифорензикой. Стирает секреты. Уничтожает следы. Реанимация в стелс-танке. 👻
BurnerNet — это антифорензический HTTP-клиент на C++20. Он предоставляет плавный, CPR-подобный API для приложений, которые не могут полностью доверять локальной машине, физически стирая секреты из ОЗУ и разрывая следы выполнения, чтобы скрыть вашу логику от сканеров и отладчиков.
Он предлагает знакомые, совместимые с хостом настройки по умолчанию для обычного HTTP и явный профиль Hardened для враждебных сред. Оба пути отдают предпочтение недолговечным клиентам; расширенное доверие остаётся на стороне приложения.
Ищете защиту полезных нагрузок, загруженных BurnerNet? Ознакомьтесь с RipStop Codec для дешифровки активов в памяти.
Принципы • Начало работы • Способы интеграции • Реалии безопасности
| Область | BurnerNet |
|---|---|
| Язык | C++20 |
| Платформа | Windows x64/x86 (Первый класс), Linux (Проверено) |
| Транспорт | HTTP(S) на базе libcurl |
| Гигиена памяти | Утилиты безопасного стирания и распределители с затиранием |
| Форензическая гигиена | Автоматическая очистка кучи/стека на всём протяжении управляемого BurnerNet транспортного состояния |
| Динамический анализ | Изоляция стека вызовов может разорвать связь между потребителем и транспортом |
| Укрепление сборки | Опциональное удаление диагностических строк, обфусцированные литералы, уменьшение метаданных среды выполнения C++ в укреплённых сборках |
| Укрепление выполнения | Поддержка DoH, поставщики секретов и более строгие элементы управления доверием |
| Интеграция | CMake или Visual Studio — добавление исходников |
Используйте BurnerNet, когда обычный HTTP-клиент слишком доверчив для вашего окружения.
Он помогает, когда вы хотите:
BurnerNet подходит для таких проектов, как:
libcurl и потоках OpenSSL. Чувствительные транспортные буферы стираются, когда покидают управляемый BurnerNet жизненный цикл. Эта гигиена проверена как на Windows, так и на Linux в рамках аудируемых конфигураций, описанных в документации.WithResponseVerifier(...) вместо того, чтобы быть жёстко закодированной в общей библиотеке.BURNERNET_DIAGNOSTIC_STRINGS=0, чтобы ErrorCodeToString(...) возвращала стабильные значения E<number> без встраивания символьных имён ошибок.BurnerNet не просто заявляет о режиме укрепления с лёгким импортом; он также поставляется с примечаниями аудита для конкретных протестированных конфигураций. В аудите Windows x64 Release с BURNERNET_HARDEN_IMPORTS=ON:
libcurl.dll, ws2_32.dll, bcrypt.dll или crypt32.dll.Подробности аудита и методология:
Самый быстрый путь:
<burner/net.h>.Минимальный пример:
#include <iostream>
#include <burner/net.h>
int main() {
burner::net::Client client;
if (!client.IsReady()) {
std::cerr << burner::net::ErrorCodeToString(client.InitError()) << '\n';
return 1;
}
const auto response = client
.Get("https://example.com")
.WithHeader("Accept", "text/html")
.WithTimeoutSeconds(10)
.Send();
if (!response.TransportOk()) {
std::cerr << burner::net::ErrorCodeToString(response.transport_error) << '\n';
return 1;
}
std::cout << "HTTP " << response.status_code << '\n';
return 0;
}
Client использует стандартные настройки: системный CA, DNS и прокси с включённой проверкой однорангового узла и имени хоста через TLS. WithCasualDefaults() остаётся доступным как псевдоним совместимости со Standard.
Для критического с точки зрения безопасности трафика используйте профиль Hardened. Build() отклоняет отсутствующие элементы управления перед любым запросом:
auto secure = burner::net::ClientBuilder(burner::net::ClientProfile::Hardened)
.WithMtlsProvider(ProvideMtlsCredentials)
.WithSecurityPolicy(AppSecurityPolicy{})
.WithDnsFallback(burner::net::DnsMode::Doh,
"https://resolver.example/dns-query",
"Primary DoH")
.AllowSystemDns(true) // явный резерв, после DoH
.WithResponseVerifier(VerifySignedResponse)
.Build();
Hardened требует проверки однорангового узла и имени хоста, изоляции стека, маршрутизации через DoH в первую очередь, проверщика ответов приложения и точки доверия, принадлежащей приложению. Постоянные учётные данные WithMtls(...) отклоняются; используйте WithMtlsProvider(...).
Используйте это, если ваш downstream-проект уже использует CMake и вы хотите самый чистый путь с управлением зависимостями.
Документация:
Используйте это, если ваша среда ориентирована на MSBuild или вы хотите, чтобы BurnerNet компилировался непосредственно внутри вашего .vcxproj.
Документация:
Используйте это, если вы хотите уменьшить очевидное воздействие зависимостей среды выполнения и готовы явно управлять загрузкой начальной загрузки.
Включите:
BURNERNET_HARDEN_IMPORTS=1KernelResolver BurnerNet в Windows для поддержки более лёгкого по импорту следа среды выполненияСсылки:
Поддержка Linux: BurnerNet обеспечивает полную судебную паритетность (стирание памяти и изоляцию стека) в Linux. См. docs/LINUX_USAGE.md для инструкций по сборке.
Рекомендуемые настройки по умолчанию:
Примеры:
Документация:
libcurl 7.87.0+ и заголовки OpenSSLBurnerNet — это уровень укрепления, предназначенный для повышения стоимости атаки до профессионального уровня. Мы исходим из принципа, что скрытность должна быть архитектурной, а не просто поверхностной.
Может ли злоумышленник обойти BurnerNet, имея исходный код? Знание исходного кода BurnerNet само по себе не является мастер-ключом к каждому downstream-приложению. BurnerNet следует принципу Керкгоффса: библиотека спроектирована так, чтобы ваши специфичные для приложения точки доверия (секреты HMAC, закреплённые ключи, логика UI, политики) оставались в собственности приложения. Знание транспортного уровня не даёт автоматического универсального обхода вашего конкретного потока безопасности.
| Аспект | Типичный HTTP-стек | BurnerNet |
|---|
| Время жизни клиента | Часто общий и долгоживущий | Предназначен для одноразовых клиентов и всплесковых задач |
| Чувствительные значения | Секреты часто находятся в конфиге или памяти дольше необходимого | Обратные вызовы поставщиков получают их непосредственно перед использованием |
| DNS и доверие | Обычно наследует локальный резолвер и настройки хоста | Поддерживает более строгие элементы управления доверием, включая DoH и закреплённые ключи |
| Проверка | Специфичные для приложения проверки целостности часто добавляются позже | Создан для работы с хуками предварительной проверки, транспортной проверки и проверки ответов |
BURNERNET_HARDEN_IMPORTS=1 может динамически разрешать зависимости среды выполнения вместо прямого объявления их в таблице импорта, используя путь KernelResolver BurnerNet в Windows..WithStackIsolation(true) библиотека выполняет жизненный цикл транспорта на отдельном рабочем потоке. Это может физически разорвать стек вызовов вызывающей стороны и уменьшить прямое нисходящее отслеживание логики приложения.