
Client HTTP anti-forensique zero-trust. Efface les secrets. Coupe les traces. RCP dans un Tank Furtif. 👻
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
| Domaine | BurnerNet |
|---|---|
| Langage | C++20 |
| Plateforme | Windows x64/x86 (Première classe), Linux (Vérifié) |
| Transport | HTTP(S) basé sur libcurl |
| Hygiène mémoire | Utilitaires de nettoyage sécurisé et allocateurs avec effacement |
| Hygiène forensique | Nettoyage automatique du tas/pile sur l'ensemble de l'état de transport géré par BurnerNet |
| Analyse dynamique | L'isolation de la pile d'appels peut rompre le lien entre le consommateur et le transport |
| Renforcement de la compilation | Suppression 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écution | Prise en charge de DoH, secrets basés sur des fournisseurs et contrôles de confiance plus stricts |
| Intégration | CMake ou ajout de sources dans Visual Studio |
Utilisez BurnerNet lorsqu'un client HTTP normal est trop confiant pour votre environnement.
Il est utile quand vous voulez :
BurnerNet convient à des projets tels que :
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.WithResponseVerifier(...) au lieu d'être codée en dur dans une bibliothèque partagée.BURNERNET_DIAGNOSTIC_STRINGS=0 afin que ErrorCodeToString(...) renvoie des valeurs stables E<numéro> sans intégrer de noms d'erreur symboliques.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 :
libcurl.dll, ws2_32.dll, bcrypt.dll ou crypt32.dll n'a été observée dans le binaire audité.Détails et méthodologie de l'audit :
Chemin le plus rapide :
<burner/net.h>.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(...).
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 :
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 :
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=1KernelResolver de BurnerNet sur Windows pour prendre en charge une empreinte d'exécution plus légère en importationsRé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.
Valeurs par défaut recommandées :
Exemples :
Documentation :
libcurl 7.87.0+ et OpenSSLBurnerNet 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.
| Préoccupation | Pile HTTP typique | BurnerNet |
|---|
| Durée de vie du client | Souvent partagée et longue | Conçue pour des clients jetables et une portée en rafale |
| Valeurs sensibles | Les secrets restent souvent en mémoire plus longtemps que nécessaire | Les callbacks fournisseurs les récupèrent près de l'utilisation |
| DNS et confiance | Hérite généralement du résolveur local et des valeurs par défaut de l'hôte | Prend en charge des contrôles de confiance plus stricts, y compris le repli DoH et les clés épinglées |
| Vérification | Les contrôles d'intégrité spécifiques à l'application sont souvent ajoutés après coup | Construit pour fonctionner avec des hooks de vérification avant vol, transport et réponse |
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..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.