
Cliente HTTP anti-forense de confiança zero. Apaga segredos. Corta rastros. RCP em um tanque furtivo. 👻
Cliente HTTP antiforense de confiança zero. Elimina segredos. Rompe rastros. CPR em um Tanque Stealth. 👻
BurnerNet é um cliente HTTP antiforense em C++20. Oferece uma API fluente, semelhante ao CPR, para aplicativos que não podem confiar totalmente na máquina local—eliminando fisicamente segredos da RAM e rompendo rastros de execução para esconder sua lógica de scanners e depuradores.
Oferece padrões familiares e compatíveis com o host para HTTP comum e um perfil Hardened explícito para ambientes hostis. Ambos os caminhos favorecem clientes de curta duração; a confiança avançada permanece de propriedade do aplicativo.
Quer proteger os payloads baixados pelo BurnerNet? Confira o RipStop Codec para desembaralhamento de ativos em memória.
Princípios • Introdução • Caminhos de Integração • Realidade de Segurança
| Área | BurnerNet |
|---|---|
| Idioma | C++20 |
| Plataforma | Windows x64/x86 (Primeira Classe), Linux (Verificado) |
| Transporte | HTTP(S) baseado em libcurl |
| Higiene de memória | Utilitários de limpeza segura e alocadores de limpeza |
| Higiene forense | Limpeza automatizada de heap/stack em todo o estado de transporte gerenciado pelo BurnerNet |
| Análise Dinâmica | O isolamento da pilha de chamadas pode romper o vínculo entre consumidor e transporte |
| Endurecimento de build | Remoção opcional de strings de diagnóstico, literais ofuscados, metadados reduzidos do runtime C++ em builds endurecidos |
| Endurecimento de runtime | Suporte a DoH, segredos baseados em provedores e controles de confiança mais rígidos |
| Integração | CMake ou Visual Studio source-drop |
Use BurnerNet quando um cliente HTTP normal é confiável demais para o seu ambiente.
Ajuda quando você deseja:
BurnerNet se adequa a projetos como:
libcurl e fluxos baseados em OpenSSL. Buffers de transporte sensíveis são limpos ao sair do tempo de vida gerenciado pelo BurnerNet. Essa higiene é verificada tanto no Windows quanto no Linux nas configurações auditadas descritas na documentação.WithResponseVerifier(...) em vez de ser hardcoded em uma biblioteca compartilhada.BURNERNET_DIAGNOSTIC_STRINGS=0 para que ErrorCodeToString(...) retorne valores estáveis E<número> sem incorporar nomes de erro simbólicos.BurnerNet não apenas alega um modo endurecido com importação leve; também inclui notas de auditoria para configurações testadas específicas. Em uma auditoria Windows x64 Release com BURNERNET_HARDEN_IMPORTS=ON:
libcurl.dll, ws2_32.dll, bcrypt.dll ou crypt32.dll foi observada no binário auditado.Detalhes e metodologia da auditoria:
Caminho mais rápido:
<burner/net.h>.Exemplo mínimo:
#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 usa padrões Standard: CA do sistema, DNS e proxy com verificação de peer TLS e hostname ativada. WithCasualDefaults() permanece disponível como um alias de compatibilidade Standard.
Para tráfego crítico de segurança, use o perfil Hardened. Build() rejeita controles ausentes antes de qualquer requisição:
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) // fallback explícito, após DoH
.WithResponseVerifier(VerifySignedResponse)
.Build();
Hardened exige verificação de peer e hostname, isolamento de stack, roteamento DoH primeiro, um verificador de resposta do aplicativo e um ponto de montagem de confiança de propriedade do aplicativo. Credenciais WithMtls(...) persistentes são rejeitadas; use WithMtlsProvider(...).
Use quando seu projeto downstream já usa CMake e você deseja o caminho mais limpo com gerenciamento de dependências.
Documentação:
Use quando seu ambiente é MSBuild-first ou você deseja compilar BurnerNet diretamente dentro do seu .vcxproj.
Documentação:
Use quando você deseja reduzir a exposição óbvia de dependências de runtime e está preparado para gerenciar o carregamento de bootstrap explicitamente.
Ative:
BURNERNET_HARDEN_IMPORTS=1KernelResolver do BurnerNet no Windows para suportar uma pegada de runtime com menos importaçõesReferência:
Suporte a Linux: BurnerNet fornece paridade forense completa (Limpeza de Memória e Isolamento de Stack) no Linux. Veja docs/LINUX_USAGE.md para instruções de build.
Padrões recomendados:
Exemplos:
Documentação:
libcurl 7.87.0+ e OpenSSLBurnerNet é uma camada de endurecimento projetada para elevar o custo de um ataque a um nível profissional. Operamos sob o princípio de que a furtividade deve ser arquitetural, não apenas superficial.
Um atacante pode contornar BurnerNet se tiver o código-fonte? O conhecimento do código-fonte do BurnerNet não é, por si só, uma chave mestra para todo aplicativo downstream. BurnerNet segue o Princípio de Kerckhoffs: a biblioteca é projetada para que suas âncoras de confiança específicas do aplicativo (segredos HMAC, chaves fixadas, lógica de UI, hooks de política) permaneçam de propriedade do aplicativo. Conhecer a camada de transporte não produz automaticamente uma bypass universal do seu fluxo de segurança específico.
| Preocupação | Stack HTTP típico | BurnerNet |
|---|
| Tempo de vida do cliente | Frequentemente compartilhado e de longa duração | Projetado para clientes descartáveis e escopo de rajada |
| Valores sensíveis | Segredos geralmente permanecem em configuração ou memória por mais tempo que o necessário | Callbacks de provedor os obtêm próximo ao uso |
| DNS e confiança | Geralmente herda o resolvedor local e os padrões do host | Suporta controles de confiança mais rigorosos, incluindo fallback DoH e chaves fixadas |
| Verificação | Verificações de integridade específicas do aplicativo são frequentemente adicionadas depois | Construído para trabalhar com hooks de verificação de pré-voo, transporte e resposta |
BURNERNET_HARDEN_IMPORTS=1 pode resolver dependências de runtime dinamicamente em vez de anunciá-las diretamente na tabela de importações, usando o caminho KernelResolver do BurnerNet no Windows..WithStackIsolation(true), a biblioteca executa o ciclo de vida do transporte em uma thread de trabalho destacada. Isso pode romper fisicamente a pilha de chamadas do chamador e reduzir o rastreamento top-down direto da lógica do aplicativo.