Retour aux mises Ă  jour
New releaseAug 2, 2026

burner-net v1.3.0

Client HTTP anti-forensique zero-trust. Efface les secrets. Coupe les traces. RCP dans un Tank Furtif. đź‘»

Partager

BurnerNet

Client HTTP anti-forensique et zéro confiance. Efface les secrets. Coupe les traces. RCR dans un tank furtif. 👻

BurnerNet est un client HTTP anti-forensique en C++20. Il offre une API fluide de style CPR pour les applications qui ne peuvent pas faire entièrement confiance à la machine locale, en effaçant physiquement les secrets de la RAM et en supprimant les traces d'exécution pour dissimuler votre logique aux scanners et aux débogueurs.

Il propose des valeurs par défaut familières compatibles avec l'hôte pour le HTTP ordinaire et un profil Hardened explicite pour les environnements hostiles. Les deux chemins privilégient des clients à durée de vie courte ; la confiance avancée reste la propriété de l'application.

Vous cherchez à protéger les charges utiles téléchargées par BurnerNet ? Découvrez RipStop Codec pour le désembrouillage d'actifs en mémoire.

Principes • Pour commencer • Chemins d'intégration • Réalité sécuritaire – La défense boîte blanche

En un coup d'œil

DomaineBurnerNet
LangageC++20
PlateformeWindows x64/x86 (Première classe), Linux (Vérifié)
TransportHTTP(S) basé sur libcurl
Hygiène mémoireUtilitaires de nettoyage sécurisé et allocateurs avec effacement
Hygiène forensiqueNettoyage automatique du tas/pile sur l'ensemble de l'état de transport géré par BurnerNet
Analyse dynamiqueL'isolation de la pile d'appels peut rompre le lien entre le consommateur et le transport
Renforcement de la compilationSuppression optionnelle des chaînes de diagnostic, littéraux obscurcis, métadonnées réduites du runtime C++ dans les versions renforcées
Renforcement à l'exécutionPrise en charge de DoH, secrets basés sur des fournisseurs et contrôles de confiance plus stricts
IntégrationCMake ou ajout de sources dans Visual Studio

Pourquoi l'utiliser

Utilisez BurnerNet lorsqu'un client HTTP normal est trop confiant pour votre environnement.

Il est utile quand vous voulez :

  • garder les clients de requĂŞtes Ă  courte durĂ©e de vie plutĂ´t que de partager un transport global
  • rĂ©duire la dĂ©pendance au DNS local et autres valeurs par dĂ©faut de l'hĂ´te
  • rĂ©cupĂ©rer les jetons, certificats et secrets de vĂ©rification uniquement en cas de besoin
  • conserver la logique de vĂ©rification des rĂ©ponses dans votre propre code applicatif
  • rĂ©duire les chaĂ®nes en clair Ă©videntes et les mĂ©tadonnĂ©es dans les versions renforcĂ©es

Ă€ qui s'adresse-t-il

BurnerNet convient Ă  des projets tels que :

  • applications de bureau Windows avec des requĂŞtes d'authentification, de licence ou de mise Ă  jour Ă  haute valeur
  • code embarquĂ© ou injectĂ© s'exĂ©cutant sur un hĂ´te auquel vous ne faites pas entièrement confiance
  • outils qui souhaitent des contrĂ´les de transport plus stricts sans renoncer Ă  une API C++ fluide

Pile standard vs BurnerNet

PréoccupationPile HTTP typiqueBurnerNet
Durée de vie du clientSouvent partagée et longueConçue pour des clients jetables et une portée en rafale
Valeurs sensiblesLes secrets restent souvent en mémoire plus longtemps que nécessaireLes callbacks fournisseurs les récupèrent près de l'utilisation
DNS et confianceHérite généralement du résolveur local et des valeurs par défaut de l'hôtePrend en charge des contrôles de confiance plus stricts, y compris le repli DoH et les clés épinglées
VérificationLes contrôles d'intégrité spécifiques à l'application sont souvent ajoutés après coupConstruit pour fonctionner avec des hooks de vérification avant vol, transport et réponse

