
Client HTTP anti-forense a fiducia zero. Cancella segreti. Recide tracce. CPR in un carro armato stealth. 👻
Client HTTP anti-forense a fiducia zero. Elimina i segreti. Recide le tracce. CPR in un carro armato stealth. 👻
BurnerNet è un client HTTP anti-forense in C++20. Fornisce un'API fluida, simile a CPR, per applicazioni che non possono fidarsi completamente della macchina locale—cancellando fisicamente i segreti dalla RAM e recidendo le tracce di esecuzione per nascondere la tua logica da scanner e debugger.
Offre impostazioni predefinite familiari e compatibili con l'host per HTTP ordinario e un profilo Hardened esplicito per ambienti ostili. Entrambe le strade favoriscono client di breve durata; la fiducia avanzata rimane di proprietà dell'applicazione.
Cerchi di proteggere i payload scaricati da BurnerNet? Dai un'occhiata a RipStop Codec per il descrambling delle risorse in memoria.
Principi • Primi Passi • Percorsi di Integrazione • Realtà della Sicurezza
| Area | BurnerNet |
|---|---|
| Linguaggio | C++20 |
| Piattaforma | Windows x64/x86 (Di Prima Classe), Linux (Verificato) |
| Trasporto | HTTP(S) basato su libcurl |
| Igiene della memoria | Utility di cancellazione sicura e allocatori di cancellazione |
| Igiene forense | Pulizia automatica di heap/stack nello stato di trasporto gestito da BurnerNet |
| Analisi dinamica | L'isolamento dello stack di chiamata può recidere il collegamento tra consumatore e trasporto |
| Rafforzamento del build | Rimozione opzionale delle stringhe diagnostiche, letterali offuscati, metadati runtime C++ ridotti nelle build hardened |
| Rafforzamento runtime | Supporto DoH, segreti basati su provider e controlli di fiducia più severi |
| Integrazione | CMake o source-drop di Visual Studio |
Usa BurnerNet quando un normale client HTTP è troppo fiducioso per il tuo ambiente.
Aiuta quando vuoi:
BurnerNet si adatta a progetti come:
libcurl e dei flussi basati su OpenSSL. I buffer di trasporto sensibili vengono cancellati quando escono dalla durata gestita da BurnerNet. Questa igiene è verificata sia su Windows che su Linux nelle configurazioni controllate descritte nella documentazione.WithResponseVerifier(...) invece di essere hardcodata in una libreria condivisa.BURNERNET_DIAGNOSTIC_STRINGS=0 in modo che ErrorCodeToString(...) restituisca valori E<numero> stabili senza incorporare nomi di errore simbolici.BurnerNet non si limita a dichiarare una modalità hardened con import leggeri; include anche note di audit per configurazioni specifiche testate. In un audit di Windows x64 Release con BURNERNET_HARDEN_IMPORTS=ON:
libcurl.dll, ws2_32.dll, bcrypt.dll o crypt32.dll è stata osservata nel binario sottoposto ad audit.Dettagli e metodologia dell'audit:
Percorso più veloce:
<burner/net.h>.Esempio minimale:
#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 utilizza le impostazioni predefinite Standard: CA di sistema, DNS e proxy con verifica del peer TLS e del nome host abilitata. WithCasualDefaults() rimane disponibile come alias di compatibilità Standard.
Per il traffico critico per la sicurezza, usa il profilo Hardened. Build() rifiuta i controlli mancanti prima di qualsiasi richiesta:
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) // explicit fallback, after DoH
.WithResponseVerifier(VerifySignedResponse)
.Build();
Hardened richiede verifica del peer e del nome host, isolamento dello stack, routing DoH-first, un verificatore di risposta dell'app e un mount di fiducia di proprietà dell'app. Le credenziali persistenti WithMtls(...) sono respinte; usa WithMtlsProvider(...).
Usa questo quando il tuo progetto downstream utilizza già CMake e desideri il percorso più pulito con gestione delle dipendenze.
Docs:
Usa questo quando il tuo ambiente è MSBuild-first o vuoi BurnerNet compilato direttamente all'interno del tuo .vcxproj.
Docs:
Usa questo quando vuoi ridurre l'esposizione delle dipendenze runtime e sei pronto a gestire esplicitamente il caricamento bootstrap.
Enable:
BURNERNET_HARDEN_IMPORTS=1KernelResolver di BurnerNet su Windows per supportare un footprint runtime più leggeroReference:
Supporto Linux: BurnerNet fornisce piena parità forense (Memory Wiping & Stack Isolation) su Linux. Vedi docs/LINUX_USAGE.md per le istruzioni di build.
Impostazioni predefinite consigliate:
Esempi:
Documentazione:
libcurl 7.87.0+ e header OpenSSLBurnerNet è un livello di rafforzamento progettato per alzare il costo dell'attacco a un livello professionale. Operiamo sul principio che la furtività dovrebbe essere architetturale, non solo superficiale.
Un attaccante può bypassare BurnerNet se ha il codice sorgente?
La conoscenza del codice sorgente di BurnerNet non è, di per sé, una chiave maestra per ogni applicazione downstream. BurnerNet segue il Principio di Kerckhoffs: la libreria è progettata in modo che i tuoi anchor di fiducia specifici dell'app (segreti HMAC, chiavi fissate, logica UI, hook delle policy) rimangano di proprietà dell'applicazione. Conoscere il livello di trasporto non produce automaticamente un bypass universale del tuo flusso di sicurezza specifico.
| Aspetto | Stack HTTP tipico | BurnerNet |
|---|
| Durata del client | Spesso condiviso e di lunga durata | Progettato per client usa e getta e uso a raffica |
| Valori sensibili | I segreti spesso rimangono nella configurazione o memoria più a lungo del necessario | I callback del provider li recuperano vicino all'uso |
| DNS e fiducia | Di solito eredita il resolver locale e le impostazioni predefinite dell'host | Supporta controlli di fiducia più severi, inclusi fallback DoH e chiavi fissate |
| Verifica | I controlli di integrità specifici dell'app sono spesso aggiunti dopo | Progettato per funzionare con hook di verifica pre-volo, trasporto e risposta |
BURNERNET_HARDEN_IMPORTS=1 può risolvere le dipendenze runtime dinamicamente invece di pubblicizzarle direttamente nella tabella degli import, utilizzando il percorso KernelResolver di BurnerNet su Windows..WithStackIsolation(true), la libreria esegue il ciclo di vita del trasporto su un thread di lavoro separato. Questo può recidere fisicamente lo stack di chiamate del chiamante e ridurre la tracciabilità diretta top-down della logica dell'applicazione.