
Zero-Trust-Anti-Forensik-HTTP-Client. Löscht Geheimnisse. Trennt Spuren. CPR in einem Stealth-Tank. 👻
Zero-Trust, anti-forensischer HTTP-Client. Löscht Geheimnisse. Kappt Spuren. CPR in einem Stealth-Tank. 👻
BurnerNet ist ein C++20 anti-forensischer HTTP-Client. Es bietet eine fließende, CPR-ähnliche API für Anwendungen, die dem lokalen Rechner nicht vollständig vertrauen können – indem es Geheimnisse physisch aus dem RAM löscht und Ausführungsspuren kappt, um Ihre Logik vor Scannern und Debuggern zu verbergen.
Es bietet vertraute, host-kompatible Standardeinstellungen für gewöhnliches HTTP und ein explizites Hardened-Profil für feindliche Umgebungen. Beide Pfade bevorzugen kurzlebige Clients; fortgeschrittenes Vertrauen bleibt anwendungseigen.
Sie möchten die von BurnerNet heruntergeladenen Payloads schützen? Werfen Sie einen Blick auf RipStop Codec für das Entschlüsseln von Assets im Arbeitsspeicher.
Prinzipien • Erste Schritte • Integrationspfade • Sicherheitsrealität
| Bereich | BurnerNet |
|---|---|
| Sprache | C++20 |
| Plattform | Windows x64/x86 (First-Class), Linux (Verifiziert) |
| Transport | libcurl-gestütztes HTTP(S) |
| Arbeitsspeicher-Hygiene | Sichere Löschhilfsprogramme und löschnde Allokatoren |
| Forensische Hygiene | Automatische Heap/Stack-Bereinigung über den von BurnerNet verwalteten Transportzustand |
| Dynamische Analyse | Call-Stack-Isolation kann die Verbindung zwischen Verbraucher und Transport trennen |
| Build-Härtung | Optionale Entfernung von Diagnose-Strings, obfuskierte Literale, reduzierte C++-Laufzeitmetadaten in gehärteten Builds |
| Laufzeithärtung | DoH-Unterstützung, anbieterbasierte Geheimnisse und strengere Vertrauenskontrollen |
| Integration | CMake oder Visual Studio Source-Drop |
Verwenden Sie BurnerNet, wenn ein normaler HTTP-Client für Ihre Umgebung zu vertrauensselig ist.
Es hilft, wenn Sie möchten:
BurnerNet passt zu Projekten wie:
libcurl und OpenSSL-gestützten Abläufen anzuhaken. Sensitive Transportpuffer werden gelöscht, wenn sie die von BurnerNet verwaltete Lebensdauer verlassen. Diese Hygiene wird sowohl unter Windows als auch unter Linux innerhalb der in der Dokumentation beschriebenen geprüften Konfigurationen verifiziert.WithResponseVerifier(...) in Ihrem Code, anstatt in eine gemeinsam genutzte Bibliothek eingebettet zu sein.BURNERNET_DIAGNOSTIC_STRINGS=0 setzen, sodass ErrorCodeToString(...) stabile E<Nummer>-Werte zurückgibt, ohne symbolische Fehlernamen einzubetten.BurnerNet behauptet nicht nur eine import-arme gehärtete Betriebsart; es liefert auch Prüfnotizen für spezifische getestete Konfigurationen. In einem Windows-x64-Release-Audit mit BURNERNET_HARDEN_IMPORTS=ON:
libcurl.dll, ws2_32.dll, bcrypt.dll oder crypt32.dll beobachtet.Details zur Prüfung und Methodik:
Schnellster Weg:
<burner/net.h> ein.Minimalbeispiel:
#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 verwendet die Standardeinstellungen: System-CA, DNS und Proxy mit aktivierter TLS-Peer- und Hostname-Verifikation. WithCasualDefaults() bleibt als Standard-Kompatibilitätsalias verfügbar.
Für sicherheitskritischen Verkehr verwenden Sie das Hardened-Profil. Build() lehnt fehlende Kontrollen vor jeder Anfrage ab:
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) // expliziter Fallback, nach DoH
.WithResponseVerifier(VerifySignedResponse)
.Build();
Hardened erfordert Peer- und Hostname-Verifikation, Stack-Isolation, DoH-first-Routing, einen App-Antwortverifizierer und einen app-eigenen Vertrauensanker. Persistente WithMtls(...)-Anmeldedaten werden abgelehnt; verwenden Sie WithMtlsProvider(...).
Verwenden Sie dies, wenn Ihr nachgelagertes Projekt bereits CMake verwendet und Sie den saubersten, dependency-verwalteten Pfad wünschen.
Dokumentation:
Verwenden Sie dies, wenn Ihre Umgebung MSBuild-zentriert ist oder Sie BurnerNet direkt innerhalb Ihrer .vcxproj kompilieren möchten.
Dokumentation:
Verwenden Sie dies, wenn Sie die offensichtliche Exposition von Laufzeitabhängigkeiten reduzieren möchten und bereit sind, das Bootstrap-Laden explizit zu verwalten.
Aktivieren:
BURNERNET_HARDEN_IMPORTS=1KernelResolver-Pfad unter Windows für einen import-ärmeren Laufzeit-FußabdruckReferenz:
Linux-Unterstützung: BurnerNet bietet volle forensische Parität (Memory Wiping & Stack Isolation) unter Linux. Siehe docs/LINUX_USAGE.md für Build-Anleitungen.
Empfohlene Standardeinstellungen:
Beispiele:
Dokumentation:
libcurl 7.87.0+ und OpenSSL-HeaderBurnerNet ist eine Härtungsschicht, die darauf ausgelegt ist, die Kosten eines Angriffs auf ein professionelles Niveau zu heben. Wir arbeiten nach dem Prinzip, dass Tarnung architektonisch und nicht nur oberflächlich sein sollte.
Kann ein Angreifer BurnerNet umgehen, wenn er den Quellcode hat? Die Kenntnis des BurnerNet-Quellcodes ist nicht automatisch ein Generalschlüssel für jede nachgelagerte Anwendung. BurnerNet folgt dem Kerckhoffs'schen Prinzip: Die Bibliothek ist so ausgelegt, dass Ihre app-spezifischen Vertrauensanker (HMAC-Geheimnisse, gepinnte Schlüssel, UI-Logik, Policy-Hooks) anwendungseigen bleiben. Die Kenntnis der Transportschicht liefert nicht automatisch eine universelle Umgehung Ihres spezifischen Sicherheitsablaufs.
| Aspekt | Typischer HTTP-Stack | BurnerNet |
|---|
| Client-Lebensdauer | Oft geteilt und langlebig | Ausgelegt für wegwerfbare Clients und Burst-Scope-Nutzung |
| Sensible Werte | Geheimnisse liegen oft länger als nötig in Konfiguration oder Speicher | Provider-Callbacks rufen sie nahe der Verwendung ab |
| DNS und Vertrauen | Erbt normalerweise lokalen Resolver und Host-Standards | Unterstützt strengere Vertrauenskontrollen inkl. DoH-Fallback und gepinnte Schlüssel |
| Verifikation | App-spezifische Integritätsprüfungen werden oft später hinzugefügt | Entwickelt, um mit Pre-Flight-, Transport- und Antwortverifikations-Hooks zu arbeiten |
BURNERNET_HARDEN_IMPORTS=1 kann Laufzeitabhängigkeiten dynamisch auflösen, anstatt sie direkt in der Importtabelle zu bewerben, unter Verwendung von BurnerNets KernelResolver-Pfad unter Windows..WithStackIsolation(true) aktiviert, führt die Bibliothek den Transportlebenszyklus auf einem getrennten Worker-Thread aus. Dies kann den Call-Stack des Aufrufers physisch trennen und die direkte Top-Down-Verfolgung der Anwendungslogik reduzieren.