Résultats défensifs

  • Architecture mĂ©moire sans fantĂ´me : BurnerNet utilise un nettoyeur Ă  prĂ©fixe-taille personnalisĂ© pour accrocher les chemins d'allocation mĂ©moire interne de libcurl et des flux basĂ©s sur OpenSSL. Les tampons de transport sensibles sont effacĂ©s dès qu'ils quittent la durĂ©e de vie gĂ©rĂ©e par BurnerNet. Cette hygiène est vĂ©rifiĂ©e Ă  la fois sur Windows et Linux dans les configurations auditĂ©es dĂ©crites dans la documentation.
  • Balayage de la pile : Après chaque requĂŞte, la bibliothèque nettoie proactivement sa propre pile de threads (nettoyage Ă  la marque de hautes eaux). Cela vise Ă  dĂ©truire les fragments de transport Ă©phĂ©mères avant que le contrĂ´le ne revienne Ă  votre application.
  • Cible mouvante sur le tas : La combinaison de transports jetables et d'en-tĂŞtes de mĂ©tadonnĂ©es alignĂ©s crĂ©e une dispersion Ă©levĂ©e de l'espace d'adressage, rendant la mĂ©moire du processus imprĂ©visible et rĂ©sistante au mappage stable de pointeurs.
  • État de requĂŞte Ă  courte durĂ©e de vie : BurnerNet est conçu autour de clients jetables plutĂ´t que de transports singleton Ă  l'Ă©chelle du processus.
  • Moins de confiance dans l'hĂ´te : La prise en charge de DoH, le support des clĂ©s Ă©pinglĂ©es et l'audit du transport aident Ă  rĂ©duire la dĂ©pendance vis-Ă -vis des valeurs par dĂ©faut locales compromises.
  • Exposition moindre au texte clair : Les callbacks fournisseurs et les utilitaires de nettoyage sĂ©curisĂ© rĂ©duisent la durĂ©e de vie des certificats, clĂ©s, jetons et autres tampons sensibles.
  • VĂ©rification propriĂ©taire de l'application : La vĂ©rification des rĂ©ponses reste dans votre code via WithResponseVerifier(...) au lieu d'ĂŞtre codĂ©e en dur dans une bibliothèque partagĂ©e.
  • Empreinte statique plus difficile : Les versions renforcĂ©es peuvent dĂ©finir BURNERNET_DIAGNOSTIC_STRINGS=0 afin que ErrorCodeToString(...) renvoie des valeurs stables E<numĂ©ro> sans intĂ©grer de noms d'erreur symboliques.
  • Options de dĂ©ploiement Ă  importations lĂ©gères : BURNERNET_HARDEN_IMPORTS=1 peut rĂ©soudre les dĂ©pendances d'exĂ©cution dynamiquement au lieu de les annoncer directement dans la table d'importation, en utilisant le chemin KernelResolver de BurnerNet sur Windows.
  • Isolation de la pile d'appels (dĂ©lĂ©gation asynchrone) : Lorsqu'elle est activĂ©e via .WithStackIsolation(true), la bibliothèque exĂ©cute le cycle de vie du transport sur un thread de travail dĂ©tachĂ©. Cela peut physiquement rompre la pile d'appels de l'appelant et rĂ©duire le traçage descendant direct de la logique applicative.

Furtivité vérifiée

BurnerNet ne se contente pas de revendiquer un mode renforcé à importations légères ; il fournit également des notes d'audit pour des configurations testées spécifiques. Dans un audit Windows x64 Release avec BURNERNET_HARDEN_IMPORTS=ON :

  • Blackout IAT : Aucune entrĂ©e pour libcurl.dll, ws2_32.dll, bcrypt.dll ou crypt32.dll n'a Ă©tĂ© observĂ©e dans le binaire auditĂ©.
  • Obscurcissement mĂ©moire : Les scans forensiques (Cheat Engine "All Strings") n'ont pas rĂ©ussi Ă  dĂ©couvrir d'URL ou d'en-tĂŞtes sensibles (canary) dans le tas ou la pile du processus.
  • Aveuglement du dĂ©bogueur : Les tests intĂ©grĂ©s vĂ©rifient que la bibliothèque dĂ©clenche un "changement d'identitĂ©". Le dĂ©cideur (votre application) et le transporteur (BurnerNet) opèrent sur des identifiants de threads distincts, rĂ©duisant le traçage descendant lors de sessions de dĂ©bogage en direct.
  • Rapport signal/bruit : La bibliothèque vise une hygiène forensique dans son pĂ©rimètre d'effacement, tout en reconnaissant les "ombres" rĂ©siduelles au niveau du système et de l'environnement d'exĂ©cution.

Détails et méthodologie de l'audit :

Pour commencer

Chemin le plus rapide :

  • Ajoutez BurnerNet Ă  votre build avec CMake ou en ajoutant les sources dans Visual Studio.
  • Incluez <burner/net.h>.
  • CrĂ©ez un client sur la pile, envoyez une requĂŞte, puis laissez-le sortir de la portĂ©e.

Exemple minimal :

#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 utilise les valeurs par défaut Standard : autorité de certification système, DNS et proxy avec vérification TLS du pair et du nom d'hôte activée. WithCasualDefaults() reste disponible comme alias de compatibilité Standard.

Pour le trafic critique pour la sécurité, utilisez le profil Hardened. Build() rejette les contrôles manquants avant toute requête :

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) // repli explicite, après DoH
    .WithResponseVerifier(VerifySignedResponse)
    .Build();

Hardened exige la vérification du pair et du nom d'hôte, l'isolation de la pile, un routage DoH en premier, un vérificateur de réponse applicatif et un point de montage de confiance propriétaire de l'application. Les identifiants persistants WithMtls(...) sont rejetés ; utilisez WithMtlsProvider(...).

Chemins d'intégration

1. CMake standard

Utilisez cette approche lorsque votre projet en aval utilise déjà CMake et que vous souhaitez le chemin de gestion des dépendances le plus propre.

Documentation :

2. Ajout de sources dans Visual Studio

Utilisez cette approche lorsque votre environnement est basé sur MSBuild en priorité ou que vous souhaitez que BurnerNet soit compilé directement à l'intérieur de votre .vcxproj.

Documentation :

3. Importations d'exécution renforcées

Utilisez cette approche lorsque vous souhaitez réduire l'exposition évidente des dépendances d'exécution et que vous êtes prêt à gérer explicitement le chargement d'amorçage.

Activez :

  • BURNERNET_HARDEN_IMPORTS=1
  • Utilise le chemin KernelResolver de BurnerNet sur Windows pour prendre en charge une empreinte d'exĂ©cution plus lĂ©gère en importations

Référence :

Support Linux : BurnerNet offre une parité forensique complète (effacement mémoire et isolation de la pile) sous Linux. Voir docs/LINUX_USAGE.md pour les instructions de construction.

Notes d'utilisation

Valeurs par défaut recommandées :

  • traitez les clients comme des transports jetables
  • sĂ©parez le trafic de haute confiance et de moindre confiance dans des clients diffĂ©rents
  • utilisez des callbacks fournisseurs pour le matĂ©riel mTLS, les jetons porteurs et les secrets de vĂ©rification de rĂ©ponse
  • conservez les règles mĂ©tier et les ancres de confiance dans votre application

Exemples et documentation

Exemples :

Documentation :

Prérequis

  • C++20
  • Windows x64/x86 ou Linux (GCC 13+ / Clang 15+)
  • En-tĂŞtes libcurl 7.87.0+ et OpenSSL
  • Guide Linux : Voir docs/LINUX_USAGE.md

Réalité sécuritaire – La défense boîte blanche

BurnerNet est une couche de renforcement conçue pour élever le coût d'une attaque à un niveau professionnel. Nous opérons sur le principe que la furtivité doit être architecturale, pas seulement superficielle.

Un attaquant peut-il contourner BurnerNet s'il dispose du code source ? La connaissance du code source de BurnerNet n'est pas, en soi, une clé maîtresse pour chaque application en aval. BurnerNet suit le principe de Kerckhoffs : la bibliothèque est conçue pour que vos ancres de confiance spécifiques à l'application (secrets HMAC, clés épinglées, logique d'interface utilisateur, hooks de stratégie) restent propriété de l'application. Connaître la couche de transport ne donne pas automatiquement un contournement universel de votre flux de sécurité spécifique.

  • La furtivitĂ© comme moyen de retard : Le renforcement force les attaquants Ă  sortir des outils de commoditĂ© standard et Ă  entrer dans une analyse fastidieuse au niveau des instructions.
  • Les donnĂ©es comme racine : Utilisez la dĂ©pendance fonctionnelle (principe 6) pour garantir que votre application est littĂ©ralement cassĂ©e sans les donnĂ©es fournies par le serveur.
  • L'avantage du fantĂ´me : Au moment oĂą un attaquant trouve votre logique de requĂŞte, l'isolation de la pile et l'effacement mĂ©moire ont dĂ©jĂ  dĂ©truit les preuves forensiques dont il a besoin.

Catégories