
burner-net v1.3.0
Cliente HTTP anti-forense de confiança zero. Apaga segredos. Corta rastros. RCP em um tanque furtivo. 👻
BurnerNet
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
De relance
| Á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 |
Por que usar
Use BurnerNet quando um cliente HTTP normal é confiável demais para o seu ambiente.
Ajuda quando você deseja:
- manter clientes de requisição de curta duração em vez de compartilhar um transporte global
- reduzir a dependência de DNS local e outros padrões do host
- buscar tokens, certificados e segredos de verificação apenas quando necessário
- manter a lógica de verificação de resposta em seu próprio código de aplicativo
- reduzir strings de texto simples e metadados óbvios em builds endurecidos
Para quem é
BurnerNet se adequa a projetos como:
- aplicativos de desktop Windows com requisições de alta segurança para autenticação, licenciamento ou atualizações
- código embarcado ou injetado executando em um host no qual você não confia totalmente
- ferramentas que desejam verificações de transporte mais rigorosas sem abrir mão de uma API C++ fluente
Stack Padrão vs BurnerNet
| 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 |
Resultados Defensivos
- Arquitetura de Memória Sem Fantasmas: BurnerNet usa um Prefix-Size Scrubber personalizado para interceptar os caminhos internos de alocação de memória do
libcurle 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. - Limpeza de Stack-Frame: Após cada requisição, a biblioteca limpa proativamente sua própria pilha de threads (limpeza High-Water Mark). Isso visa destruir fragmentos efêmeros de transporte antes que o controle retorne ao seu aplicativo.
- Heap em Movimento: A combinação de transportes descartáveis e cabeçalhos de metadados alinhados cria alta dispersão no espaço de endereçamento, tornando a memória do processo imprevisível e resistente a mapeamento estável de ponteiros.
- Estado de requisição de curta duração: BurnerNet é projetado em torno de clientes descartáveis, em vez de transportes singleton de todo o processo.
- Menos confiança no host: Suporte a DoH, suporte a chaves fixadas e auditoria de transporte ajudam a reduzir a dependência de padrões locais comprometidos.
- Menor exposição de texto simples: Callbacks de provedor e utilitários de limpeza segura reduzem o tempo de vida de certificados, chaves, tokens e outros buffers sensíveis.
- Verificação de propriedade do aplicativo: A verificação de resposta permanece em seu código através de
WithResponseVerifier(...)em vez de ser hardcoded em uma biblioteca compartilhada. - Impressão digital estática mais difícil: builds endurecidos podem definir
BURNERNET_DIAGNOSTIC_STRINGS=0para queErrorCodeToString(...)retorne valores estáveisE<número>sem incorporar nomes de erro simbólicos. - Opções de implantação com importação leve:
BURNERNET_HARDEN_IMPORTS=1pode resolver dependências de runtime dinamicamente em vez de anunciá-las diretamente na tabela de importações, usando o caminhoKernelResolverdo BurnerNet no Windows. - Isolamento de Pilha de Chamadas (Async Handoff): Quando ativado via
.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.
Furtividade Verificada
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:
- Apagão IAT: Nenhuma entrada para
libcurl.dll,ws2_32.dll,bcrypt.dlloucrypt32.dllfoi observada no binário auditado. - Apagão de Memória: Varreduras forenses (Cheat Engine "All Strings") falharam em descobrir URLs ou cabeçalhos canários sensíveis no heap ou stack do processo.
- Cegueira do Depurador: Testes integrados verificam que a biblioteca desencadeia uma "Mudança de Identidade". O Tomador de Decisão (seu aplicativo) e o Transportador (BurnerNet) operam em IDs de Thread distintas, reduzindo o rastreamento top-down durante sessões de depuração ao vivo.
- Ruído para Sinal: A biblioteca visa higiene forense dentro de sua autoridade de limpeza, reconhecendo as "sombras" remanescentes no sistema operacional e ambiente de runtime.
Detalhes e metodologia da auditoria:
Introdução
Caminho mais rápido:
- Adicione BurnerNet ao seu build com CMake ou Visual Studio source-drop.
- Inclua
<burner/net.h>. - Crie um cliente de stack, envie uma requisição e deixe-o sair do escopo.
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;
}