
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:
| 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 |
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_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.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;
